Main Page | Class Hierarchy | Alphabetical List | Class List | File List | Class Members

umenu.hpp

00001 /* ==================================================== ======== ======= * 00002 * 00003 * umenu.hpp 00004 * Ubit Project [Elc::2003] 00005 * Author: Eric Lecolinet 00006 * 00007 * Part of the Ubit Toolkit: A Brick Construction Game Model for Creating GUIs 00008 * 00009 * (C) 1999-2003 Eric Lecolinet @ ENST Paris 00010 * WWW: http://www.enst.fr/~elc/ubit Email: elc@enst.fr (subject: ubit) 00011 * 00012 * *********************************************************************** 00013 * COPYRIGHT NOTICE : 00014 * THIS PROGRAM IS DISTRIBUTED WITHOUT ANY WARRANTY AND WITHOUT EVEN THE 00015 * IMPLIED WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. 00016 * YOU CAN REDISTRIBUTE IT AND/OR MODIFY IT UNDER THE TERMS OF THE GNU 00017 * GENERAL PUBLIC LICENSE AS PUBLISHED BY THE FREE SOFTWARE FOUNDATION; 00018 * EITHER VERSION 2 OF THE LICENSE, OR (AT YOUR OPTION) ANY LATER VERSION. 00019 * SEE FILES 'COPYRIGHT' AND 'COPYING' FOR MORE DETAILS. 00020 * *********************************************************************** 00021 * 00022 * ==================================================== [Elc:03] ======= * 00023 * ==================================================== ======== ======= */ 00024 00025 #ifndef _umenu_hpp_ 00026 #define _umenu_hpp_ 00027 //pragma ident "@(#)umenu.hpp ubit:03.06.03" 00028 #include <ubit/uwin.hpp> 00029 00030 /* ==================================================== [Elc:03] ======= */ 00031 /* ==================================================== ======== ======= */ 00034 class UMenubar: public UBar { 00035 void enterChild(UEvent&); 00036 void leaveChild(UEvent&); 00037 void relaxChild(UEvent&); 00038 00039 public: 00040 static UStyle *style; 00041 00042 UMenubar(const UArgs& a = UArgs::none); 00043 00044 friend UMenubar& umenubar(const UArgs& a = UArgs::none) 00045 {return *new UMenubar(a);} 00047 00048 virtual const UStyle& getStyle(UContext*) const {return makeStyle();} 00049 static const UStyle& makeStyle(); 00050 00051 virtual UGroup* getBrowsingGroup() {return this;} 00052 }; 00053 00054 /* ==================================================== [Elc:03] ======= */ 00055 /* ==================================================== ======== ======= */ 00056 00075 class UMenu : public UWin { 00076 public: 00077 static UStyle *style; 00078 00079 UMenu(const UArgs& a = UArgs::none); 00080 friend UMenu& umenu(const UArgs& a = UArgs::none) {return *new UMenu(a);} 00083 virtual ~UMenu(); 00084 00085 virtual const UStyle& getStyle(UContext*) const {return makeStyle();} 00086 static const UStyle& makeStyle(); 00087 00088 virtual UGroup* getBrowsingGroup(); 00090 00091 virtual void open(); 00106 virtual void close(int status = 0); 00115 virtual void setPlacement(const class UPlacement*); 00116 virtual void setPlacement(const class UPlacement&); 00124 virtual bool realize(); 00125 00126 #ifndef NO_DOC 00127 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 00128 // implementation 00129 00130 virtual void addingTo(class ULink *selflink, UGroup *parent); 00131 virtual void removingFrom(class ULink *selflink, UGroup *parent); 00133 00134 private: 00135 friend class UAppli; 00136 friend class UMenuCtrl; 00137 00138 UGroup *menuBrowsingGroup; 00139 UCall *enter_opener, *arm_opener, *disarm_opener; 00140 class UPlacement *placement; 00141 00142 void enterChild(UEvent&); 00143 void leaveChild(UEvent&); 00144 void relaxChild(UEvent&); 00145 void enterOpener(UEvent&); 00146 void armOpener(UEvent&); 00147 void disarmOpener(UEvent&); 00148 00150 virtual void openImpl(class UMenuCtrl&, UView *opener, 00151 UGroup *menugroup, bool auto_place); 00152 #endif 00153 }; 00154 00155 /* ==================================================== [Elc:03] ======= */ 00156 /* ==================================================== ======== ======= */ 00157 00179 class UPopmenu : public UMenu { 00180 public: 00181 struct InputCond { 00182 u_id mods; 00183 u_id buttons; 00184 u_id keysym; 00185 InputCond(u_id _mods, u_id _buttons, u_id _keysym) { 00186 mods = _mods; buttons = _buttons; keysym = _keysym; 00187 } 00188 }; 00189 00190 static UStyle *style; 00191 00192 UPopmenu(const UArgs& a = UArgs::none); 00193 00194 friend UPopmenu& upopmenu(const UArgs& a = UArgs::none) {return *new UPopmenu(a);} 00196 00197 virtual void autoOpens(UBox& opener, u_id button_mask, u_id keysym, 00198 bool children_open_menu = false); 00199 virtual void autoOpens(UBox& opener, 00200 const std::vector<InputCond>&, 00201 bool children_open_menu); 00202 00213 virtual const UStyle& getStyle(UContext*) const {return makeStyle();} 00214 static const UStyle& makeStyle(); 00215 00216 protected: 00217 std::vector<InputCond> input_conds; 00218 virtual bool autoOpenCheck(UEvent&); 00219 virtual void autoOpenImpl(UEvent&); 00221 }; 00222 00223 #endif 00224 /* ==================================================== [TheEnd] ======= */ 00225 /* ==================================================== [Elc:03] ======= */ 00226 00227

Generated on Tue Jul 27 18:01:55 2004 for Ubit[Eric.Lecolinet@enst.fr] by doxygen 1.3.7