OpendTect  6.6
menuhandler.h
Go to the documentation of this file.
1 #pragma once
2 
3 /*+
4 ________________________________________________________________________
5 
6  (C) dGB Beheer B.V.; (LICENSE) http://opendtect.org/OpendTect_license.txt
7  Author: N. Hemstra
8  Date: May 2003
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "generalmod.h"
15 #include "refcount.h"
16 #include "position.h"
17 #include "callback.h"
18 #include "bufstring.h"
19 #include "uistring.h"
20 
21 class BufferStringSet;
22 class MenuItem;
23 class MenuHandler;
24 
26 {
27 public:
29  virtual ~MenuItemHolder();
33  virtual void addItem(MenuItem*,bool manage=false);
44  void removeItems();
45  int nrItems() const;
46 
47  const MenuItem* getItem(int idx) const;
48  MenuItem* getItem(int idx);
49  int itemIndex(const MenuItem*) const;
50  int itemIndex(int id) const;
51  MenuItem* findItem(int id);
52  const MenuItem* findItem(int id) const;
53  MenuItem* findItem(const char*);
55  const MenuItem* findItem(const char*) const;
57 
58  const ObjectSet<MenuItem>& getItems() const;
59 
60 protected:
61  friend class MenuHandler;
63  virtual void assignItemID(MenuItem&);
67 
68 private:
71 };
72 
76 {
77 public:
79  text=uiString::emptyString(),
80  int placement=-1);
81  MenuItem(const uiString& text,
82  CallBack cb,int placement=-1);
83  MenuItem(const uiString& text,
84  const char* iconnm,
85  const char* tooltip,
86  CallBack cb=CallBack(),
87  int placement=-1);
89  void createItems(const uiStringSet&);
90 
92  /*< The text that should be on the item. */
93  int placement;
98  int id;
100  bool checkable;
102  bool checked;
105  bool enabled;
109  //*!< Icon identifier
111  //*!< Tooltip if item is used in toolbar
113  //*!< Callback function to be called
114 };
115 
116 
119 public:
120  SeparatorItem(int plmnt=-1)
121  : MenuItem(tr("Separator"),plmnt) {}
122 };
123 
124 
188 public:
189  MenuHandler( int id );
190 
191  virtual bool executeMenu() = 0;
192 
193  int menuID() const { return id_; }
194  /*<Each menu has an unique id where the
195  that identifies it. */
196  void setMenuID( int newid ) { id_=newid; }
197 
201  bool isHandled() const;
207  void setIsHandled(bool);
214  int queueID() const { return queueid_; }
218 protected:
220  void executeQueue();
221 
222  int id_;
224  int queueid_;
225 };
226 
227 
236 {
237 public:
239  const CallBack&,const char* parenttxt=0,
240  int placement=-1);
242  bool doadd_;
252  void setIcon(const char* fnm);
253 
254 protected:
255 
256  virtual void createMenuCB(CallBacker*);
257  virtual void handleMenuCB(CallBacker*);
258 
259  virtual bool shouldAddMenu() const { return true; }
260  virtual bool shouldBeEnabled() const { return true;}
261  virtual bool shouldBeChecked() const { return false;}
262 
267 };
268 
269 
270 
271 #define mResetMenuItem( item ) \
272 { \
273  (item)->enabled = true; \
274  (item)->checked = false; \
275  (item)->id = -1; \
276  (item)->removeItems(); \
277 }
278 
279 #define mAddMenuItemWithManageFlag( parent, item, manage, enab, check ) \
280 { \
281  MenuItem* _item = item; \
282  MenuItemHolder* _parent = parent; \
283  if ( _parent && (_parent)->itemIndex(_item)==-1 ) \
284  (_parent)->addItem( _item ); \
285  \
286  (_item)->enabled = (enab); \
287  (_item)->checked = (check); \
288 }
289 
290 #define mAddMenuItem( parent, item, enab, check ) \
291 mAddMenuItemWithManageFlag( parent, item, false, enab, check )
292 
293 
294 #define mAddManagedMenuItem( parent, item, enab, check ) \
295 mAddMenuItemWithManageFlag( parent, item, true, enab, check )
296 
297 
298 #define mAddMenuItemCond( menu, item, enab, check, cond ) { \
299  if ( menu && cond ) \
300  mAddMenuItem( menu, item, enab, check ) \
301  else \
302  mResetMenuItem( item ) } \
303 
304 //Macro that can poplulate both a toolbar and a menu.
305 #define mAddMenuOrTBItem( istoolbar, tbparent, popupparent, item, enab, check )\
306  mAddMenuItem( \
307  istoolbar ? sCast(MenuItemHolder*,tbparent) \
308  : sCast(MenuItemHolder*,popupparent), item, enab, check )
309 
MenuItemHolder::findItem
const MenuItem * findItem(const char *) const
Seaches for untranslated text.
MenuItemHolder::getItem
MenuItem * getItem(int idx)
MenuItem::checkable
bool checkable
Definition: menuhandler.h:100
MenuItemHolder::removal
Notifier< MenuItemHolder > removal
Definition: menuhandler.h:30
MenuHandler::isHandled
bool isHandled() const
MenuItemHolder::itemIsDeletedCB
void itemIsDeletedCB(CallBacker *)
MenuHandler::executeMenu
virtual bool executeMenu()=0
MenuItemHolder::MenuItemHolder
MenuItemHolder()
MenuItemHolder::getItems
const ObjectSet< MenuItem > & getItems() const
MenuItem::text
uiString text
Definition: menuhandler.h:91
MenuItemHandler::shouldAddMenu
virtual bool shouldAddMenu() const
Definition: menuhandler.h:259
uistring.h
uiStringSet
Definition: uistringset.h:23
ObjectSet< MenuItem >
MenuItem::enabled
bool enabled
Definition: menuhandler.h:105
MenuItemHolder::items_
ObjectSet< MenuItem > items_
Definition: menuhandler.h:69
MenuItemHolder::itemIndex
int itemIndex(int id) const
BufferStringSet
Set of BufferString objects.
Definition: bufstringset.h:26
MenuHandler
Definition: menuhandler.h:187
MenuHandler::setIsHandled
void setIsHandled(bool)
MenuHandler::initnotifier
Notifier< MenuHandler > initnotifier
Definition: menuhandler.h:198
MenuItemHolder::findItem
const MenuItem * findItem(int id) const
MenuHandler::menuID
int menuID() const
Definition: menuhandler.h:193
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
MenuItemHandler::menuitem_
MenuItem menuitem_
Definition: menuhandler.h:263
MenuItemHolder::removeItems
void removeItems()
MenuHandler::queueID
int queueID() const
Definition: menuhandler.h:214
MenuItemHandler::MenuItemHandler
MenuItemHandler(MenuHandler &, const uiString &nm, const CallBack &, const char *parenttxt=0, int placement=-1)
MenuItem
Definition: menuhandler.h:76
MenuItemHandler::shouldBeChecked
virtual bool shouldBeChecked() const
Definition: menuhandler.h:261
callback.h
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
MenuItemHandler::menuhandler_
MenuHandler & menuhandler_
Definition: menuhandler.h:264
MenuItemHandler::isenabled_
bool isenabled_
Definition: menuhandler.h:245
MenuItem::createItems
void createItems(const BufferStringSet &)
bufstring.h
MenuItemHandler::ischecked_
bool ischecked_
Definition: menuhandler.h:248
MenuHandler::mRefCountImpl
mRefCountImpl(MenuHandler)
MenuItemHolder::findItem
MenuItem * findItem(int id)
MenuHandler::ishandled_
bool ishandled_
Definition: menuhandler.h:223
MenuItemHolder::manageitems_
BoolTypeSet manageitems_
Definition: menuhandler.h:70
MenuItemHolder::findItem
MenuItem * findItem(const char *)
Seaches for untranslated text.
MenuItemHolder::itemIndex
int itemIndex(const MenuItem *) const
MenuItemHandler
Definition: menuhandler.h:236
CallBack
CallBacks object-oriented (object + method).
Definition: callback.h:62
MenuItemHandler::parenttext_
BufferString parenttext_
Definition: menuhandler.h:266
MenuItemHandler::createMenuCB
virtual void createMenuCB(CallBacker *)
MenuItem::createItems
void createItems(const uiStringSet &)
MenuHandler::assignItemID
void assignItemID(MenuItem &)
MenuItem::MenuItem
MenuItem(const uiString &text=uiString::emptyString(), int placement=-1)
Notifier< MenuItemHolder >
MenuItemHandler::handleMenuCB
virtual void handleMenuCB(CallBacker *)
MenuHandler::handlenotifier
CNotifier< MenuHandler, int > handlenotifier
Definition: menuhandler.h:200
MenuHandler::MenuHandler
MenuHandler(int id)
MenuItem::cb
CallBack cb
Definition: menuhandler.h:112
position.h
MenuItemHolder
Definition: menuhandler.h:26
BufferString
OD::String with its own variable length buffer. The buffer has a guaranteed minimum size.
Definition: bufstring.h:40
MenuItemHolder::nrItems
int nrItems() const
MenuItem::iconfnm
BufferString iconfnm
Definition: menuhandler.h:108
MenuHandler::setMenuID
void setMenuID(int newid)
Definition: menuhandler.h:196
MenuItemHolder::~MenuItemHolder
virtual ~MenuItemHolder()
uiString
String that is able to hold international (UTF-8) strings for the user interface.
Definition: uistring.h:121
uiString::emptyString
static const uiString & emptyString()
Definition: uistring.h:300
MenuItemHolder::addItem
virtual void addItem(MenuItem *, bool manage=false)
MenuHandler::createnotifier
Notifier< MenuHandler > createnotifier
Definition: menuhandler.h:199
MenuItem::placement
int placement
Definition: menuhandler.h:93
MenuItem::checked
bool checked
Definition: menuhandler.h:102
MenuItem::id
int id
Definition: menuhandler.h:98
MenuItemHolder::parent_
MenuItemHolder * parent_
Definition: menuhandler.h:66
MenuHandler::queueid_
int queueid_
Definition: menuhandler.h:224
MenuItemHandler::doadd_
bool doadd_
Definition: menuhandler.h:242
refcount.h
MenuItemHandler::setIcon
void setIcon(const char *fnm)
MenuItemHolder::MenuHandler
friend class MenuHandler
Definition: menuhandler.h:61
MenuItem::MenuItem
MenuItem(const uiString &text, const char *iconnm, const char *tooltip, CallBack cb=CallBack(), int placement=-1)
SeparatorItem
Definition: menuhandler.h:118
MenuItem::MenuItem
MenuItem(const uiString &text, CallBack cb, int placement=-1)
CNotifier< MenuHandler, int >
SeparatorItem::SeparatorItem
SeparatorItem(int plmnt=-1)
Definition: menuhandler.h:120
SeparatorItem::mODTextTranslationClass
mODTextTranslationClass(SeparatorItem)
MenuItemHandler::shouldBeEnabled
virtual bool shouldBeEnabled() const
Definition: menuhandler.h:260
MenuItemHandler::cb_
CallBack cb_
Definition: menuhandler.h:265
MenuItemHolder::assignItemID
virtual void assignItemID(MenuItem &)
MenuHandler::executeQueue
void executeQueue()
MenuItem::tooltip
BufferString tooltip
Definition: menuhandler.h:110
MenuItemHandler::~MenuItemHandler
~MenuItemHandler()
MenuHandler::id_
int id_
Definition: menuhandler.h:222
TypeSet< BoolTypeSetType >
MenuItemHolder::getItem
const MenuItem * getItem(int idx) const

Generated at for the OpendTect seismic interpretation project. Copyright (C): dGB Beheer B.V. 1995-2021