ubit
umenu.hpp
1 /************************************************************************
2  *
3  * umenu.hpp: menu bars, pulldown and popup menus
4  * Ubit GUI Toolkit - Version 6
5  * (C) 2009 | Eric Lecolinet | TELECOM ParisTech | http://www.enst.fr/~elc/ubit
6  *
7  * ***********************************************************************
8  * COPYRIGHT NOTICE :
9  * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE
10  * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
11  * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU
12  * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION;
13  * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION.
14  * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS.
15  * ***********************************************************************/
16 
17 #ifndef _umenu_hpp_
18 #define _umenu_hpp_ 1
19 #include <ubit/uboxes.hpp>
20 #include <ubit/uwin.hpp>
21 namespace ubit {
22 
23  class UMenuManager;
24 
27  class UMenubar: public UBar {
28  public:
29  UCLASS(UMenubar)
30 
31  UMenubar(const UArgs& a = UArgs::none);
33 
34  static UStyle* createStyle();
35 
36  // - - -impl - - - - - - - - - - - - - - - - - - - - - - - - - - - -
37 #ifndef NO_DOC
38  //virtual UElem* getBrowsingGroup() {return this;}
39  protected:
40  virtual void menuChildCB(UInputEvent&);
41 #endif
42  };
43 
44  inline UMenubar& umenubar(const UArgs& args = UArgs::none) {return *new UMenubar(args);}
46 
47 
48  /* ==================================================== ======== ======= */
64  class UMenu : public UWin {
65  public:
66  UCLASS(UMenu)
67 
68  UMenu(const UArgs& a = UArgs::none);
70 
71  virtual ~UMenu();
72 
73  static UStyle* createStyle();
74  virtual UMenu* toMenu() {return this;}
75  virtual const UMenu* toMenu() const {return this;}
76 
77  virtual void show(bool state = true) {UMenu::show(state, null);}
79 
80  virtual void show(bool state, UDisp*);
82 
83  void closeAllMenus(UInputEvent&);
85 
86  virtual void setPlacement(const UWinPlacement&);
91  virtual bool realize();
92 
93  // - - - Impl. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
94 #ifndef NO_DOC
95  virtual void addingTo(UChild&, UElem& parent);
96  virtual void removingFrom(UChild&, UElem& parent);
98  private:
99  friend class UAppli;
100  friend class UMenuManager;
101  uptr<UCall> menu_opener_cb;
102  class UWinPlacement *placement;
103  protected:
104  virtual void openImpl(UMenuManager&, UView* opener, bool auto_place, UDisp*);
105  virtual void menuOpenerCB(UInputEvent&);
106  virtual void menuChildCB(UInputEvent&);
107 #endif
108  };
109 
110  inline UMenu& umenu(const UArgs& args = UArgs::none) {return *new UMenu(args);}
112 
113 
114  /* ==================================================== ======== ======= */
149  class UPopmenu : public UMenu {
150  public:
151  UCLASS(UPopmenu)
152  static UStyle* createStyle();
153 
154  UPopmenu(const UArgs& a = UArgs::none);
156 
157  virtual void open(UMouseEvent&);
172  };
173 
174  inline UPopmenu& upopmenu(const UArgs& args = UArgs::none) {return *new UPopmenu(args);}
176 
177 }
178 #endif
179 
180 
181 
virtual UMenu * toMenu()
dynamic cast: returns this object if it derives from UMenu and null otherwise.
Definition: umenu.hpp:74
virtual void removingFrom(UChild &, UElem &parent)
called when this object is removed from a parent (SEE DETAILS IF YOU REDEFINE THIS METHOD)...
Definition: unode.hpp:222
UPopmenu: Contextual Menu.
Definition: umenu.hpp:149
virtual void show(bool state=true)
shows/hides the menu at its current location.
Definition: umenu.hpp:77
Display Context.
Definition: udisp.hpp:44
UBar = horizontal toolbar or status bar.
Definition: uboxes.hpp:58
UMenubar(const UArgs &a=UArgs::none)
create a new Menu Bar; see also shortcut function umenubar().
Definition: umenu.cpp:67
The Application Context.
Definition: uappli.hpp:79
virtual void addingTo(UChild &, UElem &parent)
called when this object is added to a parent.
Definition: unode.hpp:219
lightweight general purpose container.
Definition: uelem.hpp:44
Menu bar.
Definition: umenu.hpp:27
Smart Pointer for UObject instances (.
Definition: uobject.hpp:365
Argument list (for passing arguments to constructor or add functions).
Definition: uargs.hpp:43
UMenu: pulldown and cascaded menux.
Definition: umenu.hpp:64
virtual const UMenu * toMenu() const
dynamic cast: returns this object if it derives from UMenu and null otherwise.
Definition: umenu.hpp:75
Box View.
Definition: uview.hpp:65
Definition: uhardfont.hpp:31
Base class for UMouseEvent and UKeyEvent Note that this class inherits from class UModifier that defi...
Definition: uevent.hpp:75
static const UArgs none
the empty arglist.
Definition: uargs.hpp:45
Base class for windows and menus.
Definition: uwin.hpp:47
[Implementation] manages the stack of menus that are currently opened on a given EventFlow.
Definition: umenuImpl.hpp:24
Compiled Object Style.
Definition: ustyle.hpp:44
virtual void show(bool=true)
shows/hides this object.
Definition: uelem.cpp:468
Constraints for Window Placement.
Definition: uwin.hpp:309
mouse events
Definition: uevent.hpp:172
[impl] Internal implementation of a child node.
Definition: uchild.hpp:23