Salome HOME
Update comments
[modules/gui.git] / src / SUIT / SUIT_DataObject.h
1 #ifndef SUIT_DATAOBJECT_H
2 #define SUIT_DATAOBJECT_H
3
4 #include <qobject.h>
5 #include <qstring.h>
6 #include <qpixmap.h>
7 #include <qptrlist.h>
8
9 #include "SUIT.h"
10
11 class SUIT_DataObject;
12 class SUIT_DataObjectKey;
13
14 typedef QPtrList<SUIT_DataObject>         DataObjectList;
15 typedef QPtrListIterator<SUIT_DataObject> DataObjectListIterator;
16
17 #ifdef WIN32
18 #pragma warning( disable:4251 )
19 #endif
20
21 /*!
22   Class provide support data object.
23 */
24 class SUIT_EXPORT SUIT_DataObject  
25 {
26 public:
27   class Signal;
28
29   typedef enum { None, RadioButton, CheckBox } CheckType;
30   typedef enum { Text, Base, Foreground, Background, Highlight, HighlightedText } ColorRole;
31
32   SUIT_DataObject( SUIT_DataObject* = 0 );
33   virtual ~SUIT_DataObject();
34
35   SUIT_DataObject*            root() const;
36   SUIT_DataObject*            lastChild() const;
37   SUIT_DataObject*            firstChild() const;
38
39   int                         childCount() const;
40   int                         childPos( const SUIT_DataObject* ) const;
41   SUIT_DataObject*            childObject( const int ) const;
42   int                         level() const;
43
44   SUIT_DataObject*            nextBrother() const;
45   SUIT_DataObject*            prevBrother() const;
46
47   bool                        autoDeleteChildren() const;
48   virtual void                setAutoDeleteChildren( const bool );
49
50   virtual void                children( DataObjectList&, const bool = false ) const;
51   virtual DataObjectList      children( const bool = false );
52   
53   void                        appendChild( SUIT_DataObject* );
54   virtual void                removeChild( SUIT_DataObject* );
55   virtual void                insertChild( SUIT_DataObject*, int thePosition );
56   bool                        replaceChild( SUIT_DataObject*, SUIT_DataObject*, const bool = false );
57
58   void                        reparentChildren( const SUIT_DataObject* );
59
60   virtual QString             text( const int ) const;
61   virtual QColor              color( const ColorRole ) const;
62
63   virtual QString             name() const;
64   virtual QPixmap             icon() const;
65   virtual QString             toolTip() const;
66
67   virtual SUIT_DataObject*    parent() const;
68   virtual void                setParent( SUIT_DataObject* );
69
70   virtual bool                isDragable() const;
71   virtual bool                isDropAccepted( SUIT_DataObject* obj );
72
73   virtual CheckType           checkType() const;
74
75   virtual bool                isOn() const;
76   virtual void                setOn( const bool );
77
78   virtual bool                isOpen() const;
79   virtual void                setOpen( const bool );
80
81   virtual SUIT_DataObjectKey* key() const;
82
83   bool                        connect( QObject*, const char* );
84   bool                        disconnect( QObject*, const char* );
85
86   void                        deleteLater();
87   
88   void                        dump( const int indent = 2 ) const; // dump to cout
89
90 private:
91   bool                        myOpen;
92   bool                        myCheck;
93   Signal*                     mySignal;
94   SUIT_DataObject*            myParent;
95   DataObjectList              myChildren;
96
97   friend class SUIT_DataObject::Signal;
98   friend class SUIT_DataObjectIterator;
99 };
100
101 class SUIT_DataObject::Signal : public QObject
102 {
103   Q_OBJECT
104
105 public:
106   Signal( SUIT_DataObject* );
107   virtual ~Signal();
108
109   void                        emitSignal();
110   void                        setOwner( SUIT_DataObject* o );
111
112 signals:
113   void                        destroyed( SUIT_DataObject* );
114
115 private:
116   SUIT_DataObject*            myOwner;
117 };
118
119 #ifdef WIN32
120 #pragma warning( default:4251 )
121 #endif
122
123 #endif