Salome HOME
PAL10125 - by double click on reference original object becomes selected
[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 QString& = QString::null ) const;
22   virtual void    setSelected( const SUIT_DataOwnerPtrList&, const bool = false );
23
24   void            selectors( QPtrList<SUIT_Selector>& ) const;
25   void            selectors( const QString&, QPtrList<SUIT_Selector>& ) const;
26
27
28   void            setEnabled( const bool, const QString& = QString::null );
29
30
31   bool            hasSelectionMode( const int ) const;
32   void            selectionModes( QValueList<int>& ) const;
33
34   void            setSelectionModes( const int );
35   virtual void    setSelectionModes( const QValueList<int>& );
36
37   void            appendSelectionModes( const int );
38   virtual void    appendSelectionModes( const QValueList<int>& );
39
40   void            removeSelectionModes( const int );
41   virtual void    removeSelectionModes( const QValueList<int>& );
42
43
44   bool            isOk( const SUIT_DataOwner* ) const;
45   bool            isOk( const SUIT_DataOwnerPtr& ) const;
46
47   bool            hasFilter( SUIT_SelectionFilter* ) const;
48
49   virtual void    installFilter( SUIT_SelectionFilter*, const bool = true );
50   virtual void    removeFilter( SUIT_SelectionFilter* );
51   virtual void    clearFilters();
52
53   bool            autoDeleteFilter() const;
54   void            setAutoDeleteFilter( const bool );
55
56 signals:
57   void            selectionChanged();
58
59 protected:
60   virtual void    selectionChanged( SUIT_Selector* );
61
62   typedef QPtrListIterator<SUIT_Selector>        SelectorListIterator;
63
64   virtual void    installSelector( SUIT_Selector* );
65   virtual void    removeSelector( SUIT_Selector* );
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