]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Some corrections for NEPTUNE.
authorskl <skl@opencascade.com>
Thu, 30 Nov 2006 07:55:02 +0000 (07:55 +0000)
committerskl <skl@opencascade.com>
Thu, 30 Nov 2006 07:55:02 +0000 (07:55 +0000)
15 files changed:
src/LightApp/LightApp_DataModel.cxx
src/LightApp/LightApp_Module.cxx
src/LightApp/LightApp_Module.h
src/LightApp/LightApp_OBSelector.cxx
src/LightApp/LightApp_Selection.cxx
src/LightApp/LightApp_Selection.h
src/LightApp/LightApp_ShowHideOp.cxx
src/PythonConsole/PythonConsole.h
src/PythonConsole/PythonConsole_PyConsole.cxx
src/PythonConsole/PythonConsole_PyConsole.h
src/PythonConsole/PythonConsole_PyEditor.cxx
src/PythonConsole/PythonConsole_PyEditor.h
src/SUIT/SUIT_DataOwner.cxx
src/SUIT/SUIT_DataOwner.h
src/SalomeApp/SalomeApp_Module.h

index 9fe3b086adcae75c24f3cbfe3812f1e0f818b1e7..702ef7b335b767c327bee3ee850ffa897052c710 100644 (file)
@@ -110,16 +110,29 @@ void LightApp_DataModel::update( LightApp_DataObject*, LightApp_Study* )
 {
   LightApp_ModuleObject* modelRoot = dynamic_cast<LightApp_ModuleObject*>( root() );
   DataObjectList ch;
+  QMap<SUIT_DataObject*,int> aMap;
   if( modelRoot )
   {
     ch = modelRoot->children();
     for ( DataObjectListIterator it( ch ); it.current(); ++it )
       it.current()->setParent( 0 );
   }
+
   build();
+
+  modelRoot = dynamic_cast<LightApp_ModuleObject*>( root() );
+  if( modelRoot )
+  {
+    DataObjectList new_ch = modelRoot->children();
+    for ( DataObjectListIterator it1( new_ch ); it1.current(); ++it1 )
+      aMap.insert( it1.current(), 0 );
+  }
+
   updateWidgets();
+
   for( DataObjectListIterator it( ch ); it.current(); ++it )
-    delete it.current();
+    if( !aMap.contains( it.current() ) )
+      delete it.current();
 }
 
 /*!
index 9c1a71335ff97e3508ff2a8a8b709f7f9eee32e0..da2a555c72e9df385827f4089c1d6a09ecaf63a8 100644 (file)
@@ -340,7 +340,7 @@ QtxPopupMgr* LightApp_Module::popupMgr()
     myPopupMgr->insert( eraseAll, -1, 0 );
     myPopupMgr->insert( separator(), -1, 0 );
 
-    QString oneAndNotActive = "( count( $component ) = 1 ) and ( component != activeModule )";
+    QString oneAndNotActive = "( count( $component ) = 1 ) and ( not( activeModule in $component ) )";
     QString uniform = "true in $canBeDisplayed and %1 and ( activeModule = '%2' )";
     uniform = uniform.arg( oneAndNotActive ).arg( name() );
     myPopupMgr->setRule( disp, /*QString( "( not isVisible ) and " ) + */ uniform, true );
index 17a95366f5dea8a5a2be19c3d728d6b85bac2372..de4e6600f0319862f56b695a5f9cdbaa7031a53d 100644 (file)
@@ -84,6 +84,7 @@ public:
   virtual void                        studyActivated() {};
 
   virtual LightApp_Displayer*         displayer();
+  virtual LightApp_Selection*         createSelection() const;
 
 public slots:
   virtual bool                        activateModule( SUIT_Study* );
@@ -107,7 +108,6 @@ protected:
   LightApp_Preferences*               preferences() const;
 
   virtual CAM_DataModel*              createDataModel();
-  virtual LightApp_Selection*         createSelection() const;
 
   int                                 addPreference( const QString& label );
   int                                 addPreference( const QString& label, const int pId, const int = -1,
index 3db25268573532cd78cdacef42e6c17a4be096cd..dd2e65f05d8705e064f13a301c8f92346c69f114 100644 (file)
@@ -69,7 +69,7 @@ void LightApp_OBSelector::getSelection( SUIT_DataOwnerPtrList& theList ) const
     for ( DataObjectListIterator it( objlist ); it.current(); ++it )
     {
       LightApp_DataObject* obj = dynamic_cast<LightApp_DataObject*>( it.current() );
-      if ( obj )
+      if ( obj && !obj->entry().isEmpty() && !obj->componentDataType().isEmpty() && !obj->name().isEmpty() )
       {
 #ifndef DISABLE_SALOMEOBJECT
         Handle(SALOME_InteractiveObject) aSObj = new SALOME_InteractiveObject
index 5620c41d389b82ada1e64ea751f55098b6ff5b53..fe0a15207ca64bd90a601988deb7125cde04e4fd 100644 (file)
@@ -86,7 +86,7 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
       LightApp_DataOwner* sowner = dynamic_cast<LightApp_DataOwner*>( (*anIt ).get() );
       if( sowner )
       {
-        entry = myStudy->referencedToEntry( sowner->entry() );
+        entry = referencedToEntry( sowner->entry() );
        if( entries.contains( entry ) )
          continue;
 
@@ -100,6 +100,11 @@ void LightApp_Selection::init( const QString& client, LightApp_SelectionMgr* mgr
   }
 }
 
+QString LightApp_Selection::referencedToEntry( const QString& entry ) const
+{
+  return myStudy->referencedToEntry( entry );
+}
+
 /*!
   Gets count of entries.
 */
@@ -147,6 +152,9 @@ QtxValue LightApp_Selection::param( const int ind, const QString& p ) const
   else if( p=="isReference" )
     return QtxValue( isReference( ind ), false );
 
+  else if( p=="displayer" )
+    return param( ind, "component" );
+
   else if( p=="canBeDisplayed" )
   {
     QString mod_name = app->moduleTitle( param( ind, "component" ).toString() );
index 846699f3b5c413c33be073889e17c2c5efb9665b..7756a767dac82409fb1fef835018febf4e55981f 100644 (file)
@@ -65,6 +65,7 @@ protected:
   LightApp_Study*                study() const { return myStudy; }
   QString                        activeViewType() const;
   SUIT_ViewWindow*               activeVW() const;
+  virtual QString                referencedToEntry( const QString& ) const;
 
 private:
   QString                        myPopupClient;
index a329cf88915c6f3bf88248fc10df89d986e903fb..657e30d9d16f9beef26f253f8a642b371a81f377 100644 (file)
@@ -63,17 +63,25 @@ void LightApp_ShowHideOp::startOperation()
   }
 
   LightApp_SelectionMgr* mgr = app->selectionMgr();
-  LightApp_Selection sel; sel.init( "", mgr );
-  if( sel.count()==0 && myActionType!=ERASE_ALL )
+  LightApp_Module* mod = dynamic_cast<LightApp_Module*>( app->activeModule() );
+  if( !mod )
+    return;
+
+  LightApp_Selection* sel = mod->createSelection();
+  if( !sel )
+    return;
+
+  sel->init( "", mgr );
+  if( sel->count()==0 && myActionType!=ERASE_ALL )
   {
     abort();
     return;
   }
 
   QString mod_name;
-  if( sel.count()>0 )
+  if( sel->count()>0 )
   {
-    QString aStr =  sel.param( 0, "component" ).toString();
+    QString aStr =  sel->param( 0, "displayer" ).toString();
     mod_name = app->moduleTitle( aStr );
   }
   else if( app->activeModule() )
@@ -144,4 +152,6 @@ void LightApp_ShowHideOp::startOperation()
   }
   d->UpdateViewer();
   commit();
+
+  delete sel;
 }
index 98fa563c4c2443a748a04993a9d46c259a234c06..d9bbf65a23d409e35dc2b64a3fcb4159ca303047 100755 (executable)
 #ifdef _DEBUG
 
 #undef _DEBUG
-#include <Python.h>
+//#include <Python.h>
 #define _DEBUG
 
 #else  // _DEBUG
 
-#include <Python.h>
+//#include <Python.h>
 
 #endif // _DEBUG
 
index 9eecd0f158223ef79724136f9194e4cae8a1053d..9c8f852377101f51f431e6cc293d4acc2f0f905d 100755 (executable)
@@ -16,6 +16,8 @@
 //
 // See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
+
+#include <Python.h>
 #include "PythonConsole_PyConsole.h"
 #include "PythonConsole_PyEditor.h"
 #include "PyInterp_base.h"
@@ -63,6 +65,16 @@ void PythonConsole::exec( const QString& command )
     myEditor->exec( command );
 }
 
+/*!
+  Blocks execution of main application until command is executed
+  \param command - string with command and arguments
+*/
+void PythonConsole::execAndWait( const QString& command )
+{
+  if ( myEditor )
+    myEditor->execAndWait( command );
+}
+
 /*!
   Changes font of python console
   \param f - new font
index 4978214fbf356c9351d6a95328fa6a27055c5761..b3364e597b229b74b857d896d87aa3c5dcdb4fd3 100755 (executable)
@@ -39,7 +39,7 @@ public:
   virtual void   setFont( const QFont& );
 
   void           exec( const QString& command );
-
+  void           execAndWait( const QString& command );
 protected:
   PyInterp_base*          myInterp;
   PythonConsole_PyEditor* myEditor;
index e32bf03ee9dc594f0e3a0c2eb8f347f7a425071b..c48c534fda00e830b9de7ae7efaf3a6410c3b79e 100755 (executable)
@@ -104,7 +104,8 @@ private:
 */
 PythonConsole_PyEditor::PythonConsole_PyEditor(PyInterp_base* theInterp, QWidget *theParent, const char* theName): 
   QTextEdit(theParent,theName),
-  myInterp( 0 )
+  myInterp( 0 ),
+  myIsInLoop( false )
 {
   QString fntSet( "" );
   QFont aFont = SUIT_Tools::stringToFont( fntSet );
@@ -162,6 +163,17 @@ void PythonConsole_PyEditor::exec( const QString& command )
   handleReturn();
 }
 
+void PythonConsole_PyEditor::execAndWait( const QString& command )
+{
+  if( myIsInLoop )
+    return;
+
+  myIsInLoop = true;
+  exec( command );
+  qApp->enter_loop();
+  myIsInLoop = false;
+}
+
 /*!
     Called when an handleReturn
 */
@@ -666,6 +678,8 @@ void PythonConsole_PyEditor::customEvent(QCustomEvent* e)
       _currentPrompt = READY_PROMPT;
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
       break;
     }
   case PyInterp_Event::INCOMPLETE:
@@ -674,6 +688,8 @@ void PythonConsole_PyEditor::customEvent(QCustomEvent* e)
       _currentPrompt = DOTS_PROMPT;
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
       break;
     }
   default:
@@ -707,6 +723,8 @@ void PythonConsole_PyEditor::onPyInterpChanged( PyInterp_base* interp )
       _isInHistory = false;
       setText(_currentPrompt);
       viewport()->unsetCursor();
+      if( myIsInLoop )
+       qApp->exit_loop();
     }
     else {
       clear();
index d362b1f8cbab8855a60d2f0ebe6fad3fc82f46ff..b353ee4dadf5b08d83d2ef7db338aca02d0d073b 100755 (executable)
@@ -47,6 +47,7 @@ public:
   bool isCommand(const QString& str) const;
 
   virtual void exec( const QString& command );
+  void execAndWait( const QString& command );
   
 protected:
   virtual void contentsDropEvent( QDropEvent* event );
@@ -65,7 +66,7 @@ private:
   QString        _buf;
   QString        _currentCommand;
   QString        _currentPrompt;
-  bool           _isInHistory;
+  bool           _isInHistory, myIsInLoop;
 
   PyInterp_base* myInterp;
 
index 826bd89bfa439b15b6f134fd46b1cf126cf6f862..d97a249d3a588277d81a0e288bfebc0ae03cf377 100755 (executable)
@@ -162,5 +162,5 @@ uint SUIT_DataOwnerPtrList::remove(const SUIT_DataOwnerPtr& x )
 */
 bool operator<( const SUIT_DataOwnerPtr& p1, const SUIT_DataOwnerPtr& p2 )
 {
-  return p1.get()<p2.get();
+  return p1->operator<( *p2 );
 }
index bc2ef2615535a148e165754413b81e3352865bb7..81fe710b8e553691df3a0bf3b6f583a57a121894 100755 (executable)
@@ -42,6 +42,7 @@ public:
   virtual ~SUIT_DataOwner();//!< destructor
   //! compare function
   virtual bool isEqual( const SUIT_DataOwner& ) const = 0;
+  virtual bool operator<( const SUIT_DataOwner& ) const = 0;
 };
 
 /*! \typedef SUIT_DataOwnerPtr
index 07f4c0620378de6e4c20dae9a475731b86b7e52a..87ca5aad736d87de35edcc4e8a1a15278c8c3a4f 100644 (file)
@@ -59,10 +59,10 @@ public:
 
   virtual void                        storeVisualParameters(int savePoint);
   virtual void                        restoreVisualParameters(int savePoint);
+  virtual LightApp_Selection*         createSelection() const;
 
 protected:
   virtual CAM_DataModel*              createDataModel();
-  virtual LightApp_Selection*         createSelection() const;
   virtual void                        extractContainers( const SALOME_ListIO&, SALOME_ListIO& ) const;
 };