/*
* Copyright 2020-2024 Haiku, Inc. All rights reserved.
* Distributed under the terms of the MIT License.
*
* Authors:
* John Scipione, jscipione@gmail.com
*/
#ifndef _LIVE_MENU_H
#define _LIVE_MENU_H
#include
#include
#include "ContainerWindow.h"
#include "Shortcuts.h"
namespace BPrivate {
// mixin class for sharing virtual methods
struct TLiveMixin {
TLiveMixin(const BContainerWindow* window);
virtual void UpdateFileMenu(BMenu* menu);
virtual void UpdateWindowMenu(BMenu* menu);
private:
const BContainerWindow* fWindow;
};
class TLiveMenu : public BMenu {
public:
TLiveMenu(const char* label);
virtual ~TLiveMenu();
virtual void MessageReceived(BMessage* message);
protected:
virtual void Update();
};
class TLivePopUpMenu : public BPopUpMenu {
public:
TLivePopUpMenu(const char* label,
bool radioMode = true,
bool labelFromMarked = true,
menu_layout layout = B_ITEMS_IN_COLUMN);
virtual ~TLivePopUpMenu();
virtual void MessageReceived(BMessage* message);
protected:
virtual void Update();
private:
const BContainerWindow* fWindow;
};
class TLiveArrangeByMenu: public TLiveMenu, public TLiveMixin {
public:
TLiveArrangeByMenu(const char* label, const BContainerWindow* window);
virtual ~TLiveArrangeByMenu();
protected:
virtual void Update();
};
class TLiveFileMenu : public TLiveMenu, public TLiveMixin {
public:
TLiveFileMenu(const char* label, const BContainerWindow* window);
virtual ~TLiveFileMenu();
protected:
virtual void Update();
};
class TLivePosePopUpMenu : public TLivePopUpMenu, public TLiveMixin {
public:
TLivePosePopUpMenu(const char* label, const BContainerWindow* window,
bool radioMode = true, bool labelFromMarked = true,
menu_layout layout = B_ITEMS_IN_COLUMN);
virtual ~TLivePosePopUpMenu();
protected:
virtual void Update();
};
class TLiveWindowMenu : public TLiveMenu, public TLiveMixin {
public:
TLiveWindowMenu(const char* label, const BContainerWindow* window);
virtual ~TLiveWindowMenu();
protected:
virtual void Update();
};
class TLiveWindowPopUpMenu : public TLivePopUpMenu, public TLiveMixin {
public:
TLiveWindowPopUpMenu(const char* label, const BContainerWindow* window,
bool radioMode = true, bool labelFromMarked = true,
menu_layout layout = B_ITEMS_IN_COLUMN);
virtual ~TLiveWindowPopUpMenu();
protected:
virtual void Update();
};
} // namespace BPrivate
using namespace BPrivate;
#endif // _LIVE_MENU_H