]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Methods are added:
authorsln <sln@opencascade.com>
Tue, 16 Jan 2007 10:50:13 +0000 (10:50 +0000)
committersln <sln@opencascade.com>
Tue, 16 Jan 2007 10:50:13 +0000 (10:50 +0000)
// Gets type of last selector where selection has been changed
QString        lastSelectionSource() const;

// Verifies whether synchronization between selectors is enabled
bool            isSynchronizationEnabled() const;

// Enable or disable synchronization between selectors
void            setSynchronizationEnabled( const bool );

src/SUIT/SUIT_SelectionMgr.cxx
src/SUIT/SUIT_SelectionMgr.h

index 895486f218845f6ea34312b65a5cafa33d72a2af..e84195622e5f76c02b4d7bc3d3da042fde8d61d6 100755 (executable)
  * Provide selection manager. Manipulate by selection filters, modes, data owners.
  */
 
-/*!constructor. initialize myIterations and myIsSelChangeEnabled.*/
+/*!constructor. initialize myIterations, myIsSelChangeEnabled and myIsSynchronizationEnabled.*/
 SUIT_SelectionMgr::SUIT_SelectionMgr( const bool Feedback, QObject* p )
 : QObject( p ),
 myIterations( Feedback ? 1 : 0 ),
-myIsSelChangeEnabled( true )
+myIsSelChangeEnabled( true ),
+myIsSynchronizationEnabled( true )
 {
 }
 
@@ -138,23 +139,31 @@ void SUIT_SelectionMgr::selectionChanged( SUIT_Selector* sel )
   SUIT_DataOwnerPtrList newOwners;
   filterOwners( owners, newOwners );
 
-  for ( int i = 0; i < myIterations; i++ )
+  if ( myIsSynchronizationEnabled )
   {
-    for ( SUIT_Selector* aSel = mySelectors.first(); aSel; aSel = mySelectors.next() )
+    for ( int i = 0; i < myIterations; i++ )
     {
-      // Temporary action(to avoid selection of the objects which don't pass the filters):
-      //if ( aSel != sel )
-           aSel->setSelected( newOwners );
+      for ( SUIT_Selector* aSel = mySelectors.first(); aSel; aSel = mySelectors.next() )
+      {
+        // Temporary action(to avoid selection of the objects which don't pass the filters):
+        //if ( aSel != sel )
+        aSel->setSelected( newOwners );
+      }
     }
   }
+  else
+    sel->setSelected( newOwners );
+
   myIsSelChangeEnabled = true;
 
+  myLastSelectionSource = sel->type();
+
   emit selectionChanged();
 }
 
 /*!
-  Returns true if selection manger is in synchronising mode
-  (during synchonisation of the selectors selection).
+Returns true if selection manger is in synchronising mode
+(during synchonisation of the selectors selection).
 */
 bool SUIT_SelectionMgr::isSynchronizing() const
 {
@@ -327,3 +336,24 @@ void SUIT_SelectionMgr::filterOwners( const SUIT_DataOwnerPtrList& in, SUIT_Data
       out.append( *it );
   }
 }
+
+/*! Gets type of last selector where selection has been changed.
+*/
+QString SUIT_SelectionMgr::lastSelectionSource() const
+{
+  return myLastSelectionSource;
+}
+
+/*! Verifies whether synchronization between selectors is enabled.
+*/
+bool SUIT_SelectionMgr::isSynchronizationEnabled() const
+{
+  return myIsSynchronizationEnabled;
+}
+
+/*! Enable or disable synchronization between selectors.
+*/
+void SUIT_SelectionMgr::setSynchronizationEnabled( const bool on )
+{
+  myIsSynchronizationEnabled = on;
+}
index 79576568f38d49f8ed6855f0b0f2c8acdf097c1f..897683ca9c42358ba50b72c8f1ac3cfa7affd2b7 100755 (executable)
@@ -77,6 +77,10 @@ public:
 
   bool            isSynchronizing() const;
 
+  QString         lastSelectionSource() const;
+  bool            isSynchronizationEnabled() const;
+  void            setSynchronizationEnabled( const bool );
+
 signals:
   void            selectionChanged();
 
@@ -103,6 +107,8 @@ private:
   QValueList<int> mySelModes;
   int             myIterations;
   bool            myIsSelChangeEnabled;
+  bool            myIsSynchronizationEnabled;
+  QString         myLastSelectionSource;
 
   friend class SUIT_Selector;
 };