]> SALOME platform Git repositories - modules/gui.git/blob - src/SUIT/SUIT_DataObject.h
Salome HOME
e9a960fd0e00d5f952b89c7061b9b7ac6c36ea8c
[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 class SUIT_EXPORT SUIT_DataObject  
22 {
23 public:
24   class Signal;
25
26   typedef enum { None, RadioButton, CheckBox } CheckType;
27   typedef enum { Text, Base, Foreground, Background, Highlight } ColorRole;
28
29   SUIT_DataObject( SUIT_DataObject* = 0 );
30   virtual ~SUIT_DataObject();
31
32   SUIT_DataObject*            root() const;
33   SUIT_DataObject*            lastChild() const;
34   SUIT_DataObject*            firstChild() const;
35
36   int                         childCount() const;
37   int                         childPos( const SUIT_DataObject* ) const;
38   SUIT_DataObject*            childObject( const int ) const;
39
40   SUIT_DataObject*            nextBrother() const;
41   SUIT_DataObject*            prevBrother() const;
42
43   bool                        autoDeleteChildren() const;
44   virtual void                setAutoDeleteChildren( const bool );
45
46   virtual void                children( DataObjectList&, const bool = false ) const;
47   virtual DataObjectList      children( const bool = false );
48   
49   void                        appendChild( SUIT_DataObject* );
50   virtual void                removeChild( SUIT_DataObject* );
51   virtual void                insertChild( SUIT_DataObject*, int thePosition );
52   bool                        replaceChild( SUIT_DataObject*, SUIT_DataObject*, const bool = false );
53
54   void                        reparentChildren( const SUIT_DataObject* );
55
56   QString                     text() const { return text( 0 ); }
57   QColor                      color() const { return color( Foreground ); }
58   virtual QString             name() const;
59   virtual QPixmap             icon() const;
60   virtual QString             text( const int ) const;
61   virtual QColor              color( const ColorRole ) const;
62   virtual QString             toolTip() const;
63
64   virtual SUIT_DataObject*    parent() const;
65   virtual void                setParent( SUIT_DataObject* );
66
67   virtual bool                isDragable() const;
68   virtual bool                isDropAccepted( SUIT_DataObject* obj );
69
70   virtual CheckType           checkType() const;
71
72   virtual bool                isOn() const;
73   virtual void                setOn( const bool );
74
75   virtual SUIT_DataObjectKey* key() const;
76
77   bool                        connect( QObject*, const char* );
78   bool                        disconnect( QObject*, const char* );
79
80   void                        deleteLater();
81   
82   void                        dump( const int indent = 2 ) const; // dump to cout
83
84 private:
85   bool                        myCheck;
86   Signal*                     mySignal;
87   SUIT_DataObject*            myParent;
88   DataObjectList              myChildren;
89
90   friend class SUIT_DataObject::Signal;
91   friend class SUIT_DataObjectIterator;
92 };
93
94 class SUIT_DataObject::Signal : public QObject
95 {
96   Q_OBJECT
97
98 public:
99   Signal( SUIT_DataObject* );
100   virtual ~Signal();
101
102   void                        emitSignal();
103   void                        setOwner( SUIT_DataObject* o );
104
105 signals:
106   void                        destroyed( SUIT_DataObject* );
107
108 private:
109   SUIT_DataObject*            myOwner;
110 };
111
112 #ifdef WIN32
113 #pragma warning( default:4251 )
114 #endif
115
116 #endif