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 
37 namespace Pt {
38 namespace Forms {
39 
40 class Menu;
41 class MenuBar;
42 
51 class PT_FORMS_API MenuMenuItem : public MenuItemBase
52 {
53  friend class Menu;
54 
55  public:
58  typedef MenuItemBase Base;
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 
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
Core module.
Definition: Allocator.h:33
Represents an alternate menu item that manages a nested menu.
Definition: MenuMenuItem.h:52
void setMenu(Menu *menu)
Associates menu with this item.
Defines the coordination interface shared by menu containers.
Definition: MenuBase.h:51
virtual void onMnemonic(Pt::Char m)
Handles an activated form mnemonic.
virtual const std::vector< Pt::Char > onGetMnemonics()
Returns mnemonics registered by this control.
Unicode character type.
Definition: String.h:67
void cancel()
Cancels the nested menu interaction.
virtual ~MenuMenuItem()
Destroys the item.
virtual const std::vector< Key > onGetShortcuts()
Returns shortcuts registered by this control.
const Menu * menu() const
Returns the nested menu, or 0 when none is assigned.
Definition: MenuMenuItem.h:78
bool isMenuOpen() const
Returns true if the nested menu is open.
Definition: MenuMenuItem.h:116
Menu * menu()
Returns the nested menu, or 0 when none is assigned.
Definition: MenuMenuItem.h:86
void setParentMenu(MenuBase *p)
Sets the containing menu coordinator.
Definition: MenuMenuItem.h:95
Key code and modifiers.
Definition: Key.h:23
Represents a popup menu containing commands and nested menus.
Definition: Menu.h:71
MenuMenuItem()
Creates an item without a nested menu.
void closeMenu()
Closes the nested menu.
virtual void onShortcut(const Key &key)
Handles an activated form shortcut.
Represents the common content and activation behavior of a menu item.
Definition: MenuItemBase.h:55
void openMenu()
Opens the nested menu.
MenuItemBase Base
Defines the inherited menu item type.
Definition: MenuMenuItem.h:58