]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Use LightApp library
authornds <nds@opencascade.com>
Wed, 14 Sep 2005 06:43:18 +0000 (06:43 +0000)
committernds <nds@opencascade.com>
Wed, 14 Sep 2005 06:43:18 +0000 (06:43 +0000)
16 files changed:
src/SalomeApp/Makefile.in
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/SalomeApp_Application.h
src/SalomeApp/SalomeApp_DataModel.cxx
src/SalomeApp/SalomeApp_DataModel.h
src/SalomeApp/SalomeApp_DataObject.cxx
src/SalomeApp/SalomeApp_DataObject.h
src/SalomeApp/SalomeApp_Module.cxx
src/SalomeApp/SalomeApp_Module.h
src/SalomeApp/SalomeApp_Operation.cxx
src/SalomeApp/SalomeApp_Operation.h
src/SalomeApp/SalomeApp_PyInterp.cxx
src/SalomeApp/SalomeApp_PyInterp.h
src/SalomeApp/SalomeApp_Study.cxx
src/SalomeApp/SalomeApp_Study.h
src/SalomeApp/SalomeApp_TypeFilter.cxx

index fb914ced07366f2f605c030260cf5a91db7ec109..e7214a93a056e57c9dbe93b4f25c5209c72c401d 100755 (executable)
@@ -13,32 +13,17 @@ VPATH=.:@srcdir@:@srcdir@/resources
 
 # header files 
 EXPORT_HEADERS= SalomeApp.h \
-               SalomeApp_AboutDlg.h \
                SalomeApp_Application.h \
                SalomeApp_DataModel.h \
                SalomeApp_DataObject.h \
-               SalomeApp_DataOwner.h \
-               SalomeApp_OCCSelector.h \
-               SalomeApp_VTKSelector.h \
-               SalomeApp_OBSelector.h \
-               SalomeApp_GLSelector.h \
                SalomeApp_Module.h \
                SalomeApp_Study.h \
-               SalomeApp_WidgetContainer.h \
                SalomeApp_ExceptionHandler.h \
-               SalomeApp_RootObject.h \
-               SalomeApp_SelectionMgr.h \
                SalomeApp_EventFilter.h \
-               SalomeApp_Preferences.h \
-               SalomeApp_PreferencesDlg.h \
                SalomeApp_Tools.h \
-               SalomeApp_NameDlg.h \
                SalomeApp_ImportOperation.h \
-               SalomeApp_DataSubOwner.h \
-               SalomeApp_Selection.h \
                SalomeApp_Filter.h \
                SalomeApp_TypeFilter.h \
-               SalomeApp_OBFilter.h \
                SalomeApp_StudyPropertiesDlg.h \
                SalomeApp_CheckFileDlg.h \
                SalomeApp_Operation.h \
@@ -54,32 +39,17 @@ PO_FILES = SalomeApp_images.po \
 LIB = libSalomeApp.la
 
 LIB_SRC= SalomeApp_Module.cxx \
-        SalomeApp_AboutDlg.cxx \
          SalomeApp_Application.cxx \
         SalomeApp_DataModel.cxx \
         SalomeApp_DataObject.cxx \
-        SalomeApp_DataOwner.cxx \
-        SalomeApp_OCCSelector.cxx \
-        SalomeApp_VTKSelector.cxx \
-        SalomeApp_OBSelector.cxx \
-        SalomeApp_GLSelector.cxx \
         SalomeApp_Study.cxx \
-        SalomeApp_WidgetContainer.cxx \
         SalomeApp_ExceptionHandler.cxx \
-        SalomeApp_SelectionMgr.cxx \
         SalomeApp_EventFilter.cxx \
-        SalomeApp_Preferences.cxx \
-        SalomeApp_PreferencesDlg.cxx \
         SalomeApp_PyInterp.cxx \
         SalomeApp_Tools.cxx \
-        SalomeApp_NameDlg.cxx \
         SalomeApp_ImportOperation.cxx \
-        SalomeApp_DataSubOwner.cxx \
-        SalomeApp_ModuleDlg.cxx \
-        SalomeApp_Selection.cxx \
         SalomeApp_Filter.cxx \
         SalomeApp_TypeFilter.cxx \
-        SalomeApp_OBFilter.cxx \
         SalomeApp_StudyPropertiesDlg.cxx \
         SalomeApp_ListView.cxx \
         SalomeApp_CheckFileDlg.cxx \
@@ -87,21 +57,10 @@ LIB_SRC= SalomeApp_Module.cxx \
         SalomeApp_Dialog.cxx \
         SalomeApp_SwitchOp.cxx
 
-LIB_MOC = SalomeApp_AboutDlg.h \
-          SalomeApp_Application.h \
+LIB_MOC = SalomeApp_Application.h \
          SalomeApp_DataModel.h \
-         SalomeApp_OBSelector.h \
-         SalomeApp_OCCSelector.h \
-         SalomeApp_VTKSelector.h \
-         SalomeApp_GLSelector.h \
          SalomeApp_Module.h \
          SalomeApp_Study.h \
-         SalomeApp_SelectionMgr.h \
-         SalomeApp_WidgetContainer.h \
-         SalomeApp_Preferences.h \
-         SalomeApp_PreferencesDlg.h \
-         SalomeApp_NameDlg.h \
-         SalomeApp_ModuleDlg.h \
          SalomeApp_StudyPropertiesDlg.h \
          SalomeApp_ListView.h \
          SalomeApp_CheckFileDlg.h \
@@ -113,19 +72,14 @@ LIB_CLIENT_IDL = SALOMEDS.idl \
                 SALOME_Exception.idl \
                 SALOME_GenericObj.idl
 
-RESOURCES_FILES = icon_about.png \
-                 icon_applogo.png \
-                  icon_default.png \
-                  icon_module.png \
-                 icon_module_big.png \
-                 icon_select.png \
+RESOURCES_FILES = icon_select.png \
                  SalomeApp.ini \
                  SalomeApp.xml
 
 CPPFLAGS+=$(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES) $(OCC_INCLUDES) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) -I${KERNEL_ROOT_DIR}/include/salome
 
 LDFLAGS+=$(PYTHON_LIBS) $(QT_MT_LIBS) 
-LIBS+= -lsuit -lstd -lCAM -lObjBrowser -L$(KERNEL_ROOT_DIR)/lib/salome -lOpUtil -lSALOMELocalTrace $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lSalomeContainer -lToolsGUI
+LIBS+= -lsuit -lstd -lCAM -lObjBrowser -L$(KERNEL_ROOT_DIR)/lib/salome -lOpUtil -lSALOMELocalTrace $(CAS_KERNEL) -lSPlot2d -lGLViewer -lOCCViewer -lVTKViewer -lSalomeObject -lSVTK -lSOCC -lPyInterp -lPythonConsole -lLogWindow -lLightApp -lSalomeContainer -lToolsGUI
 
 @CONCLUDE@
 
index 16b7ab9398e0ea579ae6277758225892ec0291f5..57370698cf1b847c65cf3e45869545b57e384abc 100644 (file)
@@ -9,51 +9,23 @@
 
 #include "SalomeApp_Study.h"
 #include "SalomeApp_Module.h"
-#include "SalomeApp_OBFilter.h"
 #include "SalomeApp_DataModel.h"
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_EventFilter.h"
-#include "SalomeApp_WidgetContainer.h"
 
-#include "SalomeApp_AboutDlg.h"
-#include "SalomeApp_ModuleDlg.h"
-#include "SalomeApp_Preferences.h"
-#include "SalomeApp_PreferencesDlg.h"
 #include "SalomeApp_StudyPropertiesDlg.h"
-#include "SalomeApp_CheckFileDlg.h"
-
-#include "SalomeApp_GLSelector.h"
-#include "SalomeApp_OBSelector.h"
-#include "SalomeApp_OCCSelector.h"
-#include "SalomeApp_VTKSelector.h"
-#include "SalomeApp_SelectionMgr.h"
-
-#include <LogWindow.h>
-
-#include <GLViewer_Viewer.h>
-#include <GLViewer_ViewManager.h>
 
-#include <Plot2d_ViewManager.h>
-#include <SPlot2d_ViewModel.h>
-
-#include <OCCViewer_ViewManager.h>
-#include <SOCC_ViewModel.h>
-
-#include <SVTK_ViewModel.h>
-#include <SVTK_ViewManager.h>
+#include "SalomeApp_CheckFileDlg.h"
 
-#include <STD_TabDesktop.h>
+#include "LightApp_Application.h"
+#include "LightApp_Preferences.h"
+#include "LightApp_WidgetContainer.h"
+#include "LightApp_SelectionMgr.h"
 
 #include "STD_LoadStudiesDlg.h"
 
 #include <SUIT_Tools.h>
 #include <SUIT_Session.h>
-#include <SUIT_Accel.h>
-
-#include <QtxToolBar.h>
-#include <QtxMRUAction.h>
-#include <QtxDockAction.h>
-#include <QtxResourceEdit.h>
 
 #include <OB_Browser.h>
 
 #include <SALOME_LifeCycleCORBA.hxx>
 
 #include <qmap.h>
-#include <qdir.h>
-#include <qlabel.h>
-#include <qimage.h>
 #include <qaction.h>
-#include <qmenubar.h>
 #include <qcombobox.h>
-#include <qmessagebox.h>
-#include <qapplication.h>
 #include <qlistbox.h>
 #include <qregexp.h>
 
 #include "SALOMEDS_StudyManager.hxx"
+#include "SALOMEDS_SObject.hxx"
 
 #include "SALOME_ListIteratorOfListIO.hxx"
 #include "SALOME_ListIO.hxx"
 
 #define OBJECT_BROWSER_WIDTH 300
 
-/*!Image for empty icon.*/
-static const char* imageEmptyIcon[] = {
-"20 20 1 1",
-".     c None",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"....................",
-"...................."};
-
 /*!Create new instance of SalomeApp_Application.*/
 extern "C" SALOMEAPP_EXPORT SUIT_Application* createApplication()
 {
   return new SalomeApp_Application();
 }
 
-SalomeApp_Preferences* SalomeApp_Application::_prefs_ = 0;
-
 /*
   Class       : SalomeApp_Application
   Description : Application containing SalomeApp module
 */
 
-/*!Constructor.*/
 SalomeApp_Application::SalomeApp_Application()
-: CAM_Application( false ),
-myPrefs( 0 )
+: LightApp_Application()
 {
-  STD_TabDesktop* desk = new STD_TabDesktop();
-
-  setDesktop( desk );
-
-  SUIT_ResourceMgr* aResMgr = SUIT_Session::session()->resourceMgr();
-  QPixmap aLogo = aResMgr->loadPixmap( "SalomeApp", tr( "APP_DEFAULT_ICO" ), false );
-
-  desktop()->setIcon( aLogo );
-  desktop()->setDockableMenuBar( true );
-  desktop()->setDockableStatusBar( false );
-
-  // base logo (salome itself)
-  desktop()->addLogo( "_app_base",  aResMgr->loadPixmap( "SalomeApp", tr( "APP_BASE_LOGO" ), false ) );
-  // extra logo (salome-based application)
-  desktop()->addLogo( "_app_extra", aResMgr->loadPixmap( "SalomeApp", tr( "APP_EXTRA_LOGO" ), false ) );
-
-  clearViewManagers();
-
-  mySelMgr = new SalomeApp_SelectionMgr( this );
-
-  myAccel = new SUIT_Accel( desktop() );
-  myAccel->setActionKey( SUIT_Accel::PanLeft,     CTRL+Key_Left,     OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanRight,    CTRL+Key_Right,    OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanUp,       CTRL+Key_Up,       OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanDown,     CTRL+Key_Down,     OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomIn,      CTRL+Key_Plus,     OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomOut,     CTRL+Key_Minus,    OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomFit,     CTRL+Key_Asterisk, OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateLeft,  ALT+Key_Left,      OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right,     OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateUp,    ALT+Key_Up,        OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateDown,  ALT+Key_Down,      OCCViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanLeft,     CTRL+Key_Left,     VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanRight,    CTRL+Key_Right,    VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanUp,       CTRL+Key_Up,       VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::PanDown,     CTRL+Key_Down,     VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomIn,      CTRL+Key_Plus,     VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomOut,     CTRL+Key_Minus,    VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::ZoomFit,     CTRL+Key_Asterisk, VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateLeft,  ALT+Key_Left,      VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateRight, ALT+Key_Right,     VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateUp,    ALT+Key_Up,        VTKViewer_Viewer::Type() );
-  myAccel->setActionKey( SUIT_Accel::RotateDown,  ALT+Key_Down,      VTKViewer_Viewer::Type() );
-
-  connect( desk, SIGNAL( closing( SUIT_Desktop*, QCloseEvent* ) ),
-           this, SLOT( onDesktopClosing( SUIT_Desktop*, QCloseEvent* ) ) );
-
-  connect( mySelMgr, SIGNAL( selectionChanged() ), this, SLOT( onSelection() ) );
 }
 
 /*!Destructor.
- *\li Save window geometry.
- *\li Save desktop geometry.
- *\li Save resource maneger.
- *\li Delete selection manager.
  *\li Destroy event filter.
  */
 SalomeApp_Application::~SalomeApp_Application()
 {
-  saveWindowsGeometry();
-
-  if ( resourceMgr() )
-  {
-    if ( desktop() )
-      desktop()->saveGeometry( resourceMgr(), "desktop" );
-    resourceMgr()->save();
-  }
-
-  delete mySelMgr;
-
   SalomeApp_EventFilter::Destroy();
 }
 
 /*!Start application.*/
 void SalomeApp_Application::start()
 {
-  if ( desktop() )
-    desktop()->loadGeometry( resourceMgr(), "desktop" );
-
-  CAM_Application::start();
-
-  QAction* a = action( ViewWindowsId );
-  if ( a && a->inherits( "QtxDockAction" ) )
-    ((QtxDockAction*)a)->setAutoPlace( true );
+  LightApp_Application::start();
 
   SalomeApp_EventFilter::Init();
-
-  updateWindows();
-  updateViewManagers();
-
-  putInfo( "" );
-}
-
-/*!Gets application name.*/
-QString SalomeApp_Application::applicationName() const
-{
-  return tr( "APP_NAME" );
-}
-
-/*!Gets application version.*/
-QString SalomeApp_Application::applicationVersion() const
-{
-  static QString _app_version;
-
-  if ( _app_version.isEmpty() )
-  {
-    QString resVersion = tr( "APP_VERSION" );
-    if ( resVersion != "APP_VERSION" ) 
-    {
-      _app_version = resVersion;
-    }
-    else 
-    {
-      QString path( ::getenv( "GUI_ROOT_DIR" ) );
-      if ( !path.isEmpty() )
-        path += QDir::separator();
-      path += QString( "bin/salome/VERSION" );
-
-      QFile vf( path );
-      if ( vf.open( IO_ReadOnly ) )
-      {
-        QString line;
-       vf.readLine( line, 1024 );
-       vf.close();
-       
-       if ( !line.isEmpty() )
-        {
-         while ( !line.isEmpty() && line.at( line.length() - 1 ) == QChar( '\n' ) )
-           line.remove( line.length() - 1, 1 );
-         
-         int idx = line.findRev( ":" );
-         if ( idx != -1 )
-           _app_version = line.mid( idx + 1 ).stripWhiteSpace(); 
-        }
-      }
-    }
-  }
-  return _app_version;
-}
-
-/*!Load module by \a name.*/
-CAM_Module* SalomeApp_Application::loadModule( const QString& name )
-{
-  CAM_Module* mod = CAM_Application::loadModule( name );
-  if ( mod )
-  {
-    connect( this, SIGNAL( studyOpened() ), mod, SLOT( onModelOpened() ) );
-    connect( this, SIGNAL( studySaved() ),  mod, SLOT( onModelSaved() ) );
-    connect( this, SIGNAL( studyClosed() ), mod, SLOT( onModelClosed() ) );
-  }
-  return mod;
-}
-
-/*!Activate module by \a modName*/
-bool SalomeApp_Application::activateModule( const QString& modName )
-{
-  QString actName;
-  CAM_Module* prevMod = activeModule();
-
-  if ( prevMod )
-    actName = prevMod->moduleName();
-
-  if ( actName == modName )
-    return true;
-
-  putInfo( tr( "ACTIVATING_MODULE" ).arg( modName ) );  
-
-  saveWindowsGeometry();
-
-  bool status = CAM_Application::activateModule( modName );
-
-  updateModuleActions();
-
-  putInfo( "" );  
-
-  if ( !status )
-    return false;
-
-  updateWindows();
-  updateViewManagers();
-
-  return true;
-}
-
-/*!Gets selection manager.*/
-SalomeApp_SelectionMgr* SalomeApp_Application::selectionMgr() const
-{
-  return mySelMgr;
 }
 
 /*!Create actions:*/
 void SalomeApp_Application::createActions()
 {
-  STD_Application::createActions();
+  LightApp_Application::createActions();
 
   SUIT_Desktop* desk = desktop();
-  SUIT_ResourceMgr* resMgr = resourceMgr();
-
+  
   //! Dump study
   createAction( DumpStudyId, tr( "TOT_DESK_FILE_DUMP_STUDY" ), QIconSet(),
                tr( "MEN_DESK_FILE_DUMP_STUDY" ), tr( "PRP_DESK_FILE_DUMP_STUDY" ),
                0, desk, false, this, SLOT( onDumpStudy() ) );
-
+    
   //! Load script
   createAction( LoadScriptId, tr( "TOT_DESK_FILE_LOAD_SCRIPT" ), QIconSet(),
                tr( "MEN_DESK_FILE_LOAD_SCRIPT" ), tr( "PRP_DESK_FILE_LOAD_SCRIPT" ),
@@ -347,11 +112,6 @@ void SalomeApp_Application::createActions()
                tr( "MEN_DESK_PROPERTIES" ), tr( "PRP_DESK_PROPERTIES" ),
                0, desk, false, this, SLOT( onProperties() ) );
 
-  //! Preferences
-  createAction( PreferencesId, tr( "TOT_DESK_PREFERENCES" ), QIconSet(),
-               tr( "MEN_DESK_PREFERENCES" ), tr( "PRP_DESK_PREFERENCES" ),
-               CTRL+Key_P, desk, false, this, SLOT( onPreferences() ) );
-
   //! Catalog Generator
   createAction( CatalogGenId, tr( "TOT_DESK_CATALOG_GENERATOR" ),  QIconSet(),
                tr( "MEN_DESK_CATALOG_GENERATOR" ), tr( "PRP_DESK_CATALOG_GENERATOR" ),
@@ -362,93 +122,7 @@ void SalomeApp_Application::createActions()
                tr( "MEN_DESK_REGISTRY_DISPLAY" ), tr( "PRP_DESK_REGISTRY_DISPLAY" ),
                0, desk, false, this, SLOT( onRegDisplay() ) );
 
-  //! MRU
-  QtxMRUAction* mru = new QtxMRUAction( tr( "TOT_DESK_MRU" ), tr( "MEN_DESK_MRU" ), desk );
-  connect( mru, SIGNAL( activated( QString ) ), this, SLOT( onMRUActivated( QString ) ) );
-  registerAction( MRUId, mru );
-
-  //! default icon for neutral point ('SALOME' module)
-  QPixmap defIcon = resMgr->loadPixmap( "SalomeApp", tr( "APP_DEFAULT_ICO" ), false );
-  if ( defIcon.isNull() )
-    defIcon = QPixmap( imageEmptyIcon );
-
-  //! default icon for any module
-  QPixmap modIcon = resMgr->loadPixmap( "SalomeApp", tr( "APP_MODULE_ICO" ), false );
-  if ( modIcon.isNull() )
-    modIcon = QPixmap( imageEmptyIcon );
-
-  QToolBar* modTBar = new QtxToolBar( true, desk );
-  modTBar->setLabel( tr( "INF_TOOLBAR_MODULES" ) );
-
-  QActionGroup* modGroup = new QActionGroup( this );
-  modGroup->setExclusive( true );
-  modGroup->setUsesDropDown( true );
-
-  QAction* a = createAction( -1, tr( "APP_NAME" ), defIcon, tr( "APP_NAME" ),
-                             tr( "PRP_APP_MODULE" ), 0, desk, true );
-  modGroup->add( a );
-  myActions.insert( QString(), a );
-
-  QMap<QString, QString> iconMap;
-  moduleIconNames( iconMap );
-
-  const int iconSize = 20;
-
-  modGroup->addTo( modTBar );
-  modTBar->addSeparator();
-
-  QStringList modList;
-  modules( modList, false );
-
-  for ( QStringList::Iterator it = modList.begin(); it != modList.end(); ++it )
-  {
-    if ( (*it).isEmpty() )
-      continue;
-
-    QString iconName;
-    if ( iconMap.contains( *it ) )
-      iconName = iconMap[*it];
-
-    QString modName = moduleName( *it );
-
-    QPixmap icon = resMgr->loadPixmap( modName, iconName, false );
-    if ( icon.isNull() )
-      icon = modIcon;
-
-    icon.convertFromImage( icon.convertToImage().smoothScale( iconSize, iconSize, QImage::ScaleMin ) );
-
-    QAction* a = createAction( -1, *it, icon, *it, tr( "PRP_MODULE" ).arg( *it ), 0, desk, true );
-    a->addTo( modTBar );
-    modGroup->add( a );
-
-    myActions.insert( *it, a );
-  }
-
-  SUIT_Tools::simplifySeparators( modTBar );
-
-  //! New window
-
-  int windowMenu = createMenu( tr( "MEN_DESK_WINDOW" ), -1, 100 );
-  int newWinMenu = createMenu( tr( "MEN_DESK_NEWWINDOW" ), windowMenu, -1, 0 );
-  createMenu( separator(), windowMenu, -1, 1 );
-
-  QMap<int, int> accelMap;
-  accelMap[NewGLViewId]  = ALT+Key_G;
-  accelMap[NewPlot2dId]  = ALT+Key_P;
-  accelMap[NewOCCViewId] = ALT+Key_O;
-  accelMap[NewVTKViewId] = ALT+Key_K;
-
-  for ( int id = NewGLViewId; id <= NewVTKViewId; id++ )
-  {
-    QAction* a = createAction( id, tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ), QIconSet(),
-                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                              tr( QString( "NEW_WINDOW_%1" ).arg( id - NewGLViewId ) ),
-                              accelMap.contains( id ) ? accelMap[id] : 0, desk, false, this, SLOT( onNewWindow() ) );
-    createMenu( a, newWinMenu, -1 );
-  }
-  connect( modGroup, SIGNAL( selected( QAction* ) ), this, SLOT( onModuleActivation( QAction* ) ) );
-
-  int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 );
+ int fileMenu = createMenu( tr( "MEN_DESK_FILE" ), -1 );
 
   createMenu( DumpStudyId, fileMenu, 10, -1 );
   createMenu( separator(), fileMenu, -1, 15, -1 );
@@ -456,156 +130,11 @@ void SalomeApp_Application::createActions()
   createMenu( separator(), fileMenu, -1, 15, -1 );
   createMenu( PropertiesId, fileMenu, 10, -1 );
   createMenu( separator(), fileMenu, -1, 15, -1 );
-  createMenu( PreferencesId, fileMenu, 15, -1 );
-  createMenu( separator(), fileMenu, -1, 15, -1 );
 
   int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, -1, 50 );
   createMenu( CatalogGenId, toolsMenu, 10, -1 );
   createMenu( RegDisplayId, toolsMenu, 10, -1 );
   createMenu( separator(), toolsMenu, -1, 15, -1 );
-
-  /*
-  createMenu( separator(), fileMenu, -1, 100, -1 );
-  createMenu( MRUId, fileMenu, 100, -1 );
-  createMenu( separator(), fileMenu, -1, 100, -1 );
-  */
-}
-
-/*!On module activation action.*/
-void SalomeApp_Application::onModuleActivation( QAction* a )
-{
-  if ( !a )
-    return;
-
-  QString modName = a->menuText();
-  if ( modName == tr( "APP_NAME" ) )
-    modName = QString::null;
-
-  // Force user to create/open a study before module activation
-  QMap<QString, QString> iconMap;
-  moduleIconNames( iconMap );
-  QPixmap icon = resourceMgr()->loadPixmap( moduleName( modName ), iconMap[ modName ], false );
-  if ( icon.isNull() )
-    icon = resourceMgr()->loadPixmap( "SalomeApp", tr( "APP_MODULE_BIG_ICO" ), false ); // default icon for any module
-
-  bool cancelled = false;
-  while ( !modName.isEmpty() && !activeStudy() && !cancelled ){
-    SalomeApp_ModuleDlg aDlg( desktop(), modName, icon );
-    int res = aDlg.exec();
-
-    switch ( res ){
-    case 1:
-      onNewDoc();
-      break;
-    case 2:
-      onOpenDoc();
-      break;
-    case 3:
-      //onLoadStudy();
-      //break;
-    case 0:
-    default:
-      putInfo( tr("INF_CANCELLED") );
-      myActions[QString()]->setOn( true );
-      cancelled = true;
-    }
-  }
-
-  if ( !cancelled )
-    activateModule( modName );
-}
-
-/*!Default module activation.*/
-QString SalomeApp_Application::defaultModule() const
-{
-  QStringList aModuleNames;
-  modules( aModuleNames, false ); // obtain a complete list of module names for the current configuration
-  //! If there's the one and only module --> activate it automatically
-  //! TODO: Possible improvement - default module can be taken from preferences
-  return aModuleNames.count() > 1 ? "" : ( aModuleNames.count() ? aModuleNames.first() : "" );
-}
-
-/*!On new window slot.*/
-void SalomeApp_Application::onNewWindow()
-{
-  const QObject* obj = sender();
-  if ( !obj || !obj->inherits( "QAction" ) )
-    return;
-
-  QString type;
-  int id = actionId( (QAction*)obj );
-  switch ( id )
-  {
-  case NewGLViewId:
-    type = GLViewer_Viewer::Type();
-    break;
-  case NewPlot2dId:
-    type = Plot2d_Viewer::Type();
-    break;
-  case NewOCCViewId:
-    type = OCCViewer_Viewer::Type();
-    break;
-  case NewVTKViewId:
-    type = VTKViewer_Viewer::Type();
-    break;
-  }
-
-  if ( !type.isEmpty() )
-    createViewManager( type );
-}
-
-//=======================================================================
-//  name    : onNewDoc
-/*! Purpose : SLOT. Create new document*/
-//=======================================================================
-void SalomeApp_Application::onNewDoc()
-{
-  SUIT_Study* study = activeStudy();
-
-  saveWindowsGeometry();
-
-  CAM_Application::onNewDoc();
-
-  if ( !study ) // new study will be create in THIS application
-  {
-    updateWindows();
-    updateViewManagers();
-  }
-}
-
-//=======================================================================
-// name    : onOpenDoc
-/*! Purpose : SLOT. Open new document*/
-//=======================================================================
-void SalomeApp_Application::onOpenDoc()
-{
-  SUIT_Study* study = activeStudy();
-  saveWindowsGeometry();
-
-  CAM_Application::onOpenDoc();
-
-  if ( !study ) // new study will be create in THIS application
-  {
-    updateWindows();
-    updateViewManagers();
-  }
-}
-
-/*! Purpose : SLOT. Open new document with \a aName.*/
-bool SalomeApp_Application::onOpenDoc( const QString& aName )
-{
-  bool res = CAM_Application::onOpenDoc( aName );
-
-  QAction* a = action( MRUId );
-  if ( a && a->inherits( "QtxMRUAction" ) )
-  {
-    QtxMRUAction* mru = (QtxMRUAction*)a;
-    if ( res )
-      mru->insert( aName );
-    else
-      mru->remove( aName );
-  }
-  return res;
 }
 
 /*!SLOT. Load document.*/
@@ -647,54 +176,28 @@ void SalomeApp_Application::onLoadDoc()
   name = studyname;
   name.replace( QRegExp(":"), "/" );
 
-  if(onLoadDoc(name)) {
+ if (LightApp_Application::onLoadDoc(name))
+ {
      updateWindows();
      updateViewManagers();
      updateObjectBrowser(true);
   }
 }
 
-
-/*!SLOT. Load document with \a aName.*/
-bool SalomeApp_Application::onLoadDoc( const QString& aName )
-{
-  bool res = CAM_Application::onLoadDoc( aName );
-
-  /*jfa tmp:QAction* a = action( MRUId );
-  if ( a && a->inherits( "QtxMRUAction" ) )
-  {
-    QtxMRUAction* mru = (QtxMRUAction*)a;
-    if ( res )
-      mru->insert( aName );
-    else
-      mru->remove( aName );
-  }*/
-  return res;
-}
-
-/*!Private SLOT. Selection.*/
-void SalomeApp_Application::onSelection()
-{
-  onSelectionChanged();
-
-  if ( activeModule() && activeModule()->inherits( "SalomeApp_Module" ) )
-    ((SalomeApp_Module*)activeModule())->selectionChanged();
-}
-
 /*!SLOT. Copy objects to study maneger from selection maneger..*/
-void SalomeApp_Application::onCopy()
+void SalomeApp_Application::onCopy() 
 {
   SALOME_ListIO list;
-  SalomeApp_SelectionMgr* mgr = selectionMgr();
+  LightApp_SelectionMgr* mgr = selectionMgr();
   mgr->selectedObjects(list);
-
+  
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
-  if(study == NULL) return;
-
+   if(study == NULL) return;
+  
   _PTR(Study) stdDS = study->studyDS();
   if(!stdDS) return;
 
-  SALOME_ListIteratorOfListIO it( list );
+  SALOME_ListIteratorOfListIO it( list ); 
   if(it.More())
     {
       _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry());
@@ -708,26 +211,26 @@ void SalomeApp_Application::onCopy()
 }
 
 /*!SLOT. Paste objects to study maneger from selection manager.*/
-void SalomeApp_Application::onPaste()
+void SalomeApp_Application::onPaste() 
 {
   SALOME_ListIO list;
-  SalomeApp_SelectionMgr* mgr = selectionMgr();
+  LightApp_SelectionMgr* mgr = selectionMgr();
   mgr->selectedObjects(list);
-
+  
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
   if(study == NULL) return;
-
+  
   _PTR(Study) stdDS = study->studyDS();
   if(!stdDS) return;
-
-  SALOME_ListIteratorOfListIO it( list );
+  
+  SALOME_ListIteratorOfListIO it( list ); 
   if(it.More())
     {
       _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry());
       try {
        studyMgr()->Paste(so);
        updateObjectBrowser( true );
-       updateActions(); //SRN: BugID IPAL9377, case 3
+       updateActions(); //SRN: BugID IPAL9377, case 3
       }
       catch(...) {
       }
@@ -738,49 +241,43 @@ void SalomeApp_Application::onPaste()
 void SalomeApp_Application::onSelectionChanged()
 {
    SALOME_ListIO list;
-   SalomeApp_SelectionMgr* mgr = selectionMgr();
+   LightApp_SelectionMgr* mgr = selectionMgr();
    mgr->selectedObjects(list);
-
+   
    SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
    if(study == NULL) return;
-
+   
    _PTR(Study) stdDS = study->studyDS();
    if(!stdDS) return;
+   
+   QAction* qaction;  
 
-   QAction* qaction;
-
-   SALOME_ListIteratorOfListIO it( list );
+   SALOME_ListIteratorOfListIO it( list ); 
    if(it.More() && list.Extent() == 1)
    {
       _PTR(SObject) so = stdDS->FindObjectID(it.Value()->getEntry());
-
       qaction = action(EditCopyId);
-      if(studyMgr()->CanCopy(so) ) qaction->setEnabled(true);
-      else qaction->setEnabled(false);
-
+      SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(so.get());
+      if(aSO && studyMgr()->CanCopy(so) ) qaction->setEnabled(true);  
+      else qaction->setEnabled(false);         
+     
       qaction = action(EditPasteId);
-      if( studyMgr()->CanPaste(so) ) qaction->setEnabled(true);
+      if( aSO && studyMgr()->CanPaste(so) ) qaction->setEnabled(true);
       else qaction->setEnabled(false);
    }
    else {
-     qaction = action(EditCopyId);
-     qaction->setEnabled(false);
+     qaction = action(EditCopyId); 
+     qaction->setEnabled(false); 
      qaction = action(EditPasteId);
      qaction->setEnabled(false);
    }
 }
 
-/*!Update object browser.*/
-void SalomeApp_Application::onRefresh()
-{
-  updateObjectBrowser( true );
-}
-
 /*!Delete references.*/
 void SalomeApp_Application::onDeleteReferences()
 {
   SALOME_ListIO aList;
-  SalomeApp_SelectionMgr* mgr = selectionMgr();
+  LightApp_SelectionMgr* mgr = selectionMgr();
   mgr->selectedObjects(aList);
 
   if (aList.Extent() < 1) return;
@@ -803,47 +300,6 @@ void SalomeApp_Application::onDeleteReferences()
   updateObjectBrowser();
 }
 
-/*!Private SLOT. */
-void SalomeApp_Application::onOpenWith()
-{
-  QApplication::setOverrideCursor( Qt::waitCursor );
-  SALOME_ListIO aList;
-  SalomeApp_SelectionMgr* mgr = selectionMgr();
-  mgr->selectedObjects(aList);
-  if (aList.Extent() != 1)
-    {
-      QApplication::restoreOverrideCursor();
-      return;
-    }
-  Handle(SALOME_InteractiveObject) aIObj = aList.First();
-  QString aModuleName(aIObj->getComponentDataType());
-  QString aModuleTitle = moduleTitle(aModuleName);
-  activateModule(aModuleTitle);
-  QApplication::restoreOverrideCursor();
-}
-
-bool SalomeApp_Application::useStudy(const QString& theName)
-{
-  createEmptyStudy();
-  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(activeStudy());
-  bool res = false;
-  if (aStudy)
-    res = aStudy->loadDocument( theName );
-  updateDesktopTitle();
-  updateCommandsStatus();
-  return res;
-}
-
-/*!Set active study.
- *\param study - SUIT_Study.
- */
-void SalomeApp_Application::setActiveStudy( SUIT_Study* study )
-{
-  CAM_Application::setActiveStudy( study );
-
-  activateWindows();
-}
-
 //=======================================================================
 // name    : createNewStudy
 /*! Purpose : Create new study*/
@@ -862,19 +318,12 @@ SUIT_Study* SalomeApp_Application::createNewStudy()
 }
 
 //=======================================================================
-// name    : createNewStudy
+// name    : updateCommandsStatus
 /*! Purpose : Enable/Disable menu items and toolbar buttons. Rebuild menu*/
 //=======================================================================
 void SalomeApp_Application::updateCommandsStatus()
 {
-  CAM_Application::updateCommandsStatus();
-
-  for ( int id = NewGLViewId; id <= NewVTKViewId; id++ )
-  {
-    QAction* a = action( id );
-    if ( a )
-      a->setEnabled( activeStudy() );
-  }
+  LightApp_Application::updateCommandsStatus();
 
   // Dump study menu
   QAction* a = action( DumpStudyId );
@@ -885,420 +334,73 @@ void SalomeApp_Application::updateCommandsStatus()
   a = action( LoadScriptId );
   if ( a )
     a->setEnabled( activeStudy() );
-
+  
   a = action( PropertiesId );
   if( a )
     a->setEnabled( activeStudy() );
-
+    
   a = action(EditCopyId);
-  a->setEnabled(false);
+  a->setEnabled(false);              
   a = action(EditPasteId);
-  a->setEnabled(false);
-}
-
-//=======================================================================
-// name    : onHelpAbout
-/*! Purpose : SLOT. Display "About" message box*/
-//=======================================================================
-void SalomeApp_Application::onHelpAbout()
-{
-  SalomeApp_AboutDlg* dlg = new SalomeApp_AboutDlg( applicationName(), applicationVersion(), desktop() );
-  dlg->exec();
-  delete dlg;
+  a->setEnabled(false);      
 }
 
-QWidget* SalomeApp_Application::window( const int flag, const int studyId ) const
+/*!Private SLOT. On dump study.*/
+void SalomeApp_Application::onDumpStudy( )
 {
-  QWidget* wid = 0;
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+  if ( !appStudy ) return;
+  _PTR(Study) aStudy = appStudy->studyDS();
 
-  int sId = studyId;
-  if ( sId < 0 )
-  {
-    if ( !activeStudy() )
-      return 0;
-    else
-      sId = activeStudy()->id();
-  }
+  QStringList aFilters;
+  aFilters.append( tr( "PYTHON_FILES_FILTER" ) );
 
-  if ( myWindows.contains( flag ) )
-    wid = myWindows[flag]->widget( sId );
+  SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg( desktop(), false, tr("PUBLISH_IN_STUDY"), true, true);
+  fd->setCaption( tr( "TOT_DESK_FILE_DUMP_STUDY" ) );
+  fd->setFilters( aFilters );  
+  fd->SetChecked(true);
+  fd->exec();
+  QString aFileName = fd->selectedFile();
+  bool toPublish = fd->IsChecked();
+  delete fd;
 
-  return wid;
+  if(!aFileName.isEmpty()) {
+    QFileInfo aFileInfo(aFileName);
+    aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish );
+  }
 }
 
-/*!Adds window to application.
- *\param wid - QWidget
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
-void SalomeApp_Application::addWindow( QWidget* wid, const int flag, const int studyId )
+/*!Private SLOT. On load script.*/
+void SalomeApp_Application::onLoadScript( )
 {
-  if ( !wid )
-    return;
+  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
+  if ( !appStudy ) return;
+  _PTR(Study) aStudy = appStudy->studyDS();
 
-  int sId = studyId;
-  if ( sId < 0 )
-  {
-    if ( !activeStudy() )
-      return;
-    else
-      sId = activeStudy()->id();
+  if ( aStudy->GetProperties()->IsLocked() ) {
+    SUIT_MessageBox::warn1 ( desktop(),
+                            QObject::tr("WRN_WARNING"),
+                            QObject::tr("WRN_STUDY_LOCKED"),
+                            QObject::tr("BUT_OK") );
+    return;
   }
 
-  if ( !myWindows.contains( flag ) )
+  QStringList filtersList;
+  filtersList.append(tr("PYTHON_FILES_FILTER"));
+  filtersList.append(tr("ALL_FILES_FILTER"));
+
+  QString aFile = SUIT_FileDlg::getFileName( desktop(), "", filtersList, tr( "TOT_DESK_FILE_LOAD_SCRIPT" ), true, true );
+
+  if ( !aFile.isEmpty() )
   {
-    QMap<int, int> winMap;
-    currentWindows( winMap );
+    QString command = QString("execfile(\"%1\")").arg(aFile);
 
-    myWindows.insert( flag, new SalomeApp_WidgetContainer( flag, desktop() ) );
-    if ( winMap.contains( flag ) )
-      desktop()->moveDockWindow( myWindows[flag], (Dock)winMap[flag] );
+    PythonConsole* pyConsole = pythonConsole();
 
-    myWindows[flag]->setResizeEnabled( true );
-    myWindows[flag]->setCloseMode( QDockWindow::Always );
-    myWindows[flag]->setName( QString( "dock_window_%1" ).arg( flag ) );
+    if ( pyConsole )
+      pyConsole->exec( command );
   }
-
-  QFont f;
-  if( wid->inherits( "PythonConsole" ) )
-    f = ( ( PythonConsole* )wid )->font();
-  else
-    f = wid->font();
-
-  myWindows[flag]->insert( sId, wid );
-  wid->setFont( f );
-
-  setWindowShown( flag, !myWindows[flag]->isEmpty() );
-}
-
-/*!Remove window from application.
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
-void SalomeApp_Application::removeWindow( const int flag, const int studyId )
-{
-  if ( !myWindows.contains( flag ) )
-    return;
-
-  int sId = studyId;
-  if ( sId < 0 )
-  {
-    if ( !activeStudy() )
-      return;
-    else
-      sId = activeStudy()->id();
-  }
-
-  QWidget* wid = myWindows[flag]->widget( sId );
-  myWindows[flag]->remove( sId );
-  delete wid;
-
-  setWindowShown( flag, !myWindows[flag]->isEmpty() );
-}
-
-/*!Gets window.
- *\param flag - key wor window
- *\param studyId - study id
- * Flag used how identificator of window in windows list.
- */
-QWidget* SalomeApp_Application::getWindow( const int flag, const int studyId )
-{
-  QWidget* wid = window( flag, studyId );
-  if ( !wid )
-    addWindow( wid = createWindow( flag ), flag, studyId );
-
-  return wid;
-}
-
-/*!Check is window visible?(with identificator \a type)*/
-bool SalomeApp_Application::isWindowVisible( const int type ) const
-{
-  bool res = false;
-  if ( myWindows.contains( type ) )
-  {
-    SUIT_Desktop* desk = ((SalomeApp_Application*)this)->desktop();
-    res = desk && desk->appropriate( myWindows[type] );
-  }
-  return res;
-}
-
-/*!Sets window show or hide.
- *\param type - window identificator.
- *\param on   - true/false (window show/hide)
- */
-void SalomeApp_Application::setWindowShown( const int type, const bool on )
-{
-  if ( !desktop() || !myWindows.contains( type ) )
-    return;
-
-  QDockWindow* dw = myWindows[type];
-  desktop()->setAppropriate( dw, on );
-  on ? dw->show() : dw->hide();
-}
-
-OB_Browser* SalomeApp_Application::objectBrowser()
-{
-  OB_Browser* ob = 0;
-  QWidget* wid = getWindow( WT_ObjectBrowser );
-  if ( wid->inherits( "OB_Browser" ) )
-    ob = (OB_Browser*)wid;
-  return ob;
-}
-
-/*!Gets "LogWindow".*/
-LogWindow* SalomeApp_Application::logWindow()
-{
-  LogWindow* lw = 0;
-  QWidget* wid = getWindow( WT_LogWindow );
-  if ( wid->inherits( "LogWindow" ) )
-    lw = (LogWindow*)wid;
-  return lw;
-}
-
-/*!Get "PythonConsole"*/
-PythonConsole* SalomeApp_Application::pythonConsole()
-{
-  PythonConsole* console = 0;
-  QWidget* wid = getWindow( WT_PyConsole );
-  if ( wid->inherits( "PythonConsole" ) )
-    console = (PythonConsole*)wid;
-  return console;
-}
-
-/*!Gets preferences.*/
-SalomeApp_Preferences* SalomeApp_Application::preferences() const
-{
-  return preferences( false );
-}
-
-/*!Gets view manager*/
-SUIT_ViewManager* SalomeApp_Application::getViewManager( const QString& vmType, const bool create )
-{
-  SUIT_ViewManager* aVM = viewManager( vmType );
-  SUIT_ViewManager* anActiveVM = CAM_Application::activeViewManager();
-
-  if ( anActiveVM && anActiveVM->getType() == vmType )
-    aVM = anActiveVM;
-
-  if ( aVM && create )
-  {
-    if ( !aVM->getActiveView() )
-      aVM->createView();
-    else
-      aVM->getActiveView()->setFocus();
-  }
-  else if ( create )
-    aVM = createViewManager( vmType );
-
-  return aVM;
-}
-
-/*!Create view manager.*/
-SUIT_ViewManager* SalomeApp_Application::createViewManager( const QString& vmType )
-{
-  SUIT_ResourceMgr* resMgr = resourceMgr();
-
-  SUIT_ViewManager* viewMgr = 0;
-  if ( vmType == GLViewer_Viewer::Type() )
-  {
-    viewMgr = new GLViewer_ViewManager( activeStudy(), desktop() );
-    new SalomeApp_GLSelector( (GLViewer_Viewer2d*)viewMgr->getViewModel(), mySelMgr );
-  }
-  else if ( vmType == Plot2d_Viewer::Type() )
-  {
-    viewMgr = new Plot2d_ViewManager( activeStudy(), desktop() );
-    viewMgr->setViewModel( new SPlot2d_Viewer() );// custom view model, which extends SALOME_View interface
-  }
-  else if ( vmType == OCCViewer_Viewer::Type() )
-  {
-    viewMgr = new OCCViewer_ViewManager( activeStudy(), desktop() );
-    SOCC_Viewer* vm = new SOCC_Viewer();
-    vm->setBackgroundColor( resMgr->colorValue( "OCCViewer", "background", vm->backgroundColor() ) );
-    vm->setTrihedronSize( resMgr->integerValue( "OCCViewer", "trihedron_size", vm->trihedronSize() ) );
-    int u( 1 ), v( 1 );
-    vm->isos( u, v );
-    u = resMgr->integerValue( "OCCViewer", "iso_number_u", u );
-    v = resMgr->integerValue( "OCCViewer", "iso_number_v", v );
-    vm->setIsos( u, v );
-    viewMgr->setViewModel( vm );// custom view model, which extends SALOME_View interface
-    new SalomeApp_OCCSelector( (OCCViewer_Viewer*)viewMgr->getViewModel(), mySelMgr );
-  }
-  else if ( vmType == SVTK_Viewer::Type() )
-  {
-    viewMgr = new SVTK_ViewManager( activeStudy(), desktop() );
-    SVTK_Viewer* vm = (SVTK_Viewer*)viewMgr->getViewModel();
-    vm->setBackgroundColor( resMgr->colorValue( "VTKViewer", "background", vm->backgroundColor() ) );
-    vm->setTrihedronSize( resMgr->integerValue( "VTKViewer", "trihedron_size", vm->trihedronSize() ) );
-    new SalomeApp_VTKSelector((SVTK_Viewer*)viewMgr->getViewModel(),mySelMgr);
-  }
-
-  if ( !viewMgr )
-    return 0;
-
-  addViewManager( viewMgr );
-  SUIT_ViewWindow* viewWin = viewMgr->createViewWindow();
-
-  if ( viewWin && desktop() )
-    viewWin->resize( (int)( desktop()->width() * 0.6 ), (int)( desktop()->height() * 0.6 ) );
-
-  connect( viewMgr, SIGNAL( lastViewClosed( SUIT_ViewManager* ) ),
-           this, SLOT( onCloseView( SUIT_ViewManager* ) ) );
-
-  return viewMgr;
-}
-
-void SalomeApp_Application::onCloseView( SUIT_ViewManager* theVM )
-{
-  removeViewManager( theVM );
-}
-
-/*!Private SLOT. On study created.*/
-void SalomeApp_Application::onStudyCreated( SUIT_Study* theStudy )
-{
-  SUIT_DataObject* aRoot = 0;
-  if ( theStudy && theStudy->root() )
-  {
-    aRoot = theStudy->root();
-    //aRoot->setName( tr( "DATA_MODELS" ) );
-  }
-  if ( objectBrowser() != 0 )
-    objectBrowser()->setRootObject( aRoot );
-
-  activateModule( defaultModule() );
-
-  activateWindows();
-}
-
-/*!Private SLOT. On study opened.*/
-void SalomeApp_Application::onStudyOpened( SUIT_Study* theStudy )
-{
-  SUIT_DataObject* aRoot = 0;
-  if ( theStudy && theStudy->root() )
-  {
-    aRoot = theStudy->root();
-    //aRoot->dump();
-  }
-  if ( objectBrowser() != 0 ) {
-    objectBrowser()->setRootObject( aRoot );
-  }
-
-  activateModule( defaultModule() );
-
-  activateWindows();
-
-  emit studyOpened();
-}
-
-void SalomeApp_Application::onStudySaved( SUIT_Study* )
-{
-  emit studySaved();
-}
-
-/*!Private SLOT. On study closed.*/
-void SalomeApp_Application::onStudyClosed( SUIT_Study* )
-{
-  emit studyClosed();
-
-  activateModule( "" );
-
-  saveWindowsGeometry();
-}
-
-/*!Private SLOT. On dump study.*/
-void SalomeApp_Application::onDumpStudy( )
-{
-  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
-  if ( !appStudy ) return;
-  _PTR(Study) aStudy = appStudy->studyDS();
-
-  QStringList aFilters;
-  aFilters.append( tr( "PYTHON_FILES_FILTER" ) );
-
-  SalomeApp_CheckFileDlg* fd = new SalomeApp_CheckFileDlg( desktop(), false, tr("PUBLISH_IN_STUDY"), true, true);
-  fd->setCaption( tr( "TOT_DESK_FILE_DUMP_STUDY" ) );
-  fd->setFilters( aFilters );
-  fd->SetChecked(true);
-  fd->exec();
-  QString aFileName = fd->selectedFile();
-  bool toPublish = fd->IsChecked();
-  delete fd;
-
-  if(!aFileName.isEmpty()) {
-    QFileInfo aFileInfo(aFileName);
-    aStudy->DumpStudy( aFileInfo.dirPath( true ).latin1(), aFileInfo.baseName().latin1(), toPublish );
-  }
-}
-
-/*!Private SLOT. On load script.*/
-void SalomeApp_Application::onLoadScript( )
-{
-  SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
-  if ( !appStudy ) return;
-  _PTR(Study) aStudy = appStudy->studyDS();
-
-  if ( aStudy->GetProperties()->IsLocked() ) {
-    SUIT_MessageBox::warn1 ( desktop(),
-                            QObject::tr("WRN_WARNING"),
-                            QObject::tr("WRN_STUDY_LOCKED"),
-                            QObject::tr("BUT_OK") );
-    return;
-  }
-
-  QStringList filtersList;
-  filtersList.append(tr("PYTHON_FILES_FILTER"));
-  filtersList.append(tr("ALL_FILES_FILTER"));
-
-  QString aFile = SUIT_FileDlg::getFileName( desktop(), "", filtersList, tr( "TOT_DESK_FILE_LOAD_SCRIPT" ), true, true );
-
-  if ( !aFile.isEmpty() )
-  {
-    QString command = QString("execfile(\"%1\")").arg(aFile);
-
-    PythonConsole* pyConsole = pythonConsole();
-
-    if ( pyConsole )
-      pyConsole->exec( command );
-  }
-}
-
-/*!Private SLOT. On preferences.*/
-void SalomeApp_Application::onPreferences()
-{
-  QApplication::setOverrideCursor( Qt::waitCursor );
-
-  SalomeApp_PreferencesDlg* prefDlg = new SalomeApp_PreferencesDlg( preferences( true ), desktop());
-
-  QApplication::restoreOverrideCursor();
-
-  if ( !prefDlg )
-    return;
-
-  prefDlg->exec();
-
-  delete prefDlg;
-}
-
-/*!Private SLOT. On open document with name \a aName.*/
-void SalomeApp_Application::onMRUActivated( QString aName )
-{
-  onOpenDoc( aName );
-}
-
-/*!Private SLOT. On preferences changed.*/
-void SalomeApp_Application::onPreferenceChanged( QString& modName, QString& section, QString& param )
-{
-  SalomeApp_Module* sMod = 0;
-  CAM_Module* mod = module( modName );
-  if ( mod && mod->inherits( "SalomeApp_Module" ) )
-    sMod = (SalomeApp_Module*)mod;
-
-  if ( sMod )
-    sMod->preferencesChanged( section, param );
-  else
-    preferencesChanged( section, param );
-}
+}
 
 /*!Gets file filter.
  *\retval QString "(*.hdf)"
@@ -1308,391 +410,58 @@ QString SalomeApp_Application::getFileFilter() const
   return "(*.hdf)";
 }
 
-/*!Remove all windows from study.*/
-void SalomeApp_Application::beforeCloseDoc( SUIT_Study* s )
-{
-  CAM_Application::beforeCloseDoc( s );
-
-  for ( WindowMap::ConstIterator itr = myWindows.begin(); s && itr != myWindows.end(); ++itr )
-    removeWindow( itr.key(), s->id() );
-}
-
-/*!Update actions.*/
-void SalomeApp_Application::updateActions()
-{
-  updateCommandsStatus();
-}
-
 /*!Create window.*/
 QWidget* SalomeApp_Application::createWindow( const int flag )
 {
-  QWidget* wid = 0;
-
+  QWidget* wid = LightApp_Application::createWindow(flag);
   SUIT_ResourceMgr* resMgr = resourceMgr();
 
   if ( flag == WT_ObjectBrowser )
   {
-    OB_Browser* ob = new OB_Browser( desktop() );
-    ob->setAutoUpdate( true );
-    ob->setAutoOpenLevel( 1 );
-    ob->setCaption( tr( "OBJECT_BROWSER" ) );
-    ob->resize( OBJECT_BROWSER_WIDTH, ob->height() );
-    ob->setFilter( new SalomeApp_OBFilter( selectionMgr() ) );
-
-    ob->setNameTitle( tr( "OBJ_BROWSER_NAME" ) );
-
+    OB_Browser* ob = (OB_Browser*)wid;
     bool autoSize = resMgr->booleanValue( "ObjectBrowser", "auto_size", false );
-    for ( int i = SalomeApp_DataObject::CT_Value; i <= SalomeApp_DataObject::CT_RefEntry; i++ )
-    {
-      ob->addColumn( tr( QString().sprintf( "OBJ_BROWSER_COLUMN_%d", i ) ), i );
-      ob->setColumnShown( i, resMgr->booleanValue( "ObjectBrowser",
-                                                   QString().sprintf( "visibility_column_%d", i ), true ) );
+    if ( ob != 0 ) {
+      for ( int i = SalomeApp_DataObject::CT_Value; i <= SalomeApp_DataObject::CT_RefEntry; i++ )
+      {
+        ob->addColumn( tr( QString().sprintf( "OBJ_BROWSER_COLUMN_%d", i ) ), i );
+        ob->setColumnShown( i, resMgr->booleanValue( "ObjectBrowser",
+                            QString().sprintf( "visibility_column_%d", i ), true ) );
+      }
     }
     ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual );
-
-    // Create OBSelector
-    new SalomeApp_OBSelector( ob, mySelMgr );
-
-    wid = ob;
-
-    ob->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
   }
-  else if ( flag == WT_PyConsole )
+  else  if ( flag == WT_PyConsole )
   {
+    delete wid;
+    wid = 0;
     PythonConsole* pyCons = new PythonConsole( desktop(), new SalomeApp_PyInterp() );
     pyCons->setCaption( tr( "PYTHON_CONSOLE" ) );
-    pyCons->setFont( resMgr->fontValue( "PyConsole", "font" ) );
     wid = pyCons;
-
     //    pyCons->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
   }
-  else if ( flag == WT_LogWindow )
-  {
-    LogWindow* logWin = new LogWindow( desktop() );
-    logWin->setCaption( tr( "LOG_WINDOW" ) );
-    wid = logWin;
-
-    logWin->connectPopupRequest( this, SLOT( onConnectPopupRequest( SUIT_PopupClient*, QContextMenuEvent* ) ) );
-  }
-
   return wid;
 }
 
-/*!Default windows(Object Browser, Python Console).
- * Adds to map \a aMap.
- */
-void SalomeApp_Application::defaultWindows( QMap<int, int>& aMap ) const
-{
-  aMap.insert( WT_ObjectBrowser, Qt::DockLeft );
-  aMap.insert( WT_PyConsole, Qt::DockBottom );
-  //  aMap.insert( WT_LogWindow, Qt::DockBottom );
-}
-
-/*!Default view manager.*/
-void SalomeApp_Application::defaultViewManagers( QStringList& ) const
-{
-  /*!Do nothing.*/
-}
-
-/*!Gets preferences.
- * Create preferences, if \a crt = true.
- */
-SalomeApp_Preferences* SalomeApp_Application::preferences( const bool crt ) const
-{
-  if ( myPrefs )
-    return myPrefs;
-
-  SalomeApp_Application* that = (SalomeApp_Application*)this;
-
-  if ( !_prefs_ && crt )
-  {
-    _prefs_ = new SalomeApp_Preferences( resourceMgr() );
-    that->createPreferences( _prefs_ );
-  }
-
-  that->myPrefs = _prefs_;
-
-  QPtrList<SUIT_Application> appList = SUIT_Session::session()->applications();
-  for ( QPtrListIterator<SUIT_Application> appIt ( appList ); appIt.current(); ++appIt )
-  {
-    if ( !appIt.current()->inherits( "SalomeApp_Application" ) )
-      continue;
-
-    SalomeApp_Application* app = (SalomeApp_Application*)appIt.current();
-
-    QStringList modNameList;
-    app->modules( modNameList, false );
-    for ( QStringList::const_iterator it = modNameList.begin(); it != modNameList.end(); ++it )
-    {
-      int id = _prefs_->addPreference( *it );
-      _prefs_->setItemProperty( id, "info", tr( "PREFERENCES_NOT_LOADED" ).arg( *it ) );
-    }
-
-    ModuleList modList;
-    app->modules( modList );
-    for ( ModuleListIterator itr( modList ); itr.current(); ++itr )
-    {
-      SalomeApp_Module* mod = 0;
-      if ( itr.current()->inherits( "SalomeApp_Module" ) )
-       mod = (SalomeApp_Module*)itr.current();
-
-      if ( mod && !_prefs_->hasModule( mod->moduleName() ) )
-      {
-       int modCat = _prefs_->addPreference( mod->moduleName() );
-       _prefs_->setItemProperty( modCat, "info", QString::null );
-       mod->createPreferences();
-      }
-    }
-  }
-
-  connect( myPrefs, SIGNAL( preferenceChanged( QString&, QString&, QString& ) ),
-           this, SLOT( onPreferenceChanged( QString&, QString&, QString& ) ) );
-
-  return myPrefs;
-}
-
-/*!Add new module to application.*/
-void SalomeApp_Application::moduleAdded( CAM_Module* mod )
-{
-  CAM_Application::moduleAdded( mod );
-
-  SalomeApp_Module* salomeMod = 0;
-  if ( mod && mod->inherits( "SalomeApp_Module" ) )
-    salomeMod = (SalomeApp_Module*)mod;
-
-  if ( myPrefs && salomeMod && !myPrefs->hasModule( salomeMod->moduleName() ) )
-  {
-    int modCat = myPrefs->addPreference( mod->moduleName() );
-    myPrefs->setItemProperty( modCat, "info", QString::null );
-    salomeMod->createPreferences();
-  }
-}
-
 /*!Create preferences.*/
-void SalomeApp_Application::createPreferences( SalomeApp_Preferences* pref )
+void SalomeApp_Application::createPreferences( LightApp_Preferences* pref )
 {
+  LightApp_Application::createPreferences(pref);
+
   if ( !pref )
     return;
 
   int salomeCat = pref->addPreference( tr( "PREF_CATEGORY_SALOME" ) );
-
-  int genTab = pref->addPreference( tr( "PREF_TAB_GENERAL" ), salomeCat );
-  int studyGroup = pref->addPreference( tr( "PREF_GROUP_STUDY" ), genTab );
-  pref->setItemProperty( studyGroup, "columns", 1 );
-
-  pref->addPreference( tr( "PREF_MULTI_FILE" ), studyGroup, SalomeApp_Preferences::Bool, "Study", "multi_file" );
-  pref->addPreference( tr( "PREF_ASCII_FILE" ), studyGroup, SalomeApp_Preferences::Bool, "Study", "ascii_file" );
-  int undoPref = pref->addPreference( tr( "PREF_UNDO_LEVEL" ), studyGroup, SalomeApp_Preferences::IntSpin, "Study", "undo_level" );
-  pref->setItemProperty( undoPref, "min", 1 );
-  pref->setItemProperty( undoPref, "max", 100 );
-
-  int extgroup = pref->addPreference( tr( "PREF_GROUP_EXT_BROWSER" ), genTab );
-  pref->setItemProperty( extgroup, "columns", 1 );
-  int apppref = pref->addPreference( tr( "PREF_APP" ), extgroup, SalomeApp_Preferences::File, "ExternalBrowser", "application" );
-  pref->setItemProperty( apppref, "existing", true );
-  pref->setItemProperty( apppref, "flags", QFileInfo::ExeUser );
-
-  pref->addPreference( tr( "PREF_PARAM" ), extgroup, SalomeApp_Preferences::String, "ExternalBrowser", "parameters" );
-
-  int pythonConsoleGroup = pref->addPreference( tr( "PREF_GROUP_PY_CONSOLE" ), genTab );
-  pref->setItemProperty( pythonConsoleGroup, "columns", 1 );
-  pref->addPreference( tr( "PREF_FONT" ), pythonConsoleGroup, SalomeApp_Preferences::Font, "PyConsole", "font" );
-
-
-
   int obTab = pref->addPreference( tr( "PREF_TAB_OBJBROWSER" ), salomeCat );
   int defCols = pref->addPreference( tr( "PREF_GROUP_DEF_COLUMNS" ), obTab );
   for ( int i = SalomeApp_DataObject::CT_Value; i <= SalomeApp_DataObject::CT_RefEntry; i++ )
   {
     pref->addPreference( tr( QString().sprintf( "OBJ_BROWSER_COLUMN_%d", i ) ), defCols,
-                         SalomeApp_Preferences::Bool, "ObjectBrowser", QString().sprintf( "visibility_column_%d", i ) );
+                         LightApp_Preferences::Bool, "ObjectBrowser", QString().sprintf( "visibility_column_%d", i ) );
   }
   pref->setItemProperty( defCols, "columns", 1 );
 
   int objSetGroup = pref->addPreference( tr( "PREF_OBJ_BROWSER_SETTINGS" ), obTab );
-  pref->addPreference( tr( "PREF_AUTO_SIZE" ), objSetGroup, SalomeApp_Preferences::Bool, "ObjectBrowser", "auto_size" );
-
-  int viewTab = pref->addPreference( tr( "PREF_TAB_VIEWERS" ), salomeCat );
-
-  int occGroup = pref->addPreference( tr( "PREF_GROUP_OCCVIEWER" ), viewTab );
-
-  int vtkGroup = pref->addPreference( tr( "PREF_GROUP_VTKVIEWER" ), viewTab );
-
-  int plot2dGroup = pref->addPreference( tr( "PREF_GROUP_PLOT2DVIEWER" ), viewTab );
-
-  pref->setItemProperty( occGroup, "columns", 1 );
-  pref->setItemProperty( vtkGroup, "columns", 1 );
-  pref->setItemProperty( plot2dGroup, "columns", 1 );
-
-  int occTS = pref->addPreference( tr( "PREF_TRIHEDRON_SIZE" ), occGroup,
-                                  SalomeApp_Preferences::IntSpin, "OCCViewer", "trihedron_size" );
-  pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), occGroup,
-                      SalomeApp_Preferences::Color, "OCCViewer", "background" );
-
-  pref->setItemProperty( occTS, "min", 1 );
-  pref->setItemProperty( occTS, "max", 150 );
-
-  int isoU = pref->addPreference( tr( "PREF_ISOS_U" ), occGroup,
-                                 SalomeApp_Preferences::IntSpin, "OCCViewer", "iso_number_u" );
-  int isoV = pref->addPreference( tr( "PREF_ISOS_V" ), occGroup,
-                                 SalomeApp_Preferences::IntSpin, "OCCViewer", "iso_number_v" );
-
-  pref->setItemProperty( isoU, "min", 0 );
-  pref->setItemProperty( isoU, "max", 100000 );
-
-  pref->setItemProperty( isoV, "min", 0 );
-  pref->setItemProperty( isoV, "max", 100000 );
-
-  int vtkTS = pref->addPreference( tr( "PREF_TRIHEDRON_SIZE" ), vtkGroup,
-                                  SalomeApp_Preferences::IntSpin, "VTKViewer", "trihedron_size" );
-  pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), vtkGroup,
-                      SalomeApp_Preferences::Color, "VTKViewer", "background" );
-
-  pref->setItemProperty( vtkTS, "min", 1 );
-  pref->setItemProperty( vtkTS, "max", 150 );
-  
-  pref->addPreference( tr( "PREF_SHOW_LEGEND" ), plot2dGroup,
-                      SalomeApp_Preferences::Bool, "Plot2d", "ShowLegend" );
-
-  int legendPosition = pref->addPreference( tr( "PREF_LEGEND_POSITION" ), plot2dGroup,
-                                           SalomeApp_Preferences::Selector, "Plot2d", "LegendPos" );
-  QStringList aLegendPosList;
-  aLegendPosList.append( tr("PREF_LEFT") );
-  aLegendPosList.append( tr("PREF_RIGHT") );
-  aLegendPosList.append( tr("PREF_TOP") );
-  aLegendPosList.append( tr("PREF_BOTTOM") );
-  
-  QValueList<QVariant> anIndexesList;
-  anIndexesList.append(0);
-  anIndexesList.append(1);
-  anIndexesList.append(2);
-  anIndexesList.append(3);
-  
-  pref->setItemProperty( legendPosition, "strings", aLegendPosList );
-  pref->setItemProperty( legendPosition, "indexes", anIndexesList );
-  
-  int curveType = pref->addPreference( tr( "PREF_CURVE_TYPE" ), plot2dGroup,
-                                      SalomeApp_Preferences::Selector, "Plot2d", "CurveType" );
-  QStringList aCurveTypesList;
-  aCurveTypesList.append( tr("PREF_POINTS") );
-  aCurveTypesList.append( tr("PREF_LINES") );
-  aCurveTypesList.append( tr("PREF_SPLINE") );
-  
-  anIndexesList.clear();
-  anIndexesList.append(0);
-  anIndexesList.append(1);
-  anIndexesList.append(2);
-  
-  pref->setItemProperty( curveType, "strings", aCurveTypesList );
-  pref->setItemProperty( curveType, "indexes", anIndexesList );
-
-  int markerSize = pref->addPreference( tr( "PREF_MARKER_SIZE" ), plot2dGroup,
-                                       SalomeApp_Preferences::IntSpin, "Plot2d", "MarkerSize" );
-
-  pref->setItemProperty( markerSize, "min", 0 );
-  pref->setItemProperty( markerSize, "max", 100 );
-  
-  QStringList aScaleModesList;
-  aScaleModesList.append( tr("PREF_LINEAR") );
-  aScaleModesList.append( tr("PREF_LOGARITHMIC") );
-  
-  anIndexesList.clear();
-  anIndexesList.append(0);
-  anIndexesList.append(1);
-  
-  int horScale = pref->addPreference( tr( "PREF_HOR_AXIS_SCALE" ), plot2dGroup,
-                                     SalomeApp_Preferences::Selector, "Plot2d", "HorScaleMode" );
-
-  pref->setItemProperty( horScale, "strings", aScaleModesList );
-  pref->setItemProperty( horScale, "indexes", anIndexesList );
-
-  int verScale = pref->addPreference( tr( "PREF_VERT_AXIS_SCALE" ), plot2dGroup,
-                                     SalomeApp_Preferences::Selector, "Plot2d", "VerScaleMode" );
-  
-  pref->setItemProperty( verScale, "strings", aScaleModesList );
-  pref->setItemProperty( verScale, "indexes", anIndexesList );
-
-  pref->addPreference( tr( "PREF_VIEWER_BACKGROUND" ), plot2dGroup,
-                      SalomeApp_Preferences::Color, "Plot2d", "Background" );
-  
-  int dirTab = pref->addPreference( tr( "PREF_TAB_DIRECTORIES" ), salomeCat );
-  int dirGroup = pref->addPreference( tr( "PREF_GROUP_DIRECTORIES" ), dirTab );
-  pref->setItemProperty( dirGroup, "columns", 1 );
-  pref->addPreference( tr( "" ), dirGroup,
-                      SalomeApp_Preferences::DirList, "FileDlg", "QuickDirList" );
-}
-
-void SalomeApp_Application::preferencesChanged( const QString& sec, const QString& param )
-{
-  SUIT_ResourceMgr* resMgr = resourceMgr();
-  if ( !resMgr )
-    return;
-
-  if ( sec == QString( "OCCViewer" ) && param == QString( "trihedron_size" ) )
-  {
-    int sz = resMgr->integerValue( sec, param, -1 );
-    QPtrList<SUIT_ViewManager> lst;
-    viewManagers( OCCViewer_Viewer::Type(), lst );
-    for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current() && sz >= 0; ++it )
-    {
-      SUIT_ViewModel* vm = it.current()->getViewModel();
-      if ( !vm || !vm->inherits( "OCCViewer_Viewer" ) )
-       continue;
-
-      OCCViewer_Viewer* occVM = (OCCViewer_Viewer*)vm;
-      occVM->setTrihedronSize( sz );
-      occVM->getAISContext()->UpdateCurrentViewer();
-    }
-  }
-
-  if ( sec == QString( "VTKViewer" ) && param == QString( "trihedron_size" ) )
-  {
-    int sz = resMgr->integerValue( sec, param, -1 );
-    QPtrList<SUIT_ViewManager> lst;
-    viewManagers( SVTK_Viewer::Type(), lst );
-    for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current() && sz >= 0; ++it )
-    {
-      SUIT_ViewModel* vm = it.current()->getViewModel();
-      if ( !vm || !vm->inherits( "SVTK_Viewer" ) )
-       continue;
-
-      SVTK_Viewer* vtkVM = (SVTK_Viewer*)vm;
-      vtkVM->setTrihedronSize( sz );
-      vtkVM->Repaint();
-    }
-  }
-
-  if ( sec == QString( "OCCViewer" ) && ( param == QString( "iso_number_u" ) || param == QString( "iso_number_v" ) ) )
-  {
-    QPtrList<SUIT_ViewManager> lst;
-    viewManagers( OCCViewer_Viewer::Type(), lst );
-    int u = resMgr->integerValue( sec, "iso_number_u" );
-    int v = resMgr->integerValue( sec, "iso_number_v" );
-    for ( QPtrListIterator<SUIT_ViewManager> it( lst ); it.current(); ++it )
-      ((OCCViewer_Viewer*)it.current())->setIsos( u, v );
-  }
-
-  if( sec=="ObjectBrowser" )
-  {
-    if( param=="auto_size" )
-    {
-      OB_Browser* ob = objectBrowser();
-      if( !ob )
-       return;
-
-      bool autoSize = resMgr->booleanValue( "ObjectBrowser", "auto_size", false );
-      ob->setWidthMode( autoSize ? QListView::Maximum : QListView::Manual );
-
-      updateObjectBrowser( false );
-    }
-  }
-
-  if( sec=="PyConsole" )
-  {
-    if( param=="font" )
-      if( pythonConsole() )
-       pythonConsole()->setFont( resMgr->fontValue( "PyConsole", "font" ) );
-  }
+  pref->addPreference( tr( "PREF_AUTO_SIZE" ), objSetGroup, LightApp_Preferences::Bool, "ObjectBrowser", "auto_size" );
 }
 
 /*!Update desktop title.*/
@@ -1707,13 +476,15 @@ void SalomeApp_Application::updateDesktopTitle() {
     QString sName = SUIT_Tools::file( activeStudy()->studyName().stripWhiteSpace(), false );
     if ( !sName.isEmpty() ) {
       SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
-      _PTR(Study) stdDS = study->studyDS();
-      if(stdDS) {
-       if ( stdDS->GetProperties()->IsLocked() ) {
-         aTitle += QString( " - [%1 (%2)]").arg( sName ).arg( tr( "STUDY_LOCKED" ) );
-       } else {
-         aTitle += QString( " - [%1]" ).arg( sName );
-       }
+      if ( study ) {
+        _PTR(Study) stdDS = study->studyDS();
+        if(stdDS) {
+         if ( stdDS->GetProperties()->IsLocked() ) {
+           aTitle += QString( " - [%1 (%2)]").arg( sName ).arg( tr( "STUDY_LOCKED" ) );
+         } else {
+           aTitle += QString( " - [%1]" ).arg( sName );
+         }
+        }
       }
     }
   }
@@ -1721,14 +492,6 @@ void SalomeApp_Application::updateDesktopTitle() {
   desktop()->setCaption( aTitle );
 }
 
-/*!Update windows after close document.*/
-void SalomeApp_Application::afterCloseDoc()
-{
-  updateWindows();
-
-  CAM_Application::afterCloseDoc();
-}
-
 /*!Gets CORBA::ORB_var*/
 CORBA::ORB_var SalomeApp_Application::orb()
 {
@@ -1768,158 +531,6 @@ QString SalomeApp_Application::defaultEngineIOR()
   return anIOR;
 }
 
-/*!Adds icon names for modules.*/
-void SalomeApp_Application::moduleIconNames( QMap<QString, QString>& iconMap ) const
-{
-  iconMap.clear();
-
-  SUIT_ResourceMgr* resMgr = resourceMgr();
-  if ( !resMgr )
-    return;
-
-  QStringList modList;
-  modules( modList, false );
-
-  for ( QStringList::const_iterator it = modList.begin(); it != modList.end(); ++it )
-  {
-    QString modName = *it;
-    QString modIntr = moduleName( modName );
-    QString modIcon = resMgr->stringValue( modIntr, "icon", QString::null );
-
-    if ( modIcon.isEmpty() )
-      continue;
-
-    if ( SUIT_Tools::extension( modIcon ).isEmpty() )
-      modIcon += QString( ".png" );
-
-    iconMap.insert( modName, modIcon );
-  }
-}
-
-/*!Update module action.*/
-void SalomeApp_Application::updateModuleActions()
-{
-  QString modName;
-  if ( activeModule() )
-    modName = activeModule()->moduleName();
-
-  if ( myActions.contains( modName ) )
-    myActions[modName]->setOn( true );
-}
-
-/*!Gets current windows.
- *\param winMap - output current windows map.
- */
-void SalomeApp_Application::currentWindows( QMap<int, int>& winMap ) const
-{
-  winMap.clear();
-  if ( !activeStudy() )
-    return;
-
-  if ( activeModule() && activeModule()->inherits( "SalomeApp_Module" ) )
-    ((SalomeApp_Module*)activeModule())->windows( winMap );
-  else
-    defaultWindows( winMap );
-}
-
-/*!Gets current view managers.
- *\param lst - output current view managers list.
- */
-void SalomeApp_Application::currentViewManagers( QStringList& lst ) const
-{
-  lst.clear();
-  if ( !activeStudy() )
-    return;
-
-  if ( activeModule() && activeModule()->inherits( "SalomeApp_Module" ) )
-    ((SalomeApp_Module*)activeModule())->viewManagers( lst );
-  else
-    defaultViewManagers( lst );
-}
-
-/*!Update windows.*/
-void SalomeApp_Application::updateWindows()
-{
-  QMap<int, int> winMap;
-  currentWindows( winMap );
-
-  for ( QMap<int, int>::ConstIterator it = winMap.begin(); it != winMap.end(); ++it )
-    getWindow( it.key() );
-
-  loadWindowsGeometry();
-
-  for ( WindowMap::ConstIterator itr = myWindows.begin(); itr != myWindows.end(); ++itr )
-    setWindowShown( itr.key(), !itr.data()->isEmpty() && winMap.contains( itr.key() ) );
-}
-
-/*!Update view managers.*/
-void SalomeApp_Application::updateViewManagers()
-{
-  QStringList lst;
-  currentViewManagers( lst );
-
-  for ( QStringList::const_iterator it = lst.begin(); it != lst.end(); ++it )
-    getViewManager( *it, true );
-}
-
-/*!Load windows geometry.*/
-void SalomeApp_Application::loadWindowsGeometry()
-{
-  QtxDockAction* dockMgr = 0;
-
-  QAction* a = action( ViewWindowsId );
-  if ( a && a->inherits( "QtxDockAction" ) )
-    dockMgr = (QtxDockAction*)a;
-
-  if ( !dockMgr )
-    return;
-
-  QString modName;
-  if ( activeModule() )
-    modName = moduleLibrary( activeModule()->moduleName(), false );
-
-  QString section = QString( "windows_geometry" );
-  if ( !modName.isEmpty() )
-    section += QString( "." ) + modName;
-
-  dockMgr->loadGeometry( resourceMgr(), section, false );
-  dockMgr->restoreGeometry();
-}
-
-/*!Save windows geometry.*/
-void SalomeApp_Application::saveWindowsGeometry()
-{
-  QtxDockAction* dockMgr = 0;
-
-  QAction* a = action( ViewWindowsId );
-  if ( a && a->inherits( "QtxDockAction" ) )
-    dockMgr = (QtxDockAction*)a;
-
-  if ( !dockMgr )
-    return;
-
-  QString modName;
-  if ( activeModule() )
-    modName = moduleLibrary( activeModule()->moduleName(), false );
-
-  QString section = QString( "windows_geometry" );
-  if ( !modName.isEmpty() )
-    section += QString( "." ) + modName;
-
-  dockMgr->storeGeometry();
-  dockMgr->saveGeometry( resourceMgr(), section, false );
-}
-
-/*!Activate windows.*/
-void SalomeApp_Application::activateWindows()
-{
-  if ( activeStudy() )
-  {
-    for ( WindowMap::Iterator itr = myWindows.begin(); itr != myWindows.end(); ++itr )
-      itr.data()->activate( activeStudy()->id() );
-  }
-}
-
 /*!Private SLOT. On preferences.*/
 void SalomeApp_Application::onProperties()
 {
@@ -1941,49 +552,18 @@ void SalomeApp_Application::onProperties()
   updateDesktopTitle();
 }
 
-/*!*/
-QString SalomeApp_Application::getFileName( bool open, const QString& initial, const QString& filters,
-                                           const QString& caption, QWidget* parent )
-{
-  if ( !parent )
-    parent = desktop();
-  QStringList fls = QStringList::split( ";;", filters, false );
-  return SUIT_FileDlg::getFileName( parent, initial, fls, caption, open, true );
-}
-
-/*!*/
-QString SalomeApp_Application::getDirectory( const QString& initial, const QString& caption, QWidget* parent )
-{
-  if ( !parent )
-    parent = desktop();
-  return SUIT_FileDlg::getExistingDirectory( parent, initial, caption, true );
-}
-
-/*!*/
-QStringList SalomeApp_Application::getOpenFileNames( const QString& initial, const QString& filters,
-                                                    const QString& caption, QWidget* parent )
-{
-  if ( !parent )
-    parent = desktop();
-  QStringList fls = QStringList::split( ";;", filters, false );
-  return SUIT_FileDlg::getOpenFileNames( parent, initial, fls, caption, true );
-}
-
 /*!*/
 void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* thePopup, QString& title )
 {
-  CAM_Application::contextMenuPopup( type, thePopup, title );
+  LightApp_Application::contextMenuPopup( type, thePopup, title );
 
   OB_Browser* ob = objectBrowser();
   if ( !ob || type != ob->popupClientType() )
     return;
 
-  thePopup->insertSeparator();
-  thePopup->insertItem( tr( "MEN_REFRESH" ), this, SLOT( onRefresh() ) );
-
   // Get selected objects
   SALOME_ListIO aList;
-  SalomeApp_SelectionMgr* mgr = selectionMgr();
+  LightApp_SelectionMgr* mgr = selectionMgr();
   mgr->selectedObjects(aList);
 
   // "Delete reference" item should appear only for invalid references
@@ -1998,15 +578,16 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
     {
       SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>(activeStudy());
       _PTR(Study) aStudyDS = aStudy->studyDS();
-      _PTR(SObject) anObj;
-      
+      _PTR(SObject) anObj;      
       for ( SALOME_ListIteratorOfListIO it( aList ); it.More() && isInvalidRefs; it.Next() )
        {
          if ( it.Value()->hasEntry() )
            {
              _PTR(SObject) aSObject = aStudyDS->FindObjectID( it.Value()->getEntry() );
-             if ( aSObject->ReferencedObject(anObj) == false || !QString(anObj->GetName().c_str()).isEmpty() )
-               isInvalidRefs = false;
+              SALOMEDS_SObject* aSO = dynamic_cast<SALOMEDS_SObject*>(aSObject.get());
+              if( aSO )
+                if ( aSObject->ReferencedObject(anObj) == false || !QString(anObj->GetName().c_str()).isEmpty() )
+                  isInvalidRefs = false;
            }
        }
     }
@@ -2029,72 +610,30 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QPopupMenu* t
   if (currentModule && currentModule->moduleName() == aModuleTitle)
     return;
   thePopup->insertItem( tr( "MEN_OPENWITH" ), this, SLOT( onOpenWith() ) );
-  
 }
 
 /*!Update obect browser*/
 void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
 {
-  // update existing data models (already loaded SComponents)
-  if ( updateModels )
-  {
-    for ( ModuleListIterator it = modules(); it.current(); ++it )
-    {
-      CAM_DataModel* camDM = it.current()->dataModel();
-      if ( camDM && camDM->inherits( "SalomeApp_DataModel" ) )
-        ((SalomeApp_DataModel*)camDM)->update();
-    }
-  }
   // update "non-existing" (not loaded yet) data models
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
-  if ( study )
+  if ( study ) 
   {
     _PTR(Study) stdDS = study->studyDS();
-    if( stdDS )
+    if( stdDS ) 
     {
-      for ( _PTR(SComponentIterator) it ( stdDS->NewComponentIterator() ); it->More(); it->Next() )
+      for ( _PTR(SComponentIterator) it ( stdDS->NewComponentIterator() ); it->More(); it->Next() ) 
       {
-       _PTR(SComponent) aComponent ( it->Value() );
+       _PTR(SComponent) aComponent ( it->Value() ); 
 
        if ( aComponent->ComponentDataType() == "Interface Applicative" )
          continue; // skip the magic "Interface Applicative" component
-
+    
        SalomeApp_DataModel::BuildTree( aComponent, study->root(), study, /*skipExisitng=*/true );
       }
     }
   }
-
-  if ( objectBrowser() )
-  {
-    objectBrowser()->updateGeometry();
-    objectBrowser()->updateTree();
-  }
-}
-
-/*!Protected SLOT.On desktop activated.*/
-void SalomeApp_Application::onDesktopActivated()
-{
-  CAM_Application::onDesktopActivated();
-  SalomeApp_Module* aModule = dynamic_cast<SalomeApp_Module*>(activeModule());
-  if(aModule)
-    aModule->studyActivated();
-}
-
-/*!Create empty study.*/
-void SalomeApp_Application::createEmptyStudy()
-{
-  CAM_Application::createEmptyStudy();
-  if ( objectBrowser() )
-    objectBrowser()->updateTree();
-}
-
-/*!Activate module \a mod.*/
-bool SalomeApp_Application::activateModule( CAM_Module* mod )
-{
-  bool res = CAM_Application::activateModule( mod );
-  if ( objectBrowser() )
-    objectBrowser()->updateTree();
-  return res;
+  LightApp_Application::updateObjectBrowser(updateModels);
 }
 
 /*!Display Catalog Genenerator dialog */
@@ -2114,8 +653,21 @@ void SalomeApp_Application::onRegDisplay()
   regWnd->setActiveWindow();
 }
 
-/*!return keyborad accelerators manager object */
-SUIT_Accel* SalomeApp_Application::accel() const
+/*!Private SLOT. */
+void SalomeApp_Application::onOpenWith()
 {
-  return myAccel;
+  QApplication::setOverrideCursor( Qt::waitCursor );
+  SALOME_ListIO aList;
+  LightApp_SelectionMgr* mgr = selectionMgr();
+  mgr->selectedObjects(aList);
+  if (aList.Extent() != 1)
+    {
+      QApplication::restoreOverrideCursor();
+      return;
+    }
+  Handle(SALOME_InteractiveObject) aIObj = aList.First();
+  QString aModuleName(aIObj->getComponentDataType());
+  QString aModuleTitle = moduleTitle(aModuleName);
+  activateModule(aModuleTitle);
+  QApplication::restoreOverrideCursor();
 }
index 969d5489060e7548837ca7e74b9ac6a6738df955..0cad762f5359522c0b98a94ab44e91642aea0fe9 100644 (file)
@@ -11,7 +11,7 @@
 #endif // _MSC_VER > 1000
 
 #include "SalomeApp.h"
-#include <CAM_Application.h>
+#include <LightApp_Application.h>
 
 #include <CORBA.h>
 
@@ -25,14 +25,8 @@ class QAction;
 class QComboBox;
 class QDockWindow;
 
-class LogWindow;
-class OB_Browser;
-class PythonConsole;
+class LightApp_Preferences;
 class SalomeApp_Module;
-class SalomeApp_Preferences;
-class SalomeApp_SelectionMgr;
-class SalomeApp_WidgetContainer;
-class SUIT_Accel;
 
 class SALOME_LifeCycleCORBA;
 
@@ -44,176 +38,58 @@ class SALOME_LifeCycleCORBA;
   Description : Application containing SalomeApp module
 */
 
-class SALOMEAPP_EXPORT SalomeApp_Application : public CAM_Application
+class SALOMEAPP_EXPORT SalomeApp_Application : public LightApp_Application
 {
   Q_OBJECT
 
 public:
-  typedef enum { WT_ObjectBrowser, WT_PyConsole, WT_LogWindow, WT_User } WindowTypes;
-
-  enum { ModulesListId = STD_Application::UserID, NewGLViewId,
-         NewPlot2dId, NewOCCViewId, NewVTKViewId, DumpStudyId,
-        LoadScriptId, PropertiesId, PreferencesId, MRUId, 
-        CatalogGenId, RegDisplayId, UserID };
+  enum { DumpStudyId = LightApp_Application::UserID, LoadScriptId, PropertiesId,
+         CatalogGenId, RegDisplayId, UserID };
 
 public:
   SalomeApp_Application();
   virtual ~SalomeApp_Application();
-  
-  virtual QString                     applicationName() const;
-  virtual QString                     applicationVersion() const;
-
-  virtual CAM_Module*                 loadModule( const QString& );
-  virtual bool                        activateModule( const QString& );
-  
-  virtual bool                        useStudy( const QString& );
-
-  SalomeApp_SelectionMgr*             selectionMgr() const;
-
-  LogWindow*                          logWindow();
-  OB_Browser*                         objectBrowser();
-  PythonConsole*                      pythonConsole();   
 
+  virtual void                        contextMenuPopup( const QString&, QPopupMenu*, QString& );
   virtual void                        updateObjectBrowser( const bool = true );
 
-  SalomeApp_Preferences*              preferences() const;
-
   virtual QString                     getFileFilter() const;
-  virtual QString                     getFileName( bool open, const QString& initial, const QString& filters, 
-                                                  const QString& caption, QWidget* parent );
-  virtual QString                     getDirectory( const QString& initial, const QString& caption, QWidget* parent );
-  virtual QStringList                 getOpenFileNames( const QString& initial, const QString& filters, 
-                                                       const QString& caption, QWidget* parent );
 
   SUIT_ViewManager*                   getViewManager( const QString&, const bool );
 
-  void                                updateActions();
-
-  QWidget*                            getWindow( const int, const int = -1 );
-
-  QWidget*                            window( const int, const int = -1 ) const;
-  void                                addWindow( QWidget*, const int, const int = -1 );
-  void                                removeWindow( const int, const int = -1 );
-
-  bool                                isWindowVisible( const int ) const;
-  void                                setWindowShown( const int, const bool );
-
   virtual void                        start();
 
-  virtual void                        contextMenuPopup( const QString&, QPopupMenu*, QString& );
-
-  virtual void                        createEmptyStudy();
-
-  SUIT_Accel*                         accel() const;
-
   static CORBA::ORB_var               orb();
   static SALOMEDSClient_StudyManager* studyMgr();
   static SALOME_NamingService*        namingService();
   static SALOME_LifeCycleCORBA*       lcc();
   static QString                      defaultEngineIOR();
 
-signals:
-  void                                studyOpened();
-  void                                studySaved();
-  void                                studyClosed();
-
 public slots:
-  virtual void                        onNewDoc();
-  virtual void                        onOpenDoc();
-  virtual void                        onHelpAbout();
-  virtual bool                        onOpenDoc( const QString& );
   virtual void                        onLoadDoc();
-  virtual bool                        onLoadDoc( const QString& );
   virtual void                        onCopy();
   virtual void                        onPaste();  
   
-private slots:
-  void                                onSelection();
-  void                                onRefresh();
-  void                                onDeleteReferences();
-
 protected:
   virtual void                        createActions();
   virtual SUIT_Study*                 createNewStudy();
   virtual QWidget*                    createWindow( const int );
-  virtual void                        defaultWindows( QMap<int, int>& ) const;
-  virtual void                        defaultViewManagers( QStringList& ) const;
-
-  virtual void                        setActiveStudy( SUIT_Study* );
 
   virtual void                        updateCommandsStatus();
-
   virtual void                        onSelectionChanged();
 
-  virtual void                        beforeCloseDoc( SUIT_Study* );
-  virtual void                        afterCloseDoc();
-
-  virtual void                        moduleAdded( CAM_Module* );
-  virtual bool                        activateModule( CAM_Module* = 0 );
-
-  SalomeApp_Preferences*              preferences( const bool ) const;
-
-  virtual void                        createPreferences( SalomeApp_Preferences* );
-  virtual void                        preferencesChanged( const QString&, const QString& );
+  virtual void                        createPreferences( LightApp_Preferences* );
   virtual void                        updateDesktopTitle();
 
-protected slots:
-  virtual void                        onDesktopActivated();
-
 private slots:
-  void                                onNewWindow();
-  void                                onModuleActivation( QAction* );
-  void                                onCloseView( SUIT_ViewManager* );
-
-  void                                onStudyCreated( SUIT_Study* );
-  void                                onStudyOpened( SUIT_Study* );
-  void                                onStudySaved( SUIT_Study* );
-  void                                onStudyClosed( SUIT_Study* );
-  
+  void                                onDeleteReferences();
   void                                onProperties();
   void                                onDumpStudy();
   void                                onLoadScript(); 
 
-  void                                onPreferences();
-  void                                onMRUActivated( QString );
-
   void                                onCatalogGen();
   void                                onRegDisplay();
-
-  void                                onPreferenceChanged( QString&, QString&, QString& );
   void                                onOpenWith();
-
-private:
-  void                                updateWindows();
-  void                                updateViewManagers();
-  void                                updateModuleActions();
-
-  void                                loadWindowsGeometry();
-  void                                saveWindowsGeometry();
-
-  void                                updatePreference( const QString&, const QString&, const QString& );
-
-  QString                             defaultModule() const;
-  void                                currentWindows( QMap<int, int>& ) const;
-  void                                currentViewManagers( QStringList& ) const;
-  SUIT_ViewManager*                   createViewManager( const QString& vmType );
-  void                                moduleIconNames( QMap<QString, QString>& ) const;
-
-  void                                activateWindows();
-
-private:
-  typedef QMap<QString, QAction*>               ActionMap;
-  typedef QMap<int, SalomeApp_WidgetContainer*> WindowMap;
-
-private:
-  SalomeApp_Preferences*              myPrefs;
-  SalomeApp_SelectionMgr*             mySelMgr;
-  ActionMap                           myActions;
-  WindowMap                           myWindows;
-
-  SUIT_Accel*                         myAccel;
-
-  static SalomeApp_Preferences*       _prefs_;
 };
 
 #ifdef WIN32
index e2b9fbef297a4fb62e4e75f2d2acb4dba2c6540e..3c63e644bc7680dce5e7dd6b08f11dddf14e5ba9 100644 (file)
@@ -5,13 +5,13 @@
 
 #include "SalomeApp_DataModel.h"
 #include "SalomeApp_Study.h"
-#include "SalomeApp_RootObject.h"
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_Module.h"
 #include "SalomeApp_Application.h"
-#include "SalomeApp_SelectionMgr.h"
 #include "SalomeApp_Engine_i.hxx"
 
+#include "LightApp_RootObject.h"
+
 #include <CAM_DataObject.h>
 
 #include <SUIT_Application.h>
@@ -51,12 +51,11 @@ SUIT_DataObject* SalomeApp_DataModel::BuildTree( const _PTR(SObject)& obj,
       for ( DataObjectListIterator it( allComponents ); it.current(); ++it ) {
        SUIT_DataObject* componentObj = it.current();
        if ( componentObj->name() == aSName ) {
-         // mkr : modifications for update of already published in
-          // object browser, but not loaded yet components
-         CAM_Application* anApp = dynamic_cast<CAM_Application*>
-            (SUIT_Session::session()->activeApplication());
-
-         // asv : corresponding DataObjects are DELETED before update (so they are re-built). 
+         //mkr : modifications for update already published in 
+         //object browser, but not loaded yet component
+         LightApp_Application* anApp = dynamic_cast<LightApp_Application*>
+            ( SUIT_Session::session()->activeApplication() );
+         // asv : corresponding DataObjects are DELETED before update (so they are re-built). 
          if (anApp && !anApp->module(aSName)) { // if module is not loaded, delete it's DataObject
             // jfa: remove children before DataObject deletion
             DataObjectList chilren = componentObj->children(/*recursive=*/true);
@@ -93,7 +92,7 @@ SUIT_DataObject* SalomeApp_DataModel::BuildTree( const _PTR(SObject)& obj,
 /*!Purpose : Constructor*/
 //=======================================================================
 SalomeApp_DataModel::SalomeApp_DataModel( CAM_Module* theModule )
-: CAM_DataModel( theModule )
+: LightApp_DataModel( theModule )
 {
 }
 
@@ -109,7 +108,7 @@ SalomeApp_DataModel::~SalomeApp_DataModel()
 // Function : open
 /*! Purpose  : Open data model*/
 //================================================================
-bool SalomeApp_DataModel::open( const QString&, CAM_Study* study )
+bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study )
 {
   SalomeApp_Study* aDoc = dynamic_cast<SalomeApp_Study*>( study );
   if ( !aDoc )
@@ -119,72 +118,12 @@ bool SalomeApp_DataModel::open( const QString&, CAM_Study* study )
   if ( anId.isEmpty() )
     return true; // Probably nothing to load
 
-  QString anEngine = getModule()->engineIOR();
-  if ( anEngine == "-1" ) {
-    // Module doesn't have a CORBA engine and doesn't use
-    // a default one -> SALOMEDS persistence cannot be used
-    return false;
-  }
-
-  if ( anEngine.isEmpty() ) {
-    // Module use a default engine
-    //TODO: deside, if the below code has to be copyed in a light data model to avoid bulding of data tree twice
-    anEngine = SalomeApp_Application::defaultEngineIOR();
-  }
-
   _PTR(Study)      aStudy ( aDoc->studyDS() ); // shared_ptr cannot be used here
   _PTR(SComponent) aSComp ( aStudy->FindComponentID( std::string( anId.latin1() ) ) );
+  if ( aSComp )
+    buildTree( aSComp, 0, aDoc );
 
-  if ( aSComp ) {
-    _PTR(StudyBuilder) aBuilder( aStudy->NewBuilder() );
-    if ( aBuilder ) {
-      try {
-       aBuilder->LoadWith( aSComp, std::string( anEngine.latin1() ) );
-      }
-      catch( const SALOME::SALOME_Exception& ) {
-       // Oops, something went wrong while loading -> return an error
-       return false;
-      }
-
-      // Something has been read -> create data model tree
-      buildTree( aSComp, 0, aDoc );
-    }
-  } else {
-    // Don't return false here, for there might be no data
-    // for a given component in the study yet
-  }
-
-  emit opened(); //TODO: is it really needed? to be removed maybe...
-  return true;
-}
-
-//================================================================
-// Function : save
-/*! Purpose  : Emit saved()*/
-//================================================================
-bool SalomeApp_DataModel::save()
-{
-  emit saved();
-  return true;
-}
-
-//================================================================
-// Function : saveAs
-/*! Purpose  : Emit saved() */
-//================================================================
-bool SalomeApp_DataModel::saveAs( const QString&, CAM_Study* )
-{
-  emit saved();
-  return true;
-}
-
-//================================================================
-// Function : close
-/*! Purpose  : Emit closed()*/
-//================================================================
-bool SalomeApp_DataModel::close()
-{
-  emit closed();
+  LightApp_DataModel::open(name, study);
   return true;
 }
 
@@ -192,33 +131,42 @@ bool SalomeApp_DataModel::close()
 // Function : update
 /*! Purpose  : Update application.*/
 //================================================================
-void SalomeApp_DataModel::update( SalomeApp_DataObject*, SalomeApp_Study* study )
+void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study )
 {
-  SalomeApp_RootObject* studyRoot = 0;
+  SalomeApp_Study* aSStudy = 0;
+  LightApp_RootObject* studyRoot = 0;
   _PTR(SObject) sobj;
   SalomeApp_DataObject* modelRoot = dynamic_cast<SalomeApp_DataObject*>( root() );
   if ( !modelRoot ){ // not yet connected to a study -> try using <study> argument
-    if ( !study )
-      study = dynamic_cast<SalomeApp_Study*>( getModule()->getApp()->activeStudy() );
-
-    if ( study ){
-      studyRoot = dynamic_cast<SalomeApp_RootObject*>( study->root() );
-      QString anId = getRootEntry( study );
-      if ( !anId.isEmpty() ){ // if nothing is published in the study for this module -> do nothing
-       _PTR(Study) aStudy ( study->studyDS() );
-       sobj = aStudy->FindComponentID( std::string( anId.latin1() ) );
+    aSStudy = dynamic_cast<SalomeApp_Study*>( study );
+    if ( !aSStudy )
+      aSStudy = dynamic_cast<SalomeApp_Study*>( getModule()->getApp()->activeStudy() );
+    if ( aSStudy ){
+      studyRoot = dynamic_cast<LightApp_RootObject*>( aSStudy->root() );
+      if ( studyRoot ) {
+        QString anId = getRootEntry( aSStudy );
+        if ( !anId.isEmpty() ){ // if nothing is published in the study for this module -> do nothing
+         _PTR(Study) aStudy ( aSStudy->studyDS() );
+         sobj = aStudy->FindComponentID( std::string( anId.latin1() ) );
+        }
       }
     }
   }
   else{
-    studyRoot = dynamic_cast<SalomeApp_RootObject*>( modelRoot->root() );
-    study = studyRoot->study(); // <study> value should not change here theoretically, but just to make sure
-    _PTR(Study) aStudy ( study->studyDS() );
-
-    // modelRoot->object() cannot be reused here: it is about to be deleted by buildTree() soon
-    sobj = aStudy->FindComponentID( std::string( modelRoot->entry().latin1() ) );
+    studyRoot = dynamic_cast<LightApp_RootObject*>( modelRoot->root() );
+    if ( studyRoot ) {
+      aSStudy = dynamic_cast<SalomeApp_Study*>( study );
+      if ( aSStudy ) {
+        aSStudy = dynamic_cast<SalomeApp_Study*>( studyRoot->study() ); // <study> value should not change here theoretically, but just to make sure
+        if ( aSStudy ) {
+          _PTR(Study) aStudy ( aSStudy->studyDS() );
+          // modelRoot->object() cannot be reused here: it is about to be deleted by buildTree() soon
+          sobj = aStudy->FindComponentID( std::string( modelRoot->entry().latin1() ) );
+        }
+      }
+    }
   }
-  buildTree( sobj, studyRoot, study );
+  buildTree( sobj, studyRoot, aSStudy );
 }
 
 //================================================================
@@ -257,10 +205,13 @@ SalomeApp_Module* SalomeApp_DataModel::getModule() const
 SalomeApp_Study* SalomeApp_DataModel::getStudy() const
 {
   if(!root()) return 0;
-  SalomeApp_RootObject* aRoot = dynamic_cast<SalomeApp_RootObject*>( root()->root() );
+  LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>( root()->root() );
   if ( !aRoot )
     return 0;
-  return aRoot->study();
+  SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( aRoot->study() );
+  if ( !aStudy )
+    return 0;
+  return aStudy;
 }
 
 //================================================================
@@ -282,99 +233,3 @@ QString SalomeApp_DataModel::getRootEntry( SalomeApp_Study* study ) const
   }
   return anEntry;
 }
-
-//================================================================
-// Function : isModified
-/*! Purpose  : default implementation, always returns false so as not to mask study's isModified()*/
-//================================================================
-bool SalomeApp_DataModel::isModified() const
-{
-  return false;
-}
-
-//================================================================
-// Function : isSaved
-/*! Purpose  : default implementation, always returns true so as not to mask study's isSaved()*/
-//================================================================
-bool SalomeApp_DataModel::isSaved() const
-{
-  return true;
-}
-
-// BEGIN: methods to be used by CORBAless modules
-
-//================================================================
-// Function : GetListOfFiles
-/*! Purpose  : to be used by CORBAless modules*/
-//================================================================
-std::vector<std::string> SalomeApp_DataModel::GetListOfFiles() const
-       //(const int theStudyId, const char* theComponentName) const
-{
-  SUIT_Study* anActiveStudy = getModule()->getApp()->activeStudy();
-  if (anActiveStudy) {
-    int aStudyId = anActiveStudy->id();
-    SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
-    if (aDefaultEngine) {
-      return aDefaultEngine->GetListOfFiles(aStudyId, module()->name());
-    }
-  }
-
-  std::vector<std::string> aListOfFiles;
-  return aListOfFiles;
-}
-
-//================================================================
-// Function : SetListOfFiles
-/*! Purpose  : to be used by CORBAless modules*/
-//================================================================
-void SalomeApp_DataModel::SetListOfFiles (const std::vector<std::string> theListOfFiles)
-     //(const std::vector<std::string> theListOfFiles,
-     // const int                      theStudyId,
-     // const char*                    theComponentName)
-{
-  SUIT_Study* anActiveStudy = getModule()->getApp()->activeStudy();
-  if (anActiveStudy) {
-    int aStudyId = anActiveStudy->id();
-    SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
-    if (aDefaultEngine) {
-      aDefaultEngine->SetListOfFiles(theListOfFiles, aStudyId, module()->name());
-    }
-  }
-}
-
-//================================================================
-// Function : GetTmpDir
-/*! Purpose  : Static method. To be used by CORBAless modules*/
-//================================================================
-std::string SalomeApp_DataModel::GetTmpDir (const char* theURL,
-                                            const bool  isMultiFile)
-{
-  std::string anURLDir = SALOMEDS_Tool::GetDirFromPath(theURL);
-  std::string aTmpDir = isMultiFile ? anURLDir : SALOMEDS_Tool::GetTmpDir();
-  return aTmpDir;
-}
-
-//================================================================
-// Function : RemoveTemporaryFiles
-/*! Purpose  : to be used by CORBAless modules*/
-//================================================================
-void SalomeApp_DataModel::RemoveTemporaryFiles (const bool isMultiFile) const
-{
-  if (isMultiFile)
-    return;
-
-  std::vector<std::string> aListOfFiles = GetListOfFiles();
-  if (aListOfFiles.size() > 0) {
-    std::string aTmpDir = aListOfFiles[0];
-
-    const int n = aListOfFiles.size() - 1;
-    SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames;
-    aSeq->length(n);
-    for (int i = 0; i < n; i++)
-      aSeq[i] = CORBA::string_dup(aListOfFiles[i + 1].c_str());
-
-    SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.c_str(), aSeq.in(), true);
-  }
-}
-
-// END: methods to be used by CORBAless modules
index 3f7d5f6640a15cfe01092401e848eac3f0b1ba79..7ef34b0888e3bc9dc0cb43ba4829490990b9056f 100644 (file)
 #endif // _MSC_VER > 1000
 
 #include "SalomeApp.h"
-#include "CAM_DataModel.h"
+#include "LightApp_DataModel.h"
 
 #include "SALOMEDSClient.hxx"
 
 class SalomeApp_Module;
 class SalomeApp_Study;
 class SalomeApp_DataObject;
-class SalomeApp_SelectionMgr;
 
 //   Class       : SalomeApp_DataModel
 ///  Description : Base class of data model
-class SALOMEAPP_EXPORT SalomeApp_DataModel : public CAM_DataModel
+class SALOMEAPP_EXPORT SalomeApp_DataModel : public LightApp_DataModel
 {
   Q_OBJECT
 
@@ -35,44 +34,16 @@ public:
                                       SalomeApp_DataModel ( CAM_Module* theModule );
   virtual                             ~SalomeApp_DataModel();
 
-  /** @name These methods should be redefined in successors.*/
-  //@{
   virtual bool                        open( const QString&, CAM_Study* );
-  virtual bool                        save();
-  virtual bool                        saveAs( const QString&, CAM_Study* );
-  virtual bool                        close();
+  virtual void                        update( LightApp_DataObject* = 0, LightApp_Study* = 0 );
 
-  virtual void                        update( SalomeApp_DataObject* = 0, SalomeApp_Study* = 0 );
-
-  virtual bool                        isModified() const;
-  virtual bool                        isSaved()  const;
-  //@}
-
-signals:
-  void                                opened();
-  void                                saved();
-  void                                closed();
+  QString                             getRootEntry( SalomeApp_Study* ) const;
+  SalomeApp_Module*                   getModule() const;
 
 protected:
-  SalomeApp_Module*                   getModule() const;
   SalomeApp_Study*                    getStudy() const;
 
   virtual void                        buildTree(const _PTR(SObject)&, SUIT_DataObject*, SalomeApp_Study* );
-
-  /** @name methods to be used by CORBAless modules*/
-  //@{
-  std::vector<std::string>            GetListOfFiles () const;
-  void                                SetListOfFiles (const std::vector<std::string> theListOfFiles);
-
-  static std::string                  GetTmpDir (const char* theURL,
-                                                const bool  isMultiFile);
-
-  void                                RemoveTemporaryFiles (const bool isMultiFile) const;
-  //@}
-  // END: methods to be used by CORBAless modules
-
-private:
-  QString                             getRootEntry( SalomeApp_Study* ) const;
 };
 
 #endif 
index 0e9866fa9dd4069f66d13f3fa72e3541d2b99e8b..62cb0add74f663c2b51c8e234eb96faf470c48de 100644 (file)
@@ -1,7 +1,7 @@
 #include "SalomeApp_DataObject.h"
 
 #include "SalomeApp_Study.h"
-#include "SalomeApp_RootObject.h"
+#include "LightApp_RootObject.h"
 
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
 #include <SALOMEDSClient_AttributeTableOfReal.hxx>
 #include <SALOMEDSClient_AttributeTableOfInteger.hxx>
 
-/*!
-       Class: SalomeApp_DataObject::Key
-       Level: Internal
-*/
-class SalomeApp_DataObject::Key : public SUIT_DataObjectKey
-{
-public:
-  Key( const QString& );
-  virtual ~Key();
-
-  virtual bool isLess( const SUIT_DataObjectKey* ) const;
-  virtual bool isEqual( const SUIT_DataObjectKey* ) const;
-
-private:
-  QString myEntry;
-};
-
-/*!Constructor. Initialize by \a entry.*/
-SalomeApp_DataObject::Key::Key( const QString& entry )
-: SUIT_DataObjectKey(),
-  myEntry( entry )
-{
-}
-
-/*!Destructor. Do nothing.*/
-SalomeApp_DataObject::Key::~Key()
-{
-}
-
-/*!Checks: Is current key less than \a other.*/
-bool SalomeApp_DataObject::Key::isLess( const SUIT_DataObjectKey* other ) const
-{
-  Key* that = (Key*)other;
-  return myEntry < that->myEntry;
-}
-
-/*!Checks: Is current key equal with \a other.*/
-bool SalomeApp_DataObject::Key::isEqual( const SUIT_DataObjectKey* other ) const
-{
-  Key* that = (Key*)other;
-  return myEntry == that->myEntry;
-}
-
 /*
        Class: SalomeApp_DataObject
        Level: Public
 */
 /*!Constructor. Initialize by \a parent*/
 SalomeApp_DataObject::SalomeApp_DataObject( SUIT_DataObject* parent )
-: CAM_DataObject( parent )
+: LightApp_DataObject( parent ),
+  CAM_DataObject( parent )
 {
 }
 
 /*!Constructor. Initialize by \a parent and SObject*/
 SalomeApp_DataObject::SalomeApp_DataObject( const _PTR(SObject)& sobj, SUIT_DataObject* parent )
-: CAM_DataObject( parent )
+: LightApp_DataObject( parent ),
+  CAM_DataObject( parent )
 {
   myObject = sobj;
 }
@@ -90,13 +49,6 @@ QString SalomeApp_DataObject::entry() const
   return QString::null;
 }
 
-/*!Create and return new key object.*/
-SUIT_DataObjectKey* SalomeApp_DataObject::key() const
-{
-  QString str = entry();
-  return new Key( str );
-}
-
 /*!Gets name of object.*/
 QString SalomeApp_DataObject::name() const
 {
@@ -131,7 +83,7 @@ QPixmap SalomeApp_DataObject::icon() const
     _PTR(AttributePixMap) aPixAttr ( anAttr );
     if ( aPixAttr->HasPixMap() ){
       QString pixmapName = QObject::tr( aPixAttr->GetPixMap().c_str() );
-      SalomeApp_RootObject* aRoot = dynamic_cast<SalomeApp_RootObject*>( root() );
+      LightApp_RootObject* aRoot = dynamic_cast<LightApp_RootObject*>( root() );
       if ( aRoot && aRoot->study() ) {
        QPixmap pixmap = aRoot->study()->application()->resourceMgr()->loadPixmap( componentDataType(), pixmapName, false ); 
        return pixmap;
@@ -226,25 +178,6 @@ QString SalomeApp_DataObject::toolTip() const
   return QString( "Object \'%1\', module \'%2\', ID=%3" ).arg( name() ).arg( componentDataType() ).arg( entry() );
 }
 
-/*!Gets component object.
- *\retval SUIT_DataObject.
- */
-SUIT_DataObject* SalomeApp_DataObject::componentObject() const
-{
-  SUIT_DataObject* compObj = 0;  // for root object (invisible SALOME_ROOT_OBJECT) 
-
-  if ( parent() && parent() == root() ) 
-    compObj = (SUIT_DataObject*)this; // for component-level objects
-  else 
-  {
-    compObj = parent(); // for lower level objects
-    while ( compObj && compObj->parent() != root() )
-      compObj = compObj->parent();
-  }
-
-  return compObj;
-}
-
 /*!Get component type.*/
 QString SalomeApp_DataObject::componentDataType() const
 {
index 434f96baa460d827a0aa576e9ccfed5b02c3f681..34042162d56a2f6c2485230fd4601ff200bb76ec 100644 (file)
@@ -3,16 +3,15 @@
 
 #include "SalomeApp.h"
 
-#include "CAM_DataObject.h"
+#include "LightApp_DataObject.h"
 #include "CAM_RootObject.h"
 
 #include "SALOMEDSClient.hxx"
 
 class SalomeApp_Study;
 
-class SALOMEAPP_EXPORT SalomeApp_DataObject : public virtual CAM_DataObject
+class SALOMEAPP_EXPORT SalomeApp_DataObject : public LightApp_DataObject
 {
-  class Key;
 
 public:
   enum { CT_Value, CT_Entry, CT_IOR, CT_RefEntry };
@@ -29,7 +28,6 @@ public:
   virtual QString                 text( const int ) const;
   virtual QColor                  color( const ColorRole ) const;
 
-  virtual SUIT_DataObjectKey*     key() const;
   virtual QString                 entry() const;
 
   /*! location of corresponding SALOMEDS::SObject  */
@@ -38,7 +36,6 @@ public:
   bool                            isReference() const;
   _PTR(SObject)                   referencedObject() const;
 
-  SUIT_DataObject*                componentObject() const;
   /*! GEOM, SMESH, VISU, etc.*/
   QString                         componentDataType() const;
 
index f62a3eca47a2b2344841e67bbb493071626ce5f9..9123d76f7084fc236ec2a537d46b4fadfa58db4d 100644 (file)
@@ -8,19 +8,19 @@
 #include "SalomeApp_Study.h"
 #include "SalomeApp_DataModel.h"
 #include "SalomeApp_Application.h"
-#include "SalomeApp_Preferences.h"
+
+#include "LightApp_Preferences.h"
 #include "SalomeApp_UpdateFlags.h"
 #include "SalomeApp_Operation.h"
 #include "SalomeApp_SwitchOp.h"
 
-#include <OB_Browser.h>
-
-#include <CAM_Study.h>
+#include "SUIT_Operation.h"
+#include "CAM_DataModel.h"
 
-#include <SUIT_MessageBox.h>
-#include <SUIT_ResourceMgr.h>
+#include "OB_Browser.h"
 
-#include <QtxPopupMgr.h>
+#include <qstring.h>
+#include <qmap.h>
 
 #include <SVTK_ViewWindow.h>
 #include <OCCViewer_ViewWindow.h>
@@ -31,8 +31,7 @@
 
 /*!Constructor.*/
 SalomeApp_Module::SalomeApp_Module( const QString& name )
-: CAM_Module( name ),
-myPopupMgr( 0 ),
+: LightApp_Module( name ),
 mySwitchOp( 0 )
 {
 }
@@ -44,105 +43,32 @@ SalomeApp_Module::~SalomeApp_Module()
     delete mySwitchOp;
 }
 
-/*!Initialize module.*/
-void SalomeApp_Module::initialize( CAM_Application* app )
+/*!Gets application.*/
+SalomeApp_Application* SalomeApp_Module::getApp() const
 {
-  CAM_Module::initialize( app );
-
-  SUIT_ResourceMgr* resMgr = app ? app->resourceMgr() : 0;
-  if ( resMgr )
-    resMgr->raiseTranslators( name() );
+  return (SalomeApp_Application*)application();
 }
 
 /*!Activate module.*/
 bool SalomeApp_Module::activateModule( SUIT_Study* study )
 {
-  bool res = CAM_Module::activateModule( study );
-
-  if ( res && application() && application()->resourceMgr() )
-    application()->resourceMgr()->raiseTranslators( name() );
+  bool res = LightApp_Module::activateModule( study );
 
   if ( mySwitchOp == 0 )
     mySwitchOp = new SalomeApp_SwitchOp( this );
-    
+
   return res;
 }
 
 /*!Deactivate module.*/
-bool SalomeApp_Module::deactivateModule( SUIT_Study* )
+bool SalomeApp_Module::deactivateModule( SUIT_Study* study )
 {
+  bool res = LightApp_Module::deactivateModule( study );
+
   delete mySwitchOp;
   mySwitchOp = 0;
-  
-  return true;
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::selectionChanged()
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::MenuItem()
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::windows( QMap<int, int>& ) const
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::viewManagers( QStringList& ) const
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::createPreferences()
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::preferencesChanged( const QString&, const QString& )
-{
-}
-
-/*!Gets application.*/
-SalomeApp_Application* SalomeApp_Module::getApp() const
-{
-  return (SalomeApp_Application*)application();
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::onModelOpened()
-{
-}
 
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::onModelSaved()
-{
-}
-
-/*!NOT IMPLEMENTED*/
-void SalomeApp_Module::onModelClosed()
-{
-}
-
-/*!Gets popup manager.(create if not exist)*/
-QtxPopupMgr* SalomeApp_Module::popupMgr()
-{
-  if ( !myPopupMgr )
-    myPopupMgr = new QtxPopupMgr( 0, this );
-  return myPopupMgr;
-}
-
-/*!Gets preferences.*/
-SalomeApp_Preferences* SalomeApp_Module::preferences() const
-{
-  SalomeApp_Preferences* pref = 0;
-  if ( getApp() )
-    pref = getApp()->preferences();
-  return pref;
+  return res;
 }
 
 /*!Create new instance of data model and return it.*/
@@ -151,75 +77,6 @@ CAM_DataModel* SalomeApp_Module::createDataModel()
   return new SalomeApp_DataModel(this);
 }
 
-/*!Update object browser.*/
-void SalomeApp_Module::updateObjBrowser( bool updateDataModel, SUIT_DataObject* root )
-{
-  if( updateDataModel )
-    if( CAM_DataModel* aDataModel = dataModel() )
-      if( SalomeApp_DataModel* aModel = dynamic_cast<SalomeApp_DataModel*>( aDataModel ) )
-        aModel->update( 0, dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
-  getApp()->objectBrowser()->updateTree( root );
-}
-
-/*!Context menu popup.*/
-void SalomeApp_Module::contextMenuPopup( const QString& client, QPopupMenu* menu, QString& /*title*/ )
-{
-  SalomeApp_Selection* sel = createSelection();
-  sel->init( client, getApp()->selectionMgr() );
-  popupMgr()->updatePopup( menu, sel );
-  delete sel;
-}
-
-/*!Create and return instance of SalomeApp_Selection.*/
-SalomeApp_Selection* SalomeApp_Module::createSelection() const
-{
-  return new SalomeApp_Selection();
-}
-
-/*!Add preference to preferences.*/
-int SalomeApp_Module::addPreference( const QString& label )
-{
-  SalomeApp_Preferences* pref = preferences();
-  if ( !pref )
-    return -1;
-
-  int catId = pref->addPreference( moduleName(), -1 );
-  if ( catId == -1 )
-    return -1;
-                             
-  return pref->addPreference( label, catId );
-}
-
-/*!Add preference to preferences.*/
-int SalomeApp_Module::addPreference( const QString& label, const int pId, const int type,
-                                    const QString& section, const QString& param )
-{
-  SalomeApp_Preferences* pref = preferences();
-  if ( !pref )
-    return -1;
-
-  return pref->addPreference( moduleName(), label, pId, type, section, param );
-}
-
-/*!Gets property of preferences.*/
-QVariant SalomeApp_Module::preferenceProperty( const int id, const QString& prop ) const
-{
-  QVariant var;
-  SalomeApp_Preferences* pref = preferences();
-  if ( pref )
-    var = pref->itemProperty( id, prop );
-  return var;
-}
-
-
-/*!Set property of preferences.*/
-void SalomeApp_Module::setPreferenceProperty( const int id, const QString& prop, const QVariant& var )
-{
-  SalomeApp_Preferences* pref = preferences();
-  if ( pref )
-    pref->setItemProperty( id, prop, var );
-}
-
 /*!
  * \brief Update something in accordance with update flags
   * \param theFlags - update flags
@@ -233,8 +90,11 @@ void SalomeApp_Module::update( const int theFlags )
   if ( theFlags & UF_Model )
   {
     if( CAM_DataModel* aDataModel = dataModel() )
-      if( SalomeApp_DataModel* aModel = dynamic_cast<SalomeApp_DataModel*>( aDataModel ) )
-        aModel->update( 0, dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() ) );
+      if( SalomeApp_DataModel* aModel = dynamic_cast<SalomeApp_DataModel*>( aDataModel ) ) {
+        SalomeApp_Study* aStudy = dynamic_cast<SalomeApp_Study*>( getApp()->activeStudy() );
+        if (aStudy)
+          aModel->update( 0, aStudy );
+      }
   }
   if ( theFlags & UF_ObjBrowser )
     getApp()->objectBrowser()->updateTree( 0 );
index 644608c5d8c0f8aa6008c8988f7eb8cba6d2bdba..436548415c7a426fac96018281fdfb79e5f85380 100644 (file)
@@ -7,34 +7,23 @@
 #define SALOMEAPP_MODULE_H
 
 #include "SalomeApp.h"
-#include "SalomeApp_Selection.h"
 
-#include <CAM_Module.h>
+#include <LightApp_Module.h>
 
 #include <string>
 
-class QDockWindow;
-
-class CAM_Study;
-
-class QtxPopupMgr;
-
-class SUIT_Operation;
-class SUIT_Convertor;
-class SUIT_ViewModel;
+class CAM_DataModel;
 class SUIT_DataObject;
-
-class SalomeApp_DataModel;
+class SUIT_Operation;
 class SalomeApp_Application;
-class SalomeApp_Preferences;
-class SalomeApp_SelectionManager;
+
 class SalomeApp_Operation;
 class SalomeApp_SwitchOp;
 
 /*!
  * \brief Base class for all salome modules
 */
-class SALOMEAPP_EXPORT SalomeApp_Module : public CAM_Module
+class SALOMEAPP_EXPORT SalomeApp_Module : public LightApp_Module
 {
   Q_OBJECT
 
@@ -42,10 +31,6 @@ public:
   SalomeApp_Module( const QString& );
   virtual ~SalomeApp_Module();
 
-  virtual void                        initialize( CAM_Application* );
-  virtual void                        windows( QMap<int, int>& ) const;
-  virtual void                        viewManagers( QStringList& ) const;
-
   /*! engineIOR() should be a pure virtual method, to avoid logical errors!\n
    * Implementation in derived classes can return the following values:\n
    * module`s engine IOR - means that this is a standard SALOME module with a CORBA engine
@@ -53,10 +38,6 @@ public:
    * \li "-1"                - means that this is a light module, SALOMEDS persistence is not used at all\n
    */
   virtual QString                     engineIOR() const = 0;
-
-  virtual void                        contextMenuPopup( const QString&, QPopupMenu*, QString& );
-
-  virtual void                        createPreferences();
   
   /*! Convenient shortcuts*/
  
@@ -67,34 +48,17 @@ public:
   // ( see SalomeApp_UpdateFlags enumeration ). Derived modules can redefine this method
   // for their own purposes
     
-  void                                updateObjBrowser( bool = true, SUIT_DataObject* = 0 );
-  // Update object bropwser ( for updating model or whole object browser use update() method
-  // can be used )
-  
-  virtual void                        selectionChanged();
-  virtual void                        preferencesChanged( const QString&, const QString& );
-
-  virtual void                        studyActivated() {};
-
 public slots:
   virtual bool                        activateModule( SUIT_Study* );
   virtual bool                        deactivateModule( SUIT_Study* );
 
-  void                                MenuItem();
-
 protected slots:
-  virtual void                        onModelSaved();
-  virtual void                        onModelOpened();
-  virtual void                        onModelClosed();
   virtual void                        onOperationStopped( SUIT_Operation* );
   virtual void                        onOperationDestroyed();
 
-protected:
-  QtxPopupMgr*                        popupMgr();
-  SalomeApp_Preferences*              preferences() const;
-
+ protected:
   virtual CAM_DataModel*              createDataModel();
-  virtual SalomeApp_Selection*        createSelection() const;
+
   virtual void                        updateControls();
 
   /*! Module stores operations in map. This method starts operation by id.
@@ -108,20 +72,12 @@ protected:
    */
   virtual SalomeApp_Operation*        createOperation( const int ) const;
 
-  int                                 addPreference( const QString& label );
-  int                                 addPreference( const QString& label, const int pId, const int = -1,
-                                                     const QString& section = QString::null,
-                                                     const QString& param = QString::null );
-  QVariant                            preferenceProperty( const int, const QString& ) const;
-  void                                setPreferenceProperty( const int, const QString&, const QVariant& );
-
 private:
   typedef QMap<int,SalomeApp_Operation*> MapOfOperation;
   
 private:
-  QtxPopupMgr*          myPopupMgr;
   MapOfOperation        myOperations;
-  SalomeApp_SwitchOp*   mySwitchOp;
+  SalomeApp_SwitchOp*    mySwitchOp;
 };
 
 #endif
index 26722915689bea9d7cfb9fba9cf19000be68dcbd..bb794a8bc6e9c1d721aabe91eeab58f99086dbea 100755 (executable)
@@ -12,7 +12,7 @@
 #include <SalomeApp_Module.h>
 #include <SalomeApp_Application.h>
 #include <SalomeApp_Operation.h>
-#include <SalomeApp_SelectionMgr.h>
+#include <LightApp_SelectionMgr.h>
 #include <SalomeApp_Dialog.h>
 
 #include <SUIT_Desktop.h>
@@ -209,7 +209,7 @@ SUIT_Operation* SalomeApp_Operation::activeOperation() const
 *
 * This method provided for convinience calls SalomeApp_Application::selectionMgr() one
 */
-SalomeApp_SelectionMgr* SalomeApp_Operation::selectionMgr() const
+LightApp_SelectionMgr* SalomeApp_Operation::selectionMgr() const
 {
   SUIT_Application* app = application();
   if ( app != 0 && app->inherits( "SalomeApp_Application" ) )
index 39c0ca6e91700b2f857e524025bc75315c7e400e..274f8e553263011c3091347b580a80f1ddc1432d 100755 (executable)
@@ -17,7 +17,7 @@
 class SalomeApp_Module;
 class SalomeApp_Application;
 class SalomeApp_Operation;
-class SalomeApp_SelectionMgr;
+class LightApp_SelectionMgr;
 class SalomeApp_Dialog;
 class SUIT_Desktop;
 
@@ -67,7 +67,7 @@ protected:
   
   SUIT_Desktop*             desktop() const;
   SUIT_Operation*           activeOperation() const;
-  SalomeApp_SelectionMgr*   selectionMgr() const;
+  LightApp_SelectionMgr*   selectionMgr() const;
   void                      update( const int );
   void                      setAutoResumed( const bool );
       
index 7cf6ce66deb9234d7a25e34e84d94aded25c87a1..a6549f64696df4d2c56b18cbc85814b499fc7d36 100755 (executable)
 
 #include <utilities.h>
 #include <Container_init_python.hxx>
-#ifdef _DEBUG_
-static int MYDEBUG = 0;
-#else
-static int MYDEBUG = 0;
-#endif
+
+#include <string>
+#include <vector>
+
+#include "PyInterp_base.h" // this include must be first (see PyInterp_base.h)!
+
+#include <cStringIO.h>
 
 /*!
  * constructor : multi Python interpreter, one per SALOME study.
@@ -107,3 +109,23 @@ bool SalomeApp_PyInterp::initContext()
 
   return true;
 }
+
+void SalomeApp_PyInterp::init_python()
+{
+  /*
+   * Initialize the main state (_gtstate) if not already done
+   * The lock is released on init_python output
+   * It is the caller responsability to acquire it if needed
+   */
+  MESSAGE("PyInterp_base::init_python");
+  ASSERT(KERNEL_PYTHON::_gtstate); // initialisation in main
+  SCRUTE(KERNEL_PYTHON::_gtstate);
+//  if(!_gtstate){
+//  PyReleaseLock aReleaseLock;
+//  Py_Initialize(); // Initialize the interpreter
+//  PyEval_InitThreads(); // Initialize and acquire the global interpreter lock
+//  PySys_SetArgv(_argc,_argv); // initialize sys.argv
+//    _gtstate = PyThreadState_Get();
+//  }
+}
+
index 065f8efd076ae06d1a4eb50c11002ef0f36836b9..a15b3767f00ec9580f97175ad7881b2d04f54166 100755 (executable)
@@ -37,6 +37,8 @@ public:
   SalomeApp_PyInterp();
   virtual ~SalomeApp_PyInterp();
 
+  virtual void init_python();
+
 protected:
   virtual bool initContext();
 };
index e1065c9fef289aae4017356b7bf5bf9f7e0d83d7..97be8db880beb89c923cac1c3c1ce5b215e64bba 100644 (file)
@@ -2,21 +2,31 @@
 
 #include "SalomeApp_Module.h"
 #include "SalomeApp_DataModel.h"
-#include "SalomeApp_RootObject.h"
+#include "LightApp_RootObject.h"
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_Application.h"
+#include "SalomeApp_Engine_i.hxx"
 
 #include <OB_Browser.h>
 
 #include <SUIT_ResourceMgr.h>
 
+#include <qptrlist.h>
+
 #include "utilities.h"
+#include "string.h"
+#include "vector.h"
+
+#include "SALOMEDS_Tool.hxx"
+
+#include <SALOMEconfig.h>
+#include CORBA_SERVER_HEADER(SALOME_Exception)
 
 /*!
   Constructor.
 */
 SalomeApp_Study::SalomeApp_Study( SUIT_Application* app )
-: CAM_Study( app )
+: LightApp_Study( app )
 {
 }  
 
@@ -62,12 +72,7 @@ void SalomeApp_Study::createDocument()
   setStudyDS( study );
   setStudyName( aName );
 
-  // create myRoot
-  setRoot( new SalomeApp_RootObject( this ) );
-
-  CAM_Study::createDocument();
-
-  emit created( this );
+  LightApp_Study::createDocument();
 }
 
 //=======================================================================
@@ -85,22 +90,8 @@ bool SalomeApp_Study::openDocument( const QString& theFileName )
 
   setStudyDS( study );
 
-  setRoot( new SalomeApp_RootObject( this ) ); // create myRoot
-
-  // update loaded data models: call open() and update() on them.
-  ModelList dm_s;
-  dataModels( dm_s );
-  for ( ModelListIterator it( dm_s ); it.current(); ++it )
-    openDataModel( studyName(), it.current() );
-
-  // this will build a SUIT_DataObject-s tree under myRoot member field
-  // passing "false" in order NOT to rebuild existing data models' trees - it was done in previous step
-  // but tree that corresponds to not-loaded data models will be updated any way. 
-  ((SalomeApp_Application*)application())->updateObjectBrowser( false ); 
-
-  bool res = CAM_Study::openDocument( theFileName );
-  emit opened( this );
-
+  bool res = LightApp_Study::openDocument( theFileName );
+  
   return res;
 }
 
@@ -119,95 +110,56 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName )
 
   setStudyDS( study );
 
-  setRoot( new SalomeApp_RootObject( this ) ); // create myRoot
-
-  //SRN: BugID IPAL9021, put there the same code as in a method openDocument
-
-  // update loaded data models: call open() and update() on them.
-  ModelList dm_s;
-  dataModels( dm_s );
-  for ( ModelListIterator it( dm_s ); it.current(); ++it )
-    openDataModel( studyName(), it.current() );
-
-  // this will build a SUIT_DataObject-s tree under myRoot member field
-  // passing "false" in order NOT to rebuild existing data models' trees - it was done in previous step
-  // but tree that corresponds to not-loaded data models will be updated any way. 
-  ((SalomeApp_Application*)application())->updateObjectBrowser( false ); 
-
-  bool res = CAM_Study::openDocument( theStudyName );
-  emit opened( this );
-
-  //SRN: BugID IPAL9021: End
+  bool res = LightApp_Study::loadDocument( theStudyName );
 
   return res;
 }
 
 //=======================================================================
 // name    : saveDocumentAs
-/*! Purpose : Save document */
+/*! Purpose : Save document*/
 //=======================================================================
 bool SalomeApp_Study::saveDocumentAs( const QString& theFileName )
 {
-  ModelList list; dataModels( list );
-
-  SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first();
-  for ( ; aModel; aModel = (SalomeApp_DataModel*)list.next() )
-    aModel->saveAs( theFileName, this );
-
   // save SALOMEDS document
   SUIT_ResourceMgr* resMgr = application()->resourceMgr();
   if( !resMgr )
     return false;
+  bool res = LightApp_Study::saveDocumentAs( theFileName );  //SRN: BugID IPAL9377, removed usage of uninitialized variable <res>
 
   bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ),
        isAscii = resMgr->booleanValue( "Study", "ascii_file", true );
   isAscii ? SalomeApp_Application::studyMgr()->SaveAsASCII( theFileName.latin1(), studyDS(), isMultiFile ) :
             SalomeApp_Application::studyMgr()->SaveAs     ( theFileName.latin1(), studyDS(), isMultiFile );
 
-  bool res = CAM_Study::saveDocumentAs( theFileName );  //SRN: BugID IPAL9377, removed usage of uninitialized variable <res>
-
-  if ( res )
-    emit saved( this );
-
   return res;
 }
 
 //=======================================================================
 // name    : saveDocument
-/*! Purpose : Save document */
+/*! Purpose : Save document*/
 //=======================================================================
 void SalomeApp_Study::saveDocument()
 {
-  ModelList list; dataModels( list );
-
-  SalomeApp_DataModel* aModel = (SalomeApp_DataModel*)list.first();
-  for ( ; aModel; aModel = (SalomeApp_DataModel*)list.next() )
-    aModel->save();
-
-  CAM_Study::saveDocument();
-
   // save SALOMEDS document
   SUIT_ResourceMgr* resMgr = application()->resourceMgr();
   if( !resMgr )
     return;
+  LightApp_Study::saveDocument();
   
   bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false ),
        isAscii = resMgr->booleanValue( "Study", "ascii_file", true );
   isAscii ? SalomeApp_Application::studyMgr()->SaveASCII( studyDS(), isMultiFile ) :
             SalomeApp_Application::studyMgr()->Save     ( studyDS(), isMultiFile );
-
-  emit saved( this );
 }
 
 //================================================================
 // Function : closeDocument
-/*! Purpose  : Close document */
+/*! Purpose  : Close document*/
 //================================================================
 void SalomeApp_Study::closeDocument(bool permanently)
 {
-  // Inform everybody that this study is going to close when it's most safe to,
-  // i.e. in the very beginning
-  emit closed( this );
+  LightApp_Study::closeDocument(permanently);
 
   // close SALOMEDS document
   _PTR(Study) studyPtr = studyDS();
@@ -217,25 +169,18 @@ void SalomeApp_Study::closeDocument(bool permanently)
     SALOMEDSClient_Study* aStudy = 0;
     setStudyDS( _PTR(Study)(aStudy) );
   }
-
-  CAM_Study::closeDocument(permanently);
 }
 
 //================================================================
 // Function : isModified
-/*! Purpose  : Check data model on modifications.*/
+// Purpose  : 
 //================================================================
 bool SalomeApp_Study::isModified() const
 {
   bool isAnyChanged = studyDS() && studyDS()->IsModified();
-  ModelList list; dataModels( list );
+  if (!isAnyChanged)
+    isAnyChanged = LightApp_Study::isModified();
 
-  SalomeApp_DataModel* aModel = 0;
-  for ( QPtrListIterator<CAM_DataModel> it( list ); it.current() && !isAnyChanged; ++it ){
-    aModel = dynamic_cast<SalomeApp_DataModel*>( it.current() );
-    if ( aModel )
-      isAnyChanged = aModel->isModified();
-  }
   return isAnyChanged; 
 }
 
@@ -246,14 +191,9 @@ bool SalomeApp_Study::isModified() const
 bool SalomeApp_Study::isSaved() const
 {
   bool isAllSaved = studyDS() && studyDS()->GetPersistentReference().size();
-  ModelList list; dataModels( list );
+  if (!isAllSaved)
+    isAllSaved = LightApp_Study::isModified();
 
-  SalomeApp_DataModel* aModel = 0;
-  for ( QPtrListIterator<CAM_DataModel> it( list ); it.current() && isAllSaved; ++it ){
-    aModel = dynamic_cast<SalomeApp_DataModel*>( it.current() );
-    if ( aModel )
-      isAllSaved = aModel->isSaved();
-  }
   return isAllSaved; 
 }
 
@@ -275,20 +215,23 @@ void SalomeApp_Study::dataModelInserted (const CAM_DataModel* dm)
   CAM_Study::dataModelInserted(dm);
 
   // Create SComponent for module, using default engine (CORBAless)
-  SalomeApp_Module* aModule = (SalomeApp_Module*)(dm->module());
-  if (aModule) {
-    QString anEngineIOR = aModule->engineIOR();
-    if (anEngineIOR.isEmpty()) { // CORBAless module
-      // Check SComponent existance
-      _PTR(SComponent) aComp = studyDS()->FindComponent(dm->module()->name());
-      if (!aComp) {
-        // Create SComponent
-        _PTR(StudyBuilder) aBuilder = studyDS()->NewBuilder();
-        aComp = aBuilder->NewComponent(dm->module()->name());
-
-        // Set default engine IOR
-        aBuilder->DefineComponentInstance(aComp, SalomeApp_Application::defaultEngineIOR().latin1());
-      }
+  //  SalomeApp_Module* aModule = (SalomeApp_Module*)(dm->module());
+  SalomeApp_Module* aModule = dynamic_cast<SalomeApp_Module*>( dm->module() );
+  // 1. aModule == 0 means that this is a light module (no CORBA enigine)
+  // 2. engineIOR == "" means this is a full module but without CORBA engine
+  if (!aModule || aModule->engineIOR().isEmpty()) {
+    // Check SComponent existance
+    _PTR(Study) aStudy = studyDS();
+    if (!aStudy) 
+      return;
+    _PTR(SComponent) aComp = aStudy->FindComponent(dm->module()->name());
+    if (!aComp) {
+      // Create SComponent
+      _PTR(StudyBuilder) aBuilder = studyDS()->NewBuilder();
+      aComp = aBuilder->NewComponent(dm->module()->name());
+      
+      // Set default engine IOR
+      aBuilder->DefineComponentInstance(aComp, SalomeApp_Application::defaultEngineIOR().latin1());
     }
   }
 }
@@ -301,13 +244,64 @@ bool SalomeApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm
   if (!dm)
     return false;
 
-  SalomeApp_DataModel* aDM = (SalomeApp_DataModel*)(dm);
-  if (aDM && aDM->open(studyName, this)) {
+  //  SalomeApp_DataModel* aDM = (SalomeApp_DataModel*)(dm);
+  SalomeApp_Module* aModule = dynamic_cast<SalomeApp_Module*>( dm->module() );
+  _PTR(Study)       aStudy = studyDS(); // shared_ptr cannot be used here
+  _PTR(SComponent)  aSComp;
+  QString anEngine;
+  // 1. aModule == 0 means that this is a light module (no CORBA enigine)
+  // 2. engineIOR == "" means this is a full module but without CORBA engine
+  if (!aModule || aModule->engineIOR().isEmpty()) {
+    anEngine = SalomeApp_Application::defaultEngineIOR();
+    aSComp = aStudy->FindComponent(dm->module()->name());
+  }
+  else {
+    SalomeApp_DataModel* aDM = dynamic_cast<SalomeApp_DataModel*>( dm );
+    if ( aDM ) {
+      QString anId = aDM->getRootEntry( this );
+      if ( anId.isEmpty() )
+        return true; // Probably nothing to load
+
+      if ( aDM ) {
+        anEngine = aDM->getModule()->engineIOR();
+        if ( anEngine == "-1" ) {
+          // Module doesn't have a CORBA engine and doesn't use
+          // a default one -> SALOMEDS persistence cannot be used
+          return false;
+        }
+      }
+      if ( anEngine.isEmpty() ) {
+        // Module use a default engine
+        //TODO: deside, if the below code has to be copyed in a light data model to avoid bulding of data tree twice
+        anEngine = SalomeApp_Application::defaultEngineIOR();
+      }
+      aSComp = aStudy->FindComponentID( std::string( anId.latin1() ) );
+    }
+  }
+  if ( aSComp ) {
+    _PTR(StudyBuilder) aBuilder( aStudy->NewBuilder() );
+    if ( aBuilder ) {
+      try {
+        aBuilder->LoadWith( aSComp, std::string( anEngine.latin1() ) );
+      }
+      catch( const SALOME::SALOME_Exception& ) {
+        // Oops, something went wrong while loading -> return an error
+        return false;
+      }
+      // Something has been read -> create data model tree
+      // aDM->buildTree( aSComp, 0, this );
+    }
+  } else {
+    // Don't return false here, for there might be no data
+    // for a given component in the study yet
+  }
+  if (dm && dm->open(studyName, this)) {
     // Something has been read -> create data model tree
-    aDM->update(NULL, this);
+    LightApp_DataModel* aDM = dynamic_cast<LightApp_DataModel*>( dm );
+    if ( aDM )
+      aDM->update(NULL, this);
     return true;
   }
-
   return false;
 }
 
@@ -333,6 +327,72 @@ QString SalomeApp_Study::newStudyName() const
   return newName;
 }
 
+//================================================================
+// Function : GetListOfFiles
+/*! Purpose  : to be used by CORBAless modules*/
+//================================================================
+std::vector<std::string> SalomeApp_Study::GetListOfFiles() const
+{
+  SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
+  if (aDefaultEngine) {
+    const char* aName = ((CAM_Application*)application())->activeModule()->name();
+    return aDefaultEngine->GetListOfFiles(id(), aName);
+  }
+
+  std::vector<std::string> aListOfFiles;
+  return aListOfFiles;
+}
+
+//================================================================
+// Function : SetListOfFiles
+/*! Purpose  : to be used by CORBAless modules*/
+//================================================================
+void SalomeApp_Study::SetListOfFiles (const std::vector<std::string> theListOfFiles)
+{
+  SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance();
+  if (aDefaultEngine) {
+    const char* aName = ((CAM_Application*)application())->activeModule()->name();
+    aDefaultEngine->SetListOfFiles(theListOfFiles, id(), aName);
+  }
+}
+
+//================================================================
+// Function : GetTmpDir
+/*! Purpose  : to be used by CORBAless modules*/
+//================================================================
+std::string SalomeApp_Study::GetTmpDir (const char* theURL,
+                                            const bool  isMultiFile)
+{
+  std::string anURLDir = SALOMEDS_Tool::GetDirFromPath(theURL);
+  std::string aTmpDir = isMultiFile ? anURLDir : SALOMEDS_Tool::GetTmpDir();
+  return aTmpDir;
+}
+
+//================================================================
+// Function : RemoveTemporaryFiles
+/*! Purpose  : to be used by CORBAless modules*/
+//================================================================
+void SalomeApp_Study::RemoveTemporaryFiles (const bool isMultiFile) const
+{
+  if (isMultiFile)
+    return;
+
+  std::vector<std::string> aListOfFiles = GetListOfFiles();
+  if (aListOfFiles.size() > 0) {
+    std::string aTmpDir = aListOfFiles[0];
+
+    const int n = aListOfFiles.size() - 1;
+    SALOMEDS::ListOfFileNames_var aSeq = new SALOMEDS::ListOfFileNames;
+    aSeq->length(n);
+    for (int i = 0; i < n; i++)
+      aSeq[i] = CORBA::string_dup(aListOfFiles[i + 1].c_str());
+
+    SALOMEDS_Tool::RemoveTemporaryFiles(aTmpDir.c_str(), aSeq.in(), true);
+  }
+}
+
+// END: methods to be used by CORBAless modules
+
 void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj )
 {
   _PTR(StudyBuilder) sb = studyDS()->NewBuilder();
@@ -347,3 +407,4 @@ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj )
     }
   }
 }
+
index 1404446f4d17211628aa675537d8e46a60de9da0..b75dd4f084971fca6ada95691c6cd8e14745b0ce 100644 (file)
@@ -3,7 +3,7 @@
 
 #include "SalomeApp.h"
 
-#include <CAM_Study.h>
+#include <LightApp_Study.h>
 
 #ifdef WIN32
 #pragma warning( disable:4251 )
@@ -11,7 +11,7 @@
 
 #include "SALOMEDSClient.hxx"
 
-class SALOMEAPP_EXPORT SalomeApp_Study : public CAM_Study
+class SALOMEAPP_EXPORT SalomeApp_Study : public LightApp_Study
 {
   Q_OBJECT
 
@@ -35,15 +35,15 @@ public:
 
   _PTR(Study)         studyDS() const;
 
+  virtual std::vector<std::string> GetListOfFiles () const;
+  virtual void        SetListOfFiles (const std::vector<std::string> theListOfFiles);
+  virtual std::string GetTmpDir (const char* theURL,
+                                 const bool  isMultiFile);
+  virtual void        RemoveTemporaryFiles (const bool isMultiFile) const;
+
   // to delete all references to object, whose have the same component
   void                deleteReferencesTo( _PTR( SObject ) );
 
-signals:
-  void                saved( SUIT_Study* );
-  void                opened( SUIT_Study* );
-  void                closed( SUIT_Study* );
-  void                created( SUIT_Study* );
-
 protected:
   virtual void        dataModelInserted( const CAM_DataModel* );
   virtual bool        openDataModel( const QString&, CAM_DataModel* );
@@ -56,7 +56,6 @@ private:
   _PTR(Study)         myStudyDS;
 };
 
-
 #ifdef WIN32
 #pragma warning( default:4251 )
 #endif
index 92216b6675fcfa0740a217a53bae50f6d124acee..445ec3f9d06a36305baf75ecf9701d92ae1dab52 100644 (file)
@@ -1,6 +1,6 @@
 #include "SalomeApp_TypeFilter.h"
 
-#include "SalomeApp_DataOwner.h"
+#include "LightApp_DataOwner.h"
 #include "SalomeApp_Study.h"
 
 #include <SALOMEDS_SObject.hxx>
@@ -26,7 +26,7 @@ SalomeApp_TypeFilter::~SalomeApp_TypeFilter()
 */
 bool SalomeApp_TypeFilter::isOk( const SUIT_DataOwner* sOwner ) const
 {  
-  const SalomeApp_DataOwner* owner = dynamic_cast<const SalomeApp_DataOwner*> ( sOwner );
+  const LightApp_DataOwner* owner = dynamic_cast<const LightApp_DataOwner*> ( sOwner );
 
   SalomeApp_Study* aDoc =  getStudy();
   if (owner && aDoc && aDoc->studyDS())