OpendTect  6.3
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 ________________________________________________________________________
10 
11 -*/
12 
13 #include "uiparent.h"
14 #include "uilayout.h"
15 #include "sets.h"
16 #include "uiobj.h"
17 #include "uibody.h"
18 
19 #include "uigroup.h"
20 
21 mClass(uiBase) uiParentBody : public uiBody, public NamedCallBacker
22 {
23 friend class uiObjectBody;
24 public:
25  //uiParentBody( const char* nm = "uiParentBody")
26  uiParentBody( const char* nm )
27  : NamedCallBacker( nm )
28  , finalised_( false )
29  {}
30 
31  virtual ~uiParentBody()
32  { sendDelNotif(); deleteAllChildren(); }
33 
34  virtual void addChild( uiBaseObject& child )
35  {
36  if ( children_.isPresent(&child ) ) return;
37  children_ += &child;
38  mAttachCB( child.objectToBeDeleted(),
40  }
41 
43  void manageChld( uiBaseObject& child, uiObjectBody& b)
44  {
45  addChild( child );
46  manageChld_(child,b);
47  }
48 
49  virtual void attachChild( constraintType tp, uiObject* child,
50  uiObject* other, int margin,
51  bool reciprocal ) =0;
52 
53  const ObjectSet<uiBaseObject>* childList() const { return &children_; }
54 
55  bool finalised() const { return finalised_; }
56  virtual void finalise() { finaliseChildren(); }
57  void finaliseChildren(); // body: uiobj.cc
58  void clearChildren(); // body: uiobj.cc
59 
61  inline const mQtclass(QWidget*) managewidg() const { return managewidg_();}
63  inline mQtclass(QWidget*) managewidg()
64  { return const_cast<mQtclass(QWidget*)>( managewidg_() ); }
65 
66 protected:
67 
69  {
70  //avoid the problems from childDel() removal from
71  //children_
72  ObjectSet<uiBaseObject> childrencopy = children_;
73  children_.erase();
74  deepErase( childrencopy );
75  }
76 
77  void childDel( CallBacker* cb )
78  {
79  uiBaseObject* obj = static_cast<uiBaseObject*>( cb );
80  if ( obj ) children_ -= obj;
81  }
82 
83  virtual const mQtclass(QWidget*) managewidg_() const = 0;
84  virtual void manageChld_(uiBaseObject&,uiObjectBody&) {}
85 
87 
88 private:
89 
90  bool finalised_;
91 };
Inherit from this class to be able to send and/or receive CallBacks.
Definition: callback.h:182
ObjectSet< uiBaseObject > children_
Definition: uiparentbody.h:86
#define mQtclass(cls)
Definition: commondefs.h:232
virtual void addChild(uiBaseObject &child)
Definition: uiparentbody.h:34
void manageChld(uiBaseObject &child, uiObjectBody &b)
child becomes mine.
Definition: uiparentbody.h:43
void deleteAllChildren()
Definition: uiparentbody.h:68
bool finalised() const
Definition: uiparentbody.h:55
The base class for most UI elements.
Definition: uiobj.h:35
virtual ~uiParentBody()
Definition: uiparentbody.h:31
void childDel(CallBacker *cb)
Definition: uiparentbody.h:77
const ObjectSet< uiBaseObject > * childList() const
Definition: uiparentbody.h:53
bool finalised_
Definition: uiparentbody.h:90
virtual void finalise()
Definition: uiparentbody.h:56
virtual void manageChld_(uiBaseObject &, uiObjectBody &)
Definition: uiparentbody.h:84
uiParentBody(const char *nm)
Definition: uiparentbody.h:26
Definition: uiparentbody.h:21
constraintType
Definition: uilayout.h:17
virtual void erase()
Definition: objectset.h:75
const mQtclass(QWidget *) managewidg() const
widget to be used as parent for QWidgets
Definition: uiparentbody.h:61
#define mClass(module)
Definition: commondefs.h:161
#define mAttachCB(notifier, func)
Definition: notify.h:143
CallBacker object with a name. Use if you want your object to be able to send and receive CallBack&#39;s...
Definition: namedobj.h:50
mQtclass(QWidget *) managewidg()
widget to be used as parent for QWidgets
Definition: uiparentbody.h:63
void deepErase(ObjectSet< T > &os)
empty the ObjectSet deleting all objects pointed to.
Definition: objectset.h:122

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