MenuMenuItem.h
1/* Copyright (C) 2015 Marc Boris Duerner
2 Copyright (C) 2015 Laurentiu-Gheorghe Crisan
3
4 This library is free software; you can redistribute it and/or
5 modify it under the terms of the GNU Lesser General Public
6 License as published by the Free Software Foundation; either
7 version 2.1 of the License, or (at your option) any later version.
8
9 As a special exception, you may use this file as part of a free
10 software library without restriction. Specifically, if other files
11 instantiate templates or use macros or inline functions from this
12 file, or you compile this file and link it with other files to
13 produce an executable, this file does not by itself cause the
14 resulting executable to be covered by the GNU General Public
15 License. This exception does not however invalidate any other
16 reasons why the executable file might be covered by the GNU Library
17 General Public License.
18
19 This library is distributed in the hope that it will be useful,
20 but WITHOUT ANY WARRANTY; without even the implied warranty of
21 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
22 Lesser General Public License for more details.
23
24 You should have received a copy of the GNU Lesser General Public
25 License along with this library; if not, write to the Free Software
26 Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
27 MA 02110-1301 USA
28*/
29#ifndef PT_FORMS_MENUMENUITEM_H
30#define PT_FORMS_MENUMENUITEM_H
31
32#include <Pt/Forms/Api.h>
33#include <Pt/Forms/MenuBase.h>
34#include <Pt/Forms/MenuItemBase.h>
35#include <vector>
36
37namespace Pt {
38namespace Forms {
39
40class Menu;
41class MenuBar;
42
51class PT_FORMS_API MenuMenuItem : public MenuItemBase
52{
53 friend class Menu;
54
55 public:
59
60 public:
64
67 virtual ~MenuMenuItem();
68
74 void setMenu(Menu* menu);
75
78 const Menu* menu() const
79 {
80 return _menu;
81 }
82
83
86 Menu* menu()
87 {
88 return _menu;
89 }
90
96 {
97 _parentMenu = p;
98 }
99
102 void cancel();
103
104
107 void closeMenu();
108
111 void openMenu();
112
113
116 bool isMenuOpen() const
117 {
118 return _isOpen;
119 }
120
121 protected:
122 virtual const std::vector<Key> onGetShortcuts();
123
124 virtual const std::vector<Pt::Char> onGetMnemonics();
125
126 virtual void onShortcut(const Key& key);
127
128 virtual void onMnemonic(Pt::Char m);
129
130 private:
131 MenuBase* _parentMenu;
132 Menu* _menu;
133 bool _isOpen;
134};
135
136}}
137
138#endif
Key code and modifiers.
Definition Key.h:23
Represents a horizontal bar of top-level menus.
Definition MenuBar.h:78
Defines the coordination interface shared by menu containers.
Definition MenuBase.h:51
MenuItemBase()
Creates a menu item with empty content.
void cancel()
Cancels the nested menu interaction.
MenuMenuItem()
Creates an item without a nested menu.
void setParentMenu(MenuBase *p)
Sets the containing menu coordinator.
Definition MenuMenuItem.h:95
Menu * menu()
Returns the nested menu, or 0 when none is assigned.
Definition MenuMenuItem.h:86
void setMenu(Menu *menu)
Associates menu with this item.
virtual const std::vector< Key > onGetShortcuts()
Returns shortcuts registered by this control.
virtual void onShortcut(const Key &key)
Handles an activated form shortcut.
MenuItemBase Base
Defines the inherited menu item type.
Definition MenuMenuItem.h:58
bool isMenuOpen() const
Returns true if the nested menu is open.
Definition MenuMenuItem.h:116
virtual ~MenuMenuItem()
Destroys the item.
virtual void onMnemonic(Pt::Char m)
Handles an activated form mnemonic.
virtual const std::vector< Pt::Char > onGetMnemonics()
Returns mnemonics registered by this control.
void closeMenu()
Closes the nested menu.
void openMenu()
Opens the nested menu.
const Menu * menu() const
Returns the nested menu, or 0 when none is assigned.
Definition MenuMenuItem.h:78
Represents a popup menu containing commands and nested menus.
Definition Menu.h:71
Graphical user interfaces.
Definition ActivateEvent.h:40
Core module.
Definition Allocator.h:33
Unicode character type.
Definition String.h:67