From e72e7051c3c2a01ecbddba3eee4bd98c16dd8996 Mon Sep 17 00:00:00 2001 From: akl Date: Mon, 22 Sep 2014 17:24:39 +0400 Subject: [PATCH] Multi-study support removal: finalization --- doc/salome/gui/images/closestudy.png | Bin 10204 -> 7244 bytes doc/salome/gui/images/disconnect_study.png | Bin 0 -> 7596 bytes doc/salome/gui/images/menu_file.png | Bin 0 -> 6538 bytes doc/salome/gui/images/studymanagement.png | Bin 258707 -> 7256 bytes doc/salome/gui/input/introduction_to_gui.doc | 10 +- doc/salome/gui/input/salome_desktop.doc | 99 +++++------ .../gui/input/study_management_chapter.doc | 83 ++++++---- src/LightApp/LightApp_Application.cxx | 101 ++++++++---- src/LightApp/resources/LightApp.xml | 6 +- src/LightApp/resources/LightApp_msg_en.ts | 20 +++ src/LightApp/resources/LightApp_msg_fr.ts | 20 +++ src/LightApp/resources/LightApp_msg_ja.ts | 21 +++ src/PyInterp/PyInterp_Interp.h | 1 + src/STD/STD_Application.cxx | 11 +- src/STD/STD_Application.h | 1 + src/STD/resources/STD_msg_en.ts | 12 -- src/STD/resources/STD_msg_fr.ts | 12 -- src/STD/resources/STD_msg_ja.ts | 12 -- src/SalomeApp/SalomeApp_Application.cxx | 156 ++++++++++-------- src/SalomeApp/SalomeApp_Application.h | 10 +- src/SalomeApp/SalomeApp_PyInterp.cxx | 17 +- src/SalomeApp/SalomeApp_PyInterp.h | 2 + src/SalomeApp/SalomeApp_Study.cxx | 14 ++ src/SalomeApp/resources/SalomeApp_msg_en.ts | 70 +++++--- src/SalomeApp/resources/SalomeApp_msg_fr.ts | 62 +++++-- src/SalomeApp/resources/SalomeApp_msg_ja.ts | 67 +++++--- 26 files changed, 495 insertions(+), 312 deletions(-) create mode 100644 doc/salome/gui/images/disconnect_study.png create mode 100644 doc/salome/gui/images/menu_file.png mode change 100755 => 100644 doc/salome/gui/images/studymanagement.png diff --git a/doc/salome/gui/images/closestudy.png b/doc/salome/gui/images/closestudy.png index 4099cc8030d79d3855b842b8803f847f76ba7c36..f53bd1dfe0fc9c3e53349ce6b7e673e7250f691c 100755 GIT binary patch literal 7244 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≫;! z*0-LkD;mppnku^3K8a{vZ%|z1JPj-BOXeq(gpdeWGa@Eox%Y|@^1i{96*#jA*9wdU zZMC_-9nOXt?!6<$q}QCQCDaP3LUj@go$>N@@#aJ65BzQr`sBkQg==k{SjnP(srwqs zrn@!J!kI}1g@j)*$|8T``-c(GH`(}yqk8d zx+Y(xRIw{tZ~l2V)0}-DdXL#)=6R-qwu(WKUQp{=Er!CV`hl7V&6Ij)H@3Qwz=rB0 zkUa$Rw2A%Ny!TEPuF$#vtWzP&tVR`^t}2}q6`)xrV|l9ES00qoQDlZ~pE0m0MUoFz zx{yn~&TQjYwA!+h<)^H9M@C0gp9BHg1h^wswe7r|wGK;~-!1=Wj^bO@C%}!Aor?Vx zG=|j(4AgY<%)V)N_zF~bAT*k`yRUoo6B^~xy;=oS{9e?+CVh4)MFtKln6*`(fRXuq zulXE&R#ct@0rJCrnK8^59?;Svnj+w8G*{~&AuTytCvPU;x-BCmB~`bjGR^EV!+Z&;4+oFk0x~y zh-T+M#${ab&zzi*DtXO&fALJag@KEU0HO+fmCw2u3Ow4nkP0AzO-j!!uTDxAQI#%a zsknSDMZV-%MNb$p#DC~CIjDQ~_C0^R<5aZ|>7$@WQ9dmcm$6c>Ux}*{9UdN49*hYX zf>O#&^Z7snt8I4Jo^OZ;CbSbMaa9|p@B%yojC8A-5*EF3l0qYwRhQL`Xs-5hBzYvj zg8>Fm0H`?XCV9?l-OZ5Z-L^y>m=f#+klGaVi=WAg4%V}N2BH`ZgmPn}1m+nQqdC?K zjn5<@=Ph6Eq=7*RJUqao24195H$wQ%=KUyF7$VIEQ-#+G-fDTW!XB68cz)NTp`m?W zZT;ivvph^-UYkspn@UJX@tIh8Xv=$lX|`QsYT}C-9j(@w!5NsTryFWxt(j|!E7n#~ z?>wMKRSv;yeDz|Pa!DDu@An|nRn6Xf9srEL_J6~+IRPdnJ4zqrOuF*gv&wfoU)~M= zt$}x4Vemm5(oD5YZwRID##DS<>bfeW>Uh0#&?GG$MD@a?pP`ZKis<_K8tD3;fb!oT zsY}xR67?@L?&7lE;MkgkDT8N`Uo|~`HIl1LIZ>k93$%sYcTTVY)|d49-njW~z+q7J z;Tf+r39EJ`i&`^XMEpI;c-mNnR57gp?38=5tsLnS04z%W-$fDJ&KoMg*E6Q1j2O4< zw5%E_HGE62oT_u!gXs>sBCzoVu%5Eq?%YA{d=xmsAm!dlNT3vC65!*v0#YDVQ!=kY6w8`aGsKXi9CpbUQ^+&0dR$pd zG^uQ%8>^T0%IYb5b8%t&&U%U_hFaX;U6`SN&7F1*l z^sf|Y#VmO~=MfE2mIQ+c%DQQbHKl}7=8O*EA*k>v3E&Kcn9uAO{~0^AHqzh5d3H7qm&$T8liCtto_AH!f(JK-|-n z;${Bkf*;OL_?Q#@@?Trdn3em5jkg6cK>f9P%F<%`P>GX@Pg z60x_7y;aVj^Vk4q>!;uhXIYYDr%pv&j^ zcA)+@U0!?haUib__8a5*{~*{DEj{;}zqJR9w@fi|Ok|6`x{ z0oBxBG;?Sk*1cHs;6MU)+IS_|y-Il%j6=0NB&)56b$=5bL1(*J^|QOb))_cj9i!La QS9?gZl1dUK;syc#1z@>2EdT%j diff --git a/doc/salome/gui/images/disconnect_study.png b/doc/salome/gui/images/disconnect_study.png new file mode 100644 index 0000000000000000000000000000000000000000..74c14f86d7262a67628d0f689f216e83d85beaec GIT binary patch literal 7596 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 SPW-t7xT|HT*{I?8_`d+UxXs)E literal 0 HcmV?d00001 diff --git a/doc/salome/gui/images/studymanagement.png b/doc/salome/gui/images/studymanagement.png old mode 100755 new mode 100644 index a7a4b97dc89588ecd3cbda3e8742edb05316e497..2f7b61e30e18faa0960f3c18fc44949a76702ed4 GIT binary patch literal 7256 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 F{{^YNWvl=I literal 258707 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 Qr=8coZ^wi0{nJnXKUww12mk;8 diff --git a/doc/salome/gui/input/introduction_to_gui.doc b/doc/salome/gui/input/introduction_to_gui.doc index 449baa0ce..1814130db 100644 --- a/doc/salome/gui/input/introduction_to_gui.doc +++ b/doc/salome/gui/input/introduction_to_gui.doc @@ -4,13 +4,13 @@ \image html view2.png -\n SALOME GUI is based on SUIT (Salome User Interface +\b SALOME \b GUI is based on SUIT (Salome User Interface Toolkit) that proposes very flexible, powerful and safe mechanisms of interaction with SALOME tool components (both CORBA and standalone), resource management, viewers and selection handling, -exception and signals processing. This approach brings to the top -Salome multi-desktop dockable-windowed user interface. -\n All Graphical User Interfaces of standard modules have plug-in +exception and signals processing. + +All Graphical User Interfaces of standard modules have plug-in structure, i.e. each module is placed in a dynamic library which is loaded on demand. So, all modules add their own menu items, buttons in toolbar, windows etc. @@ -22,7 +22,7 @@ basic GUI functionalities, common for all modules.
  • \b File menu corresponds to \subpage study_management_page "Study management" functionalities -(creation, saving, loading, editing studies, etc.).
  • +(creation, saving, loading, editing studies, connecting, disconnecting, etc.).
  • \b Edit menu gives access to Copy/Paste allowing to paste the objects from one study into the other. The availability of this functionality depends on the module and the nature of an operation or diff --git a/doc/salome/gui/input/salome_desktop.doc b/doc/salome/gui/input/salome_desktop.doc index 2c60c00e3..d4a64281f 100644 --- a/doc/salome/gui/input/salome_desktop.doc +++ b/doc/salome/gui/input/salome_desktop.doc @@ -2,34 +2,30 @@ \page salome_desktop_page SALOME desktop -Multi-Desktop Approach used in Salome means that there is a separate Desktop -for each Study and all windows connected to the same Study (viewers, dockable -windows, etc.) are placed in one container. -This approach positively differs from the classic multi document interface -if many windows are used, i.e. when one document contains a lot of -viewers, dialogs, etc. Each desktop also has its own menu and toolbar. +SALOME applies Single Document Interface (SDI) approach. Only one +\ref study_management_page "study (document)" can be opened at the moment. -The main SALOME Desktop consists of the following sections and toolbars: +The front-end of the application is represented as a single Desktop top-level window +that embeds all GUI operations. Desktop window provides access to standard GUI elements +like viewers, main menu, toolbars, dock windows, dialog boxes, etc. -\image html desktop.png +The main elements of the SALOME Desktop are represented on the picture below: +\image html desktop.png -Basic parts of the SALOME Desktop: -
      -
    • Main menu - This is a set of context-sensitive menus, which will +The main parts of the SALOME Desktop are: +- Main menu - This is a set of context-sensitive menus, which will be updated according to the functionality of the currently active component. In -general, these menus contain all functional options of SALOME platform.
    • -
    • Standard toolbar - contains standard actions +general, these menus contain all functional options of SALOME platform. +- Standard toolbar - contains standard actions that allow creating new or opening existing study, saving study, deleting -objects etc.
    • -
    • Components toolbar - allows activating -components in SALOME platform.
    • -
    • Module toolbars - contains actions specific to the -currently active module.
    • -
    • Viewer toolbar - provides a set of tools destined for visualization -of the presentations in the viewer.
    • -
    - +objects etc. +- Components toolbar - allows activating +components in SALOME platform. +- Module toolbars - contain actions specific to the +currently active module. +- Viewer toolbar - provides a set of tools destined for visualization +of the presentations in the viewer. All toolbars in the \b SALOME Platform are context-sensitive. Loading of a definite component (Geometry, Mesh etc.) will automatically add some additional @@ -37,17 +33,15 @@ toolbars specific to this component. To display/hide a toolbar, in the main menu By default all toolbars are located on top of the SALOME desktop, but you can relocate a toolbar by dragging it with the mouse and dropping in any place of the window. -Parts of the study window: -
      -
    • Object browser - Management of objects created or imported into -SALOME application.
    • -
    • \b Viewer - This window is destined for visualization of -presentations.
    • -
    • Python console - Window for Python interpreter. This window +Parts of the study window: +- Object browser - Management of objects created or imported into +SALOME application. +- \b Viewer - This window is destined for visualization of +presentations. +- Python console - Window for Python interpreter. This window functions like a standard document: the pop-up menu invoked by right-click in this window gives access to -Copy/Paste/SelectAll/ClearAll options.
    • -
    +Copy/Paste/SelectAll/ClearAll options. Object Browser, Python Console, MenuBar, etc are, in fact, separate dockable windows. Dockable windows can be placed in special areas, on the borders of @@ -65,38 +59,31 @@ All parts of Salome desktop and study window can be managed through \b View menu \image html viewmenu.png -
      -
    • \b Toolbars - allows to show and hide toolbars
    • -
    • \b Windows - allows to show and hide dockable windows, such as -Object Browser and Python Console
    • -
    • Status Bar allows showing and hiding the Status Bar.
    • -
    • \ref themes_page "Theme" - allows to select and edit the style (colors and fonts) for Salome session.
    • -
    +- \b Toolbars - allows to show and hide toolbars. +- \b Windows - allows to show and hide dockable windows, such as +Object Browser and Python Console. +- Status Bar allows showing and hiding the Status Bar. +- \ref themes_page "Theme" - allows to select and edit the style (colors and fonts) for Salome session. If there are several viewer windows in your current study and you want to display more then one at the same time, you can use the functionalities provided by the \b Window menu. \image html windowmenu.png -
      -
    • New window - allows to open a new instance of any viewer.
    • -
    • Close - closes the currently active viewer window.
    • -
    • Close all - closes all viewer windows.
    • -
    • Group all - arranges all created viewer windows on the same desktop
    • -
    • Arrange Views - allows choosing the necessary views and their layout. +- New window - allows to open a new instance of any viewer. +- Close - closes the currently active viewer window. +- Close all - closes all viewer windows. +- Group all - arranges all created viewer windows on the same desktop. +- Arrange Views - allows choosing the necessary views and their layout (see image below). + - The radio-buttons in Views Layout section allow choosing the number of views to be arranged (2, 3 or 4). The buttons with images allow choosing the view layout (depending on the chosen number of views). + - Views List contains the list of opened view windows, where it is possible to check in the necessary views. + - Close the remaining views check-box allows closing all non-selected views. + - Stack the remaining views check-box allows stacking all non-selected views in the last tab area. \image html arrange_views_dlg.png -- The radio-buttons in Views Layout section allow choosing the number of views to be arranged (2, 3 or 4). The buttons with images allow choosing the view layout (depending on the chosen number of views). -- Views List contains the list of opened view windows, where it is possible to check in the necessary views. -- Close the remaining views check-box allows closing all non-selected views. -- Stack the remaining views check-box allows stacking all non-selected views in the last tab area. - -
    • Split Vertically and Split Horizontally allow splitting -the representation area into two parts, in horizontal or vertical direction.
    • -
    • List of all opened viewer windows provides fast access to them.
    • -
    • \b Rename - allows renaming the currently selected viewer window.
    • -
    - - +- Split Vertically and Split Horizontally allow splitting +the representation area into two parts, in horizontal or vertical direction. +- List of all opened viewer windows provides fast access to them. +- \b Rename - allows renaming the currently selected viewer window. */ diff --git a/doc/salome/gui/input/study_management_chapter.doc b/doc/salome/gui/input/study_management_chapter.doc index 9e4f618d4..945971e3e 100644 --- a/doc/salome/gui/input/study_management_chapter.doc +++ b/doc/salome/gui/input/study_management_chapter.doc @@ -2,47 +2,43 @@ \page study_management_page Study management -Study is a document within GUI, where you can carry out all +Study is a document within application, where you can carry out all operations provided by the SALOME functionality. This is a certain abstraction layer between actual document data (probably, remote data available through CORBA) and data presentation (in the Object Browser). The study is composed of Data -Object instances, united in a tree-like structure. +Object instances, combined into a tree-like structure. -All operations with studies are available from the \b File menu. +All operations with study are available from the \b File menu. -\image html studymanagement.png +\note SALOME is a single-study application. It means that only one study +can be opened at the moment. -\b New - creates a new study. The study will be created -with default name \b Study1. It is possible to create -several studies, each accessible from the task bar. +Immediately after application start-up there is (normally) no active study. +However, you have access to the embedded Python console, that can be used to initialize +the study by means of Python API (see documentation on SALOME KERNEL module for more details). -\b Open - allows to open an existing study by browsing for it in a -standard Search File dialog box, choosing the required -*.hdf file and clicking \b Open button. +The following operations are available from the \b File menu: -\b Reopen - reloads the current study from the *.hdf file. This menu command -can be used to reverse the study to the latest saved state. +\image html menu_file.png -\b Connect - allows to open an unloaded study. -\image html loadstudy2.png -Select one of the studies, which has been previously -created and unloaded and click \b Ok button. +As soon as study is created, loaded from the file or from the data server, +some additional operations become available from the \b File menu: -\note SALOME is a multi-study platform. It means that simultaneously you can -work with several studies. - -\b Close - closes the current study, alternatively it is -possible to click on the cross in the upper right corner of the study window. +\image html studymanagement.png -\note If the study has not been previously saved, this option will -call the following dialog box with several options: +\b New - creates a new study. The study will be created +with default name \b Study1. If there is already opened study, +you will be asked to close it before creating new one. -\image html closestudy.png +\b Open - allows to open an existing study by browsing for it in a +standard Open File dialog box, choosing the required +*.hdf file and clicking \a Open button. +If there is already opened study, you will be asked to close it +before opening new one. -Here, \b Unload option unloads the current study from the SALOME -Desktop. It can be reloaded in the same working session, but if you quit the SALOME application, all changes -in the unloaded study will be lost. +\b Reopen - reloads the current study from the associated *.hdf file. +This menu command can be used to reverse the study to the latest saved state. \b Save - saves the current study. Saving a study you also save its layout, i.e. all positions and sizes of dockable windows. It means that the difference in settings of the @@ -53,11 +49,34 @@ indicate which common windows are necessary for working, and only they will be displayed when this module is active. \note If the study hasn't been previously saved, \b Save will -call the standard Search File dialog box where you can enter the name +call the standard Save File dialog box where you can enter the name for your study and save it. -\b Save \b as - allows to save the current study with a new name. Input a new name for the study in the standard -Search File dialog box and click \b Save button. +\b Save \b as - allows to save the current study with a new name. +Input a new name for the study in the standard +Search File dialog box and click \a Save button. + +\b Close - closes the current study; alternatively closing of the study +can be done by clicking on the cross in the upper right corner of the desktop window. + +\note If the study has not been previously saved, you will be prompted +by the following dialog box with several options: + +\image html closestudy.png + +\b Connect - allows to open an unloaded or created outside GUI study. + +\note Connect is available only if there is an opened study on the data server. + +\b Disconnect - unloads the current study from the desktop. The study stays opened +in the data server; it can be then reloaded in the same working session +(\b Connect operation), but if you quit SALOME application, all changes in the +unloaded study can be lost. + +\note If the study has not been previously saved, you will be prompted +by the following dialog box with several options: + +\image html disconnect_study.png Dump study - allows to Dump a SALOME Study in one or several Python scripts. The following dialog box allows to browse for the location and @@ -76,13 +95,13 @@ is played, otherwise the objects will not be published in the Study. saved in the Python file.
-To confirm your choice click \b Save. +To confirm your choice click \a Save. Load Script - allows to load a saved Python Script. \image html loadscript.png -To confirm your choice click \b Open. +To confirm your choice click \a Open. Properties - allows to show/edit the properties of the current study. diff --git a/src/LightApp/LightApp_Application.cxx b/src/LightApp/LightApp_Application.cxx index 53b251f4a..e4dd2537a 100644 --- a/src/LightApp/LightApp_Application.cxx +++ b/src/LightApp/LightApp_Application.cxx @@ -415,6 +415,7 @@ void LightApp_Application::start() updateWindows(); updateViewManagers(); + updateCommandsStatus(); putInfo( "" ); desktop()->statusBar()->showMessage( "" ); @@ -860,16 +861,14 @@ void LightApp_Application::onNewWindow() */ void LightApp_Application::onNewDoc() { - //asl: fix for 0020515 - if ( activeStudy() ) { - saveDockWindowsState(); - } - #ifdef SINGLE_DESKTOP if ( !checkExistingDoc() ) return; #endif + //asl: fix for 0020515 + saveDockWindowsState(); + CAM_Application::onNewDoc(); } @@ -879,7 +878,6 @@ void LightApp_Application::onNewDoc() void LightApp_Application::onOpenDoc() { SUIT_Study* study = activeStudy(); - saveDockWindowsState(); #ifdef SINGLE_DESKTOP if ( !checkExistingDoc() ) @@ -905,6 +903,9 @@ bool LightApp_Application::onOpenDoc( const QString& aName ) if ( !checkExistingDoc() ) return false; #endif + + saveDockWindowsState(); + // We should take mru action first because this application instance can be deleted later. QtxMRUAction* mru = ::qobject_cast( action( MRUId ) ); @@ -1587,6 +1588,11 @@ void LightApp_Application::onStudyCreated( SUIT_Study* theStudy ) if ( objectBrowser() ) objectBrowser()->openLevels(); + +#ifndef DISABLE_PYCONSOLE + if( pythonConsole() ) + pythonConsole()->getInterp()->initStudy(); +#endif } /*! @@ -1614,6 +1620,11 @@ void LightApp_Application::onStudyOpened( SUIT_Study* theStudy ) if ( objectBrowser() ) objectBrowser()->openLevels(); +#ifndef DISABLE_PYCONSOLE + if( pythonConsole() ) + pythonConsole()->getInterp()->initStudy(); +#endif + emit studyOpened(); } @@ -1792,6 +1803,8 @@ void LightApp_Application::onPreferenceChanged( QString& modName, QString& secti /*!Remove all windows from study.*/ void LightApp_Application::beforeCloseDoc( SUIT_Study* s ) { + saveDockWindowsState(); + if ( SUIT_DataBrowser* ob = objectBrowser() ) ob->setModel(0); @@ -1907,11 +1920,13 @@ QWidget* LightApp_Application::createWindow( const int flag ) */ void LightApp_Application::defaultWindows( QMap& aMap ) const { - aMap.insert( WT_ObjectBrowser, Qt::LeftDockWidgetArea ); #ifndef DISABLE_PYCONSOLE aMap.insert( WT_PyConsole, Qt::BottomDockWidgetArea ); #endif - // aMap.insert( WT_LogWindow, Qt::DockBottom ); + if ( activeStudy() ) { + aMap.insert( WT_ObjectBrowser, Qt::LeftDockWidgetArea ); + // aMap.insert( WT_LogWindow, Qt::DockBottom ); + } } /*!Default view managers*/ @@ -3167,9 +3182,6 @@ void LightApp_Application::removeModuleAction( const QString& modName ) void LightApp_Application::currentWindows( QMap& winMap ) const { winMap.clear(); - if ( !activeStudy() ) - return; - if ( activeModule() && activeModule()->inherits( "LightApp_Module" ) ) ((LightApp_Module*)activeModule())->windows( winMap ); else @@ -3200,28 +3212,22 @@ void LightApp_Application::updateWindows() QMap winMap; currentWindows( winMap ); - if ( activeStudy() ) + for ( QMap::ConstIterator it = winMap.begin(); it != winMap.end(); ++it ) { - for ( QMap::ConstIterator it = winMap.begin(); it != winMap.end(); ++it ) - { - if ( !dockWindow( it.key() ) ) - getWindow( it.key() ); - } + if ( !dockWindow( it.key() ) ) + getWindow( it.key() ); } for ( WinMap::ConstIterator it = myWin.begin(); it != myWin.end(); ++it ) { QWidget* wid = it.value(); - if ( activeStudy() ) - wid->setVisible( winMap.contains( it.key() ) ); + if ( winMap.contains( it.key() ) ) + wid->setVisible( true ); else delete wid; } - if ( activeStudy() ) - loadDockWindowsState(); - else - myWin.clear(); + loadDockWindowsState(); } /*! @@ -3246,18 +3252,19 @@ void LightApp_Application::loadDockWindowsState() SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr(); bool storeWin = aResMgr->booleanValue( "Study", "store_positions", true ); bool storeTb = aResMgr->booleanValue( "Study", "store_tool_positions", true ); - long version = Qtx::versionToId( aResMgr->stringValue( "salome", "version", "" ) ); QString modName; if ( activeModule() ) modName = activeModule()->name(); + else if ( activeStudy() ) + modName = "nomodule"; QtxResourceMgr::WorkingMode prevMode = aResMgr->workingMode(); - aResMgr->setWorkingMode(QtxResourceMgr::IgnoreUserValues); + aResMgr->setWorkingMode( QtxResourceMgr::IgnoreUserValues ); QByteArray aDefaultState; - aResMgr->value("windows_geometry", modName , aDefaultState ); + aResMgr->value( "windows_geometry", modName, aDefaultState ); QByteArray aDefaultVisibility; - aResMgr->value("windows_visibility", modName , aDefaultVisibility ); + aResMgr->value( "windows_visibility", modName, aDefaultVisibility ); bool hasDefaultVisibility = !aDefaultVisibility.isEmpty(); aResMgr->setWorkingMode(prevMode); @@ -3265,6 +3272,7 @@ void LightApp_Application::loadDockWindowsState() return; if ( aResMgr->hasValue("windows_geometry" ,modName ) ) { + long version = Qtx::versionToId( aResMgr->stringValue( "windows_geometry_version", modName, "" ) ); QByteArray arr; if ( version > Qtx::versionToId( "7.4.1" ) ) aResMgr->value( "windows_geometry", modName , arr ); @@ -3355,9 +3363,17 @@ void LightApp_Application::saveDockWindowsState() QString modName; if ( activeModule() ) modName = activeModule()->name(); + else if ( activeStudy() ) + modName = "nomodule"; + + QString versionId = GUI_VERSION_STR; +#if GUI_DEVELOPMENT > 0 + versionId += "dev"; +#endif QByteArray arr = desktop()->saveState(); resourceMgr()->setValue( "windows_geometry", modName, processState(arr, storeWin, storeTb, false) ); + resourceMgr()->setValue( "windows_geometry_version", modName, versionId ); QByteArray visArr; if ( myWinVis.contains( modName ) ) @@ -4375,7 +4391,34 @@ void LightApp_Application::onViewManagerRemoved( SUIT_ViewManager* ) /*! Check existing document. */ -bool LightApp_Application::checkExistingDoc() { - return true; +bool LightApp_Application::checkExistingDoc() +{ + bool result = true; + if( activeStudy() ) { + int answer = SUIT_MessageBox::question( desktop(), + tr( "APPCLOSE_CAPTION" ), + tr( "STUDYCLOSE_DESCRIPTION" ), + tr( "APPCLOSE_SAVE" ), + tr( "APPCLOSE_CLOSE" ), + tr( "APPCLOSE_CANCEL" ), 0 ); + if(answer == 0) { + if ( activeStudy()->isSaved() ) { + onSaveDoc(); + closeDoc( false ); + } else if ( onSaveAsDoc() ) { + if( !closeDoc( false ) ) { + result = false; + } + } else { + result = false; + } + } + else if( answer == 1 ) { + closeDoc( false ); + } else if( answer == 2 ) { + result = false; + } + } + return result; } diff --git a/src/LightApp/resources/LightApp.xml b/src/LightApp/resources/LightApp.xml index 35aaef3da..9fcf985aa 100644 --- a/src/LightApp/resources/LightApp.xml +++ b/src/LightApp/resources/LightApp.xml @@ -246,9 +246,11 @@
- + +
- + +
diff --git a/src/LightApp/resources/LightApp_msg_en.ts b/src/LightApp/resources/LightApp_msg_en.ts index 94dae2e0b..7922e42b9 100644 --- a/src/LightApp/resources/LightApp_msg_en.ts +++ b/src/LightApp/resources/LightApp_msg_en.ts @@ -50,6 +50,26 @@ CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITASENTRY_COLUMN Entry + + APPCLOSE_CAPTION + Close active study + + + STUDYCLOSE_DESCRIPTION + You already have an active study in your session. It has to be closed before working with another study. + + + APPCLOSE_SAVE + &Save && Close + + + APPCLOSE_CLOSE + &Close w/o saving + + + APPCLOSE_CANCEL + &Cancel + LightApp_Application diff --git a/src/LightApp/resources/LightApp_msg_fr.ts b/src/LightApp/resources/LightApp_msg_fr.ts index 50918d26f..6d3691647 100755 --- a/src/LightApp/resources/LightApp_msg_fr.ts +++ b/src/LightApp/resources/LightApp_msg_fr.ts @@ -50,6 +50,26 @@ CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITASENTRY_COLUMN Entrée + + APPCLOSE_CAPTION + Fermer l'étude actuelle + + + STUDYCLOSE_DESCRIPTION + You already have an active study in your session. It has to be closed before working with another study. + + + APPCLOSE_SAVE + &Sauvegarder && Fermer + + + APPCLOSE_CLOSE + &Fermer sans sauvegarder + + + APPCLOSE_CANCEL + &Annuler + LightApp_Application diff --git a/src/LightApp/resources/LightApp_msg_ja.ts b/src/LightApp/resources/LightApp_msg_ja.ts index bdf471261..d90b91b08 100644 --- a/src/LightApp/resources/LightApp_msg_ja.ts +++ b/src/LightApp/resources/LightApp_msg_ja.ts @@ -50,6 +50,27 @@ CEA/DEN, CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITASENTRY_COLUMN エントリ + + APPCLOSE_CAPTION + 現在のスタディを閉じる + + + STUDYCLOSE_DESCRIPTION + You already have an active study in your +session. It has to be closed before working with another study. + + + APPCLOSE_SAVE + 保存して閉じる(&S) + + + APPCLOSE_CLOSE + 保存せずに閉じる(&C) + + + APPCLOSE_CANCEL + キャンセル(&C) + LightApp_Application diff --git a/src/PyInterp/PyInterp_Interp.h b/src/PyInterp/PyInterp_Interp.h index 9b855a4f2..33c6a2d47 100644 --- a/src/PyInterp/PyInterp_Interp.h +++ b/src/PyInterp/PyInterp_Interp.h @@ -65,6 +65,7 @@ public: void destroy(); virtual int run(const char *command); + virtual void initStudy(){}; // [ABN] - the PyLockWrapper is no more attached to the interpreter // PyLockWrapper GetLockWrapper() const; diff --git a/src/STD/STD_Application.cxx b/src/STD/STD_Application.cxx index 994edd195..51354196a 100755 --- a/src/STD/STD_Application.cxx +++ b/src/STD/STD_Application.cxx @@ -229,10 +229,9 @@ void STD_Application::createActions() createMenu( FileNewId, fileMenu, 0 ); createMenu( FileOpenId, fileMenu, 0 ); createMenu( FileReopenId, fileMenu, 0 ); - createMenu( FileCloseId, fileMenu, 5 ); - createMenu( separator(), fileMenu, -1, 5 ); createMenu( FileSaveId, fileMenu, 5 ); createMenu( FileSaveAsId, fileMenu, 5 ); + createMenu( FileCloseId, fileMenu, 5 ); createMenu( separator(), fileMenu, -1, 5 ); createMenu( separator(), fileMenu ); @@ -403,12 +402,18 @@ bool STD_Application::closeDoc( bool ask ) if ( ask && !isPossibleToClose( closePermanently ) ) return false; + return closeActiveDoc( closePermanently ); +} + +/*!Close document.*/ +bool STD_Application::closeActiveDoc( bool permanently ) +{ SUIT_Study* study = activeStudy(); beforeCloseDoc( study ); if ( study ) - study->closeDocument( closePermanently ); + study->closeDocument( permanently ); clearViewManagers(); diff --git a/src/STD/STD_Application.h b/src/STD/STD_Application.h index 8e5703b01..8073407c3 100755 --- a/src/STD/STD_Application.h +++ b/src/STD/STD_Application.h @@ -168,6 +168,7 @@ protected: virtual int closeChoice( const QString& ); virtual bool closeAction( const int, bool& ); virtual bool closeDoc( bool ask = true ); + virtual bool closeActiveDoc( bool permanently = true ); private: ViewManagerList myViewMgrs; diff --git a/src/STD/resources/STD_msg_en.ts b/src/STD/resources/STD_msg_en.ts index dd91f9b92..382d9db5a 100644 --- a/src/STD/resources/STD_msg_en.ts +++ b/src/STD/resources/STD_msg_en.ts @@ -362,10 +362,6 @@ Do you want to overwrite it? TOT_DESK_FILE_EXIT Exit from application - - TOT_DESK_FILE_LOAD - Load document - TOT_DESK_FILE_OPEN Open document @@ -390,10 +386,6 @@ Do you want to overwrite it? PRP_DESK_FILE_SAVE Saves the active document - - PRP_DESK_FILE_LOAD - Loads a document - PRP_DESK_WINDOW_HTILE Arranges the windows as nonoverlapping horizontal tiles @@ -418,10 +410,6 @@ Do you want to overwrite it? MEN_DESK_FILE_REOPEN Reopen - - MEN_DESK_FILE_LOAD - Conn&ect... - MEN_DESK_FILE_SAVE &Save diff --git a/src/STD/resources/STD_msg_fr.ts b/src/STD/resources/STD_msg_fr.ts index 87c71765e..4b2aa2a99 100755 --- a/src/STD/resources/STD_msg_fr.ts +++ b/src/STD/resources/STD_msg_fr.ts @@ -362,10 +362,6 @@ Voulez-vous l'écraser ? TOT_DESK_FILE_EXIT Quitter l'application - - TOT_DESK_FILE_LOAD - Charger le document - TOT_DESK_FILE_OPEN Ouvrir un document @@ -390,10 +386,6 @@ Voulez-vous l'écraser ? PRP_DESK_FILE_SAVE Sauvegarder le document actuel - - PRP_DESK_FILE_LOAD - Charge un document - PRP_DESK_WINDOW_HTILE Ranger les fenêtres en mosaïque horizontale @@ -418,10 +410,6 @@ Voulez-vous l'écraser ? MEN_DESK_FILE_REOPEN &Réouvrir - - MEN_DESK_FILE_LOAD - Connec&ter... - MEN_DESK_FILE_SAVE &Enregistrer diff --git a/src/STD/resources/STD_msg_ja.ts b/src/STD/resources/STD_msg_ja.ts index 6f7dbd730..476d9c716 100644 --- a/src/STD/resources/STD_msg_ja.ts +++ b/src/STD/resources/STD_msg_ja.ts @@ -355,10 +355,6 @@ TOT_DESK_FILE_EXIT アプリケーションを終了 - - TOT_DESK_FILE_LOAD - ドキュメントを読み込む - TOT_DESK_FILE_OPEN 文書を開く @@ -383,10 +379,6 @@ PRP_DESK_FILE_SAVE 現在のドキュメントを保存 - - PRP_DESK_FILE_LOAD - ドキュメントを読み込み - PRP_DESK_WINDOW_HTILE ウィンドウを左右に並べて表示 @@ -411,10 +403,6 @@ MEN_DESK_FILE_REOPEN 再読み込み - - MEN_DESK_FILE_LOAD - 接続...(&e) - MEN_DESK_FILE_SAVE 保存(&S) diff --git a/src/SalomeApp/SalomeApp_Application.cxx b/src/SalomeApp/SalomeApp_Application.cxx index 282a26f30..32d2f1d5d 100644 --- a/src/SalomeApp/SalomeApp_Application.cxx +++ b/src/SalomeApp/SalomeApp_Application.cxx @@ -164,8 +164,6 @@ extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication() SalomeApp_Application::SalomeApp_Application() : LightApp_Application() { - connect( desktop(), SIGNAL( message( const QString& ) ), - this, SLOT( onLoadDocMessage( const QString& ) ), Qt::UniqueConnection ); myIsSiman = false; // default } @@ -320,12 +318,13 @@ void SalomeApp_Application::createActions() tr( "MEN_DESK_REGISTRY_DISPLAY" ), tr( "PRP_DESK_REGISTRY_DISPLAY" ), /*Qt::SHIFT+Qt::Key_D*/0, desk, false, this, SLOT( onRegDisplay() ) ); - //rnv commented : implementation of the mono-study in GUI - // - //createAction( FileLoadId, tr( "TOT_DESK_FILE_LOAD" ), - // resourceMgr()->loadPixmap( "STD", tr( "ICON_FILE_OPEN" ) ), - // tr( "MEN_DESK_FILE_LOAD" ), tr( "PRP_DESK_FILE_LOAD" ), - // Qt::CTRL+Qt::Key_L, desk, false, this, SLOT( onLoadDoc() ) ); + createAction( ConnectId, tr( "TOT_DESK_CONNECT_STUDY" ), QIcon(), + tr( "MEN_DESK_CONNECT" ), tr( "PRP_DESK_CONNECT" ), + Qt::CTRL+Qt::Key_L, desk, false, this, SLOT( onLoadDoc() ) ); + + createAction( DisconnectId, tr( "TOT_DESK_DISCONNECT_STUDY" ), QIcon(), + tr( "MEN_DESK_DISCONNECT" ), tr( "PRP_DESK_DISCONNECT" ), + Qt::CTRL+Qt::Key_U, desk, false, this, SLOT( onUnloadDoc() ) ); #ifdef WITH_SIMANIO @@ -346,7 +345,9 @@ void SalomeApp_Application::createActions() // creation of menu item is moved to VISU // createMenu( SaveGUIStateId, fileMenu, 10, -1 ); - // createMenu( FileLoadId, fileMenu, 0 ); + createMenu( ConnectId, fileMenu, 5 ); + createMenu( DisconnectId, fileMenu, 5 ); + createMenu( separator(), fileMenu, -1, 5 ); #ifdef WITH_SIMANIO if (myIsSiman) { @@ -358,7 +359,6 @@ void SalomeApp_Application::createActions() } #endif createMenu( DumpStudyId, fileMenu, 10, -1 ); - createMenu( separator(), fileMenu, -1, 10, -1 ); createMenu( LoadScriptId, fileMenu, 10, -1 ); createMenu( separator(), fileMenu, -1, 10, -1 ); createMenu( PropertiesId, fileMenu, 10, -1 ); @@ -387,18 +387,6 @@ void SalomeApp_Application::createActions() } - -/*!Set desktop:*/ -void SalomeApp_Application::setDesktop( SUIT_Desktop* desk ) -{ - LightApp_Application::setDesktop( desk ); - - if ( desk ) { - connect( desk, SIGNAL( message( const QString& ) ), - this, SLOT( onLoadDocMessage( const QString& ) ), Qt::UniqueConnection ); - } -} - /*! \brief Close application. */ @@ -477,6 +465,31 @@ void SalomeApp_Application::onLoadDoc() } } +/*!SLOT. Unload document.*/ +void SalomeApp_Application::onUnloadDoc( bool ask ) +{ + if ( ask ) { + activeStudy()->abortAllOperations(); + if ( activeStudy()->isModified() ) { + QString docName = activeStudy()->studyName().trimmed(); + int answer = SUIT_MessageBox::question( desktop(), tr( "DISCONNECT_CAPTION" ), + tr( "DISCONNECT_DESCRIPTION" ), + tr( "DISCONNECT_SAVE" ), + tr( "DISCONNECT_WO_SAVE" ), + tr( "APPCLOSE_CANCEL" ), 0 ); + if ( answer == 0 ) { // save before unload + if ( activeStudy()->isSaved() ) + onSaveDoc(); + else if ( !onSaveAsDoc() ) + return; + } + else if ( answer == 2 ) // Cancel + return; + } + } + closeActiveDoc( false ); +} + /*!SLOT. Create new study and load script*/ void SalomeApp_Application::onNewWithScript() { @@ -543,18 +556,36 @@ bool SalomeApp_Application::onLoadDoc( const QString& aName ) return res; } -/*!SLOT. Load document with a name, specified in \a aMessage.*/ -void SalomeApp_Application::onLoadDocMessage(const QString& aMessage) +/*!SLOT. Parse message for desktop.*/ +void SalomeApp_Application::onDesktopMessage( const QString& message ) { - if (aMessage.indexOf("simanCheckoutDone ") == 0) { + if (message.indexOf("simanCheckoutDone ") == 0) { #ifdef WITH_SIMANIO - onLoadDoc(aMessage.section(' ', 1)); + // Load document with a name, specified in aMessage. + onLoadDoc(message.section(' ', 1)); #else printf( "****************************************************************\n" ); printf( "* Warning: SALOME is built without SIMAN support.\n" ); printf( "****************************************************************\n" ); #endif } + else if (message.indexOf("studyCreated:") == 0) { + // Enable 'Connect' action + updateCommandsStatus(); + } + else if (message.indexOf("studyClosed:") == 0) { + /* message also contains ID of the closed study, + but as soon as SALOME is mono-study application for the moment, + this ID is not needed now.*/ + //long aStudyId = message.section(':', 1).toLong(); + // Disconnect GUI from active study, because it was closed on DS side. + closeActiveDoc( false ); + // Disable 'Connect' action + QAction* a = action( ConnectId ); + if ( a ) + a->setEnabled( false ); + } + LightApp_Application::onDesktopMessage( message ); } /*!SLOT. Copy objects to study maneger from selection maneger..*/ @@ -641,7 +672,6 @@ void SalomeApp_Application::onCloseDoc( bool ask ) } } - LightApp_Application::onCloseDoc( ask ); } @@ -760,8 +790,8 @@ void SalomeApp_Application::updateCommandsStatus() // Load script menu a = action( LoadScriptId ); - if ( a ) - a->setEnabled( activeStudy() ); + if( a ) + a->setEnabled( pythonConsole() ); // Properties menu a = action( PropertiesId ); @@ -773,6 +803,16 @@ void SalomeApp_Application::updateCommandsStatus() if( a ) a->setEnabled( activeStudy() ); + // Connect study menu + a = action( ConnectId ); + if( a ) + a->setEnabled( !activeStudy() && studyMgr()->GetOpenStudies().size() > 0 ); + + // Disconnect study menu + a = action( DisconnectId ); + if( a ) + a->setEnabled( activeStudy() ); + // update state of Copy/Paste menu items onSelectionChanged(); } @@ -894,14 +934,14 @@ void SalomeApp_Application::onDumpStudy( ) void SalomeApp_Application::onLoadScript( ) { SalomeApp_Study* appStudy = dynamic_cast( activeStudy() ); - if ( !appStudy ) return; - _PTR(Study) aStudy = appStudy->studyDS(); - - if ( aStudy->GetProperties()->IsLocked() ) { - SUIT_MessageBox::warning( desktop(), - QObject::tr("WRN_WARNING"), - QObject::tr("WRN_STUDY_LOCKED") ); - return; + if ( appStudy ) { + _PTR(Study) aStudy = appStudy->studyDS(); + if ( aStudy->GetProperties()->IsLocked() ) { + SUIT_MessageBox::warning( desktop(), + QObject::tr("WRN_WARNING"), + QObject::tr("WRN_STUDY_LOCKED") ); + return; + } } QStringList filtersList; @@ -1268,8 +1308,7 @@ QMap SalomeApp_Application::activateModuleActions() const { QMap opmap = LightApp_Application::activateModuleActions(); - // rnv commented : implementation of the mono-study in GUI - // opmap.insert( LoadStudyId, tr( "ACTIVATE_MODULE_OP_LOAD" ) ); + opmap.insert( LoadStudyId, tr( "ACTIVATE_MODULE_OP_LOAD" ) ); opmap.insert( NewAndScriptId, tr( "ACTIVATE_MODULE_OP_SCRIPT" ) ); return opmap; @@ -2050,42 +2089,15 @@ void SalomeApp_Application::afterCloseDoc() /* Asks to close existing document. */ -bool SalomeApp_Application::checkExistingDoc() { - bool result = true; - if( activeStudy() ) { - int answer = SUIT_MessageBox::question( desktop(), - tr( "APPCLOSE_CAPTION" ), - tr( "STUDYCLOSE_DESCRIPTION" ), - tr( "APPCLOSE_SAVE" ), - tr( "APPCLOSE_CLOSE" ), - tr( "APPCLOSE_CANCEL" ), 0 ); - if(answer == 0) { - if ( activeStudy()->isSaved() ) { - onSaveDoc(); - closeDoc( false ); - } else if ( onSaveAsDoc() ) { - if( !closeDoc( false ) ) { - result = false; - } - } else { - result = false; - } - } - else if( answer == 1 ) { - closeDoc( false ); - } else if( answer == 2 ) { - result = false; - } - } else { +bool SalomeApp_Application::checkExistingDoc() +{ + bool result = LightApp_Application::checkExistingDoc(); + if ( result && !activeStudy() ) { SALOMEDSClient_StudyManager* aMgr = studyMgr(); - if( aMgr ) { + if ( aMgr ) { std::vector List = studyMgr()->GetOpenStudies(); if( List.size() > 0 ) { - int answer = SUIT_MessageBox::question( desktop(), tr( "WRN_WARNING" ), tr( "QUE_ACTIVEDOC_LOAD" ), - SUIT_MessageBox::Yes | SUIT_MessageBox::No, SUIT_MessageBox::No ); - if ( answer == SUIT_MessageBox::Yes ) { - onLoadDoc(); - } + SUIT_MessageBox::critical( desktop(), tr( "WRN_WARNING" ), tr( "ERR_ACTIVEDOC_LOAD" )); result = false; } } diff --git a/src/SalomeApp/SalomeApp_Application.h b/src/SalomeApp/SalomeApp_Application.h index 5d999d1a9..d54a6b8c2 100644 --- a/src/SalomeApp/SalomeApp_Application.h +++ b/src/SalomeApp/SalomeApp_Application.h @@ -69,8 +69,9 @@ class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application public: enum { MenuToolsId = 5 }; enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId, - CatalogGenId, RegDisplayId, SaveGUIStateId, FileLoadId, UserID, - SimanCheckInId, SimanLocalCheckInId }; + CatalogGenId, RegDisplayId, SaveGUIStateId, ConnectId, DisconnectId, + SimanCheckInId, SimanLocalCheckInId, + UserID }; typedef enum { WT_NoteBook = LightApp_Application::WT_User, WT_User @@ -94,8 +95,6 @@ public: virtual void contextMenuPopup( const QString&, QMenu*, QString& ); virtual bool checkDataObject(LightApp_DataObject* theObj); - - virtual void setDesktop( SUIT_Desktop* ); virtual bool checkExistingDoc(); @@ -124,8 +123,8 @@ public slots: virtual void onLoadDoc(); virtual void onNewWithScript(); virtual bool onLoadDoc( const QString& ); + virtual void onUnloadDoc( bool ask = true); virtual void onCloseDoc( bool ask = true); - virtual void onLoadDocMessage(const QString&); virtual void onExit(); virtual void onCopy(); @@ -144,6 +143,7 @@ public slots: protected slots: void onStudyCreated( SUIT_Study* ); void onStudyOpened( SUIT_Study* ); + void onDesktopMessage( const QString& ); protected: virtual void createActions(); diff --git a/src/SalomeApp/SalomeApp_PyInterp.cxx b/src/SalomeApp/SalomeApp_PyInterp.cxx index 3adde1b6b..1107c03a3 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.cxx +++ b/src/SalomeApp/SalomeApp_PyInterp.cxx @@ -37,7 +37,7 @@ * initstate & initcontext redefined here. */ SalomeApp_PyInterp::SalomeApp_PyInterp(): - PyConsole_EnhInterp(), myFirstRun( true ) + PyConsole_EnhInterp(), myFirstRun( true ), myFirstInitStudy( false ) { } @@ -68,7 +68,10 @@ int SalomeApp_PyInterp::beforeRun() int ret = simpleRun( "from Help import *", false ); if ( ret ) return ret; - ret = simpleRun( "import salome", false ); + } + if( myFirstInitStudy ) { + myFirstInitStudy = false; + int ret = simpleRun( "import salome", false ); if (ret) return ret; ret = simpleRun( "salome.salome_init(0,1)", false ); @@ -78,8 +81,14 @@ int SalomeApp_PyInterp::beforeRun() return true; } +void SalomeApp_PyInterp::initStudy() +{ + myFirstInitStudy = true; +} + void SalomeApp_PyInterp::closeContext() { - simpleRun( "import salome", false ); - simpleRun( "salome.salome_close()", false ); + myFirstInitStudy = false; + simpleRun( "import salome", false ); + simpleRun( "salome.salome_close()", false ); } diff --git a/src/SalomeApp/SalomeApp_PyInterp.h b/src/SalomeApp/SalomeApp_PyInterp.h index 95855f3a4..bf7bd8d50 100755 --- a/src/SalomeApp/SalomeApp_PyInterp.h +++ b/src/SalomeApp/SalomeApp_PyInterp.h @@ -36,6 +36,7 @@ public: virtual ~SalomeApp_PyInterp(); virtual void initPython(); + virtual void initStudy(); virtual void closeContext(); protected: @@ -43,6 +44,7 @@ protected: private: bool myFirstRun; + bool myFirstInitStudy; }; #endif diff --git a/src/SalomeApp/SalomeApp_Study.cxx b/src/SalomeApp/SalomeApp_Study.cxx index 70bd944cb..293488936 100644 --- a/src/SalomeApp/SalomeApp_Study.cxx +++ b/src/SalomeApp/SalomeApp_Study.cxx @@ -47,6 +47,11 @@ #include +#ifndef DISABLE_PYCONSOLE + #include "SalomeApp_PyInterp.h" // WARNING! This include must be the first! + #include +#endif + #include "utilities.h" #include "SALOMEDS_Tool.hxx" @@ -729,7 +734,16 @@ void SalomeApp_Study::closeDocument(bool permanently) if ( myObserver ) myStudyDS->detach( myObserver->_this() ); if ( permanently ) { + SUIT_Desktop* desk = SUIT_Session::session()->activeApplication()->desktop(); + bool isBlocked = desk->signalsBlocked(); + desk->blockSignals( true ); SalomeApp_Application::studyMgr()->Close( studyPtr ); + desk->blockSignals( isBlocked ); +#ifndef DISABLE_PYCONSOLE + SalomeApp_Application* app = dynamic_cast( application() ); + if( app->pythonConsole() ) + app->pythonConsole()->getInterp()->destroy(); +#endif } SALOMEDSClient_Study* aStudy = 0; setStudyDS( _PTR(Study)(aStudy) ); diff --git a/src/SalomeApp/resources/SalomeApp_msg_en.ts b/src/SalomeApp/resources/SalomeApp_msg_en.ts index af08eef16..d73f74105 100644 --- a/src/SalomeApp/resources/SalomeApp_msg_en.ts +++ b/src/SalomeApp/resources/SalomeApp_msg_en.ts @@ -13,16 +13,8 @@ Python file must include only letters, digits and underscores and start from let The file %1 does not exist. - QUE_ACTIVEDOC_LOAD - There is an active study in the session. -Do you want to load it? - - - - STUDYCLOSE_DESCRIPTION - You should close an existing study before. -Do you want to close it? - + ERR_ACTIVEDOC_LOAD + A study is already active in your session, but you are not connected to it. Use the Connect button to load it in the interface. WRN_STUDY_LOCKED @@ -118,6 +110,30 @@ Launch a new session or close the study. CREATE_DOCUMENT_PROBLEM Unknown problem during creation of the document + + TOT_DESK_CONNECT_STUDY + Connect study + + + TOT_DESK_DISCONNECT_STUDY + Disconnect study + + + PRP_DESK_CONNECT + Connect active study + + + PRP_DESK_DISCONNECT + Disconnect the current study + + + MEN_DESK_CONNECT + Conn&ect + + + MEN_DESK_DISCONNECT + D&isconnect + SalomeApp_Application @@ -129,10 +145,6 @@ Launch a new session or close the study. APPCLOSE_UNLOAD &Unload - - APPCLOSE_CLOSE - &Close w/o saving - MEN_WINDOWS_NEW New Window @@ -157,10 +169,6 @@ Launch a new session or close the study. MEN_DESK_REGISTRY_DISPLAY Registry &Display - - APPCLOSE_SAVE - &Save && Close - TOT_DESK_FILE_LOAD_SCRIPT Load python script @@ -254,10 +262,6 @@ Do you want to reload it ? STUDY_LOCKED LOCKED - - APPCLOSE_CANCEL - &Cancel - OBJ_BROWSER_NAME Object @@ -362,10 +366,6 @@ Do you want to reload it ? MEN_DESK_ADD_VARS_TO_NOTEBOOK Add vars to NoteBook - - APPCLOSE_CAPTION - Close active study - MEN_DESK_MRU Most Recently Used @@ -376,7 +376,7 @@ Do you want to reload it ? ACTIVATE_MODULE_OP_LOAD - &Load... + &Connect ACTIVATE_MODULE_OP_SCRIPT @@ -406,6 +406,22 @@ Do you want to reload it ? PRP_SIMAN_LOCAL_CHECK_IN Check In for module + + DISCONNECT_CAPTION + Disconnect active study + + + DISCONNECT_DESCRIPTION + Do you want to save study before disconnect? + + + DISCONNECT_SAVE + &Save && Disconnect + + + DISCONNECT_WO_SAVE + &Disconnect w/o saving + SalomeApp_StudyPropertiesDlg diff --git a/src/SalomeApp/resources/SalomeApp_msg_fr.ts b/src/SalomeApp/resources/SalomeApp_msg_fr.ts index 345a295e0..dade025d2 100755 --- a/src/SalomeApp/resources/SalomeApp_msg_fr.ts +++ b/src/SalomeApp/resources/SalomeApp_msg_fr.ts @@ -12,6 +12,10 @@ Un fichier Python ne doit être composé que de lettres, chiffres et tirets bas WRN_FILE_NOT_EXIST Le fichier %1 n'existe pas. + + ERR_ACTIVEDOC_LOAD + A study is already active in your session, but you are not connected to it. Use the Connect button to load it in the interface. + WRN_STUDY_LOCKED L'étude est verrouillée @@ -94,6 +98,30 @@ Lancez une nouvelle session ou fermez l'étude en cours. Impossible d'ouvrir l'étude car il y en a déjà une d'active. Lancez une nouvelle session ou fermez l'étude en cours. + + TOT_DESK_CONNECT_STUDY + Connect study + + + TOT_DESK_DISCONNECT_STUDY + Disconnect study + + + PRP_DESK_CONNECT + Connect active study + + + PRP_DESK_DISCONNECT + Disconnect the current study + + + MEN_DESK_CONNECT + Conn&ect + + + MEN_DESK_DISCONNECT + D&isconnect + SalomeApp_Application @@ -105,10 +133,6 @@ Lancez une nouvelle session ou fermez l'étude en cours. APPCLOSE_UNLOAD &Déconnecter - - APPCLOSE_CLOSE - &Fermer sans sauvegarder - MEN_WINDOWS_NEW Nouvelle fenêtre @@ -133,10 +157,6 @@ Lancez une nouvelle session ou fermez l'étude en cours. MEN_DESK_REGISTRY_DISPLAY Affichage du registre CORBA - - APPCLOSE_SAVE - &Sauvegarder && Fermer - TOT_DESK_FILE_LOAD_SCRIPT Exécuter un script python @@ -230,10 +250,6 @@ Voulez-vous le recharger ? STUDY_LOCKED VERROUILLEE - - APPCLOSE_CANCEL - &Annuler - OBJ_BROWSER_NAME Objet @@ -338,10 +354,6 @@ Voulez-vous le recharger ? MEN_DESK_ADD_VARS_TO_NOTEBOOK Ajouter les variables au registre - - APPCLOSE_CAPTION - Fermer l'étude actuelle - MEN_DESK_MRU Dernières études ouvertes @@ -352,7 +364,7 @@ Voulez-vous le recharger ? ACTIVATE_MODULE_OP_LOAD - &Charger... + &Connect ACTIVATE_MODULE_OP_SCRIPT @@ -382,6 +394,22 @@ Voulez-vous le recharger ? PRP_SIMAN_LOCAL_CHECK_IN Check In pour la module" + + DISCONNECT_CAPTION + Disconnect active study + + + DISCONNECT_DESCRIPTION + Do you want to save study before disconnect? + + + DISCONNECT_SAVE + &Save && Disconnect + + + DISCONNECT_WO_SAVE + &Disconnect w/o saving + SalomeApp_StudyPropertiesDlg diff --git a/src/SalomeApp/resources/SalomeApp_msg_ja.ts b/src/SalomeApp/resources/SalomeApp_msg_ja.ts index 4c0b3b964..c11f45b10 100644 --- a/src/SalomeApp/resources/SalomeApp_msg_ja.ts +++ b/src/SalomeApp/resources/SalomeApp_msg_ja.ts @@ -12,13 +12,8 @@ ファイル %1 は存在しません。 - QUE_ACTIVEDOC_LOAD - セッションにスタディがあります。読み込みますか? - - - STUDYCLOSE_DESCRIPTION - 既存のスタディを閉じる必要があります。閉じますか? - + ERR_ACTIVEDOC_LOAD + A study is already active in your session, but you are not connected to it. Use the Connect button to load it in the interface. WRN_STUDY_LOCKED @@ -114,6 +109,30 @@ CREATE_DOCUMENT_PROBLEM ドキュメント作成中に不明な問題が発生しました + + TOT_DESK_CONNECT_STUDY + Connect study + + + TOT_DESK_DISCONNECT_STUDY + Disconnect study + + + PRP_DESK_CONNECT + Connect active study + + + PRP_DESK_DISCONNECT + Disconnect the current study + + + MEN_DESK_CONNECT + Conn&ect + + + MEN_DESK_DISCONNECT + D&isconnect + SalomeApp_Application @@ -125,10 +144,6 @@ APPCLOSE_UNLOAD アンロード(&U) - - APPCLOSE_CLOSE - 保存せずに閉じる(&C) - MEN_WINDOWS_NEW 新しいウィンドウ @@ -153,10 +168,6 @@ MEN_DESK_REGISTRY_DISPLAY レジストリの表示(&D) - - APPCLOSE_SAVE - 保存して閉じる(&S) - TOT_DESK_FILE_LOAD_SCRIPT Python スクリプトを実行 @@ -249,10 +260,6 @@ STUDY_LOCKED ロック - - APPCLOSE_CANCEL - キャンセル(&C) - OBJ_BROWSER_NAME オブジェクト @@ -357,10 +364,6 @@ MEN_DESK_ADD_VARS_TO_NOTEBOOK 変数をレジストリに追加します。 - - APPCLOSE_CAPTION - 現在のスタディを閉じる - MEN_DESK_MRU 最近のスタディ @@ -371,7 +374,7 @@ ACTIVATE_MODULE_OP_LOAD - 読込み(&L) + &Connect ACTIVATE_MODULE_OP_SCRIPT @@ -401,6 +404,22 @@ PRP_SIMAN_LOCAL_CHECK_IN モジュールにチェックイン + + DISCONNECT_CAPTION + Disconnect active study + + + DISCONNECT_DESCRIPTION + Do you want to save study before disconnect? + + + DISCONNECT_SAVE + &Save && Disconnect + + + DISCONNECT_WO_SAVE + &Disconnect w/o saving + SalomeApp_StudyPropertiesDlg -- 2.39.2