]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
*** empty log message ***
authorasl <asl@opencascade.com>
Tue, 7 Jun 2005 09:08:12 +0000 (09:08 +0000)
committerasl <asl@opencascade.com>
Tue, 7 Jun 2005 09:08:12 +0000 (09:08 +0000)
src/Qtx/QtxPopupMgr.cxx
src/Qtx/QtxPopupMgr.h

index a1f6db8854cf6ba7369a5a4a6cfbbf7cc835c4a2..09566023418d4c50a1a04a2d8976db86161af9e8 100644 (file)
@@ -6,6 +6,74 @@
 
 #include <qpopupmenu.h>
 
+//================================================================
+// Function : 
+// Purpose  : 
+//================================================================
+QtxValue QtxPopupMgr::Selection::globalParam( const QString& str ) const
+{
+  if( str==selCountParam() )
+    return count();
+
+  else if( str[0]==equality() )
+  {
+    QtxSets::ValueSet set;
+    QString par = str.mid( 1 );
+
+    for( int i=0, n=count(); i<n; i++ )
+    {
+      QtxValue v = param( i, par );
+      if( v.isValid() )
+       QtxSets::add( set, v );
+      else
+       return QtxValue();      
+    }
+    return set;
+  }
+
+  else
+    return QtxValue();
+}
+
+//================================================================
+// Function : 
+// Purpose  : 
+//================================================================
+QChar QtxPopupMgr::Selection::equality() const
+{
+  return defEquality();
+}
+
+//================================================================
+// Function : 
+// Purpose  : 
+//================================================================
+QString QtxPopupMgr::Selection::selCountParam() const
+{
+  return defSelCountParam();
+}
+
+//================================================================
+// Function : 
+// Purpose  : 
+//================================================================
+QChar QtxPopupMgr::Selection::defEquality()
+{
+    return '$';
+}
+
+//================================================================
+// Function : 
+// Purpose  : 
+//================================================================
+QString QtxPopupMgr::Selection::defSelCountParam()
+{
+    return "selcount";
+}
+
+
+
+
 //================================================================
 // Function : 
 // Purpose  : 
@@ -276,7 +344,7 @@ bool result( QtxParser* p )
 //================================================================
 void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const
 {
-    if( !p )
+    if( !p || !myCurrentSelection )
         return;
 
     QStringList params;
@@ -285,28 +353,13 @@ void QtxPopupMgr::setParams( QtxParser* p, QStringList& specific ) const
     QStringList::const_iterator anIt = params.begin(),
                                 aLast = params.end();
     for( ; anIt!=aLast; anIt++ )
-
-        if( *anIt==selCountParam() )
-        {
-            if( myCurrentSelection )
-                p->set( *anIt, myCurrentSelection->count() );
-            else
-                p->set( *anIt, 0 );
-        }
-
-        else if( (*anIt)[0]==equality() )
-        {
-            QtxSets::ValueSet set;
-            QString par = ( *anIt ).mid( 1 );
-
-            if( myCurrentSelection && myCurrentSelection->count() > 0 )
-                for( int i=0, n=myCurrentSelection->count(); i<n; i++ )
-                    QtxSets::add( set, myCurrentSelection->param( i, par ) );
-
-            p->set( *anIt, set );
-        }
-        else
-            specific.append( *anIt );
+    {
+      QtxValue v = myCurrentSelection->globalParam( *anIt );
+      if( v.isValid() )
+       p->set( *anIt, v );
+      else
+        specific.append( *anIt );
+    }
 }
 
 //================================================================
@@ -374,7 +427,7 @@ bool QtxPopupMgr::isVisible( const int actId, const int place ) const
 //================================================================
 void QtxPopupMgr::updatePopup( QPopupMenu* p, Selection* sel )
 {
-    if( !p )
+    if( !p || !sel )
         return;
 
     myCurrentSelection = sel;
@@ -398,24 +451,6 @@ QtxPopupMgr::RulesMap& QtxPopupMgr::map( bool visibility ) const
     return ( RulesMap& )( visibility ? myVisibility : myToggle );
 }
 
-//================================================================
-// Function : 
-// Purpose  : 
-//================================================================
-QString QtxPopupMgr::selCountParam() const
-{
-    return "selcount";
-}
-
-//================================================================
-// Function : 
-// Purpose  : 
-//================================================================
-QChar QtxPopupMgr::equality() const
-{
-    return '$';
-}
-
 //================================================================
 // Function : 
 // Purpose  : 
index 351059861cc4fc6bfb86ef4f41fab4c26f688c75..8664535f66c6e369033298fffae7f29ce7bb9c8a 100644 (file)
@@ -25,6 +25,13 @@ public:
     public:
         virtual int      count() const = 0;
         virtual QtxValue param( const int, const QString& ) const = 0;
+       virtual QtxValue globalParam( const QString& ) const;
+
+       virtual QChar   equality() const;
+       virtual QString selCountParam() const;
+
+       static QChar    defEquality();
+       static QString  defSelCountParam();
     };
     
 protected:
@@ -68,8 +75,6 @@ public:
     void    setRule( const int, const QString&, bool visibility );
     void    updatePopup( QPopupMenu*, Selection* );
 
-    virtual QChar   equality() const;
-    virtual QString selCountParam() const;
     //return name of parameter corresponding to selected objects count
     //it will be set automatically