]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Join modifications from branch BR_L_2_3_5.
authorjfa <jfa@opencascade.com>
Fri, 10 Mar 2006 10:56:06 +0000 (10:56 +0000)
committerjfa <jfa@opencascade.com>
Fri, 10 Mar 2006 10:56:06 +0000 (10:56 +0000)
src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Application.h
src/LightApp/LightApp_Study.cxx
src/LightApp/LightApp_Study.h
src/PyInterp/PyInterp_base.cxx
src/Qtx/QtxDockAction.cxx
src/Qtx/QtxDockAction.h

index 5affcb5d9a7ac3a78fee4225d183c74aa3d85e05..ad9682a94d81fdba35944df52632bb9cc4fa34f4 100644 (file)
@@ -135,6 +135,13 @@ static const char* imageEmptyIcon[] = {
 "....................",
 "...................."};
 
+int LightApp_Application::lastStudyId = 0;
+
+int LightApp_Application::studyId()
+{
+  return LightApp_Application::lastStudyId;
+}
+
 /*!Create new instance of LightApp_Application.*/
 extern "C" LIGHTAPP_EXPORT SUIT_Application* createApplication()
 {
@@ -1409,6 +1416,8 @@ void LightApp_Application::updateActions()
 //=======================================================================
 SUIT_Study* LightApp_Application::createNewStudy()
 {
+  LightApp_Application::lastStudyId++;
+
   LightApp_Study* aStudy = new LightApp_Study( this );
 
   // Set up processing of major study-related events
@@ -1836,6 +1845,11 @@ void LightApp_Application::updateDesktopTitle() {
   if ( !aVer.isEmpty() )
     aTitle += QString( " " ) + aVer;
 
+  if ( activeStudy() ) {
+    QString sName = SUIT_Tools::file( activeStudy()->studyName().stripWhiteSpace(), false );
+    aTitle += QString( " - [%1]" ).arg( sName );
+  }
+
   desktop()->setCaption( aTitle );
 }
 
@@ -1891,6 +1905,9 @@ void LightApp_Application::currentViewManagers( QStringList& lst ) const
 /*!Update windows.*/
 void LightApp_Application::updateWindows()
 {
+  if ( !activeStudy() )
+    return;
+
   QMap<int, int> winMap;
   currentWindows( winMap );
 
@@ -2106,3 +2123,17 @@ bool LightApp_Application::isLibExists( const QString& moduleTitle ) const
   return false;
 }
 
+/*! default name for an active study */
+void LightApp_Application::setDefaultStudyName( const QString& theName )
+{
+  QStringList anInfoList;
+  modules( anInfoList, false );
+
+  LightApp_Study* aStudy = (LightApp_Study*)activeStudy();
+  if( anInfoList.count() == 1 && // to avoid a conflict between different modules
+      !aStudy->isSaved() )
+  {
+    aStudy->setStudyName( theName );
+    updateDesktopTitle();
+  }
+}
index bfcf376d63a668fe81aa80c51ce93f5e6914484c..c435188a4b185f3bc92f5b2c0cc97296884e744c 100644 (file)
@@ -125,6 +125,10 @@ public:
 
   SUIT_Accel*                         accel() const;
 
+  void                                setDefaultStudyName( const QString& theName );
+
+  static int                          studyId();
+
 signals:
   void                                studyOpened();
   void                                studySaved();
@@ -218,6 +222,8 @@ protected:
   SUIT_Accel*                         myAccel;
 
   static LightApp_Preferences*        _prefs_;
+
+  static int                          lastStudyId;
 };
 
 #ifdef WIN32
index 31cb225949be067c1e243494da1cfa58fab4b733..0b8b9005e24a3aef6d9a224b41b636b0b35479ec 100644 (file)
@@ -67,6 +67,8 @@ LightApp_Study::~LightApp_Study()
 */
 void LightApp_Study::createDocument()
 {
+  setStudyName( QString( "Study%1" ).arg( LightApp_Application::studyId() ) );
+
   // create myRoot
   setRoot( new LightApp_RootObject( this ) );
 
index 1280fd99a4d3eeb24d99c0c09193b2df21810397..2e0ac32260b04ab779b93fc8e28833fd673b62fe 100644 (file)
 //
 // See http://www.salome-platform.org/
 //
-#ifndef LIGHTAPP_STUDY_H\r
-#define LIGHTAPP_STUDY_H\r
-\r
-#include <LightApp.h>\r
-#include <LightApp_Driver.h>\r
-\r
-#include <CAM_Study.h>\r
-#include <CAM_DataModel.h>\r
-#include <SUIT_Study.h>\r
-\r
-#include "string"\r
-#include "vector"\r
-\r
-class SUIT_Application;\r
-class CAM_DataModel;\r
-\r
-class LIGHTAPP_EXPORT LightApp_Study : public CAM_Study\r
-{\r
-  Q_OBJECT\r
-\r
-public:\r
-  LightApp_Study( SUIT_Application* );\r
-  virtual ~LightApp_Study();\r
-\r
-  virtual void        createDocument();\r
-  virtual bool        openDocument( const QString& );\r
-  virtual bool        loadDocument( const QString& ); \r
-\r
-  virtual bool        saveDocument();\r
-  virtual bool        saveDocumentAs( const QString& );\r
-\r
-  virtual void        closeDocument(bool permanently = true);\r
-\r
-  virtual bool        isSaved()  const;\r
-  virtual bool        isModified() const;\r
-\r
-  virtual void        addComponent   ( const CAM_DataModel* dm);\r
-\r
-  virtual std::string GetTmpDir      ( const char* theURL, const bool  isMultiFile );\r
-\r
-  virtual QString     componentDataType( const QString& ) const;\r
-  virtual QString     referencedToEntry( const QString& ) const;\r
-  virtual bool        isComponent( const QString& ) const;\r
-  virtual void        children( const QString&, QStringList& ) const;\r
-  virtual void        components( QStringList& ) const;\r
-\r
-protected:\r
-  virtual void        saveModuleData ( QString theModuleName, QStringList theListOfFiles );\r
-  virtual void        openModuleData ( QString theModuleName, QStringList& theListOfFiles );\r
-  virtual bool        saveStudyData  ( const QString& theFileName );\r
-  virtual bool        openStudyData  ( const QString& theFileName );\r
-\r
-  virtual std::vector<std::string> GetListOfFiles ( const char* theModuleName ) const;\r
-  virtual void        SetListOfFiles ( const char* theModuleName,\r
-                                       const std::vector<std::string> theListOfFiles );\r
-\r
-  virtual void        RemoveTemporaryFiles ( const char* theModuleName, const bool isMultiFile ) const;\r
-\r
-protected:\r
-  virtual bool        openDataModel  ( const QString&, CAM_DataModel* );\r
-\r
-signals:\r
-  void                saved  ( SUIT_Study* );\r
-  void                opened ( SUIT_Study* );\r
-  void                closed ( SUIT_Study* );\r
-  void                created( SUIT_Study* );\r
-\r
-\r
-private:\r
-  LightApp_Driver*    myDriver;\r
-};\r
-\r
-#endif \r
+#ifndef LIGHTAPP_STUDY_H
+#define LIGHTAPP_STUDY_H
+
+#include <LightApp.h>
+#include <LightApp_Driver.h>
+
+#include <CAM_Study.h>
+#include <CAM_DataModel.h>
+#include <SUIT_Study.h>
+
+#include "string"
+#include "vector"
+
+class SUIT_Application;
+class CAM_DataModel;
+
+class LIGHTAPP_EXPORT LightApp_Study : public CAM_Study
+{
+  Q_OBJECT
+
+public:
+  LightApp_Study( SUIT_Application* );
+  virtual ~LightApp_Study();
+
+  virtual void        createDocument();
+  virtual bool        openDocument( const QString& );
+  virtual bool        loadDocument( const QString& ); 
+
+  virtual bool        saveDocument();
+  virtual bool        saveDocumentAs( const QString& );
+
+  virtual void        closeDocument(bool permanently = true);
+
+  virtual bool        isSaved()  const;
+  virtual bool        isModified() const;
+
+  virtual void        addComponent   ( const CAM_DataModel* dm);
+
+  virtual std::string GetTmpDir      ( const char* theURL, const bool  isMultiFile );
+
+  virtual QString     componentDataType( const QString& ) const;
+  virtual QString     referencedToEntry( const QString& ) const;
+  virtual bool        isComponent( const QString& ) const;
+  virtual void        children( const QString&, QStringList& ) const;
+  virtual void        components( QStringList& ) const;
+
+protected:
+  virtual void        saveModuleData ( QString theModuleName, QStringList theListOfFiles );
+  virtual void        openModuleData ( QString theModuleName, QStringList& theListOfFiles );
+  virtual bool        saveStudyData  ( const QString& theFileName );
+  virtual bool        openStudyData  ( const QString& theFileName );
+
+  virtual std::vector<std::string> GetListOfFiles ( const char* theModuleName ) const;
+  virtual void        SetListOfFiles ( const char* theModuleName,
+                                       const std::vector<std::string> theListOfFiles );
+
+  virtual void        RemoveTemporaryFiles ( const char* theModuleName, const bool isMultiFile ) const;
+
+protected:
+  virtual bool        openDataModel  ( const QString&, CAM_DataModel* );
+
+signals:
+  void                saved  ( SUIT_Study* );
+  void                opened ( SUIT_Study* );
+  void                closed ( SUIT_Study* );
+  void                created( SUIT_Study* );
+
+
+private:
+  LightApp_Driver*    myDriver;
+
+  friend class LightApp_Application;
+};
+
+#endif 
index 69ccefc9d671a8cc6f36f3a2fdf7281157810acc..0e0a5622c3677b48b93d52572ad1c332f59bad29 100644 (file)
@@ -112,8 +112,10 @@ void PyInterp_base::initialize()
 
   // Create cStringIO to capture stdout and stderr
   PycString_IMPORT;
-  _vout = PycStringIO->NewOutput(128);
-  _verr = PycStringIO->NewOutput(128);
+  if (PycStringIO) { // CTH11627 : additional check
+    _vout = PycStringIO->NewOutput(128);
+    _verr = PycStringIO->NewOutput(128);
+  }
 
   // All the initRun outputs are redirected to the standard output (console)
   initRun();
index 89e72344ced54c067277082d5528365045bc9b97..0a02955594b27611f7a77b21dc2d4d145405e22b 100755 (executable)
@@ -28,6 +28,7 @@
 #include <qdockarea.h>
 #include <qdockwindow.h>
 #include <qmainwindow.h>
+#include <qobjectlist.h>
 #include <qapplication.h>
 
 /*!
@@ -707,7 +708,36 @@ void QtxDockAction::dockWindows( QPtrList<QDockWindow>& lst, QMainWindow* main )
   if ( !mw )
     return;
 
-  lst = mw->dockWindows();
+  QObjectList* objs = mw->queryList( "QDockWindow" );
+  if ( objs )
+  {
+    for ( QObjectListIt it( *objs ); it.current(); ++it )
+    {
+      QDockWindow* dockWin = ::qt_cast<QDockWindow*>( it.current() );
+      if ( dockWin && dockMainWindow( mw, dockWin ) )
+        lst.append( dockWin );
+    }
+  }
+  delete objs;
+}
+
+bool QtxDockAction::dockMainWindow( QMainWindow* mw, QObject* win ) const
+{
+  if ( !mw || !win )
+    return false;
+
+  while ( win )
+  {
+    if ( win->parent() && win->parent() == mw )
+      return true;
+
+    if ( ::qt_cast<QMainWindow*>( win->parent() ) )
+      return false;
+
+    win = win->parent();
+  }
+
+  return false;
 }
 
 /*!
@@ -772,6 +802,14 @@ void QtxDockAction::loadPlaceInfo( QDockWindow* dw ) const
   if ( !myInfo.contains( dw ) )
     return;
 
+  QMainWindow* mw = mainWindow();
+  if ( !mw )
+    return;
+
+  QObject* p = dw->parent();
+  if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) )
+    return;
+
   QString winName = myInfo[dw].name;
   if ( winName.isEmpty() || !myGeom.contains( winName ) )
     return;
@@ -807,6 +845,10 @@ void QtxDockAction::loadPlaceInfo() const
   QMap<QString, QDockWindow*> nameMap;
   for ( QPtrListIterator<QDockWindow> itr( lst ); itr.current(); ++itr )
   {
+    QObject* p = itr.current()->parent();
+    if ( !( !p || p == mw || ( p->parent() && p->parent() == mw ) ) )
+      continue;
+
     QString name;
     if ( myInfo.contains( itr.current() ) )
       name = myInfo[itr.current()].name;
index 4583bebda674394272a27413623e8e8138448b65..5e3ae2de82cb6f921d27f4b6c5848b6389bc05c7 100755 (executable)
@@ -121,6 +121,8 @@ private:
 
   void         updateMenus();
 
+  bool         dockMainWindow( QMainWindow*, QObject* ) const;
+
 private:
   enum { AutoAdd = QEvent::User, LoadArea };