34 enum EMenuEntryState {
35 kMenuActiveMask = BIT(0),
36 kMenuEnableMask = BIT(1),
37 kMenuDefaultMask = BIT(2),
38 kMenuCheckedMask = BIT(3),
39 kMenuRadioMask = BIT(4),
40 kMenuHideMask = BIT(5),
41 kMenuRadioEntryMask = BIT(6)
69 class TGMenuEntry :
public TObject {
71 friend class TGPopupMenu;
72 friend class TGMenuBar;
83 const TGPicture *fPic;
87 TGMenuEntry(
const TGMenuEntry&);
88 TGMenuEntry& operator=(
const TGMenuEntry&);
91 TGMenuEntry(): fEntryId(0), fUserData(0), fType(), fStatus(0),
92 fEx(0), fEy(0), fEw(0), fEh(0), fLabel(0), fShortcut(0), fPic(0), fPopup(0) { }
93 virtual ~TGMenuEntry() {
if (fLabel)
delete fLabel;
if (fShortcut)
delete fShortcut; }
95 Int_t GetEntryId()
const {
return fEntryId; }
96 const char *GetName()
const {
return fLabel ? fLabel->GetString() : 0; }
97 const char *GetShortcutText()
const {
return fShortcut ? fShortcut->GetString() : 0; }
98 virtual Int_t GetStatus()
const {
return fStatus; }
99 EMenuEntryType GetType()
const {
return fType; }
100 TGPopupMenu *GetPopup()
const {
return fPopup; }
101 TGHotString *GetLabel()
const {
return fLabel; }
102 TGString *GetShortcut()
const {
return fShortcut; }
103 Int_t GetEx()
const {
return fEx; }
104 Int_t GetEy()
const {
return fEy; }
105 UInt_t GetEw()
const {
return fEw; }
106 UInt_t GetEh()
const {
return fEh; }
107 const TGPicture *GetPic()
const {
return fPic; }
108 void *GetUserData()
const {
return fUserData; }
110 ClassDef(TGMenuEntry,0);
123 class TGPopupMenu :
public TGFrame {
125 friend class TGMenuTitle;
126 friend class TGMenuBar;
127 friend class TGSplitButton;
131 TGMenuEntry *fCurrent;
141 GContext_t fSelbackGC;
142 FontStruct_t fFontStruct;
143 FontStruct_t fHifontStruct;
144 Cursor_t fDefaultCursor;
145 const TGWindow *fMsgWindow;
147 TGSplitButton *fSplitButton;
150 static const TGFont *fgDefaultFont;
151 static const TGFont *fgHilightFont;
152 static const TGGC *fgDefaultGC;
153 static const TGGC *fgDefaultSelectedGC;
154 static const TGGC *fgDefaultSelectedBackgroundGC;
156 void DrawTrianglePattern(GContext_t gc, Int_t l, Int_t t, Int_t r, Int_t b);
157 void DrawCheckMark(GContext_t gc, Int_t l, Int_t t, Int_t r, Int_t b);
158 void DrawRCheckMark(GContext_t gc, Int_t l, Int_t t, Int_t r, Int_t b);
159 virtual void DoRedraw();
160 virtual void DrawEntry(TGMenuEntry *entry);
161 virtual void Reposition();
163 static FontStruct_t GetDefaultFontStruct();
164 static FontStruct_t GetHilightFontStruct();
165 static const TGGC &GetDefaultGC();
166 static const TGGC &GetDefaultSelectedGC();
167 static const TGGC &GetDefaultSelectedBackgroundGC();
170 TGPopupMenu(
const TGPopupMenu&);
171 TGPopupMenu& operator=(
const TGPopupMenu&);
174 TGPopupMenu(
const TGWindow *p = 0, UInt_t w = 10, UInt_t h = 10,
176 virtual ~TGPopupMenu();
178 virtual void AddEntry(TGHotString *s, Int_t
id,
void *ud = 0,
179 const TGPicture *p = 0, TGMenuEntry *before = 0);
180 virtual void AddEntry(
const char *s, Int_t
id,
void *ud = 0,
181 const TGPicture *p = 0, TGMenuEntry *before = 0);
182 virtual void AddSeparator(TGMenuEntry *before = 0);
183 virtual void AddLabel(TGHotString *s,
const TGPicture *p = 0,
184 TGMenuEntry *before = 0);
185 virtual void AddLabel(
const char *s,
const TGPicture *p = 0,
186 TGMenuEntry *before = 0);
187 virtual void AddPopup(TGHotString *s, TGPopupMenu *popup,
188 TGMenuEntry *before = 0,
const TGPicture *p = 0);
189 virtual void AddPopup(
const char *s, TGPopupMenu *popup,
190 TGMenuEntry *before = 0,
const TGPicture *p = 0);
191 virtual void EnableEntry(Int_t
id);
192 virtual void DisableEntry(Int_t
id);
193 virtual Bool_t IsEntryEnabled(Int_t
id);
194 virtual void HideEntry(Int_t
id);
195 virtual Bool_t IsEntryHidden(Int_t
id);
196 virtual void DefaultEntry(Int_t
id);
197 virtual void CheckEntry(Int_t
id);
198 virtual void CheckEntryByData(
void *user_data);
199 virtual void UnCheckEntry(Int_t
id);
200 virtual void UnCheckEntryByData(
void *user_data);
201 virtual void UnCheckEntries();
202 virtual Bool_t IsEntryChecked(Int_t
id);
203 virtual void RCheckEntry(Int_t
id, Int_t IDfirst, Int_t IDlast);
204 virtual Bool_t IsEntryRChecked(Int_t
id);
205 virtual void PlaceMenu(Int_t x, Int_t y, Bool_t stick_mode,
206 Bool_t grab_pointer);
207 virtual Int_t EndMenu(
void *&userData);
208 virtual void DeleteEntry(Int_t
id);
209 virtual void DeleteEntry(TGMenuEntry *entry);
210 virtual TGMenuEntry *GetEntry(Int_t
id);
211 virtual TGMenuEntry *GetCurrent()
const {
return fCurrent; }
212 virtual TGMenuEntry *GetEntry(
const char *s);
213 const TList *GetListOfEntries()
const {
return fEntryList; }
214 virtual void DrawBorder();
215 virtual Bool_t HandleButton(Event_t *event);
216 virtual Bool_t HandleMotion(Event_t *event);
217 virtual Bool_t HandleCrossing(Event_t *event);
218 virtual Bool_t HandleTimer(TTimer *t);
219 virtual void Associate(
const TGWindow *w) { fMsgWindow = w; }
220 virtual void SetMenuBar(TGMenuBar *bar) { fMenuBar = bar; }
221 TGMenuBar *GetMenuBar()
const {
return fMenuBar; }
222 virtual void Activate(Bool_t) { }
223 virtual void Activate(TGMenuEntry *entry);
224 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
226 UInt_t GetEntrySep()
const {
return fEntrySep; }
227 virtual void SetEntrySep(UInt_t sep) { fEntrySep = sep; }
229 virtual void PoppedUp() { Emit(
"PoppedUp()"); }
230 virtual void PoppedDown() { Emit(
"PoppedDown()"); }
231 virtual void Highlighted(Int_t
id) { Emit(
"Highlighted(Int_t)",
id); }
232 virtual void Activated(Int_t
id) { Emit(
"Activated(Int_t)",
id); }
234 ClassDef(TGPopupMenu,0)
248 class TGMenuTitle :
public TGFrame {
257 FontStruct_t fFontStruct;
259 GContext_t fNormGC, fSelGC;
261 virtual void DoRedraw();
263 static const TGFont *fgDefaultFont;
264 static const TGGC *fgDefaultSelectedGC;
265 static const TGGC *fgDefaultGC;
268 TGMenuTitle(
const TGMenuTitle&);
269 TGMenuTitle& operator=(
const TGMenuTitle&);
272 static FontStruct_t GetDefaultFontStruct();
273 static const TGGC &GetDefaultSelectedGC();
274 static const TGGC &GetDefaultGC();
276 TGMenuTitle(
const TGWindow *p = 0, TGHotString *s = 0, TGPopupMenu *menu = 0,
277 GContext_t norm = GetDefaultGC()(),
278 FontStruct_t font = GetDefaultFontStruct(),
280 virtual ~TGMenuTitle() {
if (fLabel)
delete fLabel; }
282 Pixel_t GetTextColor()
const {
return fTextColor; }
283 void SetTextColor(Pixel_t col) { fTextColor = col; }
284 virtual void SetState(Bool_t state);
285 Bool_t GetState()
const {
return fState; }
286 Int_t GetHotKeyCode()
const {
return fHkeycode; }
287 TGPopupMenu *GetMenu()
const {
return fMenu; }
288 const char *GetName()
const {
return fLabel ? fLabel->GetString() : 0; }
289 virtual void DoSendMessage();
290 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
292 ClassDef(TGMenuTitle,0)
304 class TGMenuBar :
public TGHorizontalFrame {
306 friend class TGPopupMenu;
309 TGMenuTitle *fCurrent;
311 Cursor_t fDefaultCursor;
315 TGPopupMenu *fMenuMore;
316 TGLayoutHints *fMenuBarMoreLayout;
321 virtual void AddFrameBefore(TGFrame *f, TGLayoutHints *l = 0,
322 TGPopupMenu *before = 0);
324 virtual void BindHotKey(Int_t keycode, Bool_t on = kTRUE);
325 virtual void BindKeys(Bool_t on = kTRUE);
326 void BindMenu(TGPopupMenu* subMenu, Bool_t on);
329 TGMenuBar(
const TGMenuBar&);
330 TGMenuBar& operator=(
const TGMenuBar&);
333 TGMenuBar(
const TGWindow *p = 0, UInt_t w = 60, UInt_t h = 20,
334 UInt_t options = kHorizontalFrame | kRaisedFrame);
335 virtual ~TGMenuBar();
337 virtual void AddPopup(TGHotString *s, TGPopupMenu *menu, TGLayoutHints *l,
338 TGPopupMenu *before = 0);
339 virtual void AddPopup(
const char *s, TGPopupMenu *menu, TGLayoutHints *l,
340 TGPopupMenu *before = 0);
341 virtual TGPopupMenu *AddPopup(
const TString &s, Int_t padleft = 4, Int_t padright = 0,
342 Int_t padtop = 0, Int_t padbottom = 0);
343 virtual void AddTitle(TGMenuTitle *title, TGLayoutHints *l, TGPopupMenu *before = 0);
345 virtual TGPopupMenu *GetPopup(
const char *s);
346 virtual TGPopupMenu *RemovePopup(
const char *s);
348 virtual TGMenuTitle *GetCurrent()
const {
return fCurrent; }
349 virtual TList *GetTitles()
const {
return fTitles; }
350 virtual Bool_t HandleButton(Event_t *event);
351 virtual Bool_t HandleMotion(Event_t *event);
352 virtual Bool_t HandleKey(Event_t *event);
353 virtual void SavePrimitive(std::ostream &out, Option_t *option =
"");
354 virtual void Layout();
355 void PopupConnection();
356 TGFrameElement* GetLastOnLeft();
358 ClassDef(TGMenuBar,0)