Rose
Public Member Functions | Protected Attributes | List of all members
rose::PopupMenu Class Reference

A Menu that can be popped up by a CascadeButton. More...

#include <Menu.h>

Inheritance diagram for rose::PopupMenu:
Inheritance graph
[legend]
Collaboration diagram for rose::PopupMenu:
Collaboration graph
[legend]

Public Member Functions

 PopupMenu ()=delete
 Deleted default constructor.
 
 PopupMenu (PopupMenu &&)=delete
 
 PopupMenu (const PopupMenu &)=delete
 
PopupMenuoperator= (PopupMenu &&)=delete
 
PopupMenuoperator= (const PopupMenu &)=delete
 
 PopupMenu (const shared_ptr< Rose > &rose, Position pos, const MenuDataList &menuDataList, std::shared_ptr< Slot< Button::SignalType >> appButtonRx)
 Construct a PopupMenu. More...
 
 PopupMenu (const shared_ptr< Rose > &rose, Position pos, Size minimumSize, const MenuDataList &menuDataList, std::shared_ptr< Slot< Button::SignalType >> appButtonRx)
 Construct a PopupMenu. More...
 
void initializeComposite () override
 See Widget::initializeComposite.
 
bool mouseButtonEvent (const Position &mousePos, int button, bool down, int modifiers) override
 Handle a mouse button event (default implementation: propagate to children)
 
- Public Member Functions inherited from rose::Popup
 Popup (Popup &&)=delete
 
 Popup (const Popup &)=delete
 
Popupoperator= (Popup &&)=delete
 
Popupoperator= (const Popup &)=delete
 
 Popup (const shared_ptr< Rose > &parent)
 Construct a Popup which covers the entire screen or as determined by the size of its children. More...
 
 Popup (const shared_ptr< Rose > &parent, const Position &position)
 Construct a Window of specified position. More...
 
 Popup (const shared_ptr< Rose > &parent, const Position &pos, const Size &minimumSize)
 Construct a Window of specified position and size. More...
 
void initializeComposite () override
 See Widget::initializeComposite()
 
Rectangle widgetLayout (sdl::Renderer &renderer, Rectangle available, uint layoutStage) override
 See Widget::widgetLayout()
 
void draw (sdl::Renderer &renderer, Rectangle parentRect) override
 See Widget::draw()
 
void addChild (const std::shared_ptr< Widget > &widget) override
 Add a child Widget to the container that will be managing children. More...
 
template<class C >
void setActionButtons (C actionButtonList)
 Create the DialogActionButton objects. More...
 
virtual void createActionButton (const DialogActionButton &dialogActionButton)
 Create a DialogActionButton on derivatives of Popup that support them. More...
 
virtual void setButtonSlot (shared_ptr< Slot< Button::SignalType >> &buttonSlot, bool dismissAll)
 See Widget::setButtonSlot() More...
 
- Public Member Functions inherited from rose::Window
std::string_view nodeId () const noexcept override
 
bool isModal () const
 
void add (const std::shared_ptr< Node > &node) override
 Add a Manager to the Window. More...
 
void draw (gm::Context &context, const Position< int > &containerPosition) override
 Draw the contents of the Window.
 
bool baseTextureNeeded (const Position< int > &containerPosition)
 
void generateBaseTexture (gm::Context &context, const Position< int > &containerPosition)
 Create a Texture for the Window that can be drawn over by animations. More...
 
void drawBaseTexture (gm::Context &context, const Position< int > &containerPosition)
 Draw the base texture for the window. More...
 
Rectangle layout (gm::Context &context, const Rectangle &screenRect) override
 Layout the contents of the Window.
 
std::shared_ptr< WidgetpointerWidget (const Position< int > &position)
 The the Widget which contains the Position.
 
std::shared_ptr< ScreengetScreen ()
 Get the Screen which supports the Window.
 
std::shared_ptr< ScreengetScreen () const
 Get the Screen which support the const Window.
 
- Public Member Functions inherited from rose::Visual
void setScreenRectangle (const Position< int > &containerPosition)
 Compute the screen rectangle from the Container screen Position. More...
 
Rectangle getScreenRectangle (const Position< int > &containerPosition) const
 Get the rectangle occupied by the Visual. More...
 
Position< int > drawPadding (const Position< int > &containerPosition)
 Pad the drawing location.
 
Rectangle layoutPadding (const Rectangle &screenRect)
 Pad the layout.
 
void setSize (const Size &size)
 Set preferred Size.
 
Size getSize () const
 Get the preferred size.
 
void setPosition (const Position< int > &position)
 Set preferred Position.
 
Position< int > getPosition () const
 Get the preferred Position.
 
void setPadding (const Padding &padding)
 Set Padding.
 
void setScreenRectangle (const Rectangle &screenRect)
 Set Screen Rectangle.
 
constexpr bool isVisible () const noexcept
 Check visibility.
 
void setVisible (bool visible) noexcept
 Set visibility.
 
void setLayoutHint (const LayoutHint &hint)
 Add a LayoutHint.
 
std::optional< int > getAttachmentHint (LayoutHint::Attachment attachment)
 Get an AttachmentHint value given a LayoutHint::Attachment. More...
 
std::optional< int > getGridHint (LayoutHint::GridLayoutHint gridLayoutHint)
 Get a GridLayoutHint value given a LayoutHint::GridLayoutHint. More...
 
template<size_t HintClass>
std::optional< const ValueMapgetHintMap () const
 
SemanticGesture supportedSemanticGestures () const
 Get supported SemanticGestures.
 
- Public Member Functions inherited from rose::Container
void remove (const std::shared_ptr< Node > &node)
 
- Public Member Functions inherited from rose::Node
 Node (const std::shared_ptr< Container > &container)
 Create a node and add it to a Container. More...
 
void setId (const Id &nodeId) noexcept
 Set Id.
 
std::string_view getId () const
 Get Id.
 
IdPath getIdPath () const
 Get the Id Path.
 
virtual void addedToContainer ()
 Called when a Node is added to a Container. More...
 
std::shared_ptr< Containercontainer ()
 
std::shared_ptr< Containercontainer () const
 
template<typename C >
std::shared_ptr< C > containerAs ()
 
template<typename C >
std::shared_ptr< C > containerAs () const
 
std::shared_ptr< const NodegetNode () const
 Get a const std::shared_ptr to this node. More...
 
std::shared_ptr< NodegetNode ()
 Get a std::shared_ptr to this node. More...
 
template<typename NodeType >
std::shared_ptr< const NodegetNode () const
 Get a std::shared_ptr<const NodeType> to this node. More...
 
template<typename NodeType >
std::shared_ptr< NodeType > getNode ()
 Get a std::shared_ptr<NodeType> to this node. More...
 
std::shared_ptr< Noderemove ()
 

Protected Attributes

const MenuDataListmMenuDataList
 A const reference to the MenuData items.
 
std::shared_ptr< Slot< Button::SignalType > > mAppButtonRx {}
 The slot to action the selection.
 
- Protected Attributes inherited from rose::Popup
Size mMinimumSize
 The minimum size requests for the popup if supported by derived types.
 
std::shared_ptr< FramemFrame
 The Window Frame.
 
std::shared_ptr< ColumnmColumn
 A container for the Window Title gadget and the window Container.
 
std::shared_ptr< Slot< Button::SignalType > > mActionButtonRx {}
 The slot to receive action button signals.
 
std::shared_ptr< Slot< Button::SignalType > > mDismissButtonRx {}
 The slot to close the menu.
 
- Protected Attributes inherited from rose::Window
bool mModalWindow {}
 
gm::Texture mBaseTexture {}
 The base texture which animations draw over.
 
- Protected Attributes inherited from rose::Visual
SemanticGesture mSemanticGesture {}
 
Position< int > mPos {}
 Position relative to the container, arrived at by layout.
 
Size mSize {}
 The size on screen, arrived at by layout.
 
Position< int > mPreferredPos {}
 The preferred position.
 
Size mPreferredSize {}
 The preferred size.
 
Rectangle mScreenRect {}
 The screen Rectangle computed at drawing time.
 
Padding mPadding {}
 Immediately around the Visual, used for separation and alignment.
 
State mState {}
 The object state Id string.
 
bool mVisible {true}
 If true the object is visible.
 
- Protected Attributes inherited from rose::Node
std::weak_ptr< ContainermContainer {}
 The Container that holds the Node. More...
 
Id mId {}
 

Additional Inherited Members

- Public Types inherited from rose::Visual
using ValueMap = std::map< int, int >
 The std::map type for each hint class.
 
- Public Types inherited from rose::Node
using NodePtr = std::shared_ptr< Node >
 
- Static Public Member Functions inherited from rose::Node
template<typename NodeType >
static std::shared_ptr< NodeType > create ()
 Create a Node with no arguments. More...
 
template<typename NodeType , typename ... Args>
static std::shared_ptr< NodeType > create (Args ... args)
 Create a Node with arguments. More...
 
template<typename NodeType , typename ContainerType , typename ... Args>
static std::shared_ptr< NodeType > add (ContainerType container, Args ... args)
 Create a Node with arguments and add to a Container. More...
 
- Public Attributes inherited from rose::Visual
std::map< size_t, ValueMapmHintsMap {}
 The std::map of hint class to ValueMap.
 
- Static Public Attributes inherited from rose::Window
static constexpr std::string_view id = "Window"
 
- Static Public Attributes inherited from rose::Container
static constexpr std::string_view id = "Container"
 
- Static Public Attributes inherited from rose::Node
static constexpr std::string_view id = "Node"
 

Detailed Description

A Menu that can be popped up by a CascadeButton.

Constructor & Destructor Documentation

◆ PopupMenu() [1/2]

rose::PopupMenu::PopupMenu ( const shared_ptr< Rose > &  rose,
Position  pos,
const MenuDataList menuDataList,
std::shared_ptr< Slot< Button::SignalType >>  appButtonRx 
)

Construct a PopupMenu.

Parameters
roseA reference to the Rose object.
posThe position to display the menu.
menuDataListThe MenuData items.
appButtonRxThe application Slot to receive Button signals.

◆ PopupMenu() [2/2]

rose::PopupMenu::PopupMenu ( const shared_ptr< Rose > &  rose,
Position  pos,
Size  minimumSize,
const MenuDataList menuDataList,
std::shared_ptr< Slot< Button::SignalType >>  appButtonRx 
)

Construct a PopupMenu.

Parameters
roseA reference to the Rose object.
posThe position to display the menu.
minimumSizeThe width of the PopupMenu so it can match the width of the CascadeButton.
menuDataListThe MenuData items.
appButtonRxThe application Slot to receive Button signals.

The documentation for this class was generated from the following files: