OpendTect  6.6
uiparentbody.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: A.H. Lammertink
8  Date: 21/06/2001
9  RCS: $Id$
10 ________________________________________________________________________
11 
12 -*/
13 
14 #include "uiparent.h"
15 #include "uilayout.h"
16 #include "sets.h"
17 #include "uiobj.h"
18 #include "uibody.h"
19 
20 #include "uigroup.h"
21 
22 mClass(uiBase) uiParentBody : public uiBody, public NamedCallBacker
23 {
24 friend class uiObjectBody;
25 public:
26  virtual ~uiParentBody()
27  { sendDelNotif(); deleteAllChildren(); }
28 
29  virtual void addChild( uiBaseObject& child )
30  {
31  if ( children_.isPresent(&child ) ) return;
32  children_ += &child;
33  mAttachCB( child.objectToBeDeleted(),
35  }
36 
38  void manageChld( uiBaseObject& child, uiObjectBody& b)
39  {
40  addChild( child );
41  manageChld_(child,b);
42  }
43 
44  virtual void attachChild( constraintType tp, uiObject* child,
45  uiObject* other, int margin,
46  bool reciprocal ) =0;
47 
48  const ObjectSet<uiBaseObject>* childList() const { return &children_; }
49 
50  bool finalised() const { return finalised_; }
51  virtual void finalise() { finaliseChildren(); }
52  void finaliseChildren(); // body: uiobj.cc
53  void clearChildren(); // body: uiobj.cc
54 
56  inline const mQtclass(QWidget*) managewidg() const { return managewidg_();}
58  inline mQtclass(QWidget*) managewidg()
59  { return const_cast<mQtclass(QWidget*)>( managewidg_() ); }
60 
61 protected:
62  uiParentBody( const char* nm )
63  : NamedCallBacker( nm )
64  , finalised_( false )
65  {}
66 
68  {
69  //avoid the problems from childDel() removal from
70  //children_
71  ObjectSet<uiBaseObject> childrencopy = children_;
72  children_.erase();
73  deepErase( childrencopy );
74  }
75 
76  void childDel( CallBacker* cb )
77  {
78  uiBaseObject* obj = static_cast<uiBaseObject*>( cb );
79  if ( obj ) children_ -= obj;
80  }
81 
82  virtual const mQtclass(QWidget*) managewidg_() const = 0;
83  virtual void manageChld_(uiBaseObject&,uiObjectBody&) {}
84 
86 
87 private:
88 
89  bool finalised_;
90 };
91 
92 
94 {
95 public:
97 
98  uiGroup* uiCentralWidg() { return centralwidget_; }
99  virtual void addChild(uiBaseObject&);
100  virtual void manageChld_(uiBaseObject&,uiObjectBody&);
101  virtual void attachChild(constraintType,uiObject* child,
102  uiObject* other,int margin,
103  bool reciprocal);
104 
105 protected:
106  uiCentralWidgetBody(const char* nm);
107 
108  virtual const QWidget* managewidg_() const;
109 
110  bool initing_;
112 };
113 
uiParentBody::deleteAllChildren
void deleteAllChildren()
Definition: uiparentbody.h:67
uiParentBody::manageChld_
virtual void manageChld_(uiBaseObject &, uiObjectBody &)
Definition: uiparentbody.h:83
NamedCallBacker
CallBacker object with a name. Use if you want your object to be able to send and receive CallBack's,...
Definition: namedobj.h:72
ObjectSet< uiBaseObject >
uiParentBody::children_
ObjectSet< uiBaseObject > children_
Definition: uiparentbody.h:85
mAttachCB
#define mAttachCB(notifier, func)
Definition: notify.h:147
uiParentBody::mQtclass
virtual const mQtclass(QWidget *) managewidg_() const =0
uiCentralWidgetBody::uiCentralWidgetBody
uiCentralWidgetBody(const char *nm)
mExpClass
#define mExpClass(module)
Definition: commondefs.h:177
uiParentBody::uiParentBody
uiParentBody(const char *nm)
Definition: uiparentbody.h:62
CallBacker
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:185
uiParentBody::attachChild
virtual void attachChild(constraintType tp, uiObject *child, uiObject *other, int margin, bool reciprocal)=0
constraintType
constraintType
Definition: uilayout.h:19
uigroup.h
uiCentralWidgetBody::centralwidget_
uiGroup * centralwidget_
Definition: uiparentbody.h:111
uiParentBody
Definition: uiparentbody.h:23
uiParentBody::clearChildren
void clearChildren()
uiparent.h
uiCentralWidgetBody::manageChld_
virtual void manageChld_(uiBaseObject &, uiObjectBody &)
uiGroup
Definition: uigroup.h:54
uiCentralWidgetBody::~uiCentralWidgetBody
virtual ~uiCentralWidgetBody()
mClass
#define mClass(module)
Definition: commondefs.h:181
uiCentralWidgetBody
Definition: uiparentbody.h:94
uiParentBody::manageChld
void manageChld(uiBaseObject &child, uiObjectBody &b)
child becomes mine.
Definition: uiparentbody.h:38
uiParentBody::finalise
virtual void finalise()
Definition: uiparentbody.h:51
uiParentBody::childList
const ObjectSet< uiBaseObject > * childList() const
Definition: uiparentbody.h:48
uiCentralWidgetBody::attachChild
virtual void attachChild(constraintType, uiObject *child, uiObject *other, int margin, bool reciprocal)
uiParentBody::addChild
virtual void addChild(uiBaseObject &child)
Definition: uiparentbody.h:29
uibody.h
uiCentralWidgetBody::initing_
bool initing_
Definition: uiparentbody.h:110
uiParentBody::finaliseChildren
void finaliseChildren()
ObjectSet::erase
virtual void erase()
Definition: objectset.h:85
deepErase
void deepErase(BufferStringSet &)
uiCentralWidgetBody::uiCentralWidg
uiGroup * uiCentralWidg()
Definition: uiparentbody.h:98
mQtclass
#define mQtclass(cls)
Definition: commondefs.h:234
uiObject
The base class for most UI elements.
Definition: uiobj.h:38
uiParentBody::mQtclass
const mQtclass(QWidget *) managewidg() const
widget to be used as parent for QWidgets
Definition: uiparentbody.h:56
uilayout.h
uiParentBody::~uiParentBody
virtual ~uiParentBody()
Definition: uiparentbody.h:26
uiCentralWidgetBody::managewidg_
virtual const QWidget * managewidg_() const
uiParentBody::mQtclass
mQtclass(QWidget *) managewidg()
widget to be used as parent for QWidgets
Definition: uiparentbody.h:58
uiParentBody::childDel
void childDel(CallBacker *cb)
Definition: uiparentbody.h:76
sets.h
uiCentralWidgetBody::addChild
virtual void addChild(uiBaseObject &)
uiParentBody::finalised
bool finalised() const
Definition: uiparentbody.h:50
uiParentBody::finalised_
bool finalised_
Definition: uiparentbody.h:89
uiobj.h

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