Salome HOME
Initial version
[modules/gui.git] / src / SUIT / SUIT_SelectionMgr.h
1 #ifndef SUIT_SELECTIONMGR_H
2 #define SUIT_SELECTIONMGR_H
3
4 #include "SUIT_Selector.h"
5 #include "SUIT_DataOwner.h"
6 #include "SUIT_SelectionFilter.h"
7
8 #include <qobject.h>
9 #include <qptrlist.h>
10 #include <qvaluelist.h>
11
12 class SUIT_EXPORT SUIT_SelectionMgr : public QObject
13 {
14   Q_OBJECT
15
16 public:
17   SUIT_SelectionMgr( const bool = true );
18   virtual ~SUIT_SelectionMgr();
19
20   void            clearSelected();
21   virtual void    selected( SUIT_DataOwnerPtrList& ) const;
22   virtual void    setSelected( const SUIT_DataOwnerPtrList&, const bool = false );
23
24   virtual void    installSelector( SUIT_Selector* );
25   virtual void    removeSelector( SUIT_Selector* );
26
27   void            selectors( QPtrList<SUIT_Selector>& ) const;
28   void            selectors( const QString&, QPtrList<SUIT_Selector>& ) const;
29
30
31   void            setEnabled( const bool, const QString& = QString::null );
32
33
34   bool            hasSelectionMode( const int ) const;
35   void            selectionModes( QValueList<int>& ) const;
36
37   void            setSelectionModes( const int );
38   virtual void    setSelectionModes( const QValueList<int>& );
39
40   void            appendSelectionModes( const int );
41   virtual void    appendSelectionModes( const QValueList<int>& );
42
43   void            removeSelectionModes( const int );
44   virtual void    removeSelectionModes( const QValueList<int>& );
45
46
47   bool            isOk( const SUIT_DataOwner* ) const;
48   bool            isOk( const SUIT_DataOwnerPtr& ) const;
49
50   bool            hasFilter( SUIT_SelectionFilter* ) const;
51
52   virtual void    installFilter( SUIT_SelectionFilter* );
53   virtual void    removeFilter( SUIT_SelectionFilter* );
54   virtual void    clearFilters();
55
56   bool            autoDeleteFilter() const;
57   void            setAutoDeleteFilter( const bool );
58
59 signals:
60   void            selectionChanged();
61
62 protected:
63   virtual void    selectionChanged( SUIT_Selector* );
64
65   typedef QPtrListIterator<SUIT_Selector>        SelectorListIterator;
66
67 private:
68   void            filterOwners( const SUIT_DataOwnerPtrList&, SUIT_DataOwnerPtrList& ) const;
69
70   typedef QPtrList<SUIT_Selector>                SelectorList;
71   typedef QPtrList<SUIT_SelectionFilter>         SelFilterList;
72   typedef QPtrListIterator<SUIT_SelectionFilter> SelFilterListIterator;
73
74 protected:
75   SelectorList    mySelectors;
76
77 private:
78   SelFilterList   myFilters;
79   QValueList<int> mySelModes;
80   int             myIterations;
81   bool            myIsSelChangeEnabled;
82
83   friend class SUIT_Selector;
84 };
85
86 #endif