]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
* process menu highlighting
authorvsr <vsr@opencascade.com>
Thu, 2 Mar 2006 13:25:51 +0000 (13:25 +0000)
committervsr <vsr@opencascade.com>
Thu, 2 Mar 2006 13:25:51 +0000 (13:25 +0000)
* add method to check action presence

src/Qtx/QtxActionMenuMgr.cxx
src/Qtx/QtxActionMenuMgr.h
src/Qtx/QtxActionToolMgr.cxx
src/Qtx/QtxActionToolMgr.h

index e570f7365f36741a54a310c23cc5eb09e07d2ded..2d09b2d0989777498eb2b0d3400dc93f11fc4dcb 100644 (file)
@@ -321,7 +321,7 @@ void QtxActionMenuMgr::remove( const int id )
 
 void QtxActionMenuMgr::remove( const int id, const int pId, const int group )
 {
-  MenuNode* pNode = find( pId );
+  MenuNode* pNode = pId == -1 ? &myRoot : find( pId );
   if ( !pNode )
     return;
 
@@ -396,8 +396,13 @@ void QtxActionMenuMgr::onHighlighted( int id )
   }
   if ( pid ) {
     realId = findId( id, pid );
-    if ( realId != -1 )
+    if ( realId != -1 ) {
+      bool updatesEnabled = isUpdatesEnabled();
+      setUpdatesEnabled( false );
       emit menuHighlighted( pid, realId );
+      setUpdatesEnabled( updatesEnabled );
+      updateMenu( find( realId ) );
+    }
   }
 }
 
@@ -415,12 +420,12 @@ void QtxActionMenuMgr::setWidget( QWidget* mw )
     connect( myMenu, SIGNAL( destroyed( QObject* ) ), this, SLOT( onDestroyed( QObject* ) ) );
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId ) const
+QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int actId, const int pId, const bool rec ) const
 {
-  return find( actId, find( pId ) );
+  return find( actId, find( pId ), rec );
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode ) const
+QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* startNode, const bool rec ) const
 {
   MenuNode* node = 0;
   MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
@@ -428,8 +433,8 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const int id, MenuNode* star
   {
     if ( it.current()->id == id )
       node = it.current();
-    else
-      node = find( id, it.current() );
+    else if ( rec )
+      node = find( id, it.current(), rec );
   }
   return node;
 }
@@ -447,12 +452,12 @@ bool QtxActionMenuMgr::find( const int id, NodeList& lst, MenuNode* startNode )
   return !lst.isEmpty();
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int id, const int pId ) const
+QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int pId, const bool rec ) const
 {
-  return find( title, id, find( pId ) );
+  return find( title, find( pId ), rec );
 }
 
-bool QtxActionMenuMgr::find( const QString& title, const int id, NodeList& lst, MenuNode* startNode ) const
+bool QtxActionMenuMgr::find( const QString& title, NodeList& lst, MenuNode* startNode ) const
 {
   MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
   for ( NodeListIterator it( start->children ); it.current(); ++it )
@@ -460,16 +465,15 @@ bool QtxActionMenuMgr::find( const QString& title, const int id, NodeList& lst,
     QAction* a = itemAction( it.current()->id );
     if ( !a )
       a = menuAction( it.current()->id );
-    if ( a && clearTitle( a->text() ) == clearTitle( title ) &&
-        ( it.current()->id == id || id == -1 ) )
+    if ( a && clearTitle( a->menuText() ) == clearTitle( title ) )
       lst.prepend( it.current() );
 
-    find( title, id, lst, it.current() );
+    find( title, lst, it.current() );
   }
   return !lst.isEmpty();
 }
 
-QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const int id, MenuNode* startNode ) const
+QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, MenuNode* startNode, const bool rec ) const
 {
   MenuNode* node = 0;
   MenuNode* start = startNode ? startNode : (MenuNode*)&myRoot;
@@ -478,11 +482,10 @@ QtxActionMenuMgr::MenuNode* QtxActionMenuMgr::find( const QString& title, const
     QAction* a = itemAction( it.current()->id );
     if ( !a )
       a = menuAction( it.current()->id );
-    if ( a && clearTitle( a->text() ) == clearTitle( title ) &&
-        ( it.current()->id == id || id == -1 ) )
+    if ( a && clearTitle( a->menuText() ) == clearTitle( title ) )
       node = it.current();
-    if ( !node )
-      node = find( title, id, it.current() );
+    if ( !node && rec )
+      node = find( title, it.current(), rec );
   }
   return node;
 }
@@ -680,14 +683,14 @@ bool QtxActionMenuMgr::load( const QString& fname, QtxActionMgr::Reader& r )
   return r.read( fname, cr );
 }
 
-bool QtxActionMenuMgr::contains( const QString& title, const int id, const int pid ) const
+bool QtxActionMenuMgr::containsMenu( const QString& title, const int pid ) const
 {
-  return (bool)find( title, id, pid );
+  return (bool)find( title, pid, false );
 }
 
-bool QtxActionMenuMgr::contains( const int id, const int pid ) const
+bool QtxActionMenuMgr::containsMenu( const int id, const int pid ) const
 {
-  return (bool)find( id, pid );
+  return (bool)find( id, pid, false );
 }
 
 /*!
index bb10da10f0d7215b6aa7a1c84cf5695b6d7013a8..f06ff9d3b6c4a6526954a2e0b7c29a7f9544eb97 100644 (file)
@@ -103,8 +103,8 @@ public:
 
   virtual bool load( const QString&, QtxActionMgr::Reader& );
 
-  bool         contains( const QString&, const int, const int ) const;
-  bool         contains( const int, const int ) const;
+  bool         containsMenu( const QString&, const int ) const;
+  bool         containsMenu( const int, const int ) const;
 
 
 private slots:
@@ -116,12 +116,12 @@ signals:
 
 protected:
   void         setWidget( QWidget* );
-  MenuNode*    find( const int, const int ) const;
-  MenuNode*    find( const int, MenuNode* = 0 ) const;
+  MenuNode*    find( const int, const int, const bool = true ) const;
+  MenuNode*    find( const int, MenuNode* = 0, const bool = true ) const;
   bool         find( const int, NodeList&, MenuNode* = 0 ) const;
-  MenuNode*    find( const QString&, const int, const int ) const;
-  MenuNode*    find( const QString&, const int, MenuNode* = 0 ) const;
-  bool         find( const QString&, const int, NodeList&, MenuNode* = 0 ) const;
+  MenuNode*    find( const QString&, const int, const bool = true ) const;
+  MenuNode*    find( const QString&, MenuNode* = 0, const bool = true ) const;
+  bool         find( const QString&, NodeList&, MenuNode* = 0 ) const;
   int          findId( const int, const int = -1 ) const;
 
   void         removeMenu( const int, MenuNode* );
index 33fff160709208cb9f6570c8883039bb4cfd3ef8..b9ff56c8f74e9e2fbdb9c4d9c579e19a5d37eef6 100644 (file)
@@ -227,7 +227,7 @@ bool QtxActionToolMgr::hasToolBar( const QString& tname ) const
   return find( tname ) != -1;
 }
 
-bool QtxActionToolMgr::contains( const int id, const int tid ) const
+bool QtxActionToolMgr::containsAction( const int id, const int tid ) const
 {
   for ( ToolBarMap::ConstIterator it = myToolBars.begin(); it != myToolBars.end(); ++it )
   {
index e9d6e4e40d6dbd09456150b4a2b86f5c830b1a56..48a7227859a079109d8c7c8fac0d484fd19843c7 100644 (file)
@@ -95,7 +95,7 @@ public:
   bool            hasToolBar( const int ) const;
   bool            hasToolBar( const QString& ) const;
 
-  bool            contains( const int, const int = -1 ) const;
+  bool            containsAction( const int, const int = -1 ) const;
 
   virtual bool    load( const QString&, QtxActionMgr::Reader& );