]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Add shaper standalone executable without CORBA
authorrraphael <raphael.raphael@c-s.fr>
Mon, 8 Feb 2021 18:30:53 +0000 (19:30 +0100)
committerrraphael <raphael.raphael@c-s.fr>
Mon, 8 Feb 2021 18:35:15 +0000 (19:35 +0100)
67 files changed:
src/CMakeLists.txt
src/LightApp/LightApp_Application.cxx
src/SUIT/SUIT_Session.cxx
src/SUIT/SUIT_Session.h
src/SalomeApp/CMakeLists.txt
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_DoubleSpinBox.cxx
src/SalomeApp/SalomeApp_ExceptionHandler.cxx
src/SalomeApp/SalomeApp_ExitDlg.cxx
src/SalomeApp/SalomeApp_ExitDlg.h
src/SalomeApp/SalomeApp_IntSpinBox.cxx
src/SalomeApp/SalomeApp_Module.cxx
src/SalomeApp/SalomeApp_NoteBook.cxx
src/SalomeApp/SalomeApp_NoteBook.h
src/SalomeApp/SalomeApp_Study.cxx
src/SalomeApp/SalomeApp_Study.h
src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx
src/SalomeApp/SalomeApp_StudyPropertiesDlg.h
src/SalomeApp/SalomeApp_Tools.cxx
src/SalomeApp/SalomeApp_Tools.h
src/SalomeApp/SalomeApp_TypeFilter.cxx
src/SalomeApp/SalomeApp_VisualState.cxx
src/Session/SALOME_Session_Server.cxx
src/Shaper/CMakeLists.txt [new file with mode: 0644]
src/Shaper/Shaper.cxx [new file with mode: 0644]
src/ShaperApp/CMakeLists.txt [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/CMakeLists.txt [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImpl.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptCopyAttribute.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptTypes.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.cxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.hxx [new file with mode: 0644]
src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_definitions.hxx [new file with mode: 0644]
src/ShaperApp/SalomeApp_EngineImpl.cxx [new file with mode: 0644]
src/ShaperApp/SalomeApp_EngineImpl.h [new file with mode: 0644]
src/ShaperApp/resources/LightShaperApp.xml [new file with mode: 0644]
src/ShaperApp/resources/LightShaperApp_images.ts [new file with mode: 0644]
src/ShaperApp/resources/LightShaperApp_msg_en.ts [new file with mode: 0644]
src/ShaperApp/resources/LightShaperApp_msg_fr.ts [new file with mode: 0644]
src/ShaperApp/resources/LightShaperApp_msg_ja.ts [new file with mode: 0644]
src/ShaperApp/resources/ShaperApp.xml [new file with mode: 0644]
src/ShaperApp/resources/ShaperApp_images.ts [new file with mode: 0644]
src/ShaperApp/resources/ShaperApp_msg_en.ts [new file with mode: 0644]
src/ShaperApp/resources/ShaperApp_msg_fr.ts [new file with mode: 0644]
src/ShaperApp/resources/ShaperApp_msg_ja.ts [new file with mode: 0644]
src/ShaperApp/resources/shaper.png [new file with mode: 0644]
src/TOOLSGUI/ToolsGUI.h

index b21cb8e7e3cffbaa16ac8a5eb5e2c4a3b3c2cf79..22677f1a4d3d0d82f121858b7f7f3cdb59065c62 100644 (file)
@@ -154,3 +154,7 @@ IF(NOT SALOME_LIGHT_ONLY)
   ADD_SUBDIRECTORY(GuiHelpers)
   ADD_SUBDIRECTORY(TreeData)
 ENDIF(NOT SALOME_LIGHT_ONLY)
+
+# package without CORBA (enabled with directive DISABE_ORB defined in ShaperApp/CMakeLists.txt)
+ADD_SUBDIRECTORY(ShaperApp)
+ADD_SUBDIRECTORY(Shaper)
index b0d8f7f8fe388a4e77d2e15a8e151fc8183dcbdc..49152a173776592d5c4ed64146a3683a5c2fb58b 100644 (file)
@@ -2236,14 +2236,15 @@ LightApp_Preferences* LightApp_Application::preferences( const bool crt ) const
     _prefs_ = new LightApp_Preferences( resourceMgr() );
     that->createPreferences( _prefs_ );
     qAddPostRoutine( LightAppCleanUpAppResources );
-  }
 
-  that->myPrefs = _prefs_;
 
-  connect( myPrefs, SIGNAL( preferenceChanged( QString&, QString&, QString& ) ),
-           this, SLOT( onPreferenceChanged( QString&, QString&, QString& ) ), Qt::UniqueConnection );
-  connect( myPrefs, SIGNAL( resetToDefaults() ),
-           this, SIGNAL( preferenceResetToDefaults() ), Qt::UniqueConnection );
+    that->myPrefs = _prefs_;
+
+    connect( myPrefs, SIGNAL( preferenceChanged( QString&, QString&, QString& ) ),
+             this, SLOT( onPreferenceChanged( QString&, QString&, QString& ) ), Qt::UniqueConnection );
+    connect( myPrefs, SIGNAL( resetToDefaults() ),
+             this, SIGNAL( preferenceResetToDefaults() ), Qt::UniqueConnection );
+   }
 
   if ( !crt )
     return myPrefs;
index ce7bf7832c8b9c2ac784cf5ea4f83358a0b5894b..19a5baa635d31c1b868a5cad7d79132d8d9a1c6d 100644 (file)
@@ -218,6 +218,11 @@ SUIT_ResourceMgr* SUIT_Session::resourceMgr() const
   return myResMgr;
 }
 
+SUIT_ResourceMgr* & SUIT_Session::resourceMgr()
+{
+  return myResMgr;
+}
+
 /*!
   Removes the application from the list of launched applications.
   If it is a last application the session will be closed.
@@ -363,3 +368,37 @@ void SUIT_Session::onApplicationActivated( SUIT_Application* app )
 {
   myActiveApp = app;
 }
+
+/*!
+ * \return name of the main Application launched by the executable
+ * -> SalomeApp, ShaperApp
+ */
+std::string SUIT_Session::executableAppName() const
+{
+  return myExecutableAppName;
+}
+
+/*!
+ * \return static name of the shaper executable application
+ */
+std::string SUIT_Session::shaperAppName() const
+{
+  return "ShaperApp";
+}
+
+/*!
+ * \return static name of the shaper executable application
+ */
+std::string SUIT_Session::salomeAppName() const
+{
+  return "SalomeApp";
+}
+
+/*!
+ * \brief sets thename of the main Application launched by the executable
+ * -> SalomeApp, ShaperApp
+ */
+void  SUIT_Session::setExecutableAppName(const std::string & appName)
+{
+  myExecutableAppName = appName;
+}
index d04a8ef4ecde15733fe041d7d26eb61616244c1d..721b1ea1c6b2258bd6dc92f31479c4e079095594 100644 (file)
@@ -74,6 +74,7 @@ public:
   SUIT_Application*            activeApplication() const;
 
   SUIT_ResourceMgr*            resourceMgr() const;
+  SUIT_ResourceMgr*&           resourceMgr();
 
   void                         closeSession( int mode = ASK, int flags = 0 );
   int                          exitFlags() const;
@@ -82,6 +83,11 @@ public:
 
   void                         insertApplication( SUIT_Application* );
 
+  std::string                  executableAppName() const;
+  std::string                  shaperAppName() const;
+  std::string                  salomeAppName() const;
+  void                         setExecutableAppName(const std::string & appName);
+
 signals:
   void                         applicationClosed( SUIT_Application* );
 
@@ -112,6 +118,7 @@ private:
 
   int                          myExitStatus;
   int                          myExitFlags;
+  std::string                  myExecutableAppName;
 };
 
 #endif
index 10ae94a8101b5aa2c2677218d61d196ffe10c570..6c6ba2db082f236a0d753fb65ee92161027cbe70 100644 (file)
@@ -124,37 +124,41 @@ ENDIF()
 # --- headers ---
 
 # header files / to be processed by moc
-SET(_moc_HEADERS   
-  SalomeApp_Application.h
-  SalomeApp_CheckFileDlg.h
-  SalomeApp_DataModel.h
-  SalomeApp_DoubleSpinBox.h
-  SalomeApp_ExitDlg.h
-  SalomeApp_IntSpinBox.h
-  SalomeApp_ListView.h
-  SalomeApp_LoadStudiesDlg.h
-  SalomeApp_Module.h
-  SalomeApp_Study.h
-  SalomeApp_StudyPropertiesDlg.h
+SET(SalomeCommon_moc_HEADERS   
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Application.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_CheckFileDlg.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DataModel.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DoubleSpinBox.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ExitDlg.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_IntSpinBox.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ListView.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_LoadStudiesDlg.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Module.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Study.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_StudyPropertiesDlg.h
 )
 
+SET(_moc_HEADERS ${SalomeCommon_moc_HEADERS})
+
 IF(SALOME_USE_PYCONSOLE)
   LIST(APPEND _moc_HEADERS SalomeApp_NoteBook.h)
 ENDIF()
 
 # header files / no moc processing
-SET(_other_HEADERS
-  SalomeApp.h
-  SalomeApp_DataObject.h
-  SalomeApp_Engine_i.h
-  SalomeApp_ExceptionHandler.h
-  SalomeApp_Filter.h
-  SalomeApp_ImportOperation.h
-  SalomeApp_Tools.h
-  SalomeApp_TypeFilter.h
-  SalomeApp_VisualState.h
+SET(SalomeCommon_other_HEADERS
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DataObject.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ExceptionHandler.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Filter.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ImportOperation.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Tools.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_TypeFilter.h
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_VisualState.h
 )
 
+SET(_other_HEADERS ${SalomeCommon_other_HEADERS}
+  SalomeApp_Engine_i.h)
+
 IF(SALOME_USE_PYCONSOLE)
   LIST(APPEND _other_HEADERS SalomeApp_PyInterp.h)
 ENDIF()
@@ -183,28 +187,35 @@ SET(_other_RESOURCES
 QT_WRAP_MOC(_moc_SOURCES ${_moc_HEADERS})
 
 # sources / static
-SET(_other_SOURCES
-  SalomeApp_Application.cxx
-  SalomeApp_CheckFileDlg.cxx
-  SalomeApp_DataModel.cxx
-  SalomeApp_DataObject.cxx
-  SalomeApp_DoubleSpinBox.cxx
-  SalomeApp_Engine_i.cxx
-  SalomeApp_ExceptionHandler.cxx
-  SalomeApp_ExitDlg.cxx
-  SalomeApp_Filter.cxx
-  SalomeApp_ImportOperation.cxx
-  SalomeApp_IntSpinBox.cxx
-  SalomeApp_ListView.cxx
-  SalomeApp_LoadStudiesDlg.cxx
-  SalomeApp_Module.cxx
-  SalomeApp_Study.cxx
-  SalomeApp_StudyPropertiesDlg.cxx
-  SalomeApp_Tools.cxx
-  SalomeApp_TypeFilter.cxx
-  SalomeApp_VisualState.cxx
+SET(SalomeCommon_other_SOURCES
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Application.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_CheckFileDlg.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DataModel.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DataObject.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_DoubleSpinBox.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ExceptionHandler.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ExitDlg.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Filter.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ImportOperation.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_IntSpinBox.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_ListView.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_LoadStudiesDlg.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Module.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Study.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_StudyPropertiesDlg.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_Tools.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_TypeFilter.cxx
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_VisualState.cxx
 )
 
+SET(_other_SOURCES ${SalomeCommon_other_SOURCES}
+ SalomeApp_Engine_i.cxx)
+
+# export for Shaper application
+SET(SalomeCommon_moc_HEADERS ${SalomeCommon_moc_HEADERS} PARENT_SCOPE) 
+SET(SalomeCommon_other_SOURCES ${SalomeCommon_other_SOURCES} PARENT_SCOPE)
+SET(SalomeCommon_other_HEADERS ${SalomeCommon_other_HEADERS} PARENT_SCOPE)
+
 IF(SALOME_USE_PYCONSOLE)
   LIST(APPEND _other_SOURCES SalomeApp_PyInterp.cxx SalomeApp_NoteBook.cxx)
 ENDIF()
index bfb209efa370c4ea8660a88c7c3e3346e2f661ac..3f0e8f30c2797aea37542513f2c41c37762162fe 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 //#include <OB_ListItem.h>
 
 
+#ifndef DISABLE_ORB
 #include <Utils_ORB_INIT.hxx>
 #include <Utils_SINGLETON.hxx>
 #include <SALOME_LifeCycleCORBA.hxx>
+#endif
 
 #include <QApplication>
 #include <QWidget>
@@ -96,7 +98,9 @@
 #include <QMenu>
 #include <QtDebug>
 
+#ifndef DISABLE_ORB
 #include <SALOMEDSClient_ClientFactory.hxx>
+#endif
 #include <Basics_Utils.hxx>
 
 #include <SALOME_ListIO.hxx>
@@ -336,10 +340,12 @@ void SalomeApp_Application::createActions()
                 tr( "MEN_DESK_CATALOG_GENERATOR" ), tr( "PRP_DESK_CATALOG_GENERATOR" ),
                 Qt::ALT+Qt::SHIFT+Qt::Key_G, desk, false, this, SLOT( onCatalogGen() ) );
 
+#ifndef DISABLE_ORB
   //! Registry Display
   createAction( RegDisplayId, tr( "TOT_DESK_REGISTRY_DISPLAY" ),  QIcon(),
                 tr( "MEN_DESK_REGISTRY_DISPLAY" ), tr( "PRP_DESK_REGISTRY_DISPLAY" ),
                 /*Qt::SHIFT+Qt::Key_D*/0, desk, false, this, SLOT( onRegDisplay() ) );
+#endif
 
   createAction( ConnectId, tr( "TOT_DESK_CONNECT_STUDY" ), QIcon(),
                 tr( "MEN_DESK_CONNECT" ), tr( "PRP_DESK_CONNECT" ),
@@ -372,7 +378,9 @@ void SalomeApp_Application::createActions()
 
   int toolsMenu = createMenu( tr( "MEN_DESK_TOOLS" ), -1, MenuToolsId, 50 );
   createMenu( CatalogGenId, toolsMenu, 10, -1 );
+#ifndef DISABLE_ORB
   createMenu( RegDisplayId, toolsMenu, 10, -1 );
+#endif
   createMenu( separator(), toolsMenu, -1, 15, -1 );
 
   createExtraActions();
@@ -401,12 +409,17 @@ void SalomeApp_Application::onExit()
   //MessageLocker ml( myToIgnoreMessages );
 
   bool killServers = false;
+#ifdef DISABLE_ORB
+   killServers = true;
+#endif
   bool result = true;
 
   if ( exitConfirmation() ) {
     SalomeApp_ExitDlg dlg( desktop() );
     result = dlg.exec() == QDialog::Accepted;
+#ifndef DISABLE_ORB
     killServers = dlg.isServersShutdown();
+#endif
   }
 
   if ( result ) {
@@ -639,7 +652,11 @@ void SalomeApp_Application::onCopy()
       if( so )
       {
         try {
+#ifndef DISABLE_ORB
           stdDS->Copy(so);
+#else
+          //TODO stdDS->Copy(*so);
+#endif
           onSelectionChanged();
         }
         catch(...) {
@@ -677,7 +694,11 @@ void SalomeApp_Application::onPaste()
       if( so )
       {
         try {
+#ifndef DISABLE_ORB
           stdDS->Paste(so);
+#else
+          //TODO  stdDS->Paste(*so);
+#endif
           updateObjectBrowser( true );
           updateActions(); //SRN: BugID IPAL9377, case 3
         }
@@ -762,8 +783,13 @@ void SalomeApp_Application::onSelectionChanged()
      _PTR(SObject) so = getStudy()->FindObjectID(it.Value()->getEntry());
 
      if ( so ) {
+#ifndef DISABLE_ORB
        canCopy  = canCopy  || getStudy()->CanCopy(so);
        canPaste = canPaste || getStudy()->CanPaste(so);
+#else
+       //TODO   canCopy  = canCopy  || getStudy()->CanCopy(so);
+       //TODO canPaste = canPaste || getStudy()->CanPaste(so);
+#endif
      }
    }
 
@@ -782,7 +808,7 @@ void SalomeApp_Application::onDeleteInvalidReferences()
     return;
 
   _PTR(Study) aStudyDS = getStudy();
-  _PTR(StudyBuilder) aStudyBuilder = aStudyDS->NewBuilder();
+  auto aStudyBuilder = aStudyDS->NewBuilder();
   _PTR(SObject) anObj;
 
   for( SALOME_ListIteratorOfListIO it( aList ); it.More(); it.Next() )
@@ -966,7 +992,9 @@ void SalomeApp_Application::onDumpStudy( )
       bool res;
       {
         SUIT_OverrideCursor wc;
+#ifndef SHAPER_STANDALONE
         ensureShaperIsActivated();
+#endif
         res = appStudy->dump( aFileName, toPublish, isMultiFile, toSaveGUI );
       }
       if ( !res )
@@ -1000,7 +1028,7 @@ void SalomeApp_Application::onLoadScript( )
   if ( !aFile.isEmpty() )
   {
 
-    QString command = QString("exec(compile(open('%1', 'rb').read(), '%1', 'exec'))").arg(aFile);
+    QString command = QString("exec(open(\"%1\", \"rb\").read())").arg(aFile);
 
 #ifndef DISABLE_PYCONSOLE
     PyConsole_Console* pyConsole = pythonConsole();
@@ -1341,6 +1369,7 @@ void SalomeApp_Application::moduleActionSelected( const int id )
   }
 }
 
+#ifndef DISABLE_ORB
 /*!Gets CORBA::ORB_var*/
 CORBA::ORB_var SalomeApp_Application::orb()
 {
@@ -1354,19 +1383,25 @@ CORBA::ORB_var SalomeApp_Application::orb()
 
   return _orb;
 }
+#endif
 
 /*!Create and return SALOMEDS_Study.*/
 _PTR(Study) SalomeApp_Application::getStudy()
 {
   static _PTR(Study) _study;
   if(!_study) {
+#ifndef DISABLE_ORB
     CORBA::Object_var aSObject = namingService()->Resolve("/Study");
     SALOMEDS::Study_var aStudy = SALOMEDS::Study::_narrow(aSObject);
     _study = ClientFactory::Study(aStudy);
+#else
+    _study = _PTR(Study)( new _CLASS(Study));
+#endif
   }
   return _study;
 }
 
+#ifndef DISABLE_ORB
 /*!Create and return SALOME_NamingService.*/
 SALOME_NamingService* SalomeApp_Application::namingService()
 {
@@ -1380,6 +1415,7 @@ SALOME_LifeCycleCORBA* SalomeApp_Application::lcc()
   static SALOME_LifeCycleCORBA _lcc( namingService() );
   return &_lcc;
 }
+#endif
 
 /*!Private SLOT. On preferences.*/
 void SalomeApp_Application::onProperties()
@@ -1388,7 +1424,7 @@ void SalomeApp_Application::onProperties()
   if( !study )
     return;
 
-  _PTR(StudyBuilder) SB = study->studyDS()->NewBuilder();
+  auto SB = study->studyDS()->NewBuilder();
   SB->NewCommand();
 
   SalomeApp_StudyPropertiesDlg aDlg( desktop() );
@@ -1442,8 +1478,8 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QMenu* thePop
     if( it.Value()->hasEntry() )
     {
       _PTR(SObject) aSObject = getStudy()->FindObjectID( it.Value()->getEntry() ), aRefObj = aSObject;
-      while( aRefObj && aRefObj->ReferencedObject( anObj ) )
-        aRefObj = anObj;
+       while( aRefObj && aRefObj->ReferencedObject( anObj ) )
+         aRefObj = anObj;
 
       if( aRefObj && aRefObj!=aSObject && QString( aRefObj->GetName().c_str() ).isEmpty() )
         isInvalidRefs = true;
@@ -1473,7 +1509,7 @@ void SalomeApp_Application::contextMenuPopup( const QString& type, QMenu* thePop
         _PTR( GenericAttribute ) anAttr;
         std::string auid = "AttributeUserID";
         auid += Kernel_Utils::GetGUID(Kernel_Utils::ObjectdID);
-        if ( aSO->FindAttribute( anAttr, auid ) ) {
+           if ( aSO->FindAttribute( anAttr, auid ) ) {
           _PTR(AttributeUserID) aAttrID = anAttr;
           QString aId = aAttrID->Value().c_str();
           if ( myExtActions.contains( aId ) ) {
@@ -1507,9 +1543,15 @@ void SalomeApp_Application::updateObjectBrowser( const bool updateModels )
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
   if ( study )
   {
+#ifndef DISABLE_ORB
     for ( _PTR(SComponentIterator) it ( getStudy()->NewComponentIterator() ); it->More(); it->Next() )
     {
       _PTR(SComponent) aComponent ( it->Value() );
+#else
+    for ( _PTR(SComponentIterator) it ( getStudy()->GetNewComponentIterator()); it->More(); it->Next() )
+    {
+      _PTR(SComponent) aComponent ( it->GetValue() );
+#endif
 
 #ifndef WITH_SALOMEDS_OBSERVER
       // with GUI observers this check is not needed anymore
@@ -1539,6 +1581,7 @@ void SalomeApp_Application::onCatalogGen()
   aDlg.exec();
 }
 
+#ifndef DISABLE_ORB
 /*!Display Registry Display dialog */
 void SalomeApp_Application::onRegDisplay()
 {
@@ -1548,6 +1591,7 @@ void SalomeApp_Application::onRegDisplay()
   regWnd->raise();
   regWnd->activateWindow();
 }
+#endif
 
 /*!find original object by double click on item */
 void SalomeApp_Application::onDblClick( SUIT_DataObject* theObj )
@@ -1966,6 +2010,7 @@ bool SalomeApp_Application::updateStudy()
 
   int savePoint;
   _PTR(AttributeParameter) ap;
+#ifndef DISABLE_ORB
   _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
   if(ip->isDumpPython()) ip->setDumpPython(); //Unset DumpPython flag.
   if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method
@@ -1973,6 +2018,15 @@ bool SalomeApp_Application::updateStudy()
     savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point
   }
   bool ok = getStudy()->DumpStudy( aTmpDir.toStdString(), aScriptName.toStdString(), toPublish, isMultiFile );
+#else
+  _PTR(IParameters) ip; //TODO = ClientFactory::getIParameters(ap);
+  //TODO if(ip->isDumpPython()) ip->setDumpPython(); //Unset DumpPython flag.
+  if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method
+    //TODO ip->setDumpPython();
+    savePoint = SalomeApp_VisualState( this ).storeState(); //SRN: create a temporary save point
+  }
+  bool ok = 0; //TODO getStudy()->DumpStudy( aTmpDir.toStdString(), aScriptName.toStdString(), toPublish, isMultiFile );
+#endif
   if ( toSaveGUI )
     study->removeSavePoint(savePoint); //SRN: remove the created temporary save point.
 
@@ -2115,6 +2169,7 @@ PyConsole_Interp* SalomeApp_Application::createPyInterp()
 
 #endif // DISABLE_PYCONSOLE
 
+#ifndef SHAPER_STANDALONE
 void SalomeApp_Application::ensureShaperIsActivated()
 {
   SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>(activeStudy());
@@ -2127,8 +2182,9 @@ void SalomeApp_Application::ensureShaperIsActivated()
     study->dataModels( models );
     for( int i = 0; i < models.count() && !shaperIsActive; i++ )
       shaperIsActive = models[i]->module()->moduleName() == "Shaper";
-       
+
     if (shaper && !shaperIsActive)
       onDesktopMessage("register_module_in_study/Shaper");
   }
 }
+#endif
index 5f4da65f06bd9b21f1a77be96a8107dc6b64948d..80d0b0ed90bce09bb37f4ae70b868cbc4d4ffece 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -34,6 +34,7 @@
 #include "SalomeApp.h"
 #include <LightApp_Application.h>
 
+#ifndef DISABLE_ORB
 #include <omniORB4/CORBA.h>
 
 //#include <SALOMEconfig.h>
@@ -41,6 +42,9 @@
 #include <SALOME_NamingService.hxx>
 
 #include "SALOMEDSClient.hxx"
+#else
+#include "SALOMEDSImplAdapt.hxx"
+#endif
 
 #include <QPointer>
 
@@ -50,7 +54,9 @@ class SalomeApp_Study;
 class SalomeApp_NoteBook;
 #endif
 class SUIT_Desktop;
+#ifndef DISABLE_ORB
 class SALOME_LifeCycleCORBA;
+#endif
 
 
 #ifdef WIN32
@@ -95,10 +101,14 @@ public:
 
   virtual bool                        checkExistingDoc();
 
+#ifndef DISABLE_ORB
   static CORBA::ORB_var               orb();
+#endif
   static _PTR(Study)                  getStudy();
+#ifndef DISABLE_ORB
   static SALOME_NamingService*        namingService();
   static SALOME_LifeCycleCORBA*       lcc();
+#endif
 
   SUIT_ViewManager*                   newViewManager(const QString&);
   void                                updateSavePointDataObjects( SalomeApp_Study* );
@@ -187,13 +197,17 @@ private slots:
   void                                onRestoreGUIState();
 
   void                                onCatalogGen();
+#ifndef DISABLE_ORB
   void                                onRegDisplay();
+#endif
   void                                onOpenWith();
   void                                onExtAction();
 
 private:
   void                                createExtraActions();
+#ifndef SHAPER_STANDALONE
   void                                ensureShaperIsActivated();
+#endif
 
 private:
 #ifndef DISABLE_PYCONSOLE
index e9b0f05e52f556d5c04c9d0b37003a27fbafc364..3c5644cb10bc143aa91a1507179f68b844a99b29 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <SUIT_TreeSync.h>
 #include <SUIT_DataObjectIterator.h>
 
+#ifndef DISABLE_ORB
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOME_Exception)
+#endif
 
 typedef _PTR(SObject)     kerPtr;
 typedef SUIT_DataObject*  suitPtr;
@@ -90,12 +92,12 @@ bool SalomeApp_DataModelSync::isCorrect( const kerPtr& so ) const
   QString name = so->GetName().c_str();
   _PTR( GenericAttribute ) anAttr;
   bool isDraw = true;
-  if ( so->FindAttribute(anAttr, "AttributeDrawable") ) 
+  if ( so->FindAttribute(anAttr, "AttributeDrawable") )
   {
     _PTR(AttributeDrawable) aAttrDraw = anAttr;
-    isDraw = aAttrDraw->IsDrawable(); 
+    isDraw = aAttrDraw->IsDrawable();
   }
-  bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) ) && isDraw;  
+  bool res = so && ( so->GetName().size() || so->ReferencedObject( refObj ) ) && isDraw;
   return res;
 }
 
@@ -194,16 +196,24 @@ QList<kerPtr> SalomeApp_DataModelSync::children( const kerPtr& obj ) const
 
   if ( expandable ) {
     // tmp??
-    _PTR(UseCaseBuilder) aUseCaseBuilder = myStudy->GetUseCaseBuilder();
+    auto aUseCaseBuilder = myStudy->GetUseCaseBuilder();
     if (aUseCaseBuilder->HasChildren(obj)) {
       _PTR(UseCaseIterator) it ( aUseCaseBuilder->GetUseCaseIterator( obj ) );
       for ( ; it->More(); it->Next() )
+#ifndef DISABLE_ORB
         ch.append( it->Value() );
+#else
+        ch.append( _PTR(SObject)(it->GetValue()) );
+#endif
     }
     else {
       _PTR(ChildIterator) it ( myStudy->NewChildIterator( obj ) );
       for ( ; it->More(); it->Next() )
+#ifndef DISABLE_ORB
         ch.append( it->Value() );
+#else
+        ch.append( _PTR(SObject)(it->GetValue()) );
+#endif
     }
   }
 
@@ -286,7 +296,7 @@ bool SalomeApp_DataModel::open( const QString& name, CAM_Study* study, QStringLi
   if ( anId.isEmpty() )
     return true; // Probably nothing to load
 
-  _PTR(SComponent) aSComp ( SalomeApp_Application::getStudy()->FindComponentID( std::string( anId.toUtf8() ) ) );
+  _PTR(SComponent) aSComp ( SalomeApp_Application::getStudy()->FindComponentID( anId.toUtf8().data() ) );
   if ( aSComp )
     updateTree( aSComp, aDoc );
 
@@ -320,7 +330,7 @@ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study )
       studyRoot = dynamic_cast<LightApp_RootObject*>( aSStudy->root() );
       QString anId = getRootEntry( aSStudy );
       if ( !anId.isEmpty() ){ // if nothing is published in the study for this module -> do nothing
-        sobj = SalomeApp_Application::getStudy()->FindComponentID( std::string( anId.toUtf8() ) );
+        sobj = SalomeApp_Application::getStudy()->FindComponentID( anId.toUtf8().data() );
       }
     }
   }
@@ -330,7 +340,7 @@ void SalomeApp_DataModel::update( LightApp_DataObject*, LightApp_Study* study )
       aSStudy = dynamic_cast<SalomeApp_Study*>( studyRoot->study() ); // <study> value should not change here theoretically, but just to make sure
       if ( aSStudy ) {
         // modelRoot->object() cannot be reused here: it is about to be deleted by buildTree() soon
-        sobj = SalomeApp_Application::getStudy()->FindComponentID( std::string( modelRoot->entry().toUtf8() ) );
+        sobj = SalomeApp_Application::getStudy()->FindComponentID(modelRoot->entry().toUtf8().data() );
       }
     }
   }
@@ -423,7 +433,7 @@ QString SalomeApp_DataModel::getRootEntry( SalomeApp_Study* study ) const
       anEntry = anObj->entry();
   }
   else if ( study && study->studyDS() ) { // this works even if <myRoot> is null
-    _PTR(SComponent) aSComp( study->studyDS()->FindComponent( module()->name().toStdString() ) );
+    _PTR(SComponent) aSComp( study->studyDS()->FindComponent( module()->name().toUtf8().data() ) );
     if ( aSComp )
       anEntry = aSComp->GetID().c_str();
   }
index 945b392232a826f6472307a6f701c74c0bc5768b..a13cf00b53f70f31f39a55de0bdfa9469c1ad8f8 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include "SalomeApp.h"
 #include "LightApp_DataModel.h"
 
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient.hxx"
+#else
+#include "SALOMEDSImplAdapt.hxx"
+#endif
 
 class SalomeApp_Module;
 class SalomeApp_Study;
index b606e3a2145f21f2cee8b6faac34aa8c5e6d79b1..64079d12101949d4f7888e4d3ee167750a4a0aad 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -32,7 +32,9 @@
 #include <SUIT_Application.h>
 #include <SUIT_ResourceMgr.h>
 
+#ifndef DISABLE_ORB
 #include <SALOME_LifeCycleCORBA.hxx>
+#endif
 #include <Basics_Utils.hxx>
 
 #include <QObject>
@@ -225,7 +227,11 @@ QColor SalomeApp_DataObject::color( const ColorRole role, const int id ) const
       _PTR(GenericAttribute) anAttr;
       if ( myObject->FindAttribute( anAttr, "AttributeTextColor" ) ) {
         _PTR(AttributeTextColor) aColAttr = anAttr;
+#ifndef DISABLE_ORB
         c = QColor( (int)aColAttr->TextColor().R, (int)aColAttr->TextColor().G, (int)aColAttr->TextColor().B );
+#else
+        c = QColor( (int)aColAttr->TextColor()[0], (int)aColAttr->TextColor()[1], (int)aColAttr->TextColor()[2] );
+#endif
       }
     }
     break;
@@ -241,9 +247,15 @@ QColor SalomeApp_DataObject::color( const ColorRole role, const int id ) const
       _PTR(GenericAttribute) anAttr;
       if( myObject->FindAttribute ( anAttr, "AttributeTextHighlightColor") ) {
         _PTR(AttributeTextHighlightColor) aHighColAttr = anAttr;
-        c = QColor( (int)(aHighColAttr->TextHighlightColor().R), 
-                    (int)(aHighColAttr->TextHighlightColor().G), 
+#ifndef DISABLE_ORB
+        c = QColor( (int)(aHighColAttr->TextHighlightColor().R),
+                    (int)(aHighColAttr->TextHighlightColor().G),
                     (int)(aHighColAttr->TextHighlightColor().B));
+#else
+        c = QColor( (int)(aHighColAttr->TextHighlightColor()[0]),
+            (int)(aHighColAttr->TextHighlightColor()[1]),
+            (int)(aHighColAttr->TextHighlightColor()[2]));
+#endif
       }
     }
     break;
@@ -258,6 +270,7 @@ QColor SalomeApp_DataObject::color( const ColorRole role, const int id ) const
   return c;
 }
 
+#ifndef DISABLE_ORB
 /*!
   \brief Get data object tooltip for the specified column.
   \param id column id (not used)
@@ -301,6 +314,7 @@ QString SalomeApp_DataObject::toolTip( const int /*id*/ ) const
   
   return QString( "Object \'%1\', module \'%2\', ID=%3" ).arg( name() ).arg( componentDataType() ).arg( entry() );
 }
+#endif // DISABLE_ORB
 
 /*!
   \brief Get font to be used for data object rendering in the item views
@@ -401,7 +415,7 @@ bool SalomeApp_DataObject::hasChildren() const
   bool ok = false;
 
   // tmp??
-  _PTR(UseCaseBuilder) aUseCaseBuilder = SalomeApp_Application::getStudy()->GetUseCaseBuilder();
+  auto aUseCaseBuilder = SalomeApp_Application::getStudy()->GetUseCaseBuilder();
   if (aUseCaseBuilder->IsUseCaseNode(myObject)) {
     ok = aUseCaseBuilder->HasChildren(myObject);
     // TODO: check name as below?
@@ -409,7 +423,11 @@ bool SalomeApp_DataObject::hasChildren() const
   else {
     _PTR(ChildIterator) it ( SalomeApp_Application::getStudy()->NewChildIterator( myObject ) );
     for ( ; it->More() && !ok; it->Next() ) {
+#ifndef DISABLE_ORB
       _PTR(SObject) obj = it->Value();
+#else
+      _PTR(SObject) obj(it->GetValue());
+#endif
       if ( obj ) {
         _PTR(SObject) refObj;
         //if ( obj->ReferencedObject( refObj ) ) continue; // omit references
@@ -526,7 +544,7 @@ QString SalomeApp_DataObject::entry( const _PTR(SObject)& obj ) const
 /*!
   \brief Get data object value.
   \param obj data object
-  \return data object value or empty string if there is no 
+  \return data object value or empty string if there is no
   value associated to the object
 */
 QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const
@@ -543,7 +561,7 @@ QString SalomeApp_DataObject::value( const _PTR(SObject)& obj ) const
     std::string str = strAttr->Value();
     QString aStrings = fromUtf8( str );
     
-    //Special case to show NoteBook variables in the "Value" column of the OB 
+    //Special case to show NoteBook variables in the "Value" column of the OB
     bool ok = false;
     QStringList aSectionList = aStrings.split( "|" );
     if ( !aSectionList.isEmpty() )
@@ -654,10 +672,10 @@ SalomeApp_ModuleObject::SalomeApp_ModuleObject( SUIT_DataObject* parent )
 */
 SalomeApp_ModuleObject::SalomeApp_ModuleObject( const _PTR(SObject)& sobj, 
                                                 SUIT_DataObject* parent )
-: CAM_DataObject( parent ),
-  LightApp_DataObject( parent ),
-  SalomeApp_DataObject( sobj, parent ),
-  CAM_ModuleObject( parent )
+  : CAM_DataObject( parent ),
+    LightApp_DataObject( parent ),
+    SalomeApp_DataObject( sobj, parent ),
+    CAM_ModuleObject( parent )
 {
 }
 
@@ -668,12 +686,12 @@ SalomeApp_ModuleObject::SalomeApp_ModuleObject( const _PTR(SObject)& sobj,
   \param parent parent data object
 */
 SalomeApp_ModuleObject::SalomeApp_ModuleObject( CAM_DataModel* dm, 
-                                                const _PTR(SObject)& sobj, 
+                                                const _PTR(SObject)& sobj,
                                                 SUIT_DataObject* parent )
-: CAM_DataObject( parent ),
-  LightApp_DataObject( parent ),
-  SalomeApp_DataObject( sobj, parent ),
-  CAM_ModuleObject( dm, parent )
+  : CAM_DataObject( parent ),
+    LightApp_DataObject( parent ),
+    SalomeApp_DataObject( sobj, parent ),
+    CAM_ModuleObject( dm, parent )
 {
 }
 
index 9925ec384599022053a011bc0f36f7c4447ccb8f..513d68addcd280bb623ce2e6381ec7003274bb28 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include "SalomeApp.h"
 #include <LightApp_DataObject.h>
+#ifndef DISABLE_ORB
 #include <SALOMEDSClient.hxx>
+#else
+#include "SALOMEDSImplAdapt.hxx"
+#endif
 
 class SalomeApp_Study;
 
@@ -54,7 +58,9 @@ public:
   virtual QString        text( const int = NameId ) const;
   virtual QPixmap        icon( const int = NameId ) const;
   virtual QColor         color( const ColorRole, const int = NameId ) const;
+#ifndef DISABLE_ORB
   virtual QString        toolTip( const int = NameId ) const;
+#endif
   virtual QFont          font( const int = NameId ) const;
 
   virtual _PTR(SObject)  object() const;
@@ -86,7 +92,7 @@ private:
 };
 
 class SALOMEAPP_EXPORT SalomeApp_ModuleObject : public SalomeApp_DataObject,
-                                                public CAM_ModuleObject
+    public CAM_ModuleObject
 {
 public:
   SalomeApp_ModuleObject( SUIT_DataObject* = 0 );
@@ -100,7 +106,7 @@ public:
 };
 
 class SALOMEAPP_EXPORT SalomeApp_RootObject : public SalomeApp_DataObject,
-                                              public LightApp_RootObject
+    public LightApp_RootObject
 {
 public:
   SalomeApp_RootObject( LightApp_Study* );
index cf01510280d449bd763c403c6cdafa6070e70a3d..3e23d9d4ea6ef829169ddcbd9cd1abbef3ab93c4 100644 (file)
 
 #include <SUIT_Session.h>
 
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient_ClientFactory.hxx" 
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#endif
 
 #include <QKeyEvent>
 #include <QLineEdit>
index e9fa0f9af56aefd46718198ba665a99deda68b60..b883508239a37308445d504c882f18967716cbed 100644 (file)
@@ -21,7 +21,9 @@
 //
 
 #include "SalomeApp_ExceptionHandler.h"
+#ifndef DISABLE_ORB
 #include "Utils_CorbaException.hxx"
+#endif
 
 #include <OSD.hxx>
 
@@ -83,10 +85,12 @@ bool SalomeApp_ExceptionHandler::handle( QObject* o, QEvent* e )
   {
     showMessage( title, QString( e.GetMessageString() ) );
   }
+#ifndef DISABLE_ORB
   catch( SALOME::SALOME_Exception& ex)
   {
     showMessage( title, QString( ex.details.text));
   }
+#endif
 #ifndef WIN32
   catch(...)
   {
index 470784db108087aae2e4c08234b16fba4c5d3c9c..3fa1777ae50f0e614b663ee90c8d581ed1e0626c 100644 (file)
@@ -56,13 +56,17 @@ SalomeApp_ExitDlg::SalomeApp_ExitDlg( QWidget* parent )
   m_lDescr->setText( tr( "QUE_DESK_EXIT" ) );
   m_lDescr->setSizePolicy( QSizePolicy( QSizePolicy::Expanding, QSizePolicy::Expanding ) );
 
+#ifndef DISABLE_ORB
   myServersShutdown = new QCheckBox( tr( "SHUTDOWN_SERVERS" ), this );
   myServersShutdown->setChecked( true );
-  
+#endif
+
   QVBoxLayout* m_vl1 = new QVBoxLayout();
   m_vl1->setMargin( 10 ); m_vl1->setSpacing( 16 );
   m_vl1->addWidget( m_lDescr );
+#ifndef DISABLE_ORB
   m_vl1->addWidget( myServersShutdown );
+#endif
 
   QHBoxLayout* m_hl1 = new QHBoxLayout();
   m_hl1->setMargin( 0 ); m_hl1->setSpacing( 6 );
@@ -99,8 +103,10 @@ SalomeApp_ExitDlg::~SalomeApp_ExitDlg()
 /*!
  * \brief get the check box status
  */
+#ifndef DISABLE_ORB
 bool SalomeApp_ExitDlg::isServersShutdown()
 {
   return myServersShutdown->isChecked();
 }
+ #endif
+
index 64489595e61ddf75b13971c49fafaae6310e649a..a90caba1cd06ced0d9bc36674adb558c223c01a0 100644 (file)
@@ -38,10 +38,12 @@ public:
   SalomeApp_ExitDlg( QWidget* ) ;
   ~SalomeApp_ExitDlg();
 
+#ifndef DISABLE_ORB
   bool isServersShutdown();
 
 private:
   QCheckBox* myServersShutdown;
+#endif
 };
 
 #endif // SALOMEAPP_EXITDLG_H
index 7e242b51609f365bbd15768021764c3004928b24..8201aef113a219a6f7fba9c25086eb01ba61af98 100644 (file)
 
 #include <SUIT_Session.h>
 
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient_ClientFactory.hxx" 
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#endif
 
 #include <QKeyEvent>
 #include <QLineEdit>
index e6fe76ca712d95ce1d2e3a868ac25cb976ed1dcb..8d7939d193470cfb8dc19a36b9d341528ae26b20 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -39,7 +39,7 @@
 
 #include <SALOME_ListIO.hxx>
 #include <SALOME_InteractiveObject.hxx>
-          
+
 #include <LightApp_DataObject.h>
 
 #include <SUIT_Session.h>
@@ -101,23 +101,33 @@ void SalomeApp_Module::extractContainers( const SALOME_ListIO& source, SALOME_Li
     if( obj->hasEntry() )
     {
       _PTR(SObject) SO = study->studyDS()->FindObjectID( obj->getEntry() );
+#ifndef DISABLE_ORB
       if( SO && QString( SO->GetID().c_str() ) == SO->GetFatherComponent()->GetID().c_str() )
       { //component is selected
         _PTR(SComponent) SC( SO->GetFatherComponent() );
+#else
+      if( SO && QString( SO->GetID().c_str() ) == SO->GetFatherComponent().GetID().c_str() )
+      { //component is selected
+        _PTR(SComponent) SC( _CLASS(SComponent)(SO->GetFatherComponent()) );
+#endif
         _PTR(ChildIterator) anIter ( study->studyDS()->NewChildIterator( SC ) );
         anIter->InitEx( true );
         while( anIter->More() )
         {
+#ifndef DISABLE_ORB
           _PTR(SObject) valSO ( anIter->Value() );
+#else
+          _PTR(SObject) valSO ( anIter->GetValue() );
+#endif
           _PTR(SObject) refSO;
           if( !valSO->ReferencedObject( refSO ) )
           {
             QString id = valSO->GetID().c_str(),
-                    comp = SC->ComponentDataType().c_str(),
-                    val = valSO->GetName().c_str();
+                comp = SC->ComponentDataType().c_str(),
+                val = valSO->GetName().c_str();
 
             Handle( SALOME_InteractiveObject ) new_obj =
-              new SALOME_InteractiveObject( id.toUtf8(), comp.toLatin1(), val.toLatin1() );
+                new SALOME_InteractiveObject( id.toUtf8(), comp.toLatin1(), val.toLatin1() );
             dest.Append( new_obj );
           }
           anIter->Next();
index a3d7c0bea78b8d3adcb7cc63cdc7c6f7231fa4cf..9e524f8fb1967f914ea42c943215c3a1e7fb5278 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
@@ -280,6 +280,7 @@ bool NoteBook_TableRow::IsValidStringValue(const QString /*theValue*/)
   if( aNumRows == 0 )
     return true;
 
+#ifndef DISABLE_PYCONSOLE
   bool aLastRowIsEmpty = myParentTable->myRows[ aNumRows - 1 ]->GetName().isEmpty() &&
                          myParentTable->myRows[ aNumRows - 1 ]->GetValue().isEmpty();
 
@@ -303,6 +304,9 @@ bool NoteBook_TableRow::IsValidStringValue(const QString /*theValue*/)
   bool aResult = pyInterp->run(command.c_str());
   pyConsole->setIsSuppressOutput(oldSuppressValue);    
   return !aResult;
+#else
+  return true;
+#endif
 }
 
 ///////////////////////////////////////////////////////////////////////////
@@ -455,6 +459,7 @@ bool NoteBook_Table::IsValid() const
     if( !myRows[i]->CheckName() || !IsUniqueName( myRows[i] ) || !myRows[i]->CheckValue() )
       return false;
 
+#ifndef DISABLE_PYCONSOLE
   SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
   PyConsole_Console* pyConsole = app->pythonConsole();
   PyConsole_Interp* pyInterp = app->getPyInterp();
@@ -477,6 +482,9 @@ bool NoteBook_Table::IsValid() const
   pyConsole->setIsSuppressOutput(oldSuppressValue);    
 
   return !aResult;
+#else
+  return true;
+#endif
 }
 
 //============================================================================
@@ -876,6 +884,7 @@ void SalomeApp_NoteBook::onApply()
         }
       }
 
+#ifndef DISABLE_ORB
       if( NoteBook_TableRow::IsIntegerValue(aValue,&anIVal) )
         aStudy->SetInteger(std::string(aName.toUtf8().constData()),anIVal);
 
@@ -887,6 +896,10 @@ void SalomeApp_NoteBook::onApply()
     
       else
         aStudy->SetString(std::string(aName.toUtf8().constData()),aValue.toStdString());
+#else
+      return;
+      //TODO
+#endif
     }
   }
   myTable->ResetMaps();
@@ -923,5 +936,7 @@ void SalomeApp_NoteBook::onUpdateStudy()
   SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
   if(!app)
     return;
+#ifndef DISABLE_PYCONSOLE
   app->onUpdateStudy();
+#endif
 }
index 6658ae0259f171cb4e87e9b8b24622515bcb277a..3629bef75baeb537ef86c776a989ac4ac3d19788 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // This library is free software; you can redistribute it and/or
 // modify it under the terms of the GNU Lesser General Public
 
 #include "SalomeApp.h"
 
-#include "SALOMEDSClient_ClientFactory.hxx" 
+#ifndef DISABLE_ORB
+#include "SALOMEDSClient_ClientFactory.hxx"
 #include CORBA_SERVER_HEADER(SALOMEDS)
+#endif
 
 #include <QWidget>
 #include <QTableWidget>
index c680652323e8e61e629fc0da38948e23930b00cc..eb8a8e113ca60be107b122a08fc1aec8861b91eb 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -21,7 +21,7 @@
 //
 
 #ifndef DISABLE_PYCONSOLE
-  #include "SalomeApp_PyInterp.h" // WARNING! This include must be the first!
+#include "SalomeApp_PyInterp.h" // WARNING! This include must be the first!
 #endif
 
 #include "SalomeApp_Study.h"
 #include "SalomeApp_DataObject.h"
 #include "SalomeApp_DataModel.h"
 #include "SalomeApp_Application.h"
+#ifndef DISABLE_ORB
 #include "SalomeApp_Engine_i.h"
+#else
+#include "SalomeApp_EngineImpl.h"
+#include <Utils_SALOME_Exception.hxx>
+#endif
 #include "SalomeApp_VisualState.h"
 
 // temporary commented
@@ -55,6 +60,7 @@
 
 #include "SALOMEDS_Tool.hxx"
 
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient_ClientFactory.hxx"
 
 #include <SALOMEconfig.h>
@@ -120,230 +126,230 @@ public:
 
     switch(event) {
     case 1:
-      { //Add sobject
-        _PTR(SObject) aSObj = SalomeApp_Application::getStudy()->FindObjectID(theID);
-        _PTR(SComponent) aSComp = aSObj->GetFatherComponent();
+    { //Add sobject
+      _PTR(SObject) aSObj = SalomeApp_Application::getStudy()->FindObjectID(theID);
+      _PTR(SComponent) aSComp = aSObj->GetFatherComponent();
 
-        if (!aSComp || aSComp->IsNull()) {
-          MESSAGE("Entry " << theID << " has not father component. Problem ??");
+      if (!aSComp || aSComp->IsNull()) {
+        MESSAGE("Entry " << theID << " has not father component. Problem ??");
+        return;
+      }
+
+      // Mantis issue 0020136: Drag&Drop in OB
+      _PTR(UseCaseBuilder) aUseCaseBuilder = SalomeApp_Application::getStudy()->GetUseCaseBuilder();
+      if (aUseCaseBuilder->IsUseCaseNode(aSComp)) { // BEGIN: work with tree nodes structure
+        if (!aUseCaseBuilder->IsUseCaseNode(aSObj)) {
+          // tree node is not yet set, it is a normal situation
           return;
         }
 
-        // Mantis issue 0020136: Drag&Drop in OB
-        _PTR(UseCaseBuilder) aUseCaseBuilder = SalomeApp_Application::getStudy()->GetUseCaseBuilder();
-        if (aUseCaseBuilder->IsUseCaseNode(aSComp)) { // BEGIN: work with tree nodes structure
-          if (!aUseCaseBuilder->IsUseCaseNode(aSObj)) {
-            // tree node is not yet set, it is a normal situation
-            return;
-          }
+        _PTR(SObject) aFatherSO = aUseCaseBuilder->GetFather(aSObj);
+        if (!aFatherSO || aFatherSO->IsNull()) {
+          MESSAGE("Father SObject is not found. Problem ??");
+          return;
+        }
 
-          _PTR(SObject) aFatherSO = aUseCaseBuilder->GetFather(aSObj);
-          if (!aFatherSO || aFatherSO->IsNull()) {
-            MESSAGE("Father SObject is not found. Problem ??");
-            return;
-          }
+        std::string parent_id = aFatherSO->GetID();
+        EntryMapIter it = entry2SuitObject.find(parent_id.c_str());
+
+        if (it == entry2SuitObject.end()) {
+          MESSAGE("Father data object is not found. Problem ??");
+          return;
+        }
 
-          std::string parent_id = aFatherSO->GetID();
-          EntryMapIter it = entry2SuitObject.find(parent_id.c_str());
+        SalomeApp_DataObject* aFatherDO = it->second;
 
-          if (it == entry2SuitObject.end()) {
-            MESSAGE("Father data object is not found. Problem ??");
-            return;
-          }
+        it = entry2SuitObject.find(theID);
+        if (it != entry2SuitObject.end()) { // this SOobject is already added somewhere
+          suit_obj = it->second;
+          SUIT_DataObject* oldFather = suit_obj->parent();
+          if (oldFather) {
+            oldFather->removeChild(suit_obj, false);
+            SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( myStudy->application() );
+            //              MESSAGE("myStudy: " << myStudy->id() << " app " << app);
+            //              MESSAGE("objectBrowser: "<< app->objectBrowser());
+            if (!app->objectBrowser()) {
+              MESSAGE("Object Browser not found. Problem ??");
+              return;
+            }
+            SUIT_AbstractModel* model = dynamic_cast<SUIT_AbstractModel*>(app->objectBrowser()->model());
+            model->forgetObject( suit_obj );
 
-          SalomeApp_DataObject* aFatherDO = it->second;
-
-          it = entry2SuitObject.find(theID);
-          if (it != entry2SuitObject.end()) { // this SOobject is already added somewhere
-            suit_obj = it->second;
-            SUIT_DataObject* oldFather = suit_obj->parent();
-            if (oldFather) {
-              oldFather->removeChild(suit_obj, false);
-              SalomeApp_Application* app = dynamic_cast<SalomeApp_Application*>( myStudy->application() );
-//              MESSAGE("myStudy: " << myStudy->id() << " app " << app);
-//              MESSAGE("objectBrowser: "<< app->objectBrowser());
-              if (!app->objectBrowser()) {
-                MESSAGE("Object Browser not found. Problem ??");
-                return;
-              }
-              SUIT_AbstractModel* model = dynamic_cast<SUIT_AbstractModel*>(app->objectBrowser()->model());
-              model->forgetObject( suit_obj );
-                
-              if (SalomeApp_DataObject* oldFatherSA = dynamic_cast<SalomeApp_DataObject*>(oldFather)) {
-                oldFatherSA->updateItem();
-              }
+            if (SalomeApp_DataObject* oldFatherSA = dynamic_cast<SalomeApp_DataObject*>(oldFather)) {
+              oldFatherSA->updateItem();
             }
           }
-          else {
-            suit_obj = new SalomeApp_DataObject(aSObj);
-            entry2SuitObject[theID] = suit_obj;
-          }
+        }
+        else {
+          suit_obj = new SalomeApp_DataObject(aSObj);
+          entry2SuitObject[theID] = suit_obj;
+        }
 
-          suit_obj->updateItem();
-          // define position in the data tree (in aFatherDO) to insert the aSObj
-          int pos = aUseCaseBuilder->GetIndexInFather(aFatherSO, aSObj);
-
-          aFatherDO->insertChildAtPos(suit_obj, pos);
-          //aFatherDO->insertChild(suit_obj, pos);
-          aFatherDO->updateItem();
-
-          /* Define visibility state */
-          bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
-          if ( suit_obj && !isComponent && myStudy->visibilityState( theID.c_str() ) == Qtx::UnpresentableState ) {
-            QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
-            if (!moduleTitle.isEmpty()) {
-              LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
-              if (aDisplayer) {
-                if(aDisplayer->canBeDisplayed(theID.c_str())) {
-                  myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState ); //hide the just added object
-                  //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
-                }
-                //else
-                  //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
+        suit_obj->updateItem();
+        // define position in the data tree (in aFatherDO) to insert the aSObj
+        int pos = aUseCaseBuilder->GetIndexInFather(aFatherSO, aSObj);
+
+        aFatherDO->insertChildAtPos(suit_obj, pos);
+        //aFatherDO->insertChild(suit_obj, pos);
+        aFatherDO->updateItem();
+
+        /* Define visibility state */
+        bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
+        if ( suit_obj && !isComponent && myStudy->visibilityState( theID.c_str() ) == Qtx::UnpresentableState ) {
+          QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
+          if (!moduleTitle.isEmpty()) {
+            LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
+            if (aDisplayer) {
+              if(aDisplayer->canBeDisplayed(theID.c_str())) {
+                myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState ); //hide the just added object
+                //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
               }
+              //else
+              //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
             }
           }
-        } // END: work with tree nodes structure
-        else { // BEGIN: work with study structure
-          EntryMapIter it = entry2SuitObject.find( theID );
-          if ( it != entry2SuitObject.end() ) {
-            MESSAGE("Entry " << theID << " is already added. Problem ??");
-            return;
-          }
+        }
+      } // END: work with tree nodes structure
+      else { // BEGIN: work with study structure
+        EntryMapIter it = entry2SuitObject.find( theID );
+        if ( it != entry2SuitObject.end() ) {
+          MESSAGE("Entry " << theID << " is already added. Problem ??");
+          return;
+        }
+
+        int last2Pnt_pos = (int)theID.rfind( ":" ); //!< TODO: conversion from size_t to int
+        std::string parent_id = theID.substr( 0, last2Pnt_pos );
+        int tag = atoi( theID.substr( last2Pnt_pos+1 ).c_str() );
 
-          int last2Pnt_pos = (int)theID.rfind( ":" ); //!< TODO: conversion from size_t to int
-          std::string parent_id = theID.substr( 0, last2Pnt_pos );
-          int tag = atoi( theID.substr( last2Pnt_pos+1 ).c_str() );
+        if ( parent_id.length() == 3 ) // "0:1" - root item?
+        {
+          // It's probably a SComponent
+          if ( theID == aSComp->GetID() )
+            suit_obj = new SalomeApp_ModuleObject( aSComp );
+          else
+            suit_obj = new SalomeApp_DataObject( aSObj );
+        }
+        else
+        {
+          suit_obj = new SalomeApp_DataObject( aSObj );
+        }
 
+        it = entry2SuitObject.find( parent_id );
+        if ( it != entry2SuitObject.end() ) {
+          SalomeApp_DataObject* father = it->second;
+          father->insertChildAtTag( suit_obj, tag );
+        }
+        else {
           if ( parent_id.length() == 3 ) // "0:1" - root item?
           {
-            // It's probably a SComponent
-            if ( theID == aSComp->GetID() )
-              suit_obj = new SalomeApp_ModuleObject( aSComp );
-            else
-              suit_obj = new SalomeApp_DataObject( aSObj );
+            // This should be for a module
+            SUIT_DataObject* father=myStudy->root();
+            father->appendChild(suit_obj);
           }
           else
           {
-            suit_obj = new SalomeApp_DataObject( aSObj );
-          }
-
-          it = entry2SuitObject.find( parent_id );
-          if ( it != entry2SuitObject.end() ) {
-            SalomeApp_DataObject* father = it->second;
-            father->insertChildAtTag( suit_obj, tag );
-          }
-          else {
-            if ( parent_id.length() == 3 ) // "0:1" - root item?
-            {
-              // This should be for a module
-              SUIT_DataObject* father=myStudy->root();
-              father->appendChild(suit_obj);
-            }
-            else
-            {
-              MESSAGE("SHOULD NEVER GET HERE!!!");
-
-              //Try to find the SalomeApp_DataObject object parent
-              std::string root_id = parent_id.substr( 0, 4 );
-              std::string obj_id = parent_id.substr( 4 );
-
-              std::string anID;
-              std::string::size_type debut = 0;
-              std::string::size_type fin;
-              SalomeApp_DataObject* anObj = dynamic_cast<SalomeApp_DataObject*>( myStudy->root() );
-              while ( anObj ) {
-                fin = obj_id.find_first_of( ':', debut );
-                if ( fin == std::string::npos ) {
-                  //last id
-                  anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut).c_str())-1));
-                  if ( anObj )
-                    entry2SuitObject[parent_id] = anObj;
-                  break;
-                }
-                anID = root_id + obj_id.substr( 0, fin );
-                EntryMapIter it2 = entry2SuitObject.find( anID );
-                if ( it2 == entry2SuitObject.end() ) {
-                  //the ID is not known in entry2SuitObject
-                  anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut, fin-debut).c_str())-1));
-                  if ( anObj )
-                    entry2SuitObject[anID] = anObj;
-                }
-                else
-                  anObj = it2->second;
-                debut = fin+1;
+            MESSAGE("SHOULD NEVER GET HERE!!!");
+
+            //Try to find the SalomeApp_DataObject object parent
+            std::string root_id = parent_id.substr( 0, 4 );
+            std::string obj_id = parent_id.substr( 4 );
+
+            std::string anID;
+            std::string::size_type debut = 0;
+            std::string::size_type fin;
+            SalomeApp_DataObject* anObj = dynamic_cast<SalomeApp_DataObject*>( myStudy->root() );
+            while ( anObj ) {
+              fin = obj_id.find_first_of( ':', debut );
+              if ( fin == std::string::npos ) {
+                //last id
+                anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut).c_str())-1));
+                if ( anObj )
+                  entry2SuitObject[parent_id] = anObj;
+                break;
               }
-              if ( anObj )
-                anObj->insertChildAtTag( suit_obj, tag );
+              anID = root_id + obj_id.substr( 0, fin );
+              EntryMapIter it2 = entry2SuitObject.find( anID );
+              if ( it2 == entry2SuitObject.end() ) {
+                //the ID is not known in entry2SuitObject
+                anObj = dynamic_cast<SalomeApp_DataObject*>(anObj->childObject(atoi(obj_id.substr(debut, fin-debut).c_str())-1));
+                if ( anObj )
+                  entry2SuitObject[anID] = anObj;
+              }
+              else
+                anObj = it2->second;
+              debut = fin+1;
             }
+            if ( anObj )
+              anObj->insertChildAtTag( suit_obj, tag );
           }
-          entry2SuitObject[theID] = suit_obj;
-        } // END: work with study structure
-        break;
-      }
-    case 2:
-      { // Remove sobject
-        EntryMapIter it = entry2SuitObject.find( theID );
-        if ( it != entry2SuitObject.end() )
-        {
-          suit_obj = it->second;
-          suit_obj->updateItem();
-          SUIT_DataObject* father=suit_obj->parent();
-          if(father)
-            father->removeChild(suit_obj);
-          entry2SuitObject.erase(it);
-        }
-        else
-        {
-          MESSAGE("Want to remove an unknown object" << theID);
         }
-        break;
+        entry2SuitObject[theID] = suit_obj;
+      } // END: work with study structure
+      break;
+    }
+    case 2:
+    { // Remove sobject
+      EntryMapIter it = entry2SuitObject.find( theID );
+      if ( it != entry2SuitObject.end() )
+      {
+        suit_obj = it->second;
+        suit_obj->updateItem();
+        SUIT_DataObject* father=suit_obj->parent();
+        if(father)
+          father->removeChild(suit_obj);
+        entry2SuitObject.erase(it);
+      }
+      else
+      {
+        MESSAGE("Want to remove an unknown object" << theID);
       }
+      break;
+    }
     case 0:
-      { //modify sobject
-        //MESSAGE("Want to modify an object "  << theID);
-        EntryMapIter it = entry2SuitObject.find( theID );
-        if ( it != entry2SuitObject.end() )
-        {
-          suit_obj = it->second;
-          suit_obj->updateItem();
-        }
-        else
-        {
-          MESSAGE("Want to modify an unknown object"  << theID);
-        }
-        break;
+    { //modify sobject
+      //MESSAGE("Want to modify an object "  << theID);
+      EntryMapIter it = entry2SuitObject.find( theID );
+      if ( it != entry2SuitObject.end() )
+      {
+        suit_obj = it->second;
+        suit_obj->updateItem();
       }
-    case 5: //IOR of the object modified
+      else
       {
-        EntryMapIter it = entry2SuitObject.find( theID );
-        if ( it != entry2SuitObject.end() )
-          suit_obj = it->second;
-
-        /* Define visibility state */
-        bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
-        if ( suit_obj && !isComponent ) {
-          QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
-          if (!moduleTitle.isEmpty()) {
-            LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
-            if (aDisplayer) {
-              if(aDisplayer->canBeDisplayed(theID.c_str())) {
-                myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState );
-                //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
-              }
-              //else
-                //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
+        MESSAGE("Want to modify an unknown object"  << theID);
+      }
+      break;
+    }
+    case 5: //IOR of the object modified
+    {
+      EntryMapIter it = entry2SuitObject.find( theID );
+      if ( it != entry2SuitObject.end() )
+        suit_obj = it->second;
+
+      /* Define visibility state */
+      bool isComponent = dynamic_cast<SalomeApp_ModuleObject*>( suit_obj ) != 0;
+      if ( suit_obj && !isComponent ) {
+        QString moduleTitle = ((CAM_Application*)myStudy->application())->moduleTitle(suit_obj->componentDataType());
+        if (!moduleTitle.isEmpty()) {
+          LightApp_Displayer* aDisplayer = LightApp_Displayer::FindDisplayer(moduleTitle,false);
+          if (aDisplayer) {
+            if(aDisplayer->canBeDisplayed(theID.c_str())) {
+              myStudy->setVisibilityState( theID.c_str(), Qtx::HiddenState );
+              //MESSAGE("Object with entry : "<< theID <<" CAN be displayed !!!");
             }
+            //else
+            //MESSAGE("Object with entry : "<< theID <<" CAN'T be displayed !!!");
           }
         }
-        break;
       }
+      break;
+    }
 #ifndef DISABLE_PYCONSOLE
     case 6: //NoteBook variables were modified
-      {
-        myStudy->onNoteBookVarUpdate( QString( theID.c_str() ) );
-        break;
-      }
+    {
+      myStudy->onNoteBookVarUpdate( QString( theID.c_str() ) );
+      break;
+    }
 #endif
     default:MESSAGE("Unknown event: "  << event);break;
     } //switch
@@ -386,13 +392,17 @@ private:
   SalomeApp_Study* myStudy;
   EntryMap         entry2SuitObject;
 };
+#endif // DISABLE_ORB
 
 
 /*!
   Constructor.
 */
 SalomeApp_Study::SalomeApp_Study( SUIT_Application* app )
-: LightApp_Study( app ), myObserver( 0 )
+  : LightApp_Study( app )
+  #ifndef DISABLE_ORB
+  , myObserver( 0 )
+  #endif
 {
   myStudyDS = SalomeApp_Application::getStudy();
 }
@@ -402,11 +412,13 @@ SalomeApp_Study::SalomeApp_Study( SUIT_Application* app )
 */
 SalomeApp_Study::~SalomeApp_Study()
 {
+#ifndef DISABLE_ORB
   if ( myObserver ) {
     PortableServer::ObjectId_var oid = myObserver->_default_POA()->servant_to_id( myObserver );
     myObserver->_default_POA()->deactivate_object( oid.in() );
     myObserver = 0;
   }
+#endif
 }
 
 #ifndef DISABLE_PYCONSOLE
@@ -463,11 +475,15 @@ bool SalomeApp_Study::createDocument( const QString& theStr )
 
   bool aRet = CAM_Study::createDocument( theStr );
 
+#ifndef DISABLE_ORB
 #ifdef WITH_SALOMEDS_OBSERVER
   myObserver = new Observer_i(this);
   //attach an observer to the study with notification of modifications
   myStudyDS->attach(myObserver->_this(),true);
 #endif
+#else
+  //TODO
+#endif
 
   emit created( this );
 
@@ -485,7 +501,7 @@ bool SalomeApp_Study::openDocument( const QString& theFileName )
   // read HDF file
   bool res = false;
   bool showError = !application()->property("open_study_from_command_line").isValid() ||
-    !application()->property("open_study_from_command_line").toBool();
+      !application()->property("open_study_from_command_line").toBool();
   try {
     res = myStudyDS->Open( theFileName.toUtf8().data() );
   }
@@ -521,12 +537,16 @@ bool SalomeApp_Study::openDocument( const QString& theFileName )
   // but tree that corresponds to not-loaded data models will be updated any way.
   ((SalomeApp_Application*)application())->updateObjectBrowser( false );
 
+#ifndef DISABLE_ORB
 #ifdef WITH_SALOMEDS_OBSERVER
   dynamic_cast<SalomeApp_RootObject*>( root() )->setToSynchronize(false);
   myObserver = new Observer_i(this);
   //attach an observer to the study with notification of modifications
   myStudyDS->attach(myObserver->_this(),true);
 #endif
+#else
+  //TODO
+#endif
 
   res = CAM_Study::openDocument( theFileName );
 
@@ -576,12 +596,16 @@ bool SalomeApp_Study::loadDocument( const QString& theStudyName )
   // but tree that corresponds to not-loaded data models will be updated any way.
   ((SalomeApp_Application*)application())->updateObjectBrowser( false );
 
+#ifndef DISABLE_ORB
 #ifdef WITH_SALOMEDS_OBSERVER
   dynamic_cast<SalomeApp_RootObject*>( root() )->setToSynchronize(false);
   myObserver = new Observer_i(this);
   //attach an observer to the study with notification of modifications
   myStudyDS->attach(myObserver->_this(),true);
 #endif
+#else
+  //TODO
+#endif
 
   bool restore = application()->resourceMgr()->booleanValue( "Study", "store_visual_state", true );
   if ( restore ) {
@@ -611,7 +635,7 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName )
   while ( it.hasNext() ) {
     // Cast to LightApp class in order to give a chance
     // to light modules to save their data
-    if ( LightApp_DataModel* aModel = 
+    if ( LightApp_DataModel* aModel =
          dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
       listOfFiles.clear();
       aModel->saveAs( theFileName, this, listOfFiles );
@@ -628,8 +652,19 @@ bool SalomeApp_Study::saveDocumentAs( const QString& theFileName )
 
   bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false );
   bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false );
+#ifndef DISABLE_ORB
   bool res = studyDS()->SaveAs( theFileName.toUtf8().data(), isMultiFile, isAscii )
-    && CAM_Study::saveDocumentAs( theFileName );
+      && CAM_Study::saveDocumentAs( theFileName );
+#else
+  // create engine for data model if not existing
+  it.toFront();
+  while ( it.hasNext() ) {
+    SalomeApp_EngineImpl::EngineIORForComponent(it.next()->module()->name().toUtf8().data(), true);
+  }
+  SALOMEDSImpl_DriverFactory* theDriversFactory = dynamic_cast<SALOMEDSImpl_DriverFactory*>(SalomeApp_EngineImplFactory::instance());
+  bool res = studyDS()->SaveAs( theFileName.toUtf8().data(), theDriversFactory, isMultiFile, isAscii )
+      && CAM_Study::saveDocumentAs( theFileName );
+#endif
 
   res = res && saveStudyData(theFileName, 0); // 0 means persistence file
 
@@ -655,7 +690,7 @@ bool SalomeApp_Study::saveDocument()
   while ( it.hasNext() ) {
     // Cast to LightApp class in order to give a chance
     // to light modules to save their data
-    if ( LightApp_DataModel* aModel = 
+    if ( LightApp_DataModel* aModel =
          dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
       listOfFiles.clear();
       aModel->save(listOfFiles);
@@ -672,7 +707,13 @@ bool SalomeApp_Study::saveDocument()
 
   bool isMultiFile = resMgr->booleanValue( "Study", "multi_file", false );
   bool isAscii = resMgr->booleanValue( "Study", "ascii_file", false );
+#ifndef DISABLE_ORB
   bool res = studyDS()->Save( isMultiFile, isAscii ) && CAM_Study::saveDocument();
+#else 
+  SALOMEDSImpl_DriverFactory* theDriversFactory = dynamic_cast<SALOMEDSImpl_DriverFactory*>(SalomeApp_EngineImplFactory::instance());
+  bool res = studyDS()->Save(theDriversFactory, isMultiFile, isAscii )
+      && CAM_Study::saveDocument();
+#endif
 
   res = res && saveStudyData(studyName(), 0); // 0 means persistence file
   if ( res )
@@ -688,9 +729,13 @@ void SalomeApp_Study::closeDocument(bool permanently)
 {
   LightApp_Study::closeDocument(permanently);
 
+#ifndef DISABLE_ORB
   // close SALOMEDS document
   if ( myObserver )
     myStudyDS->detach( myObserver->_this() );
+#else
+  //TODO
+#endif
   if ( permanently ) {
     SUIT_Desktop* desk = SUIT_Session::session()->activeApplication()->desktop();
     bool isBlocked = desk->signalsBlocked();
@@ -710,22 +755,23 @@ void SalomeApp_Study::closeDocument(bool permanently)
   to participate in dump study operation.
 
   \param theFileName - full path to the output Python file
-  \param toPublish - if true, all objects are published in a study 
-  by the output script, including those not orignally present 
+  \param toPublish - if true, all objects are published in a study
+  by the output script, including those not orignally present
   in the current study.
-  \param isMultiFile - if true, each module's dump is written into 
+  \param isMultiFile - if true, each module's dump is written into
   a separate Python file, otherwise a single output file is written
   \param toSaveGUI - if true, the GUI state is written
 
   \return - true if the operation succeeds, and false otherwise.
 */
 bool SalomeApp_Study::dump( const QString& theFileName, 
-                            bool toPublish, 
+                            bool toPublish,
                             bool isMultiFile,
                             bool toSaveGUI )
 {
   int savePoint = 0;
   _PTR(AttributeParameter) ap;
+#ifndef DISABLE_ORB
   _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
 
   if( ip->isDumpPython() )
@@ -733,24 +779,33 @@ bool SalomeApp_Study::dump( const QString& theFileName,
 
   if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method
     ip->setDumpPython();
+#else
+  //auto aParam = ClientFactory::getIParameters(*ap);
+  //_PTR(IParameters) ip  = _OBJ2PTR(IParameters, new SALOMEDSImpl_IParameters(ap));
+  //TODO   if( ip->isDumpPython() )
+  //TODO ip->setDumpPython(); //Unset DumpPython flag.
+
+  if ( toSaveGUI ) { //SRN: Store a visual state of the study at the save point for DumpStudy method
+    //TODO  ip->setDumpPython();
+#endif
     //SRN: create a temporary save point
-    savePoint = SalomeApp_VisualState( 
-      dynamic_cast<SalomeApp_Application*>( application() ) ).storeState(); 
+    savePoint = SalomeApp_VisualState(
+          dynamic_cast<SalomeApp_Application*>( application() ) ).storeState();
   }
 
   // Issue 21377 - Each data model is asked to dump its data not present in SALOMEDS study.
   // This is an optional but important step, it gives a chance to light modules
   // to dump their data as a part of common dump study operation
-  ModelList list; 
+  ModelList list;
   dataModels( list );
 
   QListIterator<CAM_DataModel*> it( list );
   QStringList listOfFiles;
   while ( it.hasNext() ) {
-    if ( LightApp_DataModel* aModel = 
+    if ( LightApp_DataModel* aModel =
          dynamic_cast<LightApp_DataModel*>( it.next() ) ) {
       listOfFiles.clear();
-      if ( aModel->dumpPython( theFileName, this, isMultiFile, listOfFiles ) && 
+      if ( aModel->dumpPython( theFileName, this, isMultiFile, listOfFiles ) &&
            !listOfFiles.isEmpty() )
         // This call simply passes the data model's dump output to SalomeApp_Engine servant.
         // This code is shared with persistence mechanism.
@@ -760,13 +815,27 @@ bool SalomeApp_Study::dump( const QString& theFileName,
     }
   }
 
-  // Now dump SALOMEDS part that also involves SalomeApp_Engine in case if 
+  // Now dump SALOMEDS part that also involves SalomeApp_Engine in case if
   // any light module is present in the current configuration
   QFileInfo aFileInfo( theFileName );
+#ifndef DISABLE_ORB
   bool res = myStudyDS->DumpStudy( aFileInfo.absolutePath().toUtf8().data(),
-                                  aFileInfo.baseName().toUtf8().data(),
-                                  toPublish,
-                                  isMultiFile);
+                                   aFileInfo.baseName().toUtf8().data(),
+                                   toPublish,
+                                   isMultiFile);
+#else
+  // create engine for data model if not existing
+  it.toFront();
+  while ( it.hasNext() ) {
+    SalomeApp_EngineImpl::EngineIORForComponent(it.next()->module()->name().toUtf8().data(), true);
+  }
+  SALOMEDSImpl_DriverFactory* theDriversFactory = dynamic_cast<SALOMEDSImpl_DriverFactory*>(SalomeApp_EngineImplFactory::instance());
+
+  bool res =  myStudyDS->DumpStudy( aFileInfo.absolutePath().toUtf8().data(),
+                                    aFileInfo.baseName().toUtf8().data(),
+                                    toPublish,
+                                    isMultiFile, theDriversFactory);
+#endif
   if ( toSaveGUI )
     removeSavePoint( savePoint ); //SRN: remove the created temporary save point.
 
@@ -862,8 +931,8 @@ bool SalomeApp_Study::saveStudyData( const QString& /*theFileName*/, int type )
   ModelList list; dataModels( list );
   QListIterator<CAM_DataModel*> it( list );
   while ( it.hasNext() ){
-    LightApp_DataModel* aLModel = 
-      dynamic_cast<LightApp_DataModel*>( it.next() );
+    LightApp_DataModel* aLModel =
+        dynamic_cast<LightApp_DataModel*>( it.next() );
     // It is safe to call SetListOfFiles() for any kind of module
     // because SetListOfFiles() does nothing for full modules :)
     if ( aLModel )
@@ -914,7 +983,7 @@ CAM_ModuleObject* SalomeApp_Study::createModuleObject( LightApp_DataModel* theDa
 
   if ( !res ){
     _PTR(SComponent) aComp = myStudyDS->FindComponent(
-      theDataModel->module()->name().toStdString() );
+          theDataModel->module()->name().toUtf8().data());
     if ( !aComp )
       return res;
 
@@ -946,13 +1015,13 @@ void SalomeApp_Study::addComponent(const CAM_DataModel* dm)
   if (!aModule) {
     // Check SComponent existance
 
-    std::string aCompDataType = dm->module()->name().toStdString();
+    QString aCompDataType = dm->module()->name();
 
-    _PTR(SComponent) aComp = myStudyDS->FindComponent(aCompDataType);
+    _PTR(SComponent) aComp = myStudyDS->FindComponent(aCompDataType.toUtf8().data());
     if (!aComp) {
       // Create SComponent
-      _PTR(StudyBuilder) aBuilder = myStudyDS->NewBuilder();
-      aComp = aBuilder->NewComponent(aCompDataType);
+      auto aBuilder = myStudyDS->NewBuilder();
+      aComp = aBuilder->NewComponent(aCompDataType.toUtf8().data());
       aBuilder->SetName(aComp, dm->module()->moduleName().toStdString());
       QString anIconName = dm->module()->iconName();
       if (!anIconName.isEmpty()) {
@@ -961,16 +1030,21 @@ void SalomeApp_Study::addComponent(const CAM_DataModel* dm)
           anAttr->SetPixMap(anIconName.toStdString());
       }
 
+#ifndef DISABLE_ORB
       // Set default engine IOR
       // Issue 21377 - using separate engine for each type of light module
-      std::string anEngineIOR = SalomeApp_Engine_i::EngineIORForComponent( aCompDataType.c_str(),
+      std::string anEngineIOR = SalomeApp_Engine_i::EngineIORForComponent( aCompDataType.toUtf8().data(),
                                                                            true );
+#else
+      std::string anEngineIOR = SalomeApp_EngineImpl::EngineIORForComponent( aCompDataType.toUtf8().data(),
+                                                                             true );
+#endif
       aBuilder->DefineComponentInstance(aComp, anEngineIOR);
       //SalomeApp_DataModel::BuildTree( aComp, root(), this, /*skipExisitng=*/true );
       SalomeApp_DataModel::synchronize( aComp, this );
     }
     else {
-      _PTR(StudyBuilder) aBuilder = myStudyDS->NewBuilder();
+      auto aBuilder = myStudyDS->NewBuilder();
       aBuilder->SetName(aComp, dm->module()->moduleName().toStdString());
       QString anIconName = dm->module()->iconName();
       if (!anIconName.isEmpty()) {
@@ -998,9 +1072,13 @@ bool SalomeApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm
   // 1. aModule == 0 means that this is a light module (no CORBA enigine)
   if (!aModule) {
     // Issue 21377 - using separate engine for each type of light module
-    std::string aCompDataType = dm->module()->name().toStdString();
-    anEngine = SalomeApp_Engine_i::EngineIORForComponent( aCompDataType.c_str(), true ).c_str();
-    aSComp = myStudyDS->FindComponent( aCompDataType );
+    QString aCompDataType = dm->module()->name();
+#ifndef DISABLE_ORB
+    anEngine = SalomeApp_Engine_i::EngineIORForComponent( aCompDataType.toUtf8().data(), true ).c_str();
+#else
+    anEngine = SalomeApp_EngineImpl::EngineIORForComponent( aCompDataType.toUtf8().data(), true ).c_str();
+#endif
+    aSComp = myStudyDS->FindComponent( aCompDataType.toUtf8().data() );
   }
   else {
     SalomeApp_DataModel* aDM = dynamic_cast<SalomeApp_DataModel*>( dm );
@@ -1011,16 +1089,25 @@ bool SalomeApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm
       anEngine = aDM->getModule()->engineIOR();
       if ( anEngine.isEmpty() )
         return false;
-      aSComp = myStudyDS->FindComponentID( std::string( anId.toLatin1() ) );
+      aSComp = myStudyDS->FindComponentID( anId.toUtf8().data() );
     }
   }
   if ( aSComp ) {
-    _PTR(StudyBuilder) aBuilder( myStudyDS->NewBuilder() );
+    auto aBuilder( myStudyDS->NewBuilder() );
+#ifndef DISABLE_ORB
     if ( aBuilder ) {
       try {
         aBuilder->LoadWith( aSComp, std::string( anEngine.toLatin1() ) );
       }
       catch( const SALOME::SALOME_Exception& ) {
+#else
+    if ( aBuilder ) {
+      try {
+        SALOMEDSImpl_Driver* aDriver = SalomeApp_EngineImplFactory::instance()->GetDriverByIOR(anEngine.toUtf8().data());
+        aBuilder->LoadWith(*aSComp, aDriver);
+      }
+      catch( const SALOME_Exception& ) {
+#endif
         // Oops, something went wrong while loading -> return an error
         return false;
       }
@@ -1062,7 +1149,11 @@ bool SalomeApp_Study::openDataModel( const QString& studyName, CAM_DataModel* dm
 std::vector<std::string> SalomeApp_Study::GetListOfFiles( const char* theModuleName, int type ) const
 {
   // Issue 21377 - using separate engine for each type of light module
+#ifndef DISABLE_ORB
   SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance( theModuleName, false );
+#else
+  SalomeApp_EngineImpl* aDefaultEngine = SalomeApp_EngineImpl::GetInstance( theModuleName, false );
+#endif
   if (aDefaultEngine)
     return aDefaultEngine->GetListOfFiles( type );
 
@@ -1081,7 +1172,11 @@ void SalomeApp_Study::SetListOfFiles ( const char* theModuleName, int type,
                                        const std::vector<std::string> theListOfFiles )
 {
   // Issue 21377 - using separate engine for each type of light module
+#ifndef DISABLE_ORB
   SalomeApp_Engine_i* aDefaultEngine = SalomeApp_Engine_i::GetInstance( theModuleName, false );
+#else
+  SalomeApp_EngineImpl* aDefaultEngine = SalomeApp_EngineImpl::GetInstance( theModuleName, false );
+#endif
   if (aDefaultEngine)
     aDefaultEngine->SetListOfFiles(type, theListOfFiles);
 }
@@ -1112,9 +1207,14 @@ void SalomeApp_Study::RemoveTemporaryFiles ( const char* theModuleName, bool isM
     std::vector<std::string> aSeq;
     aSeq.reserve(n);
     for (int i = 0; i < n; i++)
+#ifndef DISABLE_ORB
       aSeq.push_back(CORBA::string_dup(aListOfFiles[i + 1].c_str()));
 
     SalomeApp_Engine_i* engine = SalomeApp_Engine_i::GetInstance( theModuleName, false );
+#else
+      aSeq.push_back(std::string(aListOfFiles[i + 1].c_str()));
+    SalomeApp_EngineImpl* engine = SalomeApp_EngineImpl::GetInstance( theModuleName, false );
+#endif
     bool toRemove = force || ( engine && !engine->keepFiles() );
 
     if ( toRemove ) {
@@ -1140,9 +1240,11 @@ void SalomeApp_Study::updateFromNotebook( const QString& theFileName, bool isSav
 LightApp_DataObject* SalomeApp_Study::findObjectByEntry( const QString& theEntry )
 {
   LightApp_DataObject* o = 0;
+#ifndef DISABLE_ORB
   if ( myObserver ) {
     o = dynamic_cast<LightApp_DataObject*>( myObserver->findObject( theEntry.toUtf8().constData() ) );
   }
+#endif
   if ( !o ) {
     o = LightApp_Study::findObjectByEntry( theEntry );
   }
@@ -1155,12 +1257,16 @@ LightApp_DataObject* SalomeApp_Study::findObjectByEntry( const QString& theEntry
 */
 void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj )
 {
-  _PTR(StudyBuilder) sb = studyDS()->NewBuilder();
+  auto sb = studyDS()->NewBuilder();
   std::vector<_PTR(SObject)> aRefs = studyDS()->FindDependances( obj );
   for( size_t i=0, n=aRefs.size(); i<n; i++ )
   {
     _PTR( SObject ) o = aRefs[i];
+#ifndef DISABLE_ORB
     if( o->GetFatherComponent()->ComponentDataType()==obj->GetFatherComponent()->ComponentDataType() )
+#else
+    if( o->GetFatherComponent().ComponentDataType()==obj->GetFatherComponent().ComponentDataType() )
+#endif
     {
       sb->RemoveReference( o );
       sb->RemoveObjectWithChildren( o );
@@ -1174,7 +1280,7 @@ void SalomeApp_Study::deleteReferencesTo( _PTR( SObject ) obj )
 */
 QString SalomeApp_Study::referencedToEntry( const QString& entry ) const
 {
-  _PTR(SObject) obj = studyDS()->FindObjectID( entry.toStdString() );
+  _PTR(SObject) obj = studyDS()->FindObjectID( entry.toUtf8().data() );
   _PTR(SObject) refobj;
 
   if( obj && obj->ReferencedObject( refobj ) )
@@ -1187,10 +1293,16 @@ QString SalomeApp_Study::referencedToEntry( const QString& entry ) const
 */
 QString SalomeApp_Study::componentDataType( const QString& entry ) const
 {
-  _PTR(SObject) obj( studyDS()->FindObjectID( entry.toStdString() ) );
+  _PTR(SObject) obj( studyDS()->FindObjectID( entry.toUtf8().data() ) );
+#ifndef DISABLE_ORB
   if ( !obj )
     return LightApp_Study::componentDataType( entry );
   return obj->GetFatherComponent()->ComponentDataType().c_str();
+#else
+  if ( !obj )
+    return LightApp_Study::componentDataType( entry );
+  return obj->GetFatherComponent().ComponentDataType().c_str();
+#endif
 }
 
 /*!
@@ -1198,8 +1310,12 @@ QString SalomeApp_Study::componentDataType( const QString& entry ) const
 */
 bool SalomeApp_Study::isComponent( const QString& entry ) const
 {
-  _PTR(SObject) obj( studyDS()->FindObjectID( entry.toStdString() ) );
+  _PTR(SObject) obj( studyDS()->FindObjectID( entry.toUtf8().data() ) );
+#ifndef DISABLE_ORB
   return obj && QString( obj->GetID().c_str() ) == obj->GetFatherComponent()->GetID().c_str();
+#else
+  return obj && QString( obj->GetID().c_str() ) == obj->GetFatherComponent().GetID().c_str();
+#endif
 }
 
 /*!
@@ -1207,13 +1323,17 @@ bool SalomeApp_Study::isComponent( const QString& entry ) const
 */
 void SalomeApp_Study::children( const QString& entry, QStringList& child_entries ) const
 {
-  _PTR(SObject) SO = studyDS()->FindObjectID( entry.toStdString() );
+  _PTR(SObject) SO = studyDS()->FindObjectID( entry.toUtf8().data() );
   _PTR(ChildIterator) anIter ( studyDS()->NewChildIterator( SO ) );
   anIter->InitEx( true );
   while( anIter->More() )
   {
-    _PTR(SObject) val( anIter->Value() );
+    auto val( anIter->Value() );
+#ifndef DISABLE_ORB
     child_entries.append( val->GetID().c_str() );
+#else
+    child_entries.append( val.GetID().c_str() );
+#endif
     anIter->Next();
   }
 }
@@ -1224,9 +1344,15 @@ void SalomeApp_Study::children( const QString& entry, QStringList& child_entries
 */
 void SalomeApp_Study::components( QStringList& comps ) const
 {
+#ifndef DISABLE_ORB
   for( _PTR(SComponentIterator) it ( studyDS()->NewComponentIterator() ); it->More(); it->Next() )
   {
     _PTR(SComponent) aComponent ( it->Value() );
+#else
+  for( _PTR(SComponentIterator) it ( studyDS()->GetNewComponentIterator()); it->More(); it->Next() )
+  {
+    _PTR(SComponent) aComponent ( it->GetValue() );
+#endif
     // skip the magic "Interface Applicative" component
     if ( aComponent && aComponent->ComponentDataType() != getVisualComponentName().toLatin1().constData() )
       comps.append( aComponent->ComponentDataType().c_str() );
@@ -1241,9 +1367,15 @@ void SalomeApp_Study::components( QStringList& comps ) const
 QString SalomeApp_Study::centry( const QString& comp ) const
 {
   QString e;
+#ifndef DISABLE_ORB
   for( _PTR(SComponentIterator) it ( studyDS()->NewComponentIterator() ); it->More() && e.isEmpty(); it->Next() )
   {
     _PTR(SComponent) aComponent ( it->Value() );
+#else
+  for( _PTR(SComponentIterator) it ( studyDS()->GetNewComponentIterator()); it->More() && e.isEmpty(); it->Next() )
+  {
+    _PTR(SComponent) aComponent ( it->GetValue() );
+#endif
     if ( aComponent && comp == aComponent->ComponentDataType().c_str() )
       e = aComponent->GetID().c_str();
   }
@@ -1260,11 +1392,15 @@ std::vector<int> SalomeApp_Study::getSavePoints()
   _PTR(SObject) so = studyDS()->FindComponent( getVisualComponentName().toLatin1().constData() );
   if(!so) return v;
 
-  _PTR(StudyBuilder) builder = studyDS()->NewBuilder();
-  _PTR(ChildIterator) anIter ( studyDS()->NewChildIterator( so ) );
+  auto builder = studyDS()->NewBuilder();
+  auto anIter ( studyDS()->NewChildIterator( so ) );
   for(; anIter->More(); anIter->Next())
   {
+#ifndef DISABLE_ORB
     _PTR(SObject) val( anIter->Value() );
+#else
+    _PTR(SObject) val( anIter->GetValue() );
+#endif
     _PTR(GenericAttribute) genAttr;
     if(builder->FindAttribute(val, genAttr, "AttributeParameter")) v.push_back(val->Tag());
   }
@@ -1278,9 +1414,9 @@ std::vector<int> SalomeApp_Study::getSavePoints()
 void SalomeApp_Study::removeSavePoint(int savePoint)
 {
   if(savePoint <= 0) return;
_PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
-  _PTR(SObject) so = AP->GetSObject();
-  _PTR(StudyBuilder) builder = studyDS()->NewBuilder();
 auto AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
+  auto so = AP->GetSObject();
+  auto builder = studyDS()->NewBuilder();
   builder->RemoveObjectWithChildren(so);
 }
 
@@ -1289,8 +1425,13 @@ void SalomeApp_Study::removeSavePoint(int savePoint)
 */
 QString SalomeApp_Study::getNameOfSavePoint(int savePoint)
 {
+#ifndef DISABLE_ORB
   _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
   _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+#else
+  _CLASS(AttributeParameter)* AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
+  _PTR(IParameters) ip; //TODO  = ClientFactory::getIParameters(AP);
+#endif
   return ip->getProperty("AP_SAVEPOINT_NAME").c_str();
 }
 
@@ -1299,8 +1440,13 @@ QString SalomeApp_Study::getNameOfSavePoint(int savePoint)
 */
 void SalomeApp_Study::setNameOfSavePoint(int savePoint, const QString& nameOfSavePoint)
 {
+#ifndef DISABLE_ORB
   _PTR(AttributeParameter) AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
   _PTR(IParameters) ip = ClientFactory::getIParameters(AP);
+#else
+  _CLASS(AttributeParameter)* AP = studyDS()->GetCommonParameters(getVisualComponentName().toLatin1().constData(), savePoint);
+  _PTR(IParameters) ip; //TODO  = ClientFactory::getIParameters(AP);
+#endif
   ip->setProperty("AP_SAVEPOINT_NAME", nameOfSavePoint.toStdString());
 }
 
index 4e6c0763fc1eda64c8f604613c4cb27b379cee58..490911eaaf3ad5f7969dcc99c1cfeb1da26e55fd 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #pragma warning( disable:4251 )
 #endif
 
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient.hxx"
+#else
+#include "SALOMEDSImplAdapt.hxx"
+#endif
 
 class SALOMEAPP_EXPORT SalomeApp_Study : public LightApp_Study
 {
@@ -104,7 +108,7 @@ protected:
   virtual void        dataModelInserted( const CAM_DataModel* );
   virtual bool        openDataModel( const QString&, CAM_DataModel* );
 
-  virtual CAM_ModuleObject* createModuleObject( LightApp_DataModel* theDataModel, 
+  virtual CAM_ModuleObject* createModuleObject( LightApp_DataModel* theDataModel,
                                                 SUIT_DataObject* theParent ) const;
 protected slots:
   virtual void        updateModelRoot( const CAM_DataModel* );
@@ -114,10 +118,12 @@ protected slots:
 
 private:
   _PTR(Study)         myStudyDS;
+#ifndef DISABLE_ORB
   Observer_i*         myObserver;
+#endif
 
 #ifndef DISABLE_PYCONSOLE
- signals:
+signals:
   void                notebookVarUpdated( QString theVarName );
 #endif
 };
index b355724e570b33397be831003a1b66799d3d352a..40b2b37ab753eee19bddff02dfe21c63b44df4ce 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <SUIT_Desktop.h>
 #include <SUIT_MessageBox.h>
 
+#ifndef DISABLE_ORB
 // CORBA Headers
 #include <SALOMEconfig.h>
 #include CORBA_CLIENT_HEADER(SALOMEDS_Attributes)
+#endif
 
 // QT Includes
 #include <QPushButton>
@@ -169,14 +171,21 @@ SalomeApp_StudyPropertiesDlg::~SalomeApp_StudyPropertiesDlg()
 void SalomeApp_StudyPropertiesDlg::initData()
 {
   bool hasData = (SalomeApp_Application::getStudy() != NULL);
-  _PTR(AttributeStudyProperties) propAttr;
/* _PTR(AttributeStudyProperties) propAttr;
   if (hasData)
     propAttr = SalomeApp_Application::getStudy()->GetProperties();
-  hasData = hasData && propAttr;
+  hasData = hasData && propAttr;*/
   
   if (hasData) {
+    auto propAttr = SalomeApp_Application::getStudy()->GetProperties();
+    if(propAttr){
     //Creator and creation date
+#ifndef DISABLE_ORB
     myAuthor->setText(propAttr->GetUserName().c_str());
+#else
+    //TODO
+#endif
+
     int minutes, hours, day, month, year;
     if (propAttr->GetCreationDate(minutes, hours, day, month, year)) {
       QString strDate;
@@ -224,7 +233,11 @@ void SalomeApp_StudyPropertiesDlg::initData()
     //Modifications
     std::vector<std::string> aUsers;
     std::vector<int>  aMins, aHours, aDays, aMonths, aYears;
+#ifndef DISABLE_ORB
     propAttr->GetModificationsList(aUsers, aMins, aHours, aDays, aMonths, aYears, false);
+#else
+    //TODO
+#endif
     int aCnt = aUsers.size();
     for ( int i = 0; i < (int)aCnt; i++ ) {
       QString date;
@@ -255,6 +268,7 @@ void SalomeApp_StudyPropertiesDlg::initData()
       myVersions->addTopLevelItem(item);
     }
   }
+  }
   adjustSize();
 }
 
@@ -263,7 +277,7 @@ void SalomeApp_StudyPropertiesDlg::initData()
 */
 void SalomeApp_StudyPropertiesDlg::clickOnOk()
 {
-  _PTR(AttributeStudyProperties) propAttr = SalomeApp_Application::getStudy()->GetProperties();
+  auto propAttr = SalomeApp_Application::getStudy()->GetProperties();
   //Firstly, store locked flag
   if(propAttr) {
     bool bLocked = myLocked->isChecked();
@@ -275,6 +289,7 @@ void SalomeApp_StudyPropertiesDlg::clickOnOk()
     bool needWarning = false;
     
     //Author
+#ifndef DISABLE_ORB
     if (QString(propAttr->GetUserName().c_str()) != myAuthor->text().trimmed()) {
       if(!propAttr->IsLocked()) {
         propAttr->SetUserName(myAuthor->text().trimmed().toStdString());
@@ -284,6 +299,18 @@ void SalomeApp_StudyPropertiesDlg::clickOnOk()
       }
     }
 
+#else
+    //TODO
+    /*if (QString(propAttr->GetUserName().c_str()) != myAuthor->text().trimmed()) {
+      if(!propAttr->IsLocked()) {
+        propAttr->SetUserName(myAuthor->text().trimmed().toStdString());
+        myIsChanged = true;
+      } else {
+        needWarning = true;
+      }
+    }
+    */
+#endif
     //Unit
     if (QString(propAttr->GetUnits().c_str()) != myUnits->currentText()) {
       if(!propAttr->IsLocked()) {
index 81b27f2d1c1f7473042555b504e0a6461a10e401..33de77c7b2bcda2e9eff0b93a08c824af24d4634 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 
 #include <QDialog>
 
+#ifndef DISABLE_ORB
 #include <SALOMEconfig.h>
 #include CORBA_SERVER_HEADER(SALOMEDS)
 
 #include <SALOMEDSClient_Study.hxx>
+#else
+#include "SALOMEDSImpl_Study.hxx"
+#endif
 
 class QLineEdit;
 class QLabel;
index 6328202ebb40d75f4b7777bcf05b404c304440c7..8e62c4ba2f21442e767ba225fe5a5fa6edff1e5e 100644 (file)
@@ -52,6 +52,7 @@ QColor SalomeApp_Tools::color( const Quantity_Color& c )
         return QColor( (int)( c.Red() * 255 ), (int)( c.Green() * 255 ), (int)( c.Blue() * 255 ) );
 }
 
+#ifndef DISABLE_ORB
 /*!
   Gets message on exception \a S_ex.
 */
@@ -127,3 +128,4 @@ void SalomeApp_Tools::QtCatchCorbaException( const SALOME::SALOME_Exception& S_e
                               title, message );
 
 }
+#endif //DISABLE_ORB
index 3c485a2502545797f1603b1a1356da63b31060c2..72057f80d5a2767695c3c02ed8d510ba4fa6d590 100644 (file)
@@ -32,8 +32,10 @@ class QString;
 
 class Quantity_Color;
 
+#ifndef DISABLE_ORB
 #include <SALOMEconfig.h>
 #include CORBA_CLIENT_HEADER(SALOME_Exception)
+#endif
 
 /*! 
   Class which provide color converter and exception message box.
@@ -44,8 +46,10 @@ public:
   static Quantity_Color  color( const QColor& );
   static QColor          color( const Quantity_Color& );
 
+#ifndef DISABLE_ORB
   static QString         ExceptionToString( const SALOME::SALOME_Exception& );
   static void            QtCatchCorbaException( const SALOME::SALOME_Exception& );
+#endif
 };
 
 #endif
index ad802404ab0acdf5e41eefe85d38196f56080232..648f33384898c9f3554e85b3e5b766661c869c3b 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
@@ -53,10 +53,14 @@ bool SalomeApp_TypeFilter::isOk( const SUIT_DataOwner* sOwner ) const
   {
     QString entry = owner->entry();
 
-    _PTR(SObject) aSObj( SalomeApp_Application::getStudy()->FindObjectID( entry.toStdString() ) );
+    _PTR(SObject) aSObj( SalomeApp_Application::getStudy()->FindObjectID( entry.toUtf8().data() ) );
     if (aSObj)
     {
-      _PTR(SComponent) aComponent(aSObj->GetFatherComponent());
+#ifndef DISABLE_ORB
+ _PTR(SComponent) aComponent(aSObj->GetFatherComponent());
+#else
+      _PTR(SComponent) aComponent(_CLASS(SComponent)(aSObj->GetFatherComponent()));
+#endif
       if ( aComponent && (aComponent->ComponentDataType() == myKind.toStdString()) )
         return true;
     }
index 1bd77cf9420685264a5aede8a539f561496a6fb2..95c523302280fb78e6428b6a0cdb93e1b1c8905c 100644 (file)
@@ -1,4 +1,4 @@
-// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
 //
 // Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
 // CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
 #include <QApplication>
 #include <QMultiHash>
 
+#ifndef DISABLE_ORB
 #include <SALOMEDSClient_ClientFactory.hxx>//?
 #include <SALOMEDSClient_IParameters.hxx>//?
+#else
+#include <SALOMEDSImpl_IParameters.hxx>
+#endif
 
 #include <vector>//?
 #include <string>//?
@@ -119,9 +123,15 @@ int SalomeApp_VisualState::storeState()
   if ( savePoints.size() > 0)
     savePoint = savePoints[savePoints.size()-1] + 1;
 
-  _PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName().toLatin1().constData(), 
+#ifndef DISABLE_ORB
+       _PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName().toLatin1().constData(),
                                                                       savePoint );
-  _PTR(IParameters) ip = ClientFactory::getIParameters( ap );
+               _PTR(IParameters) ip = ClientFactory::getIParameters( ap );
+#else
+       auto ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName().toLatin1().constData(),
+                                                                                        savePoint);
+               _PTR(IParameters) ip; //TODO = ClientFactory::getIParameters( ap );
+#endif
 
   ViewManagerList lst;
   myApp->viewManagers( lst );
@@ -208,9 +218,15 @@ void SalomeApp_VisualState::restoreState(int savePoint)
   if ( !study )
     return;
 
+#ifndef DISABLE_ORB
   _PTR(AttributeParameter) ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName().toLatin1().constData(),
                                                                       savePoint );
-  _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
+        _PTR(IParameters) ip = ClientFactory::getIParameters(ap);
+#else
+       auto ap = study->studyDS()->GetCommonParameters( study->getVisualComponentName().toLatin1().constData(),
+                                                                                        savePoint );
+        _PTR(IParameters) ip ; //TODO = ClientFactory::getIParameters(ap);
+#endif
 
   qApp->installEventFilter( this );
 
@@ -228,7 +244,14 @@ void SalomeApp_VisualState::restoreState(int savePoint)
   for ( int i = 0; i < nbViewers; i++ )
   {
     std::string viewerEntry = ip->getValue( "AP_VIEWERS_LIST", i );
+    #ifndef DISABLE_ORB
     std::vector<std::string> veiewerParams = ip->parseValue(viewerEntry,'_');
+#else
+    //TODO
+     std::vector<std::string> veiewerParams;
+     return;
+     // = ip->getValues(viewerEntry,'_');
+#endif
     std::string type = veiewerParams[0];
     std::string viewerID = veiewerParams[1];
     SUIT_ViewManager* vm = myApp->newViewManager( type.c_str() );
index 0bf8344fd95fa9e9633920dfd8e160f921ff9781..0d46e86b78cbb26315b6e5c12a46ce9028b5c8d8 100644 (file)
@@ -388,6 +388,7 @@ int main( int argc, char **argv )
     QApplication::addLibraryPath( qtdir );
 
   // Add application library path (to search style plugin etc...)
+
   QString path = SUIT_Tools::addSlash( Qtx::getenv( "GUI_ROOT_DIR" ) ) + "bin/salome";
   QApplication::addLibraryPath( QDir::toNativeSeparators( path ) );
 
@@ -617,6 +618,8 @@ int main( int argc, char **argv )
       // Load SalomeApp dynamic library
       MESSAGE( "creation SUIT_Application" );
       SUIT_Application* aGUIApp = aGUISession->startApplication( "SalomeApp", 0, 0 );
+      // Fill the executable name in session
+      aGUISession->setExecutableAppName(aGUISession->salomeAppName());
       if ( aGUIApp )
       {
 #ifdef USE_SALOME_STYLE
diff --git a/src/Shaper/CMakeLists.txt b/src/Shaper/CMakeLists.txt
new file mode 100644 (file)
index 0000000..7ef7cb4
--- /dev/null
@@ -0,0 +1,76 @@
+# Copyright (C) 2012-2020  CEA/DEN, EDF R&D, CSGROUP
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+cmake_policy(SET CMP0060 NEW)
+
+INCLUDE(UseQtExt)
+
+# --- options ---
+
+# additional include directories
+INCLUDE_DIRECTORIES(
+  ${QT_INCLUDES}
+  ${Boost_INCLUDE_DIRS}
+  ${PYTHON_INCLUDE_DIRS}
+  ${OpenCASCADE_INCLUDE_DIR}
+  ${PTHREAD_INCLUDE_DIR}
+  ${PROJECT_BINARY_DIR}
+  ${PROJECT_BINARY_DIR}/idl
+  ${PROJECT_SOURCE_DIR}/src/Qtx
+  ${PROJECT_SOURCE_DIR}/src/SUIT
+  ${PROJECT_SOURCE_DIR}/src/Event
+  ${PROJECT_SOURCE_DIR}/src/Style
+  ${PROJECT_SOURCE_DIR}/src/SUIT
+  ${PROJECT_SOURCE_DIR}/src/STD
+  ${PROJECT_SOURCE_DIR}/src/CAM
+  ${PROJECT_SOURCE_DIR}/src/OBJECT
+  ${PROJECT_SOURCE_DIR}/src/LightApp
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp
+  ${PROJECT_SOURCE_DIR}/../../../SHAPER/src/SHAPERGUI
+  ${PROJECT_SOURCE_DIR}/../../../SHAPER/src/XGUI
+  ${PROJECT_SOURCE_DIR}/../../../SHAPER/src/ModuleBase
+  ${PROJECT_SOURCE_DIR}/../../../SHAPER/src/Config
+  ${PROJECT_SOURCE_DIR}/../../../SHAPER/src/Events
+  ${PROJECT_SOURCE_DIR}/src/OCCViewer
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp
+ )
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(
+  ${QT_DEFINITIONS}
+  ${BOOST_DEFINITIONS}
+  ${PYTHON_DEFINITIONS}
+  ${OpenCASCADE_DEFINITIONS} 
+  -DHAVE_SALOME
+  -DDISABLE_ORB
+  #-DDISABLE_PYCONSOLE
+)
+
+# libraries to link to
+SET(_link_LIBRARIES
+  ${QT_LIBRARIES}  
+  ShaperApp 
+)
+
+
+ADD_EXECUTABLE(shaper Shaper.cxx)
+TARGET_LINK_LIBRARIES(shaper ${_link_LIBRARIES})
+INSTALL(TARGETS shaper EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_BINS})
+
diff --git a/src/Shaper/Shaper.cxx b/src/Shaper/Shaper.cxx
new file mode 100644 (file)
index 0000000..e8f1b60
--- /dev/null
@@ -0,0 +1,486 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, OPEN CASCADE, CSGROUP
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef DISABLE_PYCONSOLE
+#include <Container_init_python.hxx> // this include must be the first one as it includes Python.h
+#endif
+#include <Utils_SALOME_Exception.hxx>
+#include <utilities.h>
+
+#include "GUI_version.h"
+#include "Qtx.h"
+#include "QtxMsgHandler.h"
+#include "QtxSplash.h"
+//#include "SALOME_Event.h"
+#ifdef USE_SALOME_STYLE
+#include "Style_Salome.h"
+#endif // USE_SALOME_STYLE
+#include "SUIT_Application.h"
+#include "SUIT_Desktop.h"
+#include "SUIT_ExceptionHandler.h"
+#include "SUIT_ResourceMgr.h"
+#include "SUIT_Session.h"
+#include "SUIT_Tools.h"
+
+#ifdef WIN32
+#define sleep _sleep
+#include <windows.h>
+#include <stdio.h>
+#include <shellapi.h>
+#endif
+#include <time.h>
+
+#include <QApplication>
+#include <QDir>
+#include <QFile>
+#include <QMutex>
+#include <QRegExp>
+#include <QTextStream>
+#include <QWaitCondition>
+#include <QThread>
+
+//! CORBA server for SALOME GUI session
+/*!
+ * SALOME_Session_Server launches a SALOME session servant.
+ * The servant registers to the Naming Service.
+ * See SALOME_Session.idl for interface specification.
+ * Main services offered by the servant are:
+ * - launch GUI
+ * - stop Session ( must be idle )
+ * - get session state
+ *
+ * Also, session server:
+ * - reads arguments,
+ * - defines list of embedded services to launch with their arguments,
+ * - defines list of standalone services to connect/wait,
+ * - waits for naming service to finish its initalization,
+ * - creates and runs a separate thread to launch/initialize all services.
+ */
+
+#include "SalomeApp_Application.h"
+
+
+namespace myAppNameSpace{
+  const QString myAppName("ShaperApp");
+  const QString myLightAppName("LightShaperApp");
+ }
+
+namespace
+{
+  //! Custom handler to manage Qt messages
+  class MsgHandler: public QtxMsgHandlerCallback
+  {
+  public:
+    MsgHandler() {}
+    void qtMessage( QtMsgType type, const QMessageLogContext& /*context*/, const QString& message )
+    {
+      (void)message; // unused in debug mode
+      switch ( type )
+      {
+        case QtDebugMsg:
+#ifdef QT_DEBUG_MESSAGE
+          MESSAGE( "Debug: " << qPrintable( message ) );
+#endif
+          break;
+        case QtWarningMsg:
+          MESSAGE( "Warning: " << qPrintable( message ) );
+          break;
+        case QtCriticalMsg:
+          MESSAGE( "Critical: " << qPrintable( message ) );
+          break;
+        case QtFatalMsg:
+          MESSAGE( "Fatal: " << qPrintable( message ) );
+          break;
+        case QtInfoMsg:
+        default:
+          MESSAGE( "Information: " << qPrintable( message ) );
+          break;
+      }
+    }
+  };
+
+  //! Get version of SALOME GUI module
+  QString salomeVersion()
+  {
+    return GUI_VERSION_STR;
+  }
+
+  //! Custom resources manager, that allows customization of application name/version
+  //  via configuration/translation files.
+  class ResourceMgr : public SUIT_ResourceMgr
+  {
+  public:
+    ResourceMgr( const QString& appName = myAppNameSpace::myAppName ) : SUIT_ResourceMgr( appName, "%1Config" )
+    {
+      customize(); // activate customization
+      setCurrentFormat( "xml" );
+      setOption( "translators", QString( "%P_msg_%L.qm|%P_icons.qm|%P_images.qm" ) );
+    }
+
+    QString customName() const { return myCustomAppName; }
+    QString version() const { return myCustomAppVersion; }
+
+  private:
+    static void customize()
+    {
+      // Try to retrieve actual application name and version from translation files.
+      // We create temporary resource manager and load LightApp and ShaperApp translations.
+      // This procedure is supposed to be done only once, at first call.
+      if ( myCustomAppName.isNull() ) {
+        SUIT_ResourceMgr mgr( myAppNameSpace::myAppName, "%1Config" );
+        mgr.setCurrentFormat( "xml" );
+        mgr.setWorkingMode( IgnoreUserValues ); // prevent reading data from user's file
+        mgr.loadLanguage( myAppNameSpace::myLightAppName,  "en" );
+        mgr.loadLanguage( myAppNameSpace::myAppName, "en" );
+
+        // actual application name can be customized via APP_NAME resource key
+        myCustomAppName = QObject::tr( "APP_NAME" ).trimmed();
+        if ( myCustomAppName == "APP_NAME" || myCustomAppName.toLower() == "shaper" )
+          myCustomAppName = myAppNameSpace::myAppName; // fallback name
+
+        // actual application name can be customized via APP_VERSION resource key
+        myCustomAppVersion = QObject::tr( "APP_VERSION" ).trimmed();
+        if ( myCustomAppVersion == "APP_VERSION" )
+          myCustomAppVersion = myCustomAppName == myAppNameSpace::myAppName ? salomeVersion() : ""; // fallback version
+      }
+    }
+
+  protected:
+    QString userFileName( const QString& /*appName*/, const bool forLoad ) const
+    {
+      if ( version().isEmpty() ) return "";
+      return SUIT_ResourceMgr::userFileName( myCustomAppName, forLoad );
+    }
+
+    virtual long userFileId( const QString& _fname ) const
+    {
+      //////////////////////////////////////////////////////////////////////////////////////////////
+      // In SALOME and SALOME-based applications the user preferences file is named as
+      // - <AppName>.xml.<AppVersion> on Windows
+      // - <AppName>rc.<AppVersion> on Linux
+      // where
+      //   * AppName is application name, defaults to SalomeApp. Can be customized in SALOME-based
+      //     applications, see ResourceMgr above for more details.
+      //   * AppVersion is application version, defaults to current version of SALOME GUI module
+      //     if AppName is not customize, otherwise empty. Can be customized in SALOME-based
+      //     applications, see ResourceMgr above for more details.
+      //
+      // Since version 6.5.0 of SALOME, user file is stored in the ~/.config/salome
+      // directory. For backward compatibility, when user preferences from nearest
+      // version of application is searched, user home directory is also looked through,
+      // with lower priority.
+      //
+      // Since version 6.6.0 of SALOME, user file name on Linux is no more prefixed by dot
+      // symbol since it is stored in the hidden ~/.config/salome directory. However, dot-prefixed
+      // files are also taken into account (with lower priority) for backward compatibility.
+      //
+      // Notes:
+      // - Currently the following format of version number is supported:
+      //   <major>[.<minor>[.<release>[<type><dev>]]]
+      //   Parts in square brackets are considered optional. Here:
+      //   * major   - major version id
+      //   * minor   - minor version id
+      //   * release - maintenance version id
+      //   * type    - dev or patch marker; it can be either one alphabetical symbol (from 'a' to 'z')
+      //               or 'rc' to point release candidate (case-insensitive)
+      //   * dev     - dev version or patch number
+      //   All numerical values must be of range [1-99].
+      //   Examples: 1.0, 6.5.0, 1.2.0a1, 3.3.3rc3 (release candidate 3), 11.0.0p1 (patch 1)
+      //
+      // - Versioning approach can be customized by implementing and using own resource manager class,
+      //   see QtxResurceMgr, SUIT_ResourceMgr classes, and ResourceMgr class above in this file.
+      //////////////////////////////////////////////////////////////////////////////////////////////
+
+      long id = -1;
+      if ( !myCustomAppName.isEmpty() ) {
+#ifdef WIN32
+        // On Windows, user file name is something like SalomeApp.xml.6.5.0 where
+        // - SalomeApp is an application name (can be customized)
+        // - xml is a file format (xml or ini)
+        // - 6.5.0 is an application version, can include alfa/beta/rc marks, e.g. 6.5.0a3, 6.5.0rc1
+        QRegExp exp( QString( "%1\\.%2\\.([a-zA-Z0-9.]+)" ).arg( myCustomAppName ).arg( currentFormat() ) );
+#else
+        // On Linux, user file name is something like SalomeApprc.6.5.0 where
+        // - SalomeApp is an application name (can be customized)
+        // - 6.5.0 is an application version, can include alfa/beta/rc marks, e.g. 6.5.0a3, 6.5.0rc1
+
+        // VSR 24/09/2012: issue 0021781: since version 6.6.0 user filename is not prepended with "."
+        // when it is stored in the ~/.config/<appname> directory;
+        // for backward compatibility we also check files prepended with "." with lower priority
+        QRegExp exp( QString( "\\.?%1rc\\.([a-zA-Z0-9.]+)" ).arg( myCustomAppName ) );
+#endif
+        QString fname = QFileInfo( _fname ).fileName();
+        if ( exp.exactMatch( fname ) ) {
+          long fid = Qtx::versionToId( exp.cap( 1 ) );
+          if ( fid > 0 ) id = fid;
+        }
+      }
+      return id;
+    }
+
+  private:
+    static QString myCustomAppName;
+    static QString myCustomAppVersion;
+  };
+  QString ResourceMgr::myCustomAppName;
+  QString ResourceMgr::myCustomAppVersion;
+
+  //! Custom session, to use custom resource manager class.
+  class Session : public SUIT_Session
+  {
+  public:
+    virtual SUIT_ResourceMgr* createResourceMgr( const QString& appName ) const
+    {
+      return new ResourceMgr( appName );
+    }
+  };
+
+  //! Custom QApplication class, redefines notify() method, to transfer all events
+  //  via centralized exception handling mechanism.
+  class Application : public QApplication
+  {
+  public:
+    Application( int& argc, char** argv )
+      : QApplication( argc, argv ),
+        myHandler ( 0 )
+    {
+      myDebug = !Qtx::getenv( "SALOME_DEBUG_EXCEPTIONS" ).isEmpty();
+    }
+
+    virtual bool notify( QObject* receiver, QEvent* e )
+    {
+      if ( myDebug || !myHandler ) {
+        return QApplication::notify( receiver, e );
+      }
+      else {
+        try {
+          return myHandler->handle( receiver, e );
+        }
+        catch ( std::exception& e ) {
+          std::cerr << "notify(): Caught exception : " << e.what() << std::endl;
+        }
+        catch (...) {
+          std::cerr << "notify(): Caught unknown exception : there's probably a bug in SALOME platform" << std::endl;
+        }
+        return false;  // return false when exception is caught
+      }
+    }
+
+    SUIT_ExceptionHandler* handler() const { return myHandler; }
+    void setHandler( SUIT_ExceptionHandler* h ) { myHandler = h; }
+
+  private:
+    SUIT_ExceptionHandler* myHandler;
+    bool myDebug;
+  };
+
+  //! Checks command line for presense of given option(s).
+  //  Option that results to \c true is specified via \a trueOption parameter.
+  //  Option that results to \c false is specified via \a falseOption parameter (empty for default).
+  //  Default value for the result (returned if both \a trueOption \a falseOption are not given) is specified via \c defValue parameter.
+  bool boolCmdOption( const QString trueOption, const QString falseOption = QString(), bool defValue = false )
+  {
+    bool value = defValue;
+
+    QStringList args = QApplication::arguments();
+    foreach ( QString arg, args )
+    {
+      if ( arg == trueOption )
+        value = true;
+      else if ( arg == falseOption )
+        value = false;
+    }
+    return value;
+  }
+
+} // end of anonymous namespace
+
+// ---------------------------- MAIN -----------------------
+int main( int argc, char **argv )
+{
+  if( myAppNameSpace::myAppName == "ShaperApp")
+    qputenv(QString(myAppNameSpace::myAppName + "Config").toUtf8().data(),
+            qgetenv("SalomeAppConfig"));
+
+  // Set-up application settings configuration (as for QSettings)
+  // Note: these are default settings which can be customized (see below)
+  QApplication::setOrganizationName( "salome" );
+  QApplication::setApplicationName( "shaper" );
+  QApplication::setApplicationVersion( salomeVersion() );
+
+  // Install Qt debug messages handler
+  MsgHandler msgHandler;
+  qInstallMessageHandler( QtxMsgHandler );
+
+  // Add <qtdir>/plugins dir to the pluins search path for image plugins
+  QString qtdir = Qtx::qtDir( "plugins" );
+  if ( !qtdir.isEmpty() )
+    QApplication::addLibraryPath( qtdir );
+
+  // Add application library path (to search style plugin etc...)
+
+  QString path = SUIT_Tools::addSlash( Qtx::getenv( "GUI_ROOT_DIR" ) ) + "bin/salome";
+  QApplication::addLibraryPath( QDir::toNativeSeparators( path ) );
+
+  // QSurfaceFormat should be set before creation of QApplication,
+  // so to avoid conflicts beetween SALOME and ParaView QSurfaceFormats we should merge theirs formats
+  // (see void Qtx::initDefaultSurfaceFormat()) and set the resultant format here.
+  Qtx::initDefaultSurfaceFormat();
+
+  // Create Qt application instance: this should be done as early as possible!
+  // Note: QApplication forces setting locale LC_ALL to system one: setlocale(LC_ALL, "").
+  Application app( argc, argv );
+
+  // Initialize Python (only once)
+  // Note: Python forces setting locale LC_CTYPE to system one: setlocale(LC_CTYPE, "").
+#ifndef  DISABLE_PYCONSOLE
+  char* py_argv[] = {(char*)""};
+  KERNEL_PYTHON::init_python( 1, py_argv );
+#endif
+  // Create auxiliary resource manager to access application settings
+  ResourceMgr resMgr;
+  resMgr.setWorkingMode( ResourceMgr::IgnoreUserValues );
+  resMgr.loadLanguage( myAppNameSpace::myLightAppName, "en" );
+  resMgr.loadLanguage( myAppNameSpace::myAppName, "en" );
+  resMgr.loadLanguage( "Session" );
+
+  // Set-up application settings configuration possible customized via resources
+  if ( resMgr.customName() != myAppNameSpace::myAppName ) {
+    QApplication::setApplicationName( resMgr.customName() );
+    QApplication::setApplicationVersion( resMgr.version() );
+  }
+
+  // Force default "C" locale if requested via user's preferences
+  // Note: this does not change whole application locale (changed via setlocale() function),
+  // but only affects GUI behavior
+  resMgr.setWorkingMode( ResourceMgr::AllowUserValues ); // we must take into account user preferences
+  if ( resMgr.booleanValue( "language", "locale", true ) )
+    QLocale::setDefault( QLocale::c() );
+  resMgr.setWorkingMode( ResourceMgr::IgnoreUserValues );
+
+  bool isGUI    = boolCmdOption( "--show-desktop", "--hide-desktop", true ); // true by default
+  bool isSplash = boolCmdOption( "--show-splash", "--hide-splash", true ); // true by default
+  isSplash = false;
+  // Show splash screen (only if both the "GUI" and "SPLASH" options are true)
+  QtxSplash* splash = 0;
+  if ( isGUI && isSplash ) {
+    splash = QtxSplash::splash( QPixmap() );
+    splash->readSettings( &resMgr );
+    if ( splash->pixmap().isNull() )
+      splash->setPixmap( resMgr.loadPixmap(myAppNameSpace::myLightAppName, QObject::tr( "ABOUT_SPLASH" ) ) );
+    if ( splash->pixmap().isNull() ) {
+      delete splash;
+      splash = 0;
+    }
+    else {
+      splash->setOption( "%A", QObject::tr( "APP_NAME" ) );
+      splash->setOption( "%V", QObject::tr( "ABOUT_VERSION" ).arg( resMgr.version() ) );
+      splash->setOption( "%L", QObject::tr( "ABOUT_LICENSE" ) );
+      splash->setOption( "%C", QObject::tr( "ABOUT_COPYRIGHT" ) );
+      splash->show();
+      QApplication::instance()->processEvents();
+    }
+  }
+
+  // Initialization
+  int result = -1;
+
+  SUIT_Session* aGUISession = 0;
+
+#if defined(WIN32) && defined(UNICODE)
+  char** new_argv = NULL;
+#endif
+
+  bool shutdownAll = false;
+  bool debugExceptions = boolCmdOption( "--no-exception-handler" ) ||
+      resMgr.booleanValue( "launch", "noexcepthandler", false );
+
+  while ( true ) {
+    // SUIT_Session creation
+    aGUISession = new Session();
+
+    MESSAGE( "creation SUIT_Application" );
+
+    aGUISession->resourceMgr() = new ResourceMgr( myAppNameSpace::myAppName );
+    aGUISession->resourceMgr()->loadLanguage();
+
+    SalomeApp_Application* aGUIApp = new SalomeApp_Application();
+    aGUIApp->setObjectName(myAppNameSpace::myAppName);
+    aGUISession->insertApplication(aGUIApp);
+    aGUIApp->start();
+
+    // Fill the executable name in session
+    aGUISession->setExecutableAppName(aGUISession->shaperAppName());
+    if ( aGUIApp )
+
+    {
+#ifdef USE_SALOME_STYLE
+      Style_Salome::initialize( aGUIApp->resourceMgr() );
+      if ( aGUIApp->resourceMgr()->booleanValue( "Style", "use_salome_style", true ) )
+        Style_Salome::apply();
+#endif // USE_SALOME_STYLE
+
+      if ( !debugExceptions )
+        app.setHandler( aGUISession->handler() ); // after loading SalomeApp application
+      // aGUISession contains SalomeApp_ExceptionHandler
+
+      // Run GUI loop
+      MESSAGE( "run(): starting the main event loop" );
+
+      if ( splash )
+        splash->finish( aGUIApp->desktop() );
+
+      result = app.exec();
+
+      splash = 0;
+
+      if ( result == SUIT_Session::NORMAL ) {
+        // desktop is explicitly closed by user from GUI
+        // exit flags says if it's necessary to shutdown all servers
+        // all session server only
+        shutdownAll = aGUISession->exitFlags();
+      }
+
+    }
+    break;
+    delete aGUISession;
+    aGUISession = 0;
+
+  }
+
+  delete aGUISession;
+
+#if defined(WIN32) && defined(UNICODE)
+  delete[] new_argv;
+#endif
+#ifndef DISABLE_PYCONSOLE
+  // Finalize Python
+  if ( Py_IsInitialized() )
+  {
+    PyGILState_Ensure();
+    Py_Finalize();
+  }
+#endif
+  MESSAGE( "shaper: end" );
+
+  return result;
+}
diff --git a/src/ShaperApp/CMakeLists.txt b/src/ShaperApp/CMakeLists.txt
new file mode 100644 (file)
index 0000000..9da4644
--- /dev/null
@@ -0,0 +1,244 @@
+# Copyright (C) 2012-2020  CEA/DEN, EDF R&D, CSGROUP
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+INCLUDE(UseQtExt)
+
+# --- options ---
+
+# additional include directories
+INCLUDE_DIRECTORIES(
+  ${OpenCASCADE_INCLUDE_DIR}
+  ${QT_INCLUDES}
+  ${QWT_INCLUDE_DIR}
+  ${Boost_INCLUDE_DIRS}
+  ${PTHREAD_INCLUDE_DIR}
+  ${PROJECT_BINARY_DIR}/idl
+  ${PROJECT_SOURCE_DIR}/src/CAM
+  ${PROJECT_SOURCE_DIR}/src/CASCatch
+  ${PROJECT_SOURCE_DIR}/src/Event
+  ${PROJECT_SOURCE_DIR}/src/LightApp
+  ${PROJECT_SOURCE_DIR}/src/OBJECT
+  ${PROJECT_SOURCE_DIR}/src/ObjBrowser
+  ${PROJECT_SOURCE_DIR}/src/Prs
+  ${PROJECT_SOURCE_DIR}/src/Qtx
+  ${PROJECT_SOURCE_DIR}/src/STD
+  ${PROJECT_SOURCE_DIR}/src/SUIT
+  ${PROJECT_SOURCE_DIR}/src/SVTK
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI
+  ${PROJECT_SOURCE_DIR}/src/VTKViewer
+  ${PROJECT_SOURCE_DIR}/src/SalomeApp
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp
+  SALOMEDSImplAdapt
+)
+
+IF(SALOME_USE_PYCONSOLE)
+  INCLUDE_DIRECTORIES(
+    ${PYTHON_INCLUDE_DIRS}
+    ${PROJECT_SOURCE_DIR}/tools/PyConsole/src
+    ${PROJECT_SOURCE_DIR}/tools/PyInterp/src
+  )
+ENDIF()
+
+# additional preprocessor / compiler flags
+ADD_DEFINITIONS(
+  ${QT_DEFINITIONS}
+   ${QWT_DEFINITIONS}
+  ${OpenCASCADE_DEFINITIONS}
+  ${BOOST_DEFINITIONS}  
+  -DDISABLE_ORB
+  -DSHAPER_STANDALONE
+  #-DDISABLE_PYCONSOLE
+   )
+
+IF(SALOME_USE_PYCONSOLE)
+  ADD_DEFINITIONS(${PYTHON_DEFINITIONS})
+ENDIF()
+
+# ---- add static ToolsGUI in SALOMEDSImpl mode ------------------
+# header files / to be processed by moc
+SET(ToolsGUI_moc_HEADERS
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.h
+ )
+
+# header files / to install
+SET(ToolsGUI_HEADERS ${ToolsGUI_moc_HEADERS} ${ToolsGUI_other_HEADERS})
+# --- resources ---
+# resource files / to be processed by lrelease
+SET(ToolsGUI_ts_RESOURCES
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI/resources/ToolsGUI_msg_en.ts
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI/resources/ToolsGUI_msg_ja.ts
+)
+# sources / static
+SET(ToolsGUI_other_SOURCES  
+  ${PROJECT_SOURCE_DIR}/src/TOOLSGUI/ToolsGUI_CatalogGeneratorDlg.cxx 
+)
+# sources / to compile
+SET(ToolsGUI_SOURCES ${ToolsGUI_other_SOURCES} ${ToolsGUI_moc_SOURCES})
+
+# ---- add static TOOLSDS in SALOMEDSImpl mode ------------------
+# sources / static
+SET(TOOLSDS_SOURCES
+  ${PROJECT_SOURCE_DIR}/../KERNEL/src/TOOLSDS/SALOMEDS_Tool.cxx
+  ${PROJECT_SOURCE_DIR}/../KERNEL/src/Utils/Utils_SALOME_Exception.cxx
+  ${PROJECT_SOURCE_DIR}/../KERNEL/src/Utils/duplicate.cxx
+ )
+
+# ------------------------------------------------------------------
+
+# libraries to link to
+SET(_link_LIBRARIES  
+  ${QT_LIBRARIES}  
+  ${KERNEL_SalomeDSImpl} 
+  LightApp
+ )
+
+IF(SALOME_USE_VTKVIEWER)
+  LIST(APPEND _link_LIBRARIES VTKViewer SVTK)
+ENDIF()
+
+IF(SALOME_USE_PYCONSOLE)
+  LIST(APPEND _link_LIBRARIES PyInterp PyConsole)
+ENDIF()
+
+IF(SALOME_USE_GLVIEWER)
+  LIST(APPEND _link_LIBRARIES GLViewer)
+ENDIF()
+
+IF(SALOME_USE_PLOT2DVIEWER)
+  LIST(APPEND _link_LIBRARIES Plot2d)
+  IF(SALOME_USE_SALOMEOBJECT)
+    LIST(APPEND _link_LIBRARIES SPlot2d)
+  ENDIF(SALOME_USE_SALOMEOBJECT)
+ENDIF(SALOME_USE_PLOT2DVIEWER)
+
+IF(SALOME_USE_OCCVIEWER)
+  LIST(APPEND _link_LIBRARIES OCCViewer)
+  IF(SALOME_USE_SALOMEOBJECT)
+    LIST(APPEND _link_LIBRARIES SOCC)
+  ENDIF(SALOME_USE_SALOMEOBJECT)
+ENDIF()
+
+IF(SALOME_USE_PVVIEWER)
+  LIST(APPEND _link_LIBRARIES PVViewer)
+ENDIF()
+
+IF(SALOME_USE_SALOMEOBJECT)
+  LIST(APPEND _link_LIBRARIES SalomeObject)
+ENDIF()
+
+IF(NOT SALOME_LIGHT_ONLY)
+  LIST(APPEND _link_LIBRARIES SalomeIDLGUI)
+  LIST(APPEND _link_LIBRARIES ${KERNEL_SalomeContainer})
+ENDIF()
+
+# --- headers ---
+
+# header files / to be processed by moc
+
+SET(_moc_HEADERS ${SalomeCommon_moc_HEADERS})
+
+IF(SALOME_USE_PYCONSOLE)
+  LIST(APPEND _moc_HEADERS ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_NoteBook.h)
+ENDIF()
+
+# header files / no moc processing
+
+SET(_other_HEADERS ${SalomeCommon_other_HEADERS}
+  SalomeApp_EngineImpl.h)
+
+IF(SALOME_USE_PYCONSOLE)
+  LIST(APPEND _other_HEADERS ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_PyInterp.h)
+ENDIF()
+
+# header files / to install
+SET(ShaperApp_HEADERS ${_moc_HEADERS} ${_other_HEADERS})
+
+# --- resources ---
+
+# resource files / to be processed by lrelease
+SET(_ts_RESOURCES
+  resources/ShaperApp_images.ts
+  resources/ShaperApp_msg_en.ts
+  resources/ShaperApp_msg_fr.ts
+  resources/ShaperApp_msg_ja.ts
+  resources/LightShaperApp_images.ts
+  resources/LightShaperApp_msg_en.ts
+  resources/LightShaperApp_msg_fr.ts
+  resources/LightShaperApp_msg_ja.ts
+)
+
+# resource files / static
+SET(_other_RESOURCES
+  resources/ShaperApp.xml
+  resources/LightShaperApp.xml
+  resources/shaper.png
+)
+SET(SALOME_RESOURCES_FILES
+  shaper.png 
+)
+# --- sources ---
+
+# sources / moc wrappings
+QT_WRAP_MOC(_moc_SOURCES ${_moc_HEADERS} ${ToolsGUI_moc_HEADERS})
+
+# sources / static
+
+SET(_other_SOURCES ${SalomeCommon_other_SOURCES}
+  SalomeApp_EngineImpl.cxx)
+
+IF(SALOME_USE_PYCONSOLE)
+  LIST(APPEND _other_SOURCES ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_PyInterp.cxx
+ ${PROJECT_SOURCE_DIR}/src/SalomeApp/SalomeApp_NoteBook.cxx)
+ENDIF()
+
+# adapter sources for GUI without CORBA
+ADD_SUBDIRECTORY(SALOMEDSImplAdapt)
+
+# sources / to compile
+SET(ShaperApp_SOURCES ${_other_SOURCES} ${_moc_SOURCES} ${ToolsGUI_SOURCES} ${TOOLSDS_SOURCES} ${SALOMEDSImplAdapt_SOURCES})
+
+# --- scripts ---
+
+# scripts / bin
+SET(_bin_SCRIPTS
+   ${PROJECT_SOURCE_DIR}/src/SalomeApp/addvars2notebook.py
+)
+
+# scripts / python
+SET(_py_SCRIPTS
+   ${PROJECT_SOURCE_DIR}/src/SalomeApp/salome_pluginsmanager.py
+)
+
+# --- rules ---
+
+ADD_LIBRARY(ShaperApp ${ShaperApp_SOURCES})
+TARGET_LINK_LIBRARIES(ShaperApp ${_link_LIBRARIES})
+INSTALL(TARGETS ShaperApp EXPORT ${PROJECT_NAME}TargetGroup DESTINATION ${SALOME_INSTALL_LIBS})
+
+INSTALL(FILES ${ShaperApp_HEADERS} DESTINATION ${SALOME_INSTALL_HEADERS})
+QT_INSTALL_TS_RESOURCES("${_ts_RESOURCES}" "${SALOME_GUI_INSTALL_RES_DATA}")
+
+INSTALL(FILES ${_other_RESOURCES} DESTINATION ${SALOME_GUI_INSTALL_RES_DATA})
+
+SALOME_INSTALL_SCRIPTS("${_py_SCRIPTS}"  ${SALOME_INSTALL_PYTHON})
+SALOME_INSTALL_SCRIPTS("${_bin_SCRIPTS}" ${SALOME_INSTALL_SCRIPT_PYTHON})
+
+
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/CMakeLists.txt b/src/ShaperApp/SALOMEDSImplAdapt/CMakeLists.txt
new file mode 100644 (file)
index 0000000..a654912
--- /dev/null
@@ -0,0 +1,34 @@
+# Copyright (C) 2012-2020  CEA/DEN, EDF R&D, CSGROUP
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public
+# License along with this library; if not, write to the Free Software
+# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+#
+# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+#
+
+
+SET(SALOMEDSImplAdapt_SOURCES
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.cxx
+  ${PROJECT_SOURCE_DIR}/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.cxx
+ )
+
+# export for Shaper application
+SET(SALOMEDSImplAdapt_SOURCES ${SALOMEDSImplAdapt_SOURCES} PARENT_SCOPE) 
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImpl.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImpl.hxx
new file mode 100644 (file)
index 0000000..b25596c
--- /dev/null
@@ -0,0 +1,68 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef SALOMEDSIMPL_HXX__
+#define SALOMEDSIMPL_HXX__
+
+#include "SALOMEDSImpl_AttributeComment.hxx"
+#include "SALOMEDSImpl_AttributeDrawable.hxx"
+#include "SALOMEDSImpl_AttributeExpandable.hxx"
+#include "SALOMEDSImpl_AttributeExternalFileDef.hxx"
+#include "SALOMEDSImpl_AttributeFileType.hxx"
+#include "SALOMEDSImpl_AttributeFlags.hxx"
+#include "SALOMEDSImpl_AttributeGraphic.hxx"
+#include "SALOMEDSImpl_AttributeIOR.hxx"
+#include "SALOMEDSImpl_AttributeInteger.hxx"
+#include "SALOMEDSImpl_AttributeLocalID.hxx"
+#include "SALOMEDSImpl_AttributeName.hxx"
+#include "SALOMEDSImpl_AttributeOpened.hxx"
+#include "SALOMEDSImpl_AttributePersistentRef.hxx"
+#include "SALOMEDSImpl_AttributePixMap.hxx"
+#include "SALOMEDSImpl_AttributePythonObject.hxx"
+#include "SALOMEDSImpl_AttributeReal.hxx"
+#include "SALOMEDSImpl_AttributeSelectable.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfInteger.hxx"
+#include "SALOMEDSImpl_AttributeSequenceOfReal.hxx"
+#include "SALOMEDSImpl_AttributeStudyProperties.hxx"
+#include "SALOMEDSImpl_AttributeTableOfInteger.hxx"
+#include "SALOMEDSImpl_AttributeTableOfReal.hxx"
+#include "SALOMEDSImpl_AttributeTableOfString.hxx"
+#include "SALOMEDSImpl_AttributeTarget.hxx"
+#include "SALOMEDSImpl_AttributeTextColor.hxx"
+#include "SALOMEDSImpl_AttributeTextHighlightColor.hxx"
+#include "SALOMEDSImpl_AttributeTreeNode.hxx"
+#include "SALOMEDSImpl_AttributeUserID.hxx"
+#include "SALOMEDSImpl_AttributeParameter.hxx"
+#include "SALOMEDSImpl_AttributeString.hxx"
+#include "SALOMEDSImpl_ChildIterator.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+#include "SALOMEDSImpl_IParameters.hxx"
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt.hxx
new file mode 100644 (file)
index 0000000..09488f2
--- /dev/null
@@ -0,0 +1,37 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef SALOMEDSIMPL_ADAPT_HXX
+#define SALOMEDSIMPL_ADAPT_HXX
+
+#include "SALOMEDSImplAdaptTypes.hxx"
+
+#include "SALOMEDSImplAdapt_SObject.hxx"
+#include "SALOMEDSImplAdapt_SComponent.hxx"
+#include "SALOMEDSImplAdapt_StudyBuilder.hxx"
+#include "SALOMEDSImplAdapt_UseCaseBuilder.hxx"
+#include "SALOMEDSImplAdapt_Study.hxx"
+#include "SALOMEDSImplAdapt_UseCaseIterator.hxx"
+#include "SALOMEDSImplAdapt_SComponentIterator.hxx"
+#include "SALOMEDSImplAdapt_ChildIterator.hxx"
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptCopyAttribute.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptCopyAttribute.hxx
new file mode 100644 (file)
index 0000000..c622e32
--- /dev/null
@@ -0,0 +1,79 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef SALOMEDSIMPL_ADAPT_CopyAttribute_HXX
+#define SALOMEDSIMPL_ADAPT_CopyAttribute_HXX
+
+#include "SALOMEDSImplAdapt_definitions.hxx"
+#include <cstring>
+#include "SALOMEDSImplAdaptTypes.hxx"
+
+namespace{
+
+#define __CreateAttributeClass(className) if (strcmp(aTypeOfAttribute.c_str(), #className) == 0) { \
+  anAttr = _PTR(className)( new _CLASS(className)); \
+}
+
+#define __CreateGenerictAttributeClass \
+  __CreateAttributeClass(AttributeReal) \
+  __CreateAttributeClass(AttributeInteger) \
+  __CreateAttributeClass(AttributeSequenceOfReal) \
+  __CreateAttributeClass(AttributeSequenceOfInteger) \
+  __CreateAttributeClass(AttributeName) \
+  __CreateAttributeClass(AttributeComment) \
+  __CreateAttributeClass(AttributeIOR) \
+  __CreateAttributeClass(AttributePixMap) \
+  __CreateAttributeClass(AttributeLocalID) \
+  __CreateAttributeClass(AttributeTableOfInteger) \
+  __CreateAttributeClass(AttributeTableOfReal) \
+  __CreateAttributeClass(AttributeTableOfString) \
+  __CreateAttributeClass(AttributePythonObject) \
+  __CreateAttributeClass(AttributePersistentRef) \
+  __CreateAttributeClass(AttributeDrawable) \
+  __CreateAttributeClass(AttributeSelectable) \
+  __CreateAttributeClass(AttributeExpandable) \
+  __CreateAttributeClass(AttributeOpened) \
+  __CreateAttributeClass(AttributeTextColor) \
+  __CreateAttributeClass(AttributeTextHighlightColor) \
+  __CreateAttributeClass(AttributeTarget) \
+  __CreateAttributeClass(AttributeStudyProperties) \
+  __CreateAttributeClass(AttributeExternalFileDef) \
+  __CreateAttributeClass(AttributeFileType) \
+  __CreateAttributeClass(AttributeFlags) \
+  __CreateAttributeClass(AttributeGraphic) \
+  __CreateAttributeClass(AttributeTreeNode) \
+  __CreateAttributeClass(AttributeUserID) \
+  __CreateAttributeClass(AttributeParameter) \
+  __CreateAttributeClass(AttributeString)
+
+  inline _PTR(GenericAttribute) copyAttribute(_CLASS(GenericAttribute) * aFilledAttr)
+  {
+    _PTR(GenericAttribute) anAttr;
+    std::string aTypeOfAttribute = aFilledAttr->GetClassType();
+    __CreateGenerictAttributeClass
+        // fill using implicit-defined copy assignent operator
+        *anAttr = *aFilledAttr;
+    return anAttr;
+  }
+}
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptTypes.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdaptTypes.hxx
new file mode 100644 (file)
index 0000000..7eb9d98
--- /dev/null
@@ -0,0 +1,63 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef SALOMEDSIMPL_ADAPT_TYPES_HXX
+#define SALOMEDSIMPL_ADAPT_TYPES_HXX
+
+#include "SALOMEDSImplAdapt_definitions.hxx"
+#include "SALOMEDSImpl.hxx"
+
+typedef SALOMEDSImpl_AttributeComment SALOMEDSImplAdapt_AttributeComment;
+typedef SALOMEDSImpl_AttributeDrawable SALOMEDSImplAdapt_AttributeDrawable;
+typedef SALOMEDSImpl_AttributeExpandable SALOMEDSImplAdapt_AttributeExpandable;
+typedef SALOMEDSImpl_AttributeExternalFileDef SALOMEDSImplAdapt_AttributeExternalFileDef;
+typedef SALOMEDSImpl_AttributeFileType SALOMEDSImplAdapt_AttributeFileType;
+typedef SALOMEDSImpl_AttributeFlags SALOMEDSImplAdapt_AttributeFlags;
+typedef SALOMEDSImpl_AttributeGraphic SALOMEDSImplAdapt_AttributeGraphic;
+typedef SALOMEDSImpl_AttributeIOR SALOMEDSImplAdapt_AttributeIOR;
+typedef SALOMEDSImpl_AttributeInteger SALOMEDSImplAdapt_AttributeInteger;
+typedef SALOMEDSImpl_AttributeLocalID SALOMEDSImplAdapt_AttributeLocalID;
+typedef SALOMEDSImpl_AttributeName SALOMEDSImplAdapt_AttributeName;
+typedef SALOMEDSImpl_AttributeOpened SALOMEDSImplAdapt_AttributeOpened;
+typedef SALOMEDSImpl_AttributePersistentRef SALOMEDSImplAdapt_AttributePersistentRef;
+typedef SALOMEDSImpl_AttributePixMap SALOMEDSImplAdapt_AttributePixMap;
+typedef SALOMEDSImpl_AttributePythonObject SALOMEDSImplAdapt_AttributePythonObject;
+typedef SALOMEDSImpl_AttributeReal SALOMEDSImplAdapt_AttributeReal;
+typedef SALOMEDSImpl_AttributeSelectable SALOMEDSImplAdapt_AttributeSelectable;
+typedef SALOMEDSImpl_AttributeSequenceOfInteger SALOMEDSImplAdapt_AttributeSequenceOfInteger;
+typedef SALOMEDSImpl_AttributeSequenceOfReal SALOMEDSImplAdapt_AttributeSequenceOfReal;
+typedef SALOMEDSImpl_AttributeStudyProperties SALOMEDSImplAdapt_AttributeStudyProperties;
+typedef SALOMEDSImpl_AttributeTableOfInteger SALOMEDSImplAdapt_AttributeTableOfInteger;
+typedef SALOMEDSImpl_AttributeTableOfReal SALOMEDSImplAdapt_AttributeTableOfReal;
+typedef SALOMEDSImpl_AttributeTableOfString SALOMEDSImplAdapt_AttributeTableOfString;
+typedef SALOMEDSImpl_AttributeTarget SALOMEDSImplAdapt_AttributeTarget;
+typedef SALOMEDSImpl_AttributeTextColor SALOMEDSImplAdapt_AttributeTextColor;
+typedef SALOMEDSImpl_AttributeTextHighlightColor SALOMEDSImplAdapt_AttributeTextHighlightColor;
+typedef SALOMEDSImpl_AttributeTreeNode SALOMEDSImplAdapt_AttributeTreeNode;
+typedef SALOMEDSImpl_AttributeUserID SALOMEDSImplAdapt_AttributeUserID;
+typedef SALOMEDSImpl_AttributeParameter SALOMEDSImplAdapt_AttributeParameter;
+typedef SALOMEDSImpl_AttributeString SALOMEDSImplAdapt_AttributeString;
+typedef SALOMEDSImpl_GenericAttribute SALOMEDSImplAdapt_GenericAttribute;
+typedef SALOMEDSImpl_GenericVariable SALOMEDSImplAdapt_GenericVariable;
+typedef SALOMEDSImpl_IParameters SALOMEDSImplAdapt_IParameters;
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.cxx
new file mode 100644 (file)
index 0000000..00fd511
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#include "SALOMEDSImplAdapt_ChildIterator.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_ChildIterator::SALOMEDSImplAdapt_ChildIterator(const SALOMEDSImpl_SObject& theObject):
+  SALOMEDSImpl_ChildIterator(theObject){}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_ChildIterator* SALOMEDSImplAdapt_ChildIterator::GetPersistentCopy() const
+{
+  SALOMEDSImplAdapt_ChildIterator* itr = new SALOMEDSImplAdapt_ChildIterator();
+  itr->_it = _it;
+  itr->_so = _so;
+  return itr;
+}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SObject  SALOMEDSImplAdapt_ChildIterator::GetValue() {
+  return SALOMEDSImplAdapt_SObject(SALOMEDSImpl_ChildIterator::Value());
+}
+
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_ChildIterator.hxx
new file mode 100644 (file)
index 0000000..50c85e5
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_ChildIterator.hxx
+// purpose: adaper for class SALOMEDSImpl_ChildIterator in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_ChildIterator_HXX
+#define SALOMEDSIMPL_ADAPT_ChildIterator_HXX
+
+#include "SALOMEDSImpl_ChildIterator.hxx"
+
+class SALOMEDSImplAdapt_SObject;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_ChildIterator: public SALOMEDSImpl_ChildIterator
+{
+public:
+  SALOMEDSImplAdapt_ChildIterator() = default;
+  explicit SALOMEDSImplAdapt_ChildIterator(const SALOMEDSImpl_SObject& theObject);
+  virtual ~SALOMEDSImplAdapt_ChildIterator() = default;
+
+  SALOMEDSImplAdapt_ChildIterator* GetPersistentCopy() const;
+  SALOMEDSImplAdapt_SObject GetValue();
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.cxx
new file mode 100644 (file)
index 0000000..7d51b99
--- /dev/null
@@ -0,0 +1,43 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSImplAdapt_SComponent.hxx"
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponent::SALOMEDSImplAdapt_SComponent(const SALOMEDSImpl_SComponent& theSCO)
+  :SALOMEDSImpl_SComponent(theSCO), SALOMEDSImplAdapt_SObject()
+{}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponent::SALOMEDSImplAdapt_SComponent(){}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponent* SALOMEDSImplAdapt_SComponent::GetPersistentCopy() const
+{
+  SALOMEDSImplAdapt_SComponent* sco = new SALOMEDSImplAdapt_SComponent();
+  sco->_lab = _lab;
+  sco->_name = _name;
+  sco->_type = _type;
+  sco->_value = _value;
+  return sco;
+}
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponent.hxx
new file mode 100644 (file)
index 0000000..5f31d36
--- /dev/null
@@ -0,0 +1,45 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_SComponent.hxx
+// purpose: adaper for class SALOMEDSImpl_SComponent in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_SComponent_HXX
+#define SALOMEDSIMPL_ADAPT_SComponent_HXX
+
+#include "SALOMEDSImpl_SComponent.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+
+class SALOMEDSImplAdapt_SComponent: public virtual SALOMEDSImpl_SComponent,
+    public virtual SALOMEDSImplAdapt_SObject
+{
+public:
+  SALOMEDSImplAdapt_SComponent(const SALOMEDSImpl_SComponent& theSCO);
+  SALOMEDSImplAdapt_SComponent();
+  virtual ~SALOMEDSImplAdapt_SComponent() = default;
+
+  SALOMEDSImplAdapt_SComponent* GetPersistentCopy() const;
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.cxx
new file mode 100644 (file)
index 0000000..266237b
--- /dev/null
@@ -0,0 +1,44 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSImplAdapt_SComponentIterator.hxx"
+#include "SALOMEDSImplAdapt_SComponent.hxx"
+
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponentIterator::SALOMEDSImplAdapt_SComponentIterator(DF_Document* doc):
+  SALOMEDSImpl_SComponentIterator(doc){}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponentIterator* SALOMEDSImplAdapt_SComponentIterator::GetPersistentCopy() const
+{
+  SALOMEDSImplAdapt_SComponentIterator* itr = new SALOMEDSImplAdapt_SComponentIterator();
+  itr->_lab = _lab;
+  itr->_it = _it;
+  return itr;
+}
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SComponent SALOMEDSImplAdapt_SComponentIterator::GetValue() {
+  return SALOMEDSImplAdapt_SComponent(SALOMEDSImpl_SComponentIterator::Value());
+}
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SComponentIterator.hxx
new file mode 100644 (file)
index 0000000..f94a814
--- /dev/null
@@ -0,0 +1,46 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_SComponentIterator.hxx
+// purpose: adaper for class SALOMEDSImpl_SComponentIterator in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_SComponentIterator_HXX
+#define SALOMEDSIMPL_ADAPT_SComponentIterator_HXX
+
+#include "SALOMEDSImpl_SComponentIterator.hxx"
+
+class SALOMEDSImplAdapt_SComponent;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_SComponentIterator: public SALOMEDSImpl_SComponentIterator
+{
+public:
+  SALOMEDSImplAdapt_SComponentIterator() = default;
+  explicit SALOMEDSImplAdapt_SComponentIterator(DF_Document* doc);
+  virtual ~SALOMEDSImplAdapt_SComponentIterator() = default;
+
+  SALOMEDSImplAdapt_SComponentIterator* GetPersistentCopy() const;
+  SALOMEDSImplAdapt_SComponent GetValue();
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.cxx
new file mode 100644 (file)
index 0000000..3db3a4b
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSImplAdapt_SObject.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImplAdaptCopyAttribute.hxx"
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_SObject::SALOMEDSImplAdapt_SObject(const SALOMEDSImpl_SObject& theSObject):
+  SALOMEDSImpl_SObject(theSObject){}
+
+bool SALOMEDSImplAdapt_SObject::SALOMEDSImplAdapt_SObject::ReferencedObject(_PTR(SObject) & theObject) const
+{
+  SALOMEDSImpl_SObject anObj;
+  bool aResult = SALOMEDSImpl_SObject::ReferencedObject(anObj);
+  if(aResult){
+    theObject = _PTR(SObject)(new _CLASS(SObject)(anObj));
+  }
+  return aResult;
+}
+
+bool SALOMEDSImplAdapt_SObject::FindAttribute( _PTR(GenericAttribute) & anAttr, const std::string aTypeOfAttribute)
+{
+  DF_Attribute* aFilledAttr = nullptr;
+  bool isFound = SALOMEDSImpl_SObject::FindAttribute(aFilledAttr, aTypeOfAttribute);
+  if(isFound){
+    anAttr = copyAttribute(_CAST(GenericAttribute, aFilledAttr));
+    return true;
+  }
+  return false;
+}
+
+SALOMEDSImplAdapt_SObject* SALOMEDSImplAdapt_SObject::GetPersistentCopy() const
+{
+  SALOMEDSImplAdapt_SObject* so = new SALOMEDSImplAdapt_SObject;
+  so->_lab = _lab;
+  so->_name = _name;
+  so->_type = _type;
+  so->_value = _value;
+  return so;
+}
+// ----------------------------------------------------------------------------------------
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_SObject.hxx
new file mode 100644 (file)
index 0000000..cdcf5c6
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_SObject.hxx
+// purpose: adaper for class SALOMEDSImpl_SObject in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_SObject_HXX
+#define SALOMEDSIMPL_ADAPT_SObject_HXX
+
+#include "SALOMEDSImplAdapt_definitions.hxx"
+#include "SALOMEDSImpl_SObject.hxx"
+#include <string>
+
+class SALOMEDSImpl_GenericAttribute;
+typedef SALOMEDSImpl_GenericAttribute SALOMEDSImplAdapt_GenericAttribute;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_SObject: public virtual SALOMEDSImpl_SObject
+{
+public:
+  SALOMEDSImplAdapt_SObject() = default;
+  SALOMEDSImplAdapt_SObject(const SALOMEDSImpl_SObject& theSObject);
+  virtual ~SALOMEDSImplAdapt_SObject() = default;
+
+  bool ReferencedObject(_PTR(SObject) & theObject) const;
+  bool FindAttribute( _PTR(GenericAttribute) & anAttr, const std::string aTypeOfAttribute);
+  SALOMEDSImplAdapt_SObject* GetPersistentCopy() const;
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.cxx
new file mode 100644 (file)
index 0000000..e9bf2d3
--- /dev/null
@@ -0,0 +1,159 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SALOMEDSImplAdapt_Study.hxx"
+#include "SALOMEDSImplAdapt_ChildIterator.hxx"
+#include "SALOMEDSImplAdapt_SComponentIterator.hxx"
+#include "SALOMEDSImplAdapt_StudyBuilder.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+#include "SALOMEDSImplAdapt_UseCaseBuilder.hxx"
+#include "SALOMEDSImplAdapt_SComponent.hxx"
+#include "SALOMEDSImpl_GenericVariable.hxx"
+
+typedef SALOMEDSImpl_GenericVariable  SALOMEDSImplAdapt_GenericVariable;
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_Study::SALOMEDSImplAdapt_Study()
+  :_myNewBuilder(nullptr), _myUseCaseBuilder(nullptr)
+{}
+
+// ----------------------------------------------------------------------------------------
+_PTR(SObject) SALOMEDSImplAdapt_Study::FindObjectID(const QString& anObjectID)
+{
+  auto aFound = SALOMEDSImpl_Study::FindObjectID(anObjectID.toUtf8().data());
+  if(!aFound.IsNull())
+    return _PTR(SObject) (new _CLASS(SObject)(aFound));
+  return nullptr;
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::CanOpen(const std::string & url)
+{
+  SALOMEDSImpl_Study aTmp;
+  return aTmp.Open(url);
+}
+
+// ----------------------------------------------------------------------------------------
+_CLASS(StudyBuilder)* SALOMEDSImplAdapt_Study::NewBuilder()
+{
+  _myNewBuilder = std::unique_ptr<_CLASS(StudyBuilder)>
+      (new _CLASS(StudyBuilder)(SALOMEDSImpl_Study::NewBuilder()));
+  return _myNewBuilder.get();
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(SComponent) SALOMEDSImplAdapt_Study::FindComponent (const QString& aComponentName)
+{
+  return _PTR(SComponent)(_CLASS(SComponent)(
+                            SALOMEDSImpl_Study::FindComponent(aComponentName.toUtf8().data())));
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(SComponent) SALOMEDSImplAdapt_Study::FindComponentID(const QString& aComponentID){
+  return _PTR(SComponent)(_CLASS(SComponent)(
+                            SALOMEDSImpl_Study::FindComponentID(aComponentID.toUtf8().data())));
+}
+
+// ----------------------------------------------------------------------------------------
+std::vector<_PTR(SObject)> SALOMEDSImplAdapt_Study::FindDependances(const _PTR(SObject) & obj)
+{
+  std::vector<_PTR(SObject)> aResult;
+  if(obj){
+    auto aRefs = SALOMEDSImpl_Study::FindDependances(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(obj) );
+    for(auto aVal : aRefs)
+      aResult.push_back(_PTR(SObject)(new _CLASS(SObject) (aVal)));
+  }
+  return aResult;
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(ChildIterator) SALOMEDSImplAdapt_Study::NewChildIterator(const _PTR(SObject)& aSO)
+{
+  if(aSO)
+    return _PTR(ChildIterator) (_CLASS(ChildIterator)(
+                                  *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(aSO)
+                                  ).GetPersistentCopy());
+  return nullptr;
+}
+
+// ----------------------------------------------------------------------------------------
+_CLASS(UseCaseBuilder)* SALOMEDSImplAdapt_Study::GetUseCaseBuilder()
+{
+  _myUseCaseBuilder = std::unique_ptr<_CLASS(UseCaseBuilder)>(
+        new _CLASS(UseCaseBuilder)(SALOMEDSImpl_Study::GetUseCaseBuilder()));
+  return _myUseCaseBuilder.get();
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(SComponentIterator) SALOMEDSImplAdapt_Study::GetNewComponentIterator()
+{
+  return _PTR(SComponentIterator)( new SALOMEDSImplAdapt_SComponentIterator(GetDocument()));
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::IsReal(const std::string & aName)
+{
+  return IsTypeOf(aName, _CLASS(GenericVariable)::REAL_VAR);
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::IsInteger(const std::string & aName)
+{
+  return IsTypeOf(aName, _CLASS(GenericVariable)::INTEGER_VAR);
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::IsString(const std::string & aName)
+{
+  return IsTypeOf(aName, _CLASS(GenericVariable)::STRING_VAR);
+}
+
+// ----------------------------------------------------------------------------------------
+int SALOMEDSImplAdapt_Study::GetInteger( const std::string & aName )
+{
+  return GetVariableValue(aName);
+}
+
+// ----------------------------------------------------------------------------------------
+double SALOMEDSImplAdapt_Study::GetReal( const std::string & aName)
+{
+  return GetVariableValue(aName);
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::IsBoolean(const std::string & aName)
+{
+  return IsTypeOf(aName, _CLASS(GenericVariable)::BOOLEAN_VAR);
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_Study::GetBoolean(const std::string & aName)
+{
+  return GetVariableValue(aName);
+}
+
+// ----------------------------------------------------------------------------------------
+std::string SALOMEDSImplAdapt_Study::GetString(const std::string & aName)
+{
+  return GetStringVariableValue(aName);
+}
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_Study.hxx
new file mode 100644 (file)
index 0000000..28658e9
--- /dev/null
@@ -0,0 +1,77 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_Study.hxx
+// purpose: adaper for class SALOMEDSImpl_Study in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_Study_HXX
+#define SALOMEDSIMPL_ADAPT_Study_HXX
+
+#include "SALOMEDSImplAdapt_definitions.hxx"
+#include "SALOMEDSImpl_Study.hxx"
+#include "SALOMEDSImplAdapt_StudyBuilder.hxx"
+#include "SALOMEDSImplAdapt_UseCaseBuilder.hxx"
+
+#include <QString>
+#include <memory>
+
+class SALOMEDSImplAdapt_ChildIterator;
+class SALOMEDSImplAdapt_SComponentIterator;
+class SALOMEDSImplAdapt_SObject;
+class SALOMEDSImplAdapt_SComponent;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_Study: public SALOMEDSImpl_Study
+{
+public:
+  SALOMEDSImplAdapt_Study();
+  virtual ~SALOMEDSImplAdapt_Study() = default;
+
+  _CLASS(StudyBuilder)* NewBuilder();
+  _CLASS(UseCaseBuilder)* GetUseCaseBuilder();
+
+  _PTR(SObject) FindObjectID(const QString& anObjectID);
+  _PTR(SComponent) FindComponent(const QString& aComponentName);
+  _PTR(SComponent) FindComponentID(const QString& aComponentID);
+  _PTR(ChildIterator) NewChildIterator(const _PTR(SObject)& aSO);
+  _PTR(SComponentIterator) GetNewComponentIterator();
+
+  std::vector<_PTR(SObject)> FindDependances(const _PTR(SObject) & obj);
+
+  bool CanOpen(const std::string & url);
+  bool IsReal(const std::string & aName);
+  bool IsInteger(const std::string & aName);
+  bool IsString(const std::string & aName);
+  bool IsBoolean(const std::string & aName);
+  inline bool Modified(){return IsModified();}
+  int GetInteger( const std::string & aName);
+  bool GetBoolean(const std::string & aName);
+  std::string GetString(const std::string & aName);
+  double GetReal( const std::string & aName);
+
+private:
+  std::unique_ptr<_CLASS(StudyBuilder)> _myNewBuilder;
+  std::unique_ptr<_CLASS(UseCaseBuilder)> _myUseCaseBuilder;
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.cxx
new file mode 100644 (file)
index 0000000..7ab5810
--- /dev/null
@@ -0,0 +1,105 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#include "SALOMEDSImplAdapt_StudyBuilder.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+#include "SALOMEDSImplAdapt_SComponent.hxx"
+#include "SALOMEDSImpl_GenericAttribute.hxx"
+#include "SALOMEDSImplAdaptCopyAttribute.hxx"
+
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_StudyBuilder::SALOMEDSImplAdapt_StudyBuilder(SALOMEDSImpl_StudyBuilder* theBuilder):
+  SALOMEDSImpl_StudyBuilder(theBuilder->GetOwner()){}
+
+// ----------------------------------------------------------------------------------------
+void SALOMEDSImplAdapt_StudyBuilder::RemoveReference(_PTR(SObject) & aSObject){
+  if(aSObject)
+    SALOMEDSImpl_StudyBuilder::RemoveReference(*std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(aSObject));
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(SComponent) SALOMEDSImplAdapt_StudyBuilder::NewComponent (const QString& ComponentDataType){
+  return _PTR(SComponent)(_CLASS(SComponent)(
+                            SALOMEDSImpl_StudyBuilder::NewComponent(ComponentDataType.toUtf8().data())));
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_StudyBuilder::SetName(const _PTR(SComponent)& theSO, const std::string& theValue){
+  if(theSO){
+    return SALOMEDSImpl_StudyBuilder::SetName(*std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(theSO), theValue);
+  }
+  return false;
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(GenericAttribute) SALOMEDSImplAdapt_StudyBuilder::FindOrCreateAttribute(const _PTR(SComponent)& anObject,
+                                                                             const std::string& aTypeOfAttribute){
+  if(anObject)
+  {
+    auto aResult = SALOMEDSImpl_StudyBuilder::FindOrCreateAttribute(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(anObject), aTypeOfAttribute);
+    if(aResult){
+      return copyAttribute(_CAST(GenericAttribute, aResult));
+    }
+  }
+  return nullptr;
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_StudyBuilder::DefineComponentInstance(const _PTR(SComponent)& aComponent, const std::string& IOR){
+  if(aComponent){
+    return SALOMEDSImpl_StudyBuilder::DefineComponentInstance(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(aComponent), IOR);
+  }
+  return false;
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_StudyBuilder::RemoveObjectWithChildren(const _PTR(SObject) &object){
+  if(object)
+    return SALOMEDSImpl_StudyBuilder::RemoveObjectWithChildren(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(object));
+  return false;
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_StudyBuilder::RemoveObjectWithChildren(const SALOMEDSImpl_SObject& anObject){
+  return SALOMEDSImpl_StudyBuilder::RemoveObjectWithChildren(anObject);
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_StudyBuilder::FindAttribute(const _PTR(SObject)& anObject,
+                                                   _PTR(GenericAttribute)& anAttribute,
+                                                   const std::string& aTypeOfAttribute)
+{
+  DF_Attribute* anAttr = nullptr;
+  if(anObject){
+    bool aResult = SALOMEDSImpl_StudyBuilder::FindAttribute(*std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(anObject),
+                                                            anAttr, aTypeOfAttribute);
+    anAttribute = _PTR(GenericAttribute)(_CAST(GenericAttribute, anAttr));
+    return aResult;
+  }
+  return false;
+}
+
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_StudyBuilder.hxx
new file mode 100644 (file)
index 0000000..1a8c009
--- /dev/null
@@ -0,0 +1,65 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_StudyBuilder.hxx
+// purpose: adaper for class SALOMEDSImpl_StudyBuilder in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_StudyBuilder_HXX
+#define SALOMEDSIMPL_ADAPT_StudyBuilder_HXX
+
+#include "SALOMEDSImplAdapt_definitions.hxx"
+#include "SALOMEDSImpl_StudyBuilder.hxx"
+
+#include <QString>
+
+class SALOMEDSImpl_SObject;
+class SALOMEDSImplAdapt_SObject;
+class SALOMEDSImplAdapt_SComponent;
+class SALOMEDSImpl_GenericAttribute;
+typedef SALOMEDSImpl_GenericAttribute SALOMEDSImplAdapt_GenericAttribute;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_StudyBuilder: public SALOMEDSImpl_StudyBuilder
+{
+public:
+  SALOMEDSImplAdapt_StudyBuilder() = default;
+  explicit SALOMEDSImplAdapt_StudyBuilder(SALOMEDSImpl_StudyBuilder* theBuilder);
+  virtual ~SALOMEDSImplAdapt_StudyBuilder() = default;
+
+  void RemoveReference(_PTR(SObject) & aSObject);
+
+  _PTR(SComponent) NewComponent (const QString& ComponentDataType);
+  _PTR(GenericAttribute) FindOrCreateAttribute(const _PTR(SComponent)& anObject,
+                                               const std::string& aTypeOfAttribute);
+
+  bool SetName(const _PTR(SComponent)& theSO, const std::string& theValue);
+  bool DefineComponentInstance(const _PTR(SComponent)& aComponent, const std::string& IOR);
+  bool RemoveObjectWithChildren(const _PTR(SObject) &object);
+  bool RemoveObjectWithChildren(const SALOMEDSImpl_SObject& anObject) override;
+
+  bool FindAttribute(const _PTR(SObject)& anObject,
+                     _PTR(GenericAttribute)& anAttribute,
+                     const std::string& aTypeOfAttribute);
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.cxx
new file mode 100644 (file)
index 0000000..f1cb710
--- /dev/null
@@ -0,0 +1,61 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+
+#include "SALOMEDSImplAdapt_UseCaseBuilder.hxx"
+#include "SALOMEDSImplAdapt_UseCaseIterator.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_UseCaseBuilder::SALOMEDSImplAdapt_UseCaseBuilder(SALOMEDSImpl_UseCaseBuilder* aCopy):
+  SALOMEDSImpl_UseCaseBuilder(aCopy){}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_UseCaseBuilder::HasChildren(const _PTR(SObject) & theObject){
+  if(theObject)
+    return SALOMEDSImpl_UseCaseBuilder::HasChildren(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(theObject));
+  return false;
+}
+
+// ----------------------------------------------------------------------------------------
+bool SALOMEDSImplAdapt_UseCaseBuilder::IsUseCaseNode(const _PTR(SObject) & theObject){
+  if(theObject)
+    return SALOMEDSImpl_UseCaseBuilder::IsUseCaseNode(
+          *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(theObject));
+  return false;
+}
+
+// ----------------------------------------------------------------------------------------
+_PTR(UseCaseIterator) SALOMEDSImplAdapt_UseCaseBuilder::GetUseCaseIterator(const _PTR(SObject) & theObject){
+  if(theObject){
+    return _PTR(UseCaseIterator)(_CLASS(UseCaseIterator)(
+                                   std::unique_ptr<SALOMEDSImpl_UseCaseIterator>(
+                                     SALOMEDSImpl_UseCaseBuilder::GetUseCaseIterator(
+                                       *std::dynamic_pointer_cast<SALOMEDSImpl_SObject>(theObject)
+                                       ).GetPersistentCopy())
+                                   ).GetPersistentCopy());
+  }
+  return nullptr;
+}
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseBuilder.hxx
new file mode 100644 (file)
index 0000000..deb3b04
--- /dev/null
@@ -0,0 +1,50 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_UseCaseBuilder.hxx
+// purpose: adaper for class SALOMEDSImpl_UseCaseBuilder in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_UseCaseBuilder_HXX
+#define SALOMEDSIMPL_ADAPT_UseCaseBuilder_HXX
+
+#include "SALOMEDSImpl_UseCaseBuilder.hxx"
+#include "SALOMEDSImplAdapt_definitions.hxx"
+
+class SALOMEDSImplAdapt_UseCaseIterator;
+class SALOMEDSImplAdapt_SObject;
+
+
+class SALOMEDSImplAdapt_UseCaseBuilder: public SALOMEDSImpl_UseCaseBuilder
+{
+public:
+  SALOMEDSImplAdapt_UseCaseBuilder() = default;
+  SALOMEDSImplAdapt_UseCaseBuilder(SALOMEDSImpl_UseCaseBuilder* aCopy);
+  virtual ~SALOMEDSImplAdapt_UseCaseBuilder() = default;
+
+  bool HasChildren(const _PTR(SObject) & theObject);
+  bool IsUseCaseNode(const _PTR(SObject) & theObject);
+  _PTR(UseCaseIterator) GetUseCaseIterator(const _PTR(SObject) & theObject);
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.cxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.cxx
new file mode 100644 (file)
index 0000000..dc49f71
--- /dev/null
@@ -0,0 +1,45 @@
+
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+
+#include "SALOMEDSImplAdapt_UseCaseIterator.hxx"
+#include "SALOMEDSImplAdapt_SObject.hxx"
+
+// ----------------------------------------------------------------------------------------
+SALOMEDSImplAdapt_UseCaseIterator::SALOMEDSImplAdapt_UseCaseIterator(const std::unique_ptr<SALOMEDSImpl_UseCaseIterator> refIterator):
+  SALOMEDSImpl_UseCaseIterator(refIterator.get()){}
+
+SALOMEDSImplAdapt_UseCaseIterator* SALOMEDSImplAdapt_UseCaseIterator::GetPersistentCopy() const
+{
+  SALOMEDSImplAdapt_UseCaseIterator* itr = new SALOMEDSImplAdapt_UseCaseIterator();
+  itr->_it = _it;
+  itr->_node = _node;
+  itr->_guid = _guid;
+  itr->_levels = _levels;
+  return itr;
+}
+
+SALOMEDSImplAdapt_SObject SALOMEDSImplAdapt_UseCaseIterator::GetValue() {
+  return SALOMEDSImplAdapt_SObject(SALOMEDSImpl_UseCaseIterator::Value());
+}
+// ----------------------------------------------------------------------------------------
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_UseCaseIterator.hxx
new file mode 100644 (file)
index 0000000..5538fe4
--- /dev/null
@@ -0,0 +1,48 @@
+// Copyright (C) 2007-2020 CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+//=======================================================================================
+// file: SALOMEDSImplAdapt_UseCaseIterator.hxx
+// purpose: adaper for class SALOMEDSImpl_UseCaseIterator in Salome GUI without CORBA
+//=======================================================================================
+
+#ifndef SALOMEDSIMPL_ADAPT_UseCaseIterator_HXX
+#define SALOMEDSIMPL_ADAPT_UseCaseIterator_HXX
+
+#include "SALOMEDSImpl_UseCaseIterator.hxx"
+
+#include <memory>
+
+class SALOMEDSImplAdapt_SObject;
+
+class SALOMEDSIMPL_EXPORT SALOMEDSImplAdapt_UseCaseIterator: public SALOMEDSImpl_UseCaseIterator
+{
+public:
+  SALOMEDSImplAdapt_UseCaseIterator() = default;
+  explicit SALOMEDSImplAdapt_UseCaseIterator(const std::unique_ptr<SALOMEDSImpl_UseCaseIterator> refIterator);
+  virtual ~SALOMEDSImplAdapt_UseCaseIterator() = default;
+
+  SALOMEDSImplAdapt_UseCaseIterator* GetPersistentCopy() const;
+  SALOMEDSImplAdapt_SObject GetValue();
+};
+
+#endif
diff --git a/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_definitions.hxx b/src/ShaperApp/SALOMEDSImplAdapt/SALOMEDSImplAdapt_definitions.hxx
new file mode 100644 (file)
index 0000000..0bd116f
--- /dev/null
@@ -0,0 +1,83 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef  SALOMEDSIMPL_ADAPT_DEF_HXX
+#define  SALOMEDSIMPL_ADAPT_DEF_HXX
+
+#ifdef WIN32
+# if defined SALOMEDSIMPL_EXPORTS || defined SalomeDSImpl_EXPORTS
+#  define SALOMEDSIMPL_EXPORT __declspec( dllexport )
+# else
+#  define SALOMEDSIMPL_EXPORT __declspec( dllimport )
+# endif
+#else
+# define SALOMEDSIMPL_EXPORT
+#endif
+
+#include <memory>
+
+template<class T> class clt_std_shared_ptr: public std::shared_ptr<T>
+{
+public:
+  clt_std_shared_ptr() {}
+  clt_std_shared_ptr(std::nullptr_t p): std::shared_ptr<T>(p){}
+
+  template<class Y>
+  explicit clt_std_shared_ptr(Y * p)
+  {
+    std::shared_ptr<T>::reset(p);
+  }
+
+  template<class Y>
+  explicit clt_std_shared_ptr(const Y & p)
+  {
+    std::shared_ptr<T>::reset(p.IsNull()? 0:p.GetPersistentCopy());
+  }
+
+  template<class Y>
+  clt_std_shared_ptr(clt_std_shared_ptr<Y> const & r):
+    std::shared_ptr<T>(std::dynamic_pointer_cast<T>(r))
+  {}
+
+  template<class Y>
+  clt_std_shared_ptr & operator=(clt_std_shared_ptr<Y> const & r)
+  {
+    clt_std_shared_ptr<T>(r).swap(*this);
+    return *this;
+  }
+
+  template<class Y> clt_std_shared_ptr& operator()(Y * p) // Y must be complete
+  {
+    if(T* pt = dynamic_cast<T*>(p))
+      std::shared_ptr<T>::reset(pt);
+    else
+      throw std::exception(std::bad_cast());
+    return *this;
+  }
+
+};
+
+#define _CLASS(Class) SALOMEDSImplAdapt_##Class
+#define _CAST(Class, ptr_Obj) dynamic_cast<_CLASS(Class)*>(ptr_Obj)
+#define _PTR(Class)  clt_std_shared_ptr<_CLASS(Class)>
+
+#endif
diff --git a/src/ShaperApp/SalomeApp_EngineImpl.cxx b/src/ShaperApp/SalomeApp_EngineImpl.cxx
new file mode 100644 (file)
index 0000000..e20ef0e
--- /dev/null
@@ -0,0 +1,448 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#include "SalomeApp_EngineImpl.h"
+#include "SalomeApp_Application.h"
+#include "SalomeApp_Study.h"
+#include "SUIT_Session.h"
+#include "CAM_Module.h"
+#include "LightApp_DataModel.h"
+
+#include <SALOMEDS_Tool.hxx>
+#include <Utils_SALOME_Exception.hxx>
+#include <utilities.h>
+#include "SALOMEDSImpl_SComponent.hxx"
+
+#include <QApplication>
+#include <QDir>
+#include <QFile>
+#include <QUuid>
+
+#include <iostream>
+
+/*!
+  Constructor
+*/
+SalomeApp_EngineImpl::SalomeApp_EngineImpl( const char* theComponentName )
+  : _myKeepFiles( false ), _myComponentName( theComponentName )
+{
+  MESSAGE("SalomeApp_EngineImpl::SalomeApp_EngineImpl(): myComponentName = " <<
+          qPrintable( _myComponentName.c_str() ) << ", this = " << this);
+}
+
+/*!
+  Destructor
+*/
+SalomeApp_EngineImpl::~SalomeApp_EngineImpl()
+{
+  SalomeApp_EngineImplFactory::instance()->removeEngine(_myComponentName);
+
+  MESSAGE("SalomeApp_EngineImpl::~SalomeApp_EngineImpl(): _myComponentName = " <<
+          qPrintable( _myComponentName.c_str() ) << ", this = " << this);
+}
+
+std::map<std::string, std::string> SalomeApp_EngineImpl::_myComponentIORS =
+{{"SHAPER", "1efa48dd-ce57-4e7b-a22d-e562b0563ddf"}};
+
+SalomeApp_EngineImplFactory::~SalomeApp_EngineImplFactory()
+{
+  for(auto aEnginePair: _myEnginesMap)
+  {
+    if(aEnginePair.second){
+      delete aEnginePair.second;
+      aEnginePair.second = nullptr;
+    }
+  }
+}
+
+SALOMEDSImpl_Driver* SalomeApp_EngineImplFactory::GetDriverByType(const std::string& theComponentType)
+{
+  auto theFatory = instance();
+  auto anIt = theFatory->_myEnginesMap.find(theComponentType);
+  if(anIt !=  theFatory->_myEnginesMap.end())
+  {
+    if(anIt->second)
+      return dynamic_cast<SALOMEDSImpl_Driver*>(anIt->second);
+  }
+  return nullptr;
+}
+
+void SalomeApp_EngineImplFactory::removeEngine(const std::string& theComponentName)
+{
+  _myEnginesMap.erase(theComponentName);
+}
+
+SALOMEDSImpl_Driver* SalomeApp_EngineImplFactory::GetDriverByIOR(const std::string& theIOR)
+{
+  for(auto aCompIOR : SalomeApp_EngineImpl::getComponentIORS()){
+    if(aCompIOR.second == theIOR){
+      return GetDriverByType(aCompIOR.first);
+    }
+  }
+  return  nullptr;
+}
+
+SalomeApp_EngineImplFactory* SalomeApp_EngineImplFactory::instance()
+{
+ static std::unique_ptr<SalomeApp_EngineImplFactory> myFactory(new SalomeApp_EngineImplFactory());
+ return myFactory.get();
+}
+
+SalomeApp_EngineImpl* SalomeApp_EngineImplFactory::makeEngine(const char* theComponentName, bool toCreate)
+{
+  SalomeApp_EngineImpl* anEngine = nullptr;
+  auto theFactory = SalomeApp_EngineImplFactory::instance();
+  auto myItEngine = theFactory->_myEnginesMap.find(theComponentName);
+  if(myItEngine != theFactory->_myEnginesMap.end())
+    anEngine = myItEngine->second;
+  // Activating a new engine
+  if ( toCreate && !anEngine ){
+    anEngine =  new SalomeApp_EngineImpl(theComponentName);
+    theFactory->_myEnginesMap[theComponentName] = anEngine;
+  }
+  return anEngine;
+}
+
+
+std::string SalomeApp_EngineImpl::GetIOR()
+{
+  return _myComponentIORS[_myComponentName];
+}
+
+SALOMEDSImpl_TMPFile *SalomeApp_EngineImpl::Save(const SALOMEDSImpl_SComponent& theComponent,  const std::string& theURL,
+                                                 long& theStreamLength,  bool isMultiFile )
+{
+  SALOMEDSImpl_Tool::TMPFile *aStreamFile = nullptr;
+
+  if (theComponent.IsNull())
+    return nullptr;
+  
+  // Component type
+  std::string componentName (const_cast<SALOMEDSImpl_SComponent*>(&theComponent)->ComponentDataType());
+
+  // Error somewhere outside - Save() called with wrong SComponent instance
+  if ( _myComponentName != componentName )
+    return nullptr;
+
+  // Get a temporary directory to store a file
+  //std::string aTmpDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+
+  bool manuallySaved = false;
+
+  if ( GetListOfFiles(0).empty() ) // 0 means persistence file
+  {
+
+    // Save was probably called from outside GUI, so SetListOfFiles was not called!
+    // Try to get list of files from directly from data model
+
+    MESSAGE("SalomeApp_EngineImpl::Save(): _myComponentName = " <<
+            qPrintable( _myComponentName.c_str() ) <<
+            "it seems Save() was called from outside GUI" );
+
+    // - Get app
+    SalomeApp_Application* app =
+        dynamic_cast<SalomeApp_Application*>(SUIT_Session::session()->activeApplication());
+    if ( !app )
+      return nullptr;
+
+    // - Get study
+    SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+
+    if ( !study )
+      return nullptr;
+    QString url = QString::fromStdString(study->studyDS()->URL());
+
+    // - Get module
+    CAM_Module* module = app->module( SalomeApp_Application::moduleTitle( componentName.c_str() ) );
+    if ( !module ) // load module???
+      return nullptr;
+    // - Get data model
+    LightApp_DataModel* dataModel = dynamic_cast<LightApp_DataModel*>( module->dataModel() );
+    if ( !dataModel )
+      return nullptr;
+    // - Save data files
+    QStringList dataFiles;
+    // we use 'url' instead of 'theURL' as latter normally contains path to the tmp dir,
+    // but not actual study's URL
+    dataModel->saveAs( url, study, dataFiles );
+    std::vector<std::string> names;
+    foreach ( QString name, dataFiles ) {
+      if ( !name.isEmpty() )
+        names.push_back(name.toUtf8().data());
+    }
+    SetListOfFiles( 0, names ); // 0 means persistence file
+    manuallySaved = true;
+  }
+
+  // Get a temporary directory to store a file
+  //std::string aTmpDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+
+  // listOfFiles must contain temporary directory name in its first item
+  // and names of files (relatively the temporary directory) in the others
+  ListOfFiles listOfFiles = GetListOfFiles( 0 ); // 0 means persistence file
+  const int n = (int)listOfFiles.size() - 1; //!< TODO: conversion from size_t to int
+  
+  if (n > 0) { // there are some files, containing persistent data of the component
+    std::string aTmpDir = listOfFiles[0];
+    
+    // Create a list to store names of created files
+    ListOfFiles aSeq;
+    aSeq.reserve(n);
+    for (int i = 0; i < n; i++)
+      aSeq.push_back(listOfFiles[i + 1]);
+    
+    // Convert a file to the byte stream
+    aStreamFile = SALOMEDS_Tool::PutFilesToStreamImpl(aTmpDir.c_str(), aSeq, isMultiFile);
+    
+    // Remove the files and tmp directory, created by the component storage procedure
+    SalomeApp_Application* app =
+        dynamic_cast<SalomeApp_Application*>( SUIT_Session::session()->activeApplication() );
+    SalomeApp_Study* study = dynamic_cast<SalomeApp_Study*>( app->activeStudy() );
+    study->RemoveTemporaryFiles( _myComponentName.c_str(), isMultiFile );
+  }
+  
+  if ( manuallySaved )
+    SetListOfFiles(0, ListOfFiles()); // 0 means persistence file
+
+  return dynamic_cast<SALOMEDSImpl_TMPFile*>(aStreamFile);
+}
+
+bool SalomeApp_EngineImpl::Load(const SALOMEDSImpl_SComponent & theComponent,  const unsigned char* theStream,
+                                const long theStreamLength, const std::string& theURL, bool isMultiFile )
+{
+  std::cout << "SalomeApp_EngineImpl::Load() isMultiFile = " << isMultiFile << std::endl;
+  if (theComponent.IsNull())
+    return false;
+
+  // Error somewhere outside - Load() called with
+  // wrong SComponent instance
+  std::string componentName (const_cast<SALOMEDSImpl_SComponent*>(&theComponent)->ComponentDataType());
+  if ( _myComponentName != componentName )
+    return false;
+
+  // Create a temporary directory for the component's data files
+  std::string aTmpDir = isMultiFile ? theURL : SALOMEDS_Tool::GetTmpDir();
+
+  // Convert the byte stream theStream to a files and place them in the tmp directory.
+  // The files and temporary directory must be deleted by the component loading procedure.
+  SALOMEDSImpl_Tool::TMPFile theFile(theStreamLength, const_cast<unsigned char *>(theStream), 1);
+  ListOfFiles aSeq =
+      SALOMEDS_Tool::PutStreamToFilesImpl(theFile, aTmpDir.c_str(), isMultiFile);
+
+  // Store list of file names to be used by the component loading procedure
+  const int n = (int)aSeq.size() + 1; //!< TODO: conversion from size_t to int
+  ListOfFiles listOfFiles (n);
+  listOfFiles[0] = aTmpDir;
+  for (int i = 1; i < n; i++)
+    listOfFiles[i] = std::string(aSeq[i - 1]);
+
+  SetListOfFiles(0, listOfFiles); // 0 means persistence file
+  keepFiles( true );
+
+  return true;
+}
+
+SalomeApp_EngineImpl::ListOfFiles SalomeApp_EngineImpl::GetListOfFiles(int type)
+{
+  return _myListOfFiles.count(type) ? _myListOfFiles[type] : ListOfFiles();
+}
+
+void SalomeApp_EngineImpl::SetListOfFiles (int type, const ListOfFiles& theListOfFiles)
+{
+  _myListOfFiles[type] = theListOfFiles;
+}
+
+/*! 
+ *  DumpPython implementation for light modules
+ */
+SALOMEDSImpl_TMPFile*  SalomeApp_EngineImpl::DumpPython(bool isPublished, bool isMultiFile,
+                                                        bool& isValidScript, long& theStreamLength)
+{
+  MESSAGE("SalomeApp_EngineImpl::DumpPython(): _myComponentName = "<<
+          qPrintable( _myComponentName.c_str() ) << ", this = " << this);
+  
+  // Temporary solution: returning a non-empty sequence
+  // even if there's nothing to dump, to avoid crashes in SALOMEDS
+  // TODO: Improve SALOMEDSImpl_Study::DumpStudy() by skipping the components
+  // with isValidScript == false, and initialize isValidScript by false below.
+  SALOMEDSImpl_TMPFile* aStreamFile = nullptr;
+  SALOMEDSImpl_TMPFile* aStreamFileDefault = new SALOMEDSImpl_Tool::TMPFile(1, (unsigned char *)("\0"), 1);
+  isValidScript = true;
+
+  ListOfFiles listOfFiles = GetListOfFiles( 1 ); // 1  means dump file
+
+  // listOfFiles must contain temporary directory name in its first item
+  // and names of files (relatively the temporary directory) in the others
+  if ( listOfFiles.size() < 2 )
+    return aStreamFileDefault;
+
+  // there are some files, containing persistent data of the component
+  QString aTmpPath( listOfFiles.front().c_str() );
+  QDir aTmpDir( aTmpPath );
+  if ( !aTmpDir.exists() )
+    return aStreamFileDefault;
+
+  // Calculate file sizes
+  QStringList aFilePaths;
+  QList<qint64> aFileSizes;
+  qint64 aBuffSize = 0;
+  ListOfFiles::const_iterator aFIt  = listOfFiles.begin();
+  ListOfFiles::const_iterator aFEnd = listOfFiles.end();
+  aFIt++;
+  for (; aFIt != aFEnd; aFIt++){
+    QString aFileName( (*aFIt).c_str() );
+    if ( !aTmpDir.exists( aFileName ) ){
+      continue;
+    }
+
+    QFile aFile( aTmpDir.filePath( aFileName ) );
+    if ( !aFile.open( QIODevice::ReadOnly ) ){
+      continue;
+    }
+
+    aFilePaths.push_back( aTmpDir.filePath( aFileName ) );
+    aFileSizes.push_back( aFile.size() );
+    aBuffSize += aFileSizes.back();
+
+    aFile.close();
+  }
+
+  if ( !aFilePaths.size() || !aBuffSize )
+    return aStreamFileDefault;
+
+  char* aBuffer = new char[aBuffSize + 1];
+  if ( !aBuffer )
+    return aStreamFileDefault;
+
+  // Convert the file(s) to the byte stream, multiple files are simply
+  // concatenated
+  // TODO: imporve multi-script support if necessary...
+  qint64 aCurrPos = 0;
+  QStringList::const_iterator aFileIt  = aFilePaths.begin();
+  QStringList::const_iterator aFileEnd = aFilePaths.end();
+  QList<qint64>::const_iterator   aSIt = aFileSizes.begin();
+  for ( ; aFileIt != aFileEnd; aFileIt++, aSIt++ ){
+    QFile aFile( aTmpDir.filePath( *aFileIt ) );
+    if ( !aFile.open( QIODevice::ReadOnly ) ){
+      continue;
+    }
+
+    // Incorrect size of file
+    // Do not remove the bad file to have some diagnostic means
+    if ( aFile.read( aBuffer + aCurrPos, *aSIt ) != *aSIt ){
+      aFile.close();
+      return aStreamFileDefault;
+    }
+
+    aCurrPos += (*aSIt);
+    aFile.remove();
+  }
+
+  // Here we should end up with empty aTmpDir
+  // TODO: Handle QDir::rmdir() error status somehow...
+  aTmpDir.rmdir( aTmpPath );
+
+  aBuffer[aBuffSize] = '\0';
+  aStreamFile = new SALOMEDSImpl_Tool::TMPFile(aBuffSize + 1, (unsigned char*)(aBuffer), 1);
+
+  return aStreamFile;
+}
+
+/*!
+  \return Component data type string for this instance of the engine
+*/
+std::string SalomeApp_EngineImpl::ComponentDataType()
+{
+  return  _myComponentName;
+}
+
+/*!
+  \return Component version
+*/
+std::string SalomeApp_EngineImpl::Version()
+{
+  SalomeApp_Application::ModuleShortInfoList versions = SalomeApp_Application::getVersionInfo();
+  QString version;
+  SalomeApp_Application::ModuleShortInfo version_info;
+  foreach ( version_info, versions ) {
+    if ( SalomeApp_Application::moduleName( version_info.name ) == QString(_myComponentName.c_str()) ) {
+      version = version_info.version;
+      break;
+    }
+  }
+  
+  return std::string(version.toLatin1().constData());
+}
+
+
+/*!
+  Internal method, creates an engine for a light SALOME module
+  with the given "component data type" string,
+  activates it and registers in SALOME naming service with
+  /SalomeAppEngine/comp_data_type path. If the engine is already in the
+  naming service, simply returns and object reference to it.
+  \param theComponentName - synthetic "component data type" used to identify a given light module
+  \return Object reference to the engine
+*/
+SalomeApp_EngineImpl *SalomeApp_EngineImpl::EngineForComponent( const char* theComponentName,
+                                                                bool toCreate )
+{
+  if ( !theComponentName || !strlen( theComponentName ) )
+    return nullptr;
+
+  if ( SalomeApp_Application::moduleTitle( theComponentName ).isEmpty() )
+    return nullptr;
+
+  return SalomeApp_EngineImplFactory::makeEngine(theComponentName, toCreate);
+}
+
+/*!
+  \param theComponentName - synthetic "component data type" used to identify a given light module
+  \return IOR string for the engine for a light SALOME module
+  with the given "component data type" string
+  \sa GetInstance( const char* theComponentName )
+*/
+std::string SalomeApp_EngineImpl::EngineIORForComponent( const char* theComponentName,
+                                                         bool toCreate )
+{
+  std::string anIOR( "" );
+  SalomeApp_EngineImpl * anEngine = EngineForComponent( theComponentName, toCreate );
+  if (anEngine)
+  {
+    anIOR = anEngine->GetIOR();
+  }
+  return anIOR;
+}
+
+/*!
+  \param theComponentName - synthetic "component data type" used to identify a given light module
+  \return A pointer to corresponding C++ engine instance, null means some internal problems.
+  \sa EngineIORForComponent( const char* theComponentName )
+*/
+SalomeApp_EngineImpl* SalomeApp_EngineImpl::GetInstance( const char* theComponentName,
+                                                         bool toCreate )
+{
+  SalomeApp_EngineImpl* anEngine = EngineForComponent( theComponentName, toCreate );
+  MESSAGE("SalomeApp_EngineImpl::GetInstance(): theComponentName = " <<
+          theComponentName);
+  return anEngine;
+}
diff --git a/src/ShaperApp/SalomeApp_EngineImpl.h b/src/ShaperApp/SalomeApp_EngineImpl.h
new file mode 100644 (file)
index 0000000..6ce99ff
--- /dev/null
@@ -0,0 +1,126 @@
+// Copyright (C) 2007-2020  CEA/DEN, EDF R&D, CSGROUP
+//
+// Copyright (C) 2003-2007  OPEN CASCADE, EADS/CCR, LIP6, CEA/DEN,
+// CEDRAT, EDF R&D, LEG, PRINCIPIA R&D, BUREAU VERITAS
+//
+// This library is free software; you can redistribute it and/or
+// modify it under the terms of the GNU Lesser General Public
+// License as published by the Free Software Foundation; either
+// version 2.1 of the License, or (at your option) any later version.
+//
+// This library is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+// Lesser General Public License for more details.
+//
+// You should have received a copy of the GNU Lesser General Public
+// License along with this library; if not, write to the Free Software
+// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307 USA
+//
+// See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
+//
+
+#ifndef _SALOMEAPP_ENGINE_IMPL_HXX_
+#define _SALOMEAPP_ENGINE_IMPL_HXX_
+
+#include "SalomeApp.h"
+#include "SALOMEDS_Tool.hxx"
+#include "SALOMEDSImpl_Driver.hxx"
+#include <QString>
+#include <vector> 
+#include <map> 
+#include <memory>
+
+class SALOMEDSImpl_SComponent;
+class SALOMEDSImpl_SObject;
+class SalomeApp_EngineImplFactory;
+
+class SALOMEAPP_EXPORT SalomeApp_EngineImpl: public SALOMEDSImpl_Driver
+{
+public:
+
+  ~SalomeApp_EngineImpl();
+
+  virtual SALOMEDSImpl_TMPFile* Save(const SALOMEDSImpl_SComponent& theComponent,  const std::string& theURL,
+                                     long& theStreamLength,  bool isMultiFile ) override;
+
+  virtual bool Load(const SALOMEDSImpl_SComponent & theComponent,  const unsigned char* theStream,
+                    const long theStreamLength, const std::string& theURL, bool isMultiFile ) override;
+
+  virtual SALOMEDSImpl_TMPFile* DumpPython(bool isPublished, bool isMultiFile,
+                                           bool& isValidScript, long& theStreamLength) override;
+
+  typedef std::vector<std::string> ListOfFiles;
+  typedef std::map<int, ListOfFiles> MapOfFiles;
+
+  ListOfFiles             GetListOfFiles (int);
+  void                    SetListOfFiles (int, const ListOfFiles& theListOfFiles);
+
+  static std::string         EngineIORForComponent( const char* theComponentName,
+                                                    bool toCreate );
+  static SalomeApp_EngineImpl* GetInstance ( const char* theComponentName, bool toCreate );
+
+  static SalomeApp_EngineImpl* EngineForComponent( const char* theComponentName,
+                                                   bool toCreate );
+  virtual std::string GetIOR() override;
+  bool keepFiles() const { return _myKeepFiles; }
+  void keepFiles( bool keep ) { _myKeepFiles = keep; }
+  static const std::map<std::string, std::string> & getComponentIORS()
+  {return _myComponentIORS;}
+
+private:
+
+  friend class SalomeApp_EngineImplFactory; // builder
+  explicit SalomeApp_EngineImpl( const char* theComponentName );
+  SalomeApp_EngineImpl() = default;
+
+  // methods from SALOMEDS::Driver without implementation.  Must be redefined because
+  // there is no default implementation of SALOMEDSImpl_Driver interface
+  virtual SALOMEDSImpl_TMPFile* SaveASCII( const SALOMEDSImpl_SComponent &, const std::string& ,
+                                           long&, bool ) override
+  { return nullptr; }
+  virtual bool LoadASCII( const SALOMEDSImpl_SComponent &, const unsigned char* , const long, const std::string& , bool ) override
+  {return 0;}
+  virtual void Close( const SALOMEDSImpl_SComponent & ) override
+  {}
+  virtual std::string ComponentDataType();
+  virtual std::string IORToLocalPersistentID( const SALOMEDSImpl_SObject &, const std::string &, bool, bool) override
+  {return "";}
+  virtual std::string LocalPersistentIDToIOR( const SALOMEDSImpl_SObject &, const std::string&, bool, bool ) override
+  {return "";}
+  virtual bool CanCopy( const SALOMEDSImpl_SObject& ) override
+  {return 0;}
+  virtual SALOMEDSImpl_TMPFile* CopyFrom(const SALOMEDSImpl_SObject& , int& , long& ) override
+  {}
+  virtual bool CanPaste(const std::string& , int ) override
+  {return 0;}
+  virtual std::string PasteInto( const unsigned char* , long, int, const SALOMEDSImpl_SObject& ) override
+  {return "";}
+  virtual std::string Version() override;
+
+  MapOfFiles                         _myListOfFiles;
+  bool                               _myKeepFiles;
+  std::string                            _myComponentName;
+  static std::map<std::string, std::string> _myComponentIORS;
+};
+
+SALOMEAPP_EXPORT class SalomeApp_EngineImplFactory:
+    public SALOMEDSImpl_DriverFactory
+{
+public:
+
+  virtual SALOMEDSImpl_Driver* GetDriverByType(const std::string& theComponentType) override;
+  virtual SALOMEDSImpl_Driver* GetDriverByIOR(const std::string& theIOR) override;
+  static SalomeApp_EngineImpl* makeEngine(const char* theComponentName, bool toCreate);
+  static SalomeApp_EngineImplFactory* instance();
+  void removeEngine(const std::string& theComponentName);
+  ~SalomeApp_EngineImplFactory();
+private:
+  std::map<std::string, SalomeApp_EngineImpl*> _myEnginesMap;
+  SalomeApp_EngineImplFactory() = default;  
+};
+
+
+
+#endif
+
diff --git a/src/ShaperApp/resources/LightShaperApp.xml b/src/ShaperApp/resources/LightShaperApp.xml
new file mode 100644 (file)
index 0000000..478997e
--- /dev/null
@@ -0,0 +1,286 @@
+<document>
+  <section name="launch">
+    <!-- SALOME launching parameters -->
+    <parameter name="gui"        value="yes"/>
+    <parameter name="splash"     value="no"/>
+    <parameter name="file"       value="no"/>
+    <parameter name="key"        value="no"/>
+    <parameter name="interp"     value="no"/>
+    <parameter name="modules"    value="SHAPER,LIGHT,PYLIGHT"/>
+  </section>
+  <section name="language">
+    <!-- Language settings (resource manager)-->
+    <parameter name="languages"   value="en,fr,ja"/>
+    <parameter name="language"    value="en"/>
+    <parameter name="locale"      value="true"/>
+    <parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
+  </section>
+  <section name="splash" >
+    <!-- Splash screen settings -->
+    <parameter name="image"             value="${GUI_ROOT_DIR}/share/salome/resources/gui/shaper_splash.png" />
+    <parameter name="constant_info"     value="%A [ %V ]" />
+    <parameter name="text_colors"       value="#ffffff" />
+    <parameter name="hide_on_click"     value="yes" />
+    <parameter name="show_progress"     value="yes" />
+    <parameter name="show_message"      value="yes" />
+    <parameter name="show_percents"     value="yes" />
+    <parameter name="margin"            value="30" />
+    <parameter name="progress_width"    value="20" />
+    <parameter name="progress_flags"    value="bottom,left_to_right" />
+    <parameter name="opacity"           value="0.85" />
+    <parameter name="font"              value="Tahoma,12,normal" />
+    <parameter name="alignment"         value="top,left" />
+    <parameter name="progress_colors"   value="#0f9ee1|#081e70|h" />
+  </section>
+  <section name="resources">
+    <!-- Resource directories (resource manager)-->
+    <parameter name="Qtx"           value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="Style"         value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SUIT"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="STD"           value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="ViewerTools"   value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="Plot2d"        value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SPlot2d"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="GLViewer"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="GraphicsView"  value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="OCCViewer"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="VTKViewer"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="PVViewer"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="QxSceneViewer" value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="PyEditor"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="PyViewer"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="PyConsole"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="ShaperApp"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <!--parameter name="SalomeApp"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/-->
+    <parameter name="OB"            value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="CAM"           value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="LightShaperApp"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="SVTK"          value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="ToolsGUI"      value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="LogWindow"     value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+    <parameter name="Session"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
+  </section>
+  <section name="desktop" >
+    <!-- Default GUI desktop state, position, size -->
+    <parameter name="geometry"      value="80%%x80%%+10%%+10%%"/>
+    <parameter name="opaque_resize" value="false"/>
+  </section>
+  <section name="PyConsole">
+    <!-- Python console preferences -->
+    <parameter name="auto_completion"     value="true" />
+    <parameter name="show_banner"         value="false" />
+    <parameter name="font"                value="Sans Serif,12" />
+    <parameter name="additional_families" value="Helvetic;Helvetica;Helvetica[Adobe];Times;Times[Adobe];Sans Serif;Serif;Monospace;Lucida"/>
+  </section>
+  <section name="Style">
+    <!-- Style and theme preferences -->
+    <parameter name="use_salome_style" value="true" />
+  </section>
+  <section name="ObjectBrowser" >
+    <!-- Object Browser preferences -->
+    <parameter name="auto_hide_search_tool"   value="true" />
+    <parameter name="auto_size"               value="true" />
+    <parameter name="auto_size_first"         value="true" />
+    <parameter name="resize_on_expand_item"   value="true" />
+    <parameter name="browse_published_object" value="1" />
+  </section>
+  <section name="FileDlg">
+    <!-- "Open/Save File" dialog box preferences-->
+    <parameter name="QuickDirList" value=""/>
+    <parameter name="ShowCurDirInitial" value="true" />
+  </section>
+  <section name="MRU" >
+    <!-- Show "Most recently used" studies-->
+    <parameter name="show_mru" value="true"/>
+    <!-- Max number of stored "Most recently used" studies-->
+    <parameter name="max_count" value="50"/>
+    <!-- Max visible number of "Most recently used" studies-->
+    <parameter name="visible_count" value="7"/>
+    <!-- Insert mode-->
+    <parameter name="insert_mode" value="0"/>
+    <!-- Link type-->
+    <parameter name="link_type" value="0"/>
+    <!-- Show "Clear" item-->
+    <parameter name="show_clear" value="true"/>
+  </section>
+  <section name="Study">
+    <!-- General study settings -->
+    <parameter name="autoload_light_modules"    value="true" />
+    <parameter name="store_positions"    value="true" />
+    <parameter name="store_tool_positions"     value="true" />
+    <parameter name="auto_save_interval" value="0" />
+    <parameter name="multi_file"         value="false" />
+    <parameter name="ascii_file"         value="false" />
+  </section>
+  <section name="viewers" >
+    <!-- common viewers preferences -->
+    <parameter name="drop_down_buttons"     value="false" />
+  </section>
+  <section name="3DViewer">
+    <parameter name="trihedron_size"        value="100" />
+    <parameter name="relative_size"         value="true"/>
+    <parameter name="navigation_mode"       value="0" />
+    <parameter name="zooming_mode"          value="1" />
+    <parameter name="show_static_trihedron" value="true"/>
+  </section>
+  <section name="OCCViewer" >
+    <!-- OCC viewer preferences -->
+    <parameter name="projection_mode"     value="0"/>
+    <parameter name="stereo_type"         value="0"/>
+    <parameter name="adv_selection_mode"  value="0"/>
+    <parameter name="anaglyph_filter"     value="0"/>
+    <parameter name="focus_type"          value="1"/>
+    <parameter name="focus_value"         value="1.0"/>
+    <parameter name="iod_type"            value="1"/>
+    <parameter name="iod_value"           value="0.05"/>
+    <parameter name="reverse_stereo"      value="false"/>
+    <parameter name="enable_vsync"        value="true"/>
+    <parameter name="enable_quad_buffer_support" value="false"/>
+    <parameter name="enable_preselection" value="true"/>
+    <parameter name="enable_selection"    value="true"/>
+    <parameter name="clipping_color"      value="50, 50, 50"/>
+    <parameter name="clipping_use_default_texture" value="true"/>
+    <parameter name="clipping_modulate"   value="true"/>
+    <parameter name="clipping_scale"      value="1.0"/>
+    <parameter name="rt_depth"            value="3"/>
+    <parameter name="rt_reflection"       value="true"/>
+    <parameter name="rt_antialiasing"     value="false"/>
+    <parameter name="rt_shadow"           value="true"/>
+    <parameter name="rt_trans_shadow"     value="false"/>                     
+    <parameter name="light_color"         value="255, 255, 255"/>
+    <parameter name="light_dx"            value="0.0"/>
+    <parameter name="light_dy"            value="0.0"/>
+    <parameter name="light_dz"            value="-1.0"/>
+    <parameter name="background"      value="bt=2;fn=;tm=0;ts=false;c1=#cddbff;c2=#698fff;gt=1;gr=" />
+    <parameter name="xz_background"   value="bt=2;fn=;tm=0;ts=false;c1=#cddbff;c2=#698fff;gt=1;gr=" />
+    <parameter name="yz_background"   value="bt=2;fn=;tm=0;ts=false;c1=#cddbff;c2=#698fff;gt=1;gr=" />
+    <parameter name="xy_background"   value="bt=2;fn=;tm=0;ts=false;c1=#cddbff;c2=#698fff;gt=1;gr=" />
+ </section>
+ <section name="VTKViewer" >
+    <!-- VTK viewer preferences -->
+    <parameter name="background"                       value="0, 0, 0"/>
+    <parameter name="projection_mode"                  value="0"/>
+    <parameter name="stereo_type"                      value="0"/>
+    <parameter name="anaglyph_filter"                  value="0"/>
+    <parameter name="enable_quad_buffer_support"       value="false"/>
+    <parameter name="preselection"                     value="0"/>
+    <parameter name="enable_selection"                 value="true"/>
+    <parameter name="speed_value"                      value="10"/>
+    <parameter name="speed_mode"                       value="0"/>
+    <parameter name="spacemouse_func1_btn"             value="1"/>
+    <parameter name="spacemouse_func2_btn"             value="2"/>
+    <parameter name="spacemouse_func5_btn"             value="5"/>
+    <parameter name="show_group_names"                 value="true"/>
+    <parameter name="group_names_text_color"           value="255, 255, 255"/>
+    <parameter name="group_names_transparency"         value="0.5"/>
+    <parameter name="recorder_mode"                    value="1"/>
+    <parameter name="recorder_fps"                     value="17.3"/>
+    <parameter name="recorder_quality"                 value="100" />
+    <parameter name="recorder_progressive"             value="true"/>
+ </section>
+ <section name="Plot2d" >
+    <!-- Plot2d viewer preferences -->
+    <parameter name="Background"   value="255, 255, 255" />
+    <parameter name="SelectionColor"   value="80, 80, 80" />
+    <parameter name="DeviationMarkerColor"   value="255, 0, 0" />
+    <parameter name="DeviationMarkerLineWidth" value="1" />
+    <parameter name="DeviationMarkerTickSize" value="2" />
+    <parameter name="CurveType"    value="1" />
+    <parameter name="HorScaleMode" value="0" />
+    <parameter name="LegendPos"    value="1" />
+    <parameter name="LegendSymbolType" value="0" />
+    <parameter name="LegendFont"   value="Helvetic,12" />
+    <parameter name="LegendFontColor"  value="0, 0, 0" />
+    <parameter name="SelectedLegendFontColor"  value="255, 255, 255" />
+    <parameter name="MarkerSize"   value="9" />
+    <parameter name="ShowLegend"   value="true" />
+    <parameter name="VerScaleMode" value="0" />
+    <parameter name="VerNormLMinMode" value="false"/>
+    <parameter name="VerNormLMaxMode" value="false"/>
+    <parameter name="VerNormRMinMode" value="false"/>
+    <parameter name="VerNormRMaxMode" value="false"/>
+  </section>
+  <section name="QxSceneViewer" >
+    <!-- QxScene viewer preferences -->
+    <parameter name="Background" value="144, 208, 211" />
+    <parameter name="Title"      value="63, 213, 255"  />
+    <parameter name="NodeBody"   value="255, 249, 147" />
+  </section>
+  <section name="PyEditor" >
+    <!-- PyEditor viewer preferences -->
+    <parameter name="Font"                 value="Courier, 10" />
+    <parameter name="HighlightCurrentLine" value="true" />
+    <parameter name="TextWrapping"         value="false" />
+    <parameter name="CenterCursorOnScroll" value="true" />
+    <parameter name="LineNumberArea"       value="true" />
+    <parameter name="TabSpaceVisible"      value="true" />
+    <parameter name="TabSize"              value="4" />
+    <parameter name="VerticalEdge"         value="true" />
+    <parameter name="NumberColumns"        value="90" />
+    <parameter name="CompletionPolicy"     value="3" />
+  </section>
+  <section name="GUI" >
+    <parameter name="documentation"     value="gui_help"/>
+    <parameter name="site_url"          value="http://www.salome-platform.org"/>
+    <parameter name="tutorials_url"     value="https://www.salome-platform.org/user-section/salome-tutorials"/>
+    <parameter name="forum_url"         value="http://www.salome-platform.org/forum"/>
+    <parameter name="channel_url"       value="https://www.youtube.com/playlist?list=PLgvBxFyGVRbZZz4wVvP36xXQL-S81RZsc&amp;disable_polymer=true"/>
+  </section>
+  <section name="KERNEL" >
+    <parameter name="documentation"     value="kernel_help"/>
+  </section>
+  <section name="gui_help" >
+    <parameter name="User's Guide/GUI module"      value="${GUI_ROOT_DIR}/share/doc/salome/gui/GUI/index.html;;http://docs.salome-platform.org/latest/gui/GUI/index.html"/>
+    <parameter name="Developer's Guide/GUI module" value="${GUI_ROOT_DIR}/share/doc/salome/tui/GUI/index.html;;http://docs.salome-platform.org/latest/tui/GUI/index.html"/>
+  </section>
+  <section name="kernel_help" >
+    <parameter name="Developer's Guide/KERNEL module" value="${KERNEL_ROOT_DIR}/share/doc/salome/tui/KERNEL/index.html;;http://docs.salome-platform.org/latest/tui/KERNEL/index.html"/>
+  </section>
+  <section name="notification" >
+    <parameter name="timeout" value="10"/>
+    <parameter name="animation" value="0"/>
+    <parameter name="size" value="300"/>
+  </section>
+  <!--Salome shortcut settings-->
+  <section name="shortcuts_settings">
+    <parameter name="general_sections" value="General;Viewers"/>
+  </section>
+  <section name="shortcuts:General">
+    <parameter name="Show object(s)" value="Ctrl+Alt+S"/>
+    <parameter name="Hide object(s)" value="Ctrl+Alt+H"/>
+  </section>
+  <section name="shortcuts:Viewers">
+    <parameter name="Front view" value="Ctrl+Alt+F"/>
+    <parameter name="Back view" value="Ctrl+Alt+B"/>
+    <parameter name="Top view" value="Ctrl+Alt+P"/>
+    <parameter name="Bottom view" value="Ctrl+Alt+O"/>
+    <parameter name="Left view" value="Ctrl+Alt+J"/>
+    <parameter name="Right view" value="Ctrl+Alt+G"/>
+    <parameter name="Reset view" value="Ctrl+Alt+E"/>
+  </section>
+  <section name="shortcuts:Geometry">
+    <parameter name="Increase number of isolines" value="Meta+I"/>
+    <parameter name="Decrease number of isolines" value="Meta+D"/>
+    <parameter name="Increase transparency" value="Meta+Y"/>
+    <parameter name="Decrease transparency" value="Meta+T"/>
+  </section>
+  <section name="ExternalBrowser" >
+    <!-- External HELP browser settings -->
+    <parameter name="winapplication"       value="C:\Program Files\Internet Explorer\iexplore.exe" />
+    <parameter name="use_external_browser" value="false" />
+    <parameter name="application"          value="/usr/bin/firefox" />
+    <parameter name="parameters"           value="" />
+  </section>
+  <section name="add_help">
+    <!-- Additional help resources -->
+    <parameter name="Developer resources"  value="${DOCUMENTATION_ROOT_DIR}/index.html;;http://docs.salome-platform.org/latest/index.html" />
+  </section>
+ <section name="windows_geometry">
+  <parameter name="nomodule" value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #03 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #62 #FC #02 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #3B #00 #00 #02 #62 #00 #00 #00 #59 #00 #FF #FF #FF #00 #00 #00 #01 #00 #00 #00 #DC #00 #00 #02 #62 #FC #02 #00 #00 #00 #01 #FB #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #3B #00 #00 #02 #62 #00 #00 #02 #62 #00 #FF #FF #FF #00 #00 #00 #03 #00 #00 #04 #C3 #00 #00 #00 #59 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #04 #C3 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #02 #DB #00 #00 #02 #62 #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #01 #00 #00 #00 #02 #00 #00 #00 #03 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #BC #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #22 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00"/>
+  <parameter name="" value="#00 #00 #00 #FF #00 #00 #00 #00 #FD #00 #00 #00 #02 #00 #00 #00 #00 #00 #00 #01 #00 #00 #00 #02 #8D #FC #02 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #37 #00 #00 #02 #8D #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #03 #00 #00 #04 #C3 #00 #00 #00 #74 #FC #01 #00 #00 #00 #01 #FB #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #00 #00 #00 #04 #C3 #00 #00 #00 #46 #00 #FF #FF #FF #00 #00 #04 #C3 #00 #00 #02 #5E #00 #00 #00 #04 #00 #00 #00 #04 #00 #00 #00 #08 #00 #00 #00 #08 #FC #00 #00 #00 #01 #00 #00 #00 #02 #00 #00 #00 #03 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #00 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #11 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #22 #FF #FF #FF #FF #00 #00 #00 #00 #00 #00 #00 #00"/>
+ </section>
+ <section name="windows_visibility">
+  <parameter name="" value="#00 #00 #00 #00 #05 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #01 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #01 #00 #00 #00 #05 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
+  <parameter name="nomodule" value="#00 #00 #00 #00 #05 #00 #00 #00 #0E #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #0E #00 #50 #00 #6C #00 #75 #00 #67 #00 #69 #00 #6E #00 #73 #00 #00 #00 #00 #1A #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #4D #00 #6F #00 #64 #00 #75 #00 #6C #00 #65 #00 #73 #01 #00 #00 #00 #1C #00 #53 #00 #61 #00 #6C #00 #6F #00 #6D #00 #65 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #00 #00 #00 #10 #00 #53 #00 #74 #00 #61 #00 #6E #00 #64 #00 #61 #00 #72 #00 #64 #01 #01 #00 #00 #00 #06 #00 #00 #00 #1A #00 #69 #00 #6E #00 #66 #00 #6F #00 #50 #00 #61 #00 #6E #00 #65 #00 #6C #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #6F #00 #62 #00 #6A #00 #65 #00 #63 #00 #74 #00 #42 #00 #72 #00 #6F #00 #77 #00 #73 #00 #65 #00 #72 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #22 #00 #70 #00 #79 #00 #74 #00 #68 #00 #6F #00 #6E #00 #43 #00 #6F #00 #6E #00 #73 #00 #6F #00 #6C #00 #65 #00 #44 #00 #6F #00 #63 #00 #6B #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #30 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #31 #01 #00 #00 #00 #10 #00 #77 #00 #69 #00 #6E #00 #64 #00 #6F #00 #77 #00 #5F #00 #33 #01"/>
+ </section>
+</document>
diff --git a/src/ShaperApp/resources/LightShaperApp_images.ts b/src/ShaperApp/resources/LightShaperApp_images.ts
new file mode 100644 (file)
index 0000000..f251578
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>APP_DEFAULT_ICO</source>
+        <translation>shaper.png</translation>
+    </message>
+    <message>
+        <source>ICO_ABOUT</source>
+        <translation>icon_about.png</translation>
+    </message>
+    <message>
+        <source>ABOUT</source>
+        <translation>about.png</translation>
+    </message>
+    <message>
+        <source>APP_BASE_LOGO</source>
+        <translation>app_logo.png</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/ShaperApp/resources/LightShaperApp_msg_en.ts b/src/ShaperApp/resources/LightShaperApp_msg_en.ts
new file mode 100644 (file)
index 0000000..6fce42e
--- /dev/null
@@ -0,0 +1,1284 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>EXTERNAL_BROWSER_CANNOT_SHOW_PAGE</source>
+        <translation>External browser &quot;%1&quot; can not show help page &quot;%2&quot;. Do you want to change the browser's settings in preferences?</translation>
+    </message>
+    <message>
+        <source>ABOUT_COPYRIGHT</source>
+        <translation>Copyright (C) 2007-2020 CEA/DEN, EDF R&amp;D, OPEN CASCADE, CSGROUP
+
+Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6,
+CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translation>
+    </message>
+    <message>
+        <source>ABOUT_CAPTION</source>
+        <translation>About %1</translation>
+    </message>
+    <message>
+        <source>ABOUT_BASE</source>
+        <translation>Base information</translation>
+    </message>
+    <message>
+        <source>ABOUT_MODULE_INFOS</source>
+        <translation>Modules information</translation>
+    </message>
+    <message>
+        <source>ABOUT_UNKNOWN_VERSION</source>
+        <translation>Unknown</translation>
+    </message>
+    <message>
+        <source>ABOUT_CLOSE</source>
+        <translation>&amp;Close</translation>
+    </message>
+    <message>
+        <source>APP_NAME</source>
+        <translation>SHAPER</translation>
+    </message>
+    <message>
+        <source>ABOUT_LICENSE</source>
+        <translation>GNU LGPL</translation>
+    </message>
+    <message>
+        <source>ABOUT_VERSION</source>
+        <translation>Version %1</translation>
+    </message>
+    <message>
+        <source>SALOME_SITE</source>
+        <translation>SALOME Website</translation>
+    </message>
+    <message>
+        <source>SALOME_FORUM</source>
+        <translation>SALOME Forum</translation>
+    </message>
+    <message>
+        <source>SALOME_VIDEO_TUTORIALS</source>
+        <translation>Video Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_VIDEO_TUTORIALS</source>
+        <translation>Visit YouTube channel with some videos</translation>
+    </message>
+    <message>
+        <source>SALOME_TUTORIALS</source>
+        <translation>Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_TUTORIALS</source>
+        <translation>Try tutorials from SALOME site</translation>
+    </message>
+    <message>
+        <source>ENTRY_COLUMN</source>
+        <translation>Entry</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CAPTION</source>
+        <translation>Close active study</translation>
+    </message>
+    <message>
+        <source>STUDYCLOSE_DESCRIPTION</source>
+        <translation>The current study has unsaved changes. Would you like to save before closing it?</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_SAVE</source>
+        <translation>&amp;Yes</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CLOSE</source>
+        <translation>&amp;No</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CANCEL</source>
+        <translation>&amp;Cancel</translation>
+    </message>
+    <message>
+        <source>WRN_PYTHON_FILE_NAME_BAD</source>
+        <translation>Please enter correct file name.
+Python file must include only letters, digits and underscores and start from letter or underscore.</translation>
+    </message>
+    <message>
+        <source>PYTHON_FILES_FILTER</source>
+        <translation>Python Files (*.py)</translation>
+    </message>
+    <message>
+        <source>LOG_FILES_FILTER</source>
+        <translation>Log files (*.log *.txt)</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_Application</name>
+    <message>
+        <source>LANG_CHANGED</source>
+        <translation>Application language has been changed.
+The changes will be applied on the next application session.</translation>
+    </message>
+    <message>
+        <source>LOCALE_CHANGED</source>
+        <translation>Application locale has been changed.
+The changes will be applied on the next application session.</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_THEME</source>
+        <translation>Theme</translation>
+    </message>
+    <message>
+        <source>TOT_THEME</source>
+        <translation>Theme</translation>
+    </message>
+    <message>
+        <source>PRP_THEME</source>
+        <translation>Change style properties</translation>
+    </message>
+    <message>
+        <source>TOT_FULLSCREEN</source>
+        <translation>Full screen</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FULLSCREEN</source>
+        <translation>Full screen</translation>
+    </message>
+    <message>
+        <source>PRP_FULLSCREEN</source>
+        <translation>Switch to full screen mode</translation>
+    </message>
+    <message>
+        <source>INF_TOOLBAR_MODULES</source>
+        <translation>Modules</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_LEGEND</source>
+        <translation>Show legend</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_RENAME</source>
+        <translation>&amp;Rename</translation>
+    </message>
+    <message>
+        <source>PREF_MULTI_FILE</source>
+        <translation>Multi file save</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PREFERENCES</source>
+        <translation>Pre&amp;ferences...</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SHOW</source>
+        <translation>Show trihedron</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON</source>
+        <translation>Trihedron</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SIZE</source>
+        <translation>Size</translation>
+    </message>
+    <message>
+        <source>OBJECT_BROWSER</source>
+        <translation>Object Browser</translation>
+    </message>
+    <message>
+        <source>INFO_PANEL</source>
+        <translation>Help panel</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_PREFERENCES</source>
+        <translation>Allow to change the preferences</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DIRECTORIES</source>
+        <translation>Quick directory list</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VTKVIEWER</source>
+        <translation>VTK 3D Viewer</translation>
+    </message>
+    <message>
+        <source>PREF_LOAD_LIGHT</source>
+        <translation>Automatic loading of light modules when opening study</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_POS</source>
+        <translation>Store positions of windows</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_TOOL_POS</source>
+        <translation>Store positions of toolbars</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SAVE</source>
+        <translation>Auto-save interval (min)</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SAVE_DISABLED</source>
+        <translation>Disabled</translation>
+    </message>
+    <message>
+        <source>PREF_PROJECTION_MODE</source>
+        <translation>Projection mode:</translation>
+    </message>
+    <message>
+        <source>PREF_ORTHOGRAPHIC</source>
+        <translation>Orthogonal</translation>
+    </message>
+    <message>
+        <source>PREF_PERSPECTIVE</source>
+        <translation>Perspective</translation>
+    </message>
+    <message>
+        <source>PREF_POLYGON_SELECTION</source>
+        <translation>Polygon</translation>
+    </message>
+    <message>
+        <source>PREF_CIRCLE_SELECTION</source>
+        <translation>Circle</translation>
+    </message>
+    <message>
+        <source>PREF_SELECTION_STYLE</source>
+        <translation>Advanced selection</translation>
+    </message>
+    <message>
+        <source>PREF_NAVIGATION</source>
+        <translation>Navigation style</translation>
+    </message>
+    <message>
+        <source>PREF_STANDARD_STYLE</source>
+        <translation>Salome standard controls</translation>
+    </message>
+    <message>
+        <source>PREF_KEYFREE_STYLE</source>
+        <translation>Keyboard free style</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING</source>
+        <translation>Zooming style</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING_AT_CENTER</source>
+        <translation>Relative to the view&apos;s center</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING_AT_CURSOR</source>
+        <translation>Relative to the cursor</translation>
+    </message>
+    <message>
+        <source>PREF_INCREMENTAL_SPEED</source>
+        <translation>Speed increment:</translation>
+    </message>
+    <message>
+        <source>PREF_INCREMENTAL_SPEED_MODE</source>
+        <translation>Modification mode:</translation>
+    </message>
+    <message>
+        <source>PREF_ARITHMETIC</source>
+        <translation>Arithmetic progression</translation>
+    </message>
+    <message>
+        <source>PREF_GEOMETRICAL</source>
+        <translation>Geometrical progression</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_SPACEMOUSE</source>
+        <translation>Spacemouse</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_STATIC_TRIHEDRON</source>
+        <translation>Show static trihedron</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_1</source>
+        <translation>Decrease speed increment</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_2</source>
+        <translation>Increase speed increment</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_3</source>
+        <translation>Dominant / combined switch</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_1</source>
+        <translation>Button 1</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_2</source>
+        <translation>Button 2</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_3</source>
+        <translation>Button 3</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_4</source>
+        <translation>Button 4</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_5</source>
+        <translation>Button 5</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_6</source>
+        <translation>Button 6</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_7</source>
+        <translation>Button 7</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_8</source>
+        <translation>Button 8</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_*</source>
+        <translation>Button *</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_10</source>
+        <translation>Button 10</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_11</source>
+        <translation>Button 11</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_RECORDING</source>
+        <translation>AVI Recording</translation>
+    </message>
+    <message>
+        <source>PREF_ALL_DISLPAYED_FRAMES</source>
+        <translation>Recording all displayed frames</translation>
+    </message>
+    <message>
+        <source>PREF_FPS</source>
+        <translation>FPS</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_TTL</source>
+        <translation>Settings</translation>
+    </message>
+    <message>
+        <source>PREF_PROGRESSIVE</source>
+        <translation>Progressive</translation>
+    </message>
+    <message>
+        <source>PREF_QUALITY</source>
+        <translation>Quality</translation>
+    </message>
+    <message>
+        <source>PREF_RECORDING_MODE</source>
+        <translation>Mode</translation>
+    </message>
+    <message>
+        <source>PREF_SKIPPED_FRAMES</source>
+        <translation>Recording at a given FPS</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_GROUP_NAMES</source>
+        <translation>Names of groups</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_NAMES_TEXT_COLOR</source>
+        <translation>Text color</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_NAMES_TRANSPARENCY</source>
+        <translation>Transparency</translation>
+    </message>
+    <message>
+        <source>PREF_BOTTOM</source>
+        <translation>Bottom</translation>
+    </message>
+    <message>
+        <source>PREF_CURVE_TYPE</source>
+        <translation>Curve type:</translation>
+    </message>
+    <message>
+        <source>PREF_POINTS</source>
+        <translation>Points</translation>
+    </message>
+    <message>
+        <source>PRP_MODULE</source>
+        <translation>Switch to the module &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_ASCII_FILE</source>
+        <translation>ASCII save</translation>
+    </message>
+    <message>
+        <source>PREFERENCES_NOT_LOADED</source>
+        <translation>Preferences for module &quot;&lt;b&gt;%N&lt;/b&gt;&quot; will be available when the module is loaded</translation>
+    </message>
+    <message>
+        <source>PREF_LINEAR</source>
+        <translation>Linear</translation>
+    </message>
+    <message>
+        <source>DATA_MODELS</source>
+        <translation>Data models</translation>
+    </message>
+    <message>
+        <source>PRP_RENAME</source>
+        <translation>Rename active window</translation>
+    </message>
+    <message>
+        <source>TOT_RENAME</source>
+        <translation>Rename</translation>
+    </message>
+    <message>
+        <source>MEN_RENAME_OBJ</source>
+        <translation>Rename</translation>
+    </message>
+    <message>
+        <source>LOG_WINDOW</source>
+        <translation>Message Window</translation>
+    </message>
+    <message>
+        <source>PREF_SPLINE</source>
+        <translation>Spline</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SEARCH_TOOL</source>
+        <translation>Search Tool</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_HIDE_SEARCH_TOOL</source>
+        <translation>Enable auto-hiding</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SETTINGS</source>
+        <translation>Object browser settings</translation>
+    </message>
+    <message>
+        <source>PRP_APP_MODULE</source>
+        <translation>Switch to SALOME platform neutral point</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_CONSOLE</source>
+        <translation>Python console</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_BANNER</source>
+        <translation>Show banner</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_COMPLETION</source>
+        <translation>Command auto-completion</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STYLE</source>
+        <translation>Salome style</translation>
+    </message>
+    <message>
+        <source>PREF_USE_SALOME_STYLE</source>
+        <translation>Use Salome style</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_SIZE</source>
+        <translation>Marker size:</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_VIEWERS</source>
+        <translation>Viewers</translation>
+    </message>
+    <message>
+        <source>PREF_APP</source>
+        <translation>Application</translation>
+    </message>
+    <message>
+        <source>PREF_TOP</source>
+        <translation>Top</translation>
+    </message>
+    <message>
+        <source>MEN_REFRESH</source>
+        <translation>Refresh</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SIZE_FIRST</source>
+        <translation>Auto size for &quot;Name&quot; column</translation>
+    </message>
+    <message>
+        <source>PREF_RESIZE_ON_EXPAND_ITEM</source>
+        <translation>Resize columns on expand item</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_TO_THE_PUBLISHED_OBJECT</source>
+        <translation>Browse to the published object</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_NEVER</source>
+        <translation>Never</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_AFTER_APPLY_AND_CLOSE_ONLY</source>
+        <translation>After Apply &amp; Close only</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_ALWAYS</source>
+        <translation>Always</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_OBJBROWSER</source>
+        <translation>Object browser</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_GENERAL</source>
+        <translation>General</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_0</source>
+        <translation>&amp;GL 2D view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_1</source>
+        <translation>&amp;Plot 2D view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_2</source>
+        <translation>&amp;OCC 3D view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_3</source>
+        <translation>VT&amp;K 3D view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_4</source>
+        <translation>Qx&amp;Scene 2D view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_5</source>
+        <translation>G&amp;raphics view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_6</source>
+        <translation>ParaVie&amp;w view</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_7</source>
+        <translation>P&amp;ython view</translation>
+    </message>
+    <message>
+        <source>CREATING_NEW_WINDOW</source>
+        <translation>Create new %1</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_NAME</source>
+        <translation>Object</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_POSITION</source>
+        <translation>Legend position:</translation>
+    </message>
+    <message>
+        <source>PREF_RELATIVE_SIZE</source>
+        <translation>Relative</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_BACKGROUND</source>
+        <translation>Background</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_BACKGROUND_COLOR</source>
+        <translation>Background color</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_SELECTION</source>
+        <translation>Selection color</translation>
+    </message>
+    <message>
+        <source>PREF_XYVIEWER_BACKGROUND</source>
+        <translation>XY View</translation>
+    </message>
+    <message>
+        <source>PREF_XZVIEWER_BACKGROUND</source>
+        <translation>XZ View</translation>
+    </message>
+    <message>
+        <source>PREF_YZVIEWER_BACKGROUND</source>
+        <translation>YZ View</translation>
+    </message>
+    <message>
+        <source>PREF_3DVIEWER_BACKGROUND</source>
+        <translation>3D View</translation>
+    </message>
+    <message>
+        <source>PREF_FONT</source>
+        <translation>Font</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_FONT</source>
+        <translation>Legend font</translation>
+    </message>
+    <message>
+        <source>PREF_FONT_COLOR</source>
+        <translation>Legend font color</translation>
+    </message>
+    <message>
+        <source>PREF_SELECTED_FONT_COLOR</source>
+        <translation>Highlighted legend font color</translation>
+    </message>
+    <message>
+        <source>PREF_LEFT</source>
+        <translation>Left</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_DIRECTORIES</source>
+        <translation>Directories</translation>
+    </message>
+    <message>
+        <source>ACTIVATING_MODULE</source>
+        <translation>Trying to activate module &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_VERT_AXIS_SCALE</source>
+        <translation>Vertical axis scale:</translation>
+    </message>
+    <message>
+        <source>PREF_HOR_AXIS_SCALE</source>
+        <translation>Horizontal axis scale:</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LANGUAGE</source>
+        <translation>Language</translation>
+    </message>
+    <message>
+        <source>PREF_CURRENT_LANGUAGE</source>
+        <translation>Current language</translation>
+    </message>
+    <message>
+        <source>PREF_CURRENT_LOCALE</source>
+        <translation>Use &quot;C&quot; locale</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LOOK_AND_FEEL</source>
+        <translation>Look and feel</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_SPLASH</source>
+        <translation>Show splash screen at start-up</translation>
+    </message>
+    <message>
+        <source>PREF_OPAQUE_RESIZE</source>
+        <translation>Opaque resize</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STUDY</source>
+        <translation>Study properties</translation>
+    </message>
+    <message>
+        <source>PREF_CATEGORY_SALOME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>PREF_DROP_DOWN_BUTTONS</source>
+        <translation>Drop-down buttons in toolbars for action groups</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_TIMEOUT</source>
+        <translation>Notifications auto-hide timeout</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_TIMEOUT_NONE</source>
+        <translation>None</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_COMMON</source>
+        <translation>Common</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_3DVIEWER</source>
+        <translation>3D Viewer</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_OCCVIEWER</source>
+        <translation>OCC 3D Viewer</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STEREO</source>
+        <translation>Stereo render</translation>
+    </message>
+    <message>
+        <source>PREF_STEREO_TYPE</source>
+        <translation>Stereo type</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_FILTER</source>
+        <translation>Anaglyph filter</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_RED_CYAN</source>
+        <translation>Red-Cyan</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_YELLOW_BLUE</source>
+        <translation>Yellow-Blue</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_GREEN_MAGENTA</source>
+        <translation>Green-Magenta</translation>
+    </message>
+    <message>
+        <source>PREF_FOCUS_TYPE</source>
+        <translation>Convergence distance type</translation>
+    </message>
+    <message>
+        <source>PREF_FOCUS_VALUE</source>
+        <translation>Stereographic focus value</translation>
+    </message>
+    <message>
+        <source>PREF_IOD_TYPE</source>
+        <translation>IOD type</translation>
+    </message>
+    <message>
+        <source>PREF_IOD_VALUE</source>
+        <translation>Interocular distance (IOD) value</translation>
+    </message>
+    <message>
+        <source>PREF_ABSOLUTE</source>
+        <translation>Absolute</translation>
+    </message>
+    <message>
+        <source>PREF_RELATIVE</source>
+        <translation>Relative</translation>
+    </message>
+    <message>
+        <source>PREF_REVERSE_STEREO</source>
+        <translation>Reverse stereo</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_VSYNC</source>
+        <translation>Enable V-Sync</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_QUAD_BUFFER_SUPPORT</source>
+        <translation>Enable quad-buffer support</translation>
+    </message>
+    <message>
+        <source>PREF_LOGARITHMIC</source>
+        <translation>Logarithmic</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MODULE_HELP</source>
+        <translation>Module Help</translation>
+    </message>
+    <message>
+        <source>PREF_SUPERV_TITLE_COLOR</source>
+        <translation>Title color</translation>
+    </message>
+    <message>
+        <source>PREF_PARAM</source>
+        <translation>Parameters</translation>
+    </message>
+    <message>
+        <source>PREF_RIGHT</source>
+        <translation>Right</translation>
+    </message>
+    <message>
+        <source>PREF_LINES</source>
+        <translation>Lines</translation>
+    </message>
+    <message>
+        <source>INF_CANCELLED</source>
+        <translation>Module activation cancelled</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_EXT_BROWSER</source>
+        <translation>External browser</translation>
+    </message>
+    <message>
+        <source>PREF_SUPERV_CTRL_COLOR</source>
+        <translation>Ctrl color</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DEF_COLUMNS</source>
+        <translation>Default columns</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PLOT2DVIEWER</source>
+        <translation>Plot 2D Viewer</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VIEWER</source>
+        <translation>Viewer</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LEGEND</source>
+        <translation>Legend</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_SYMBOL_TYPE</source>
+        <translation>Symbol type:</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_ABOVE_LINE</source>
+        <translation>Marker above line</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_ON_LINE</source>
+        <translation>Marker on line</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_COLOR</source>
+        <translation>Deviation marker color</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_MARKER_LW</source>
+        <translation>Deviation marker line width</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_MARKER_TS</source>
+        <translation>Deviation marker tick size</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MRU</source>
+        <translation>Most Recently Used</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_PREFERENCES</source>
+        <translation>Preferences</translation>
+    </message>
+    <message>
+        <source>DEFINE_EXTERNAL_BROWSER</source>
+        <translation>External browser is not found. Do you want to define it in preferences?</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SIZE</source>
+        <translation>Auto size for other columns</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_MRU</source>
+        <translation>Most recently used</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_NEW</source>
+        <translation>&amp;New</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_OPEN</source>
+        <translation>&amp;Open...</translation>
+    </message>
+    <message>
+        <source>PYTHON_CONSOLE</source>
+        <translation>Python Console</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SELECTION</source>
+        <translation>Selection</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_SELECTION</source>
+        <translation>Enable selection</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_PRESELECTION</source>
+        <translation>Enable preselection</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION</source>
+        <translation>Preselection</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_STANDARD</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_DYNAMIC</source>
+        <translation>Dynamic</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_DISABLED</source>
+        <translation>Disabled</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_CLIPPING</source>
+        <translation>Clipping parameters</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_COLOR</source>
+        <translation>Color</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_DEFAULT_TEXTURE</source>
+        <translation>Use default texture</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_TEXTURE</source>
+        <translation>Texture</translation>
+    </message>
+    <message>
+        <source>OCC_TEXTURE_FILES</source>
+        <translation>Image files (*.jpeg *.jpg *.jpe *.png *.bmp *.gif *.ppm *.tif *.tiff* .tga *.exr)</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_MODULATE</source>
+        <translation>Modulate</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_SCALE</source>
+        <translation>Scale factor</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_RAY_TRACING</source>
+        <translation>Ray tracing</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_DEPTH</source>
+        <translation>Depth</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_REFLECTION</source>
+        <translation>Specular reflections</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_ANTIALIASING</source>
+        <translation>Adaptive anti-aliasing</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_SHADOW</source>
+        <translation>Shadows rendering</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_TRANS_SHADOW</source>
+        <translation>Transparent shadow</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LIGHT</source>
+        <translation>Light source</translation>
+    </message>
+    <message>
+        <source>PREF_LIGHT_COLOR</source>
+        <translation>Color</translation>
+    </message>
+    <message>
+        <source>TOT_CLOSE</source>
+        <translation>Close</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CLOSE</source>
+        <translation>&amp;Close</translation>
+    </message>
+    <message>
+        <source>PRP_CLOSE</source>
+        <translation>Close active window</translation>
+    </message>
+    <message>
+        <source>TOT_CLOSE_ALL</source>
+        <translation>Close all</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CLOSE_ALL</source>
+        <translation>Close All</translation>
+    </message>
+    <message>
+        <source>PRP_CLOSE_ALL</source>
+        <translation>Close all windows</translation>
+    </message>
+    <message>
+        <source>TOT_GROUP_ALL</source>
+        <translation>Group all</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_GROUP_ALL</source>
+        <translation>&amp;Group All</translation>
+    </message>
+    <message>
+        <source>PRP_GROUP_ALL</source>
+        <translation>Group all windows</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_NOT_EXISTS</source>
+        <translation>Can not open %1.
+File does not exist</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_MRU</source>
+        <translation>Show MRU items</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_VISIBLE_COUNT</source>
+        <translation>Number of MRU items</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_INSERT_MODE</source>
+        <translation>Insert mode</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_MOVE_FIRST</source>
+        <translation>Move to the beginning</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_MOVE_LAST</source>
+        <translation>Move to the end</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_ADD_FIRST</source>
+        <translation>Add to the beginning</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_ADD_LAST</source>
+        <translation>Add to the end</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_TYPE</source>
+        <translation>Link type</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_AUTO</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_SHORT</source>
+        <translation>Short</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_FULL</source>
+        <translation>Full</translation>
+    </message>
+    <message>
+        <source>PREFERENCES_NOT_SUPPORTED</source>
+        <translation>Preferences for module &quot;%1&quot; not supported</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_SHORTCUTS</source>
+        <translation>Shortcuts</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SHORTCUTS</source>
+        <translation>Shortcuts settings</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_FULL_SCREEN</source>
+        <translation>Full-screen</translation>
+    </message>
+    <message>
+        <source>PREF_FULL_SCREEN_AUTO</source>
+        <translation>Hide object browser and viewers toolbars</translation>
+    </message>
+  <message>
+    <source>PREF_TAB_PYEDITOR</source>
+    <translation>Python Viewer</translation>
+  </message>
+  <message>
+    <source>PREF_GROUP_PY_FONT</source>
+    <translation>Font settings</translation>
+  </message>
+  <message>
+    <source>PREF_PY_FONT</source>
+    <translation>Font</translation>
+  </message>
+  <message>
+    <source>PREF_GROUP_PY_DISPLAY</source>
+    <translation>Display settings</translation>
+  </message>
+  <message>
+    <source>PREF_PY_CURRLINE_HIGHLIGHT</source>
+    <translation>Enable current line highlight</translation>
+  </message>
+  <message>
+    <source>PREF_PY_TEXT_WRAP</source>
+    <translation>Enable text wrapping</translation>
+  </message>
+  <message>
+    <source>PREF_PY_CURSON_ON_SCROLL</source>
+    <translation>Center cursor on scroll</translation>
+  </message>
+  <message>
+    <source>PREF_PY_LINE_NUMBS_AREA</source>
+    <translation>Display line numbers area</translation>
+  </message>
+  <message>
+    <source>PREF_GROUP_PY_EDITOR</source>
+    <translation>Editor settings</translation>
+  </message>
+  <message>
+    <source>PREF_PY_COMPLETION_MODE</source>
+    <translation>Completion mode</translation>
+  </message>
+  <message>
+    <source>PREF_PY_NONE</source>
+    <translation>None</translation>
+  </message>
+  <message>
+    <source>PREF_PY_AUTO</source>
+    <translation>Auto</translation>
+  </message>
+  <message>
+    <source>PREF_PY_MANUAL</source>
+    <translation>Manual</translation>
+  </message>
+  <message>
+    <source>PREF_PY_ALWAYS</source>
+    <translation>Always</translation>
+  </message>
+  <message>
+    <source>PREF_GROUP_PY_TAB</source>
+    <translation>Tab settings</translation>
+  </message>
+  <message>
+    <source>PREF_PY_TAB_WHITESPACES</source>
+    <translation>Display tab delimiters</translation>
+  </message>
+  <message>
+    <source>PREF_PY_TAB_SIZE</source>
+    <translation>Tab size:</translation>
+  </message>
+  <message>
+    <source>PREF_GROUP_VERT_EDGE</source>
+    <translation>Vertical edge settings</translation>
+  </message>
+  <message>
+    <source>PREF_PY_VERT_EDGE</source>
+    <translation>Display vertical edge</translation>
+  </message>
+  <message>
+    <source>PREF_PY_NUM_COLUMNS</source>
+    <translation>Number of columns:</translation>
+  </message>
+  <message>
+    <source>INFO_WELCOME_TO_SALOME</source>
+    <translation>Welcome to SALOME</translation>
+  </message>
+  <message>
+    <source>INFO_GETTING_STARTED</source>
+    <translation>Getting started</translation>
+  </message>
+  <message>
+    <source>INFO_AVAILABLE_MODULES</source>
+    <translation>Available modules</translation>
+  </message>
+</context>
+<context>
+    <name>LightApp_Module</name>
+    <message>
+        <source>MEN_HIDE</source>
+        <translation>Hide</translation>
+    </message>
+    <message>
+        <source>TOP_DISPLAY_ONLY</source>
+        <translation>Show only</translation>
+    </message>
+    <message>
+        <source>STB_DISPLAY_ONLY</source>
+        <translation>Show only</translation>
+    </message>
+    <message>
+        <source>MEN_DISPLAY_ONLY</source>
+        <translation>Show Only</translation>
+    </message>
+    <message>
+        <source>TOP_HIDE</source>
+        <translation>HIde</translation>
+    </message>
+    <message>
+        <source>MEN_ERASE_ALL</source>
+        <translation>Hide All</translation>
+    </message>
+    <message>
+        <source>STB_HIDE</source>
+        <translation>Hide</translation>
+    </message>
+    <message>
+        <source>STB_SHOW</source>
+        <translation>Show</translation>
+    </message>
+    <message>
+        <source>TOP_SHOW</source>
+        <translation>Show</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW</source>
+        <translation>Show</translation>
+    </message>
+    <message>
+        <source>STB_ERASE_ALL</source>
+        <translation>Hide all</translation>
+    </message>
+    <message>
+        <source>TOP_ERASE_ALL</source>
+        <translation>Hide all</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_ModuleDlg</name>
+    <message>
+        <source>DESCRIPTION</source>
+        <translation>You&apos;re activating module
+       &lt;b&gt;%1&lt;/b&gt;.&lt;br&gt;Please, select required action by pressing the corresponding button below.</translation>
+    </message>
+    <message>
+        <source>CANCEL</source>
+        <translation>&amp;Cancel</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Activate module</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_NameDlg</name>
+    <message>
+        <source>TLT_RENAME</source>
+        <translation>Rename</translation>
+    </message>
+    <message>
+        <source>NAME_LBL</source>
+        <translation>Name: </translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_PreferencesDlg</name>
+    <message>
+        <source>IMPORT_PREFERENCES</source>
+        <translation>Import preferences</translation>
+    </message>
+    <message>
+        <source>XML_FILES_FILTER</source>
+        <translation>XML Files (*.xml)</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Preferences</translation>
+    </message>
+    <message>
+        <source>WARNING</source>
+        <translation>Warning</translation>
+    </message>
+    <message>
+        <source>IMPORT_BTN_TEXT</source>
+        <translation>Import</translation>
+    </message>
+    <message>
+        <source>DEFAULT_QUESTION</source>
+        <translation>Do you want to retrieve default preferences?</translation>
+    </message>
+    <message>
+        <source>DEFAULT_BTN_TEXT</source>
+        <translation>Defaults</translation>
+    </message>
+    <message>
+        <source>PREF_NEED_RESTART</source>
+        <translation>Some changes will take effect only after application restart</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_ModuleAction</name>
+    <message>
+        <source>ACTIVATE_MODULE_TOP</source>
+        <translation>Activate/deactivate %1 module</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_PyEditor</name>
+    <message>
+        <source>TOT_DUMP_PYCOMMANDS</source>
+        <translation>Dump commands</translation>
+    </message>
+    <message>
+        <source>TOT_SAVE_PYLOG</source>
+        <translation>Save log</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/ShaperApp/resources/LightShaperApp_msg_fr.ts b/src/ShaperApp/resources/LightShaperApp_msg_fr.ts
new file mode 100644 (file)
index 0000000..751fec8
--- /dev/null
@@ -0,0 +1,1284 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>EXTERNAL_BROWSER_CANNOT_SHOW_PAGE</source>
+        <translation>Le navigateur externe &quot;%1&quot; ne peut pas trouver la page d&apos;aide &quot;%2&quot;. Voulez-vous modifier les settings du navigateur externe dans les préférences ?</translation>
+    </message>
+    <message>
+        <source>ABOUT_COPYRIGHT</source>
+        <translation>Copyright (C) 2007-2020 CEA/DEN, EDF R&amp;D, OPEN CASCADE
+
+Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6,
+CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translation>
+    </message>
+    <message>
+        <source>ABOUT_CAPTION</source>
+        <translation>A propos de %1</translation>
+    </message>
+    <message>
+        <source>ABOUT_BASE</source>
+        <translation>Informations générales</translation>
+    </message>
+    <message>
+        <source>ABOUT_MODULE_INFOS</source>
+        <translation>Modules</translation>
+    </message>
+    <message>
+        <source>ABOUT_UNKNOWN_VERSION</source>
+        <translation>Inconnue</translation>
+    </message>
+    <message>
+        <source>ABOUT_CLOSE</source>
+        <translation>&amp;Fermer</translation>
+    </message>
+    <message>
+        <source>APP_NAME</source>
+        <translation>SHAPER</translation>
+    </message>
+    <message>
+        <source>ABOUT_LICENSE</source>
+        <translation>GNU LGPL</translation>
+    </message>
+    <message>
+        <source>ABOUT_VERSION</source>
+        <translation>Version %1</translation>
+    </message>
+    <message>
+        <source>SALOME_SITE</source>
+        <translation type="unfinished">SALOME Website</translation>
+    </message>
+    <message>
+        <source>SALOME_FORUM</source>
+        <translation type="unfinished">SALOME Forum</translation>
+    </message>
+    <message>
+        <source>SALOME_VIDEO_TUTORIALS</source>
+        <translation type="unfinished">Video Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_VIDEO_TUTORIALS</source>
+        <translation type="unfinished">Visit YouTube channel with some videos</translation>
+    </message>
+    <message>
+        <source>SALOME_TUTORIALS</source>
+        <translation type="unfinished">Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_TUTORIALS</source>
+        <translation type="unfinished">Try tutorials from SALOME site</translation>
+    </message>
+    <message>
+        <source>ENTRY_COLUMN</source>
+        <translation>Entrée</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CAPTION</source>
+        <translation>Fermer l&apos;étude actuelle</translation>
+    </message>
+    <message>
+        <source>STUDYCLOSE_DESCRIPTION</source>
+        <translation>Une étude a des modifications non enregistrées. Voulez-vous les sauvegarder avant de fermer?</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_SAVE</source>
+        <translation>&amp;Oui</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CLOSE</source>
+        <translation>&amp;Non</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CANCEL</source>
+        <translation>&amp;Annuler</translation>
+    </message>
+    <message>
+        <source>WRN_PYTHON_FILE_NAME_BAD</source>
+        <translation>Indiquez un nom de fichier correct.
+Un fichier Python ne doit être composé que de lettres, chiffres et tirets bas et doit commencer avec une lettre ou un tiret bas.</translation>
+    </message>
+    <message>
+        <source>PYTHON_FILES_FILTER</source>
+        <translation>Fichiers Python (*.py)</translation>
+    </message>
+    <message>
+        <source>LOG_FILES_FILTER</source>
+        <translation>Fichiers de trace (*.log *.txt)</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_Application</name>
+    <message>
+        <source>LANG_CHANGED</source>
+        <translation>La langue de l&apos;application a été modifiée.
+Les modifications seront appliquées à la prochaine session.</translation>
+    </message>
+    <message>
+        <source>LOCALE_CHANGED</source>
+        <translation>La locale de l&apos;application a été modifiée.
+Les modifications seront appliquées à la prochaine session.</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_THEME</source>
+        <translation>T&amp;hème</translation>
+    </message>
+    <message>
+        <source>TOT_THEME</source>
+        <translation>Thème</translation>
+    </message>
+    <message>
+        <source>PRP_THEME</source>
+        <translation>Changer les propriétés du style </translation>
+    </message>
+    <message>
+        <source>TOT_FULLSCREEN</source>
+        <translation>Plein écran</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FULLSCREEN</source>
+        <translation>Plein écran</translation>
+    </message>
+    <message>
+        <source>PRP_FULLSCREEN</source>
+        <translation>Basculer en mode plein écran</translation>
+    </message>
+    <message>
+        <source>INF_TOOLBAR_MODULES</source>
+        <translation>Modules</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_LEGEND</source>
+        <translation>Montrer la légende</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_RENAME</source>
+        <translation>&amp;Renommer</translation>
+    </message>
+    <message>
+        <source>PREF_MULTI_FILE</source>
+        <translation>Sauvegarde multi-fichiers</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PREFERENCES</source>
+        <translation>&amp;Préférences...</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SHOW</source>
+        <translation>Afficher le trièdre</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON</source>
+        <translation>Trièdre</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SIZE</source>
+        <translation>Taille</translation>
+    </message>
+    <message>
+        <source>OBJECT_BROWSER</source>
+        <translation>Arbre d&apos;étude</translation>
+    </message>
+    <message>
+        <source>INFO_PANEL</source>
+        <translation type="unfinished">Help panel</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_PREFERENCES</source>
+        <translation>Permettre de changer les préférences</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DIRECTORIES</source>
+        <translation>Liste des répertoires</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VTKVIEWER</source>
+        <translation>Scène VTK 3D</translation>
+    </message>
+    <message>
+        <source>PREF_LOAD_LIGHT</source>
+        <translation>Chargement automatique des modules Light à l'ouverture d'étude</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_POS</source>
+        <translation>Enregistrer la position des fenêtres</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_TOOL_POS</source>
+        <translation>Enregistrer la positions des barres d&apos;outils</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SAVE</source>
+        <translation>Intervalle d&apos;enregistrement automatique (min)</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SAVE_DISABLED</source>
+        <translation>Désactivé</translation>
+    </message>
+    <message>
+        <source>PREF_PROJECTION_MODE</source>
+        <translation>Mode de projection:</translation>
+    </message>
+    <message>
+        <source>PREF_ORTHOGRAPHIC</source>
+        <translation>Orthogonal</translation>
+    </message>
+    <message>
+        <source>PREF_PERSPECTIVE</source>
+        <translation>Perspective</translation>
+    </message>
+    <message>
+        <source>PREF_POLYGON_SELECTION</source>
+        <translation>Polygon</translation>
+    </message>
+    <message>
+        <source>PREF_CIRCLE_SELECTION</source>
+        <translation>Circle</translation>
+    </message>
+    <message>
+        <source>PREF_SELECTION_STYLE</source>
+        <translation>Advanced selection</translation>
+    </message>
+    <message>
+        <source>PREF_NAVIGATION</source>
+        <translation>Navigation:</translation>
+    </message>
+    <message>
+        <source>PREF_STANDARD_STYLE</source>
+        <translation>Style de contrôles type Salomé</translation>
+    </message>
+    <message>
+        <source>PREF_KEYFREE_STYLE</source>
+        <translation>Style sans clavier</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING</source>
+        <translation>Mode de zoom:</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING_AT_CENTER</source>
+        <translation>Relatif au centre de la scène</translation>
+    </message>
+    <message>
+        <source>PREF_ZOOMING_AT_CURSOR</source>
+        <translation>Relatif au curseur</translation>
+    </message>
+    <message>
+        <source>PREF_INCREMENTAL_SPEED</source>
+        <translation>Incrément de vitesse:</translation>
+    </message>
+    <message>
+        <source>PREF_INCREMENTAL_SPEED_MODE</source>
+        <translation>Mode de modification:</translation>
+    </message>
+    <message>
+        <source>PREF_ARITHMETIC</source>
+        <translation>Progression arithmétique</translation>
+    </message>
+    <message>
+        <source>PREF_GEOMETRICAL</source>
+        <translation>Progression géométrique</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_SPACEMOUSE</source>
+        <translation>Spacemouse</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_STATIC_TRIHEDRON</source>
+        <translation>Montrer le trièdre statique</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_1</source>
+        <translation>Réduire l&apos;incrément de vitesse</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_2</source>
+        <translation>Augmenter l&apos;incrément de vitesse</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_3</source>
+        <translation>Changement Dominant/Combiné</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_1</source>
+        <translation>Bouton 1</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_2</source>
+        <translation>Bouton 2</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_3</source>
+        <translation>Bouton 3</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_4</source>
+        <translation>Bouton 4</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_5</source>
+        <translation>Bouton 5</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_6</source>
+        <translation>Bouton 6</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_7</source>
+        <translation>Bouton 7</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_8</source>
+        <translation>Bouton 8</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_*</source>
+        <translation>Bouton *</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_10</source>
+        <translation>Bouton 10</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_BTN_11</source>
+        <translation>Bouton 11</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_RECORDING</source>
+        <translation>Enregistrement AVI</translation>
+    </message>
+    <message>
+        <source>PREF_ALL_DISLPAYED_FRAMES</source>
+        <translation>Enregistrer toutes les images affichées</translation>
+    </message>
+    <message>
+        <source>PREF_FPS</source>
+        <translation>FPS</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_TTL</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>PREF_PROGRESSIVE</source>
+        <translation>Progressif</translation>
+    </message>
+    <message>
+        <source>PREF_QUALITY</source>
+        <translation>Qualité</translation>
+    </message>
+    <message>
+        <source>PREF_RECORDING_MODE</source>
+        <translation>Mode</translation>
+    </message>
+    <message>
+        <source>PREF_SKIPPED_FRAMES</source>
+        <translation>Enregistrer à FPS donné</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_GROUP_NAMES</source>
+        <translation>Nom des groupes</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_NAMES_TEXT_COLOR</source>
+        <translation>Couleur du texte</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_NAMES_TRANSPARENCY</source>
+        <translation>Transparence</translation>
+    </message>
+    <message>
+        <source>PREF_BOTTOM</source>
+        <translation>Dessous</translation>
+    </message>
+    <message>
+        <source>PREF_CURVE_TYPE</source>
+        <translation>Type de courbe:</translation>
+    </message>
+    <message>
+        <source>PREF_POINTS</source>
+        <translation>Points</translation>
+    </message>
+    <message>
+        <source>PRP_MODULE</source>
+        <translation>Basculer vers le module &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_ASCII_FILE</source>
+        <translation>Enregistrement ASCII</translation>
+    </message>
+    <message>
+        <source>PREFERENCES_NOT_LOADED</source>
+        <translation>Les préférences du module &quot;&lt;b&gt;%N&lt;/b&gt;&quot; seront accessibles quand le module sera chargé</translation>
+    </message>
+    <message>
+        <source>PREF_LINEAR</source>
+        <translation>Linéaire</translation>
+    </message>
+    <message>
+        <source>DATA_MODELS</source>
+        <translation>Modèles de données</translation>
+    </message>
+    <message>
+        <source>PRP_RENAME</source>
+        <translation>Renommer la fenêtre active</translation>
+    </message>
+    <message>
+        <source>TOT_RENAME</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>MEN_RENAME_OBJ</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>LOG_WINDOW</source>
+        <translation>Fenêtre de messages</translation>
+    </message>
+    <message>
+        <source>PREF_SPLINE</source>
+        <translation>Spline</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SEARCH_TOOL</source>
+        <translation>Outil de recherche</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_HIDE_SEARCH_TOOL</source>
+        <translation>Cacher automatiquement</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SETTINGS</source>
+        <translation>Paramètres de l&apos;arbre d&apos;étude</translation>
+    </message>
+    <message>
+        <source>PRP_APP_MODULE</source>
+        <translation>Basculer au point neutre de la plate-forme SALOME</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_CONSOLE</source>
+        <translation>Propriétés de la console Python</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_BANNER</source>
+        <translation>Afficher la bannière</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_COMPLETION</source>
+        <translation>Auto-completion</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STYLE</source>
+        <translation>Style Salomé</translation>
+    </message>
+    <message>
+        <source>PREF_USE_SALOME_STYLE</source>
+        <translation>Utiliser le style Salomé</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_SIZE</source>
+        <translation>Taille de repère:</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_VIEWERS</source>
+        <translation>Scènes</translation>
+    </message>
+    <message>
+        <source>PREF_APP</source>
+        <translation>Application</translation>
+    </message>
+    <message>
+        <source>PREF_TOP</source>
+        <translation>Dessus</translation>
+    </message>
+    <message>
+        <source>MEN_REFRESH</source>
+        <translation>Rafraîchir</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SIZE_FIRST</source>
+        <translation>Taille automatique pour la colonne &quot;Nom&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_RESIZE_ON_EXPAND_ITEM</source>
+        <translation>Redimensionner les colonnes quand l&apos;objet est déplié</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_TO_THE_PUBLISHED_OBJECT</source>
+        <translation>Se déplacer sur l&apos;objet publié</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_NEVER</source>
+        <translation>Jamais</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_AFTER_APPLY_AND_CLOSE_ONLY</source>
+        <translation>Seulement après &quot;Appliquer et Fermer&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_BROWSE_ALWAYS</source>
+        <translation>Toujours</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_OBJBROWSER</source>
+        <translation>Arbre d&apos;étude</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_GENERAL</source>
+        <translation>Général</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_0</source>
+        <translation>Scène &amp;GL </translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_1</source>
+        <translation>Scène &amp;Plot2d </translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_2</source>
+        <translation>Scène &amp;OCC</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_3</source>
+        <translation>Scène VT&amp;K</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_4</source>
+        <translation>Scène Qx&amp;Scene</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_5</source>
+        <translation>Scène G&amp;raphiques</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_6</source>
+        <translation>Scène ParaVie&amp;w</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_7</source>
+        <translation>Vue P&amp;ython</translation>
+    </message>
+    <message>
+        <source>CREATING_NEW_WINDOW</source>
+        <translation>Créer une nouvelle %1</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_NAME</source>
+        <translation>Objet</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_POSITION</source>
+        <translation>Position de la Légende:</translation>
+    </message>
+    <message>
+        <source>PREF_RELATIVE_SIZE</source>
+        <translation>Relative</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_BACKGROUND</source>
+        <translation>Arrière-plan</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_BACKGROUND_COLOR</source>
+        <translation>Couleur de l&apos;arrière-plan</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_SELECTION</source>
+        <translation>Couleur de sélection</translation>
+    </message>
+    <message>
+        <source>PREF_XYVIEWER_BACKGROUND</source>
+        <translation>Vue XY</translation>
+    </message>
+    <message>
+        <source>PREF_XZVIEWER_BACKGROUND</source>
+        <translation>Vue XZ</translation>
+    </message>
+    <message>
+        <source>PREF_YZVIEWER_BACKGROUND</source>
+        <translation>Vue YZ</translation>
+    </message>
+    <message>
+        <source>PREF_3DVIEWER_BACKGROUND</source>
+        <translation>Vue 3D</translation>
+    </message>
+    <message>
+        <source>PREF_FONT</source>
+        <translation>Police</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_FONT</source>
+        <translation>Police de la légende</translation>
+    </message>
+    <message>
+        <source>PREF_FONT_COLOR</source>
+        <translation>Couleur de police de la légende</translation>
+    </message>
+    <message>
+        <source>PREF_SELECTED_FONT_COLOR</source>
+        <translation>Couleur de surlignement de la légende</translation>
+    </message>
+    <message>
+        <source>PREF_LEFT</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_DIRECTORIES</source>
+        <translation>Emplacements</translation>
+    </message>
+    <message>
+        <source>ACTIVATING_MODULE</source>
+        <translation>Activation du module &quot;%1&quot; en cours</translation>
+    </message>
+    <message>
+        <source>PREF_VERT_AXIS_SCALE</source>
+        <translation>Echelle de l&apos;axe vertical :</translation>
+    </message>
+    <message>
+        <source>PREF_HOR_AXIS_SCALE</source>
+        <translation>Echelle de l&apos;axe horizontal :</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LANGUAGE</source>
+        <translation>Langue</translation>
+    </message>
+    <message>
+        <source>PREF_CURRENT_LANGUAGE</source>
+        <translation>Langue actuelle</translation>
+    </message>
+    <message>
+        <source>PREF_CURRENT_LOCALE</source>
+        <translation>Utiliser la locale &quot;C&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LOOK_AND_FEEL</source>
+        <translation>Aspect</translation>
+    </message>
+    <message>
+        <source>PREF_SHOW_SPLASH</source>
+        <translation>Afficher l&apos;écran de démarrage</translation>
+    </message>
+    <message>
+        <source>PREF_OPAQUE_RESIZE</source>
+        <translation>Redimensionnement opaque</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STUDY</source>
+        <translation>Propiétés de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>PREF_CATEGORY_SALOME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>PREF_DROP_DOWN_BUTTONS</source>
+        <translation>Boutons alignés dans la barre</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_TIMEOUT</source>
+        <translation type="unfinished">Notifications auto-hide timeout</translation>
+    </message>
+    <message>
+        <source>PREF_NOTIFY_TIMEOUT_NONE</source>
+        <translation type="unfinished">None</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_COMMON</source>
+        <translation>Commun</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_3DVIEWER</source>
+        <translation>Scène 3D</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_OCCVIEWER</source>
+        <translation>Scène OCC 3D</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STEREO</source>
+        <translation>Rendu stéréo</translation>
+    </message>
+    <message>
+        <source>PREF_STEREO_TYPE</source>
+        <translation>Type de rendu stéréo</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_FILTER</source>
+        <translation>Filtre anaglyphique</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_RED_CYAN</source>
+        <translation>Rouge-Cyan</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_YELLOW_BLUE</source>
+        <translation>Jaune-Bleu</translation>
+    </message>
+    <message>
+        <source>PREF_ANAGLYPH_GREEN_MAGENTA</source>
+        <translation>Vert-Magenta</translation>
+    </message>
+    <message>
+        <source>PREF_FOCUS_TYPE</source>
+        <translation>Type de la distance de convergence</translation>
+    </message>
+    <message>
+        <source>PREF_FOCUS_VALUE</source>
+        <translation>Valeur de la focalisation stéréographique</translation>
+    </message>
+    <message>
+        <source>PREF_IOD_TYPE</source>
+        <translation>Type de distance intraoculaire</translation>
+    </message>
+    <message>
+        <source>PREF_IOD_VALUE</source>
+        <translation>Valeur de la distance intraoculaire</translation>
+    </message>
+    <message>
+        <source>PREF_ABSOLUTE</source>
+        <translation>Absolu</translation>
+    </message>
+    <message>
+        <source>PREF_RELATIVE</source>
+        <translation>Relatif</translation>
+    </message>
+    <message>
+        <source>PREF_REVERSE_STEREO</source>
+        <translation>Stéréo inversée</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_VSYNC</source>
+        <translation>Activer la synchronisation verticale</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_QUAD_BUFFER_SUPPORT</source>
+        <translation>Activer le support du quad-buffer</translation>
+    </message>
+    <message>
+        <source>PREF_LOGARITHMIC</source>
+        <translation>Logarithmique</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MODULE_HELP</source>
+        <translation>Module &amp;Aide</translation>
+    </message>
+    <message>
+        <source>PREF_SUPERV_TITLE_COLOR</source>
+        <translation>Couleur de titre</translation>
+    </message>
+    <message>
+        <source>PREF_PARAM</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>PREF_RIGHT</source>
+        <translation>Droite</translation>
+    </message>
+    <message>
+        <source>PREF_LINES</source>
+        <translation>Lignes</translation>
+    </message>
+    <message>
+        <source>INF_CANCELLED</source>
+        <translation>L&apos;activation du module est annulée</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_EXT_BROWSER</source>
+        <translation>Navigateur externe</translation>
+    </message>
+    <message>
+        <source>PREF_SUPERV_CTRL_COLOR</source>
+        <translation>Couleur de contrôle</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DEF_COLUMNS</source>
+        <translation>Colonnnes par défaut </translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PLOT2DVIEWER</source>
+        <translation>Scène Plot2d</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VIEWER</source>
+        <translation>Scène</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LEGEND</source>
+        <translation>Légende</translation>
+    </message>
+    <message>
+        <source>PREF_LEGEND_SYMBOL_TYPE</source>
+        <translation>Type de symbole:</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_ABOVE_LINE</source>
+        <translation>Marqueur dessus de la ligne</translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_ON_LINE</source>
+        <translation>Marqueur sur la ligne</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_COLOR</source>
+        <translation>Couleur des marqueurs de déviation</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_MARKER_LW</source>
+        <translation>Epaisseur des lignes des marqueurs de déviation</translation>
+    </message>
+    <message>
+        <source>PREF_DEVIATION_MARKER_TS</source>
+        <translation>Taille des coches des marqueurs de déviation</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MRU</source>
+        <translation>&amp;Récemment utilisés</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_PREFERENCES</source>
+        <translation>Préférences</translation>
+    </message>
+    <message>
+        <source>DEFINE_EXTERNAL_BROWSER</source>
+        <translation>Le navigateur externe n&apos;est pas trouvé. Voulez-vous le définir dans les préférences?</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SIZE</source>
+        <translation>Taille automatique pour les autres colonnes</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_MRU</source>
+        <translation>Récemment utilisés</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_NEW</source>
+        <translation>&amp;Nouveau</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_OPEN</source>
+        <translation>&amp;Ouvrir...</translation>
+    </message>
+    <message>
+        <source>PYTHON_CONSOLE</source>
+        <translation>Console Python</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SELECTION</source>
+        <translation>Sélection</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_SELECTION</source>
+        <translation>Activer sélection</translation>
+    </message>
+    <message>
+        <source>PREF_ENABLE_PRESELECTION</source>
+        <translation>Activer pré-sélection</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION</source>
+        <translation>Pré-sélection</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_STANDARD</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_DYNAMIC</source>
+        <translation>Dynamique</translation>
+    </message>
+    <message>
+        <source>PREF_PRESELECTION_DISABLED</source>
+        <translation>Désactivée</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_CLIPPING</source>
+        <translation>Plan de coupe</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_COLOR</source>
+        <translation>Couleur</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_DEFAULT_TEXTURE</source>
+        <translation>Utiliser la texture par défaut</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_TEXTURE</source>
+        <translation>Texture</translation>
+    </message>
+    <message>
+        <source>OCC_TEXTURE_FILES</source>
+        <translation>Fichiers images (*.jpeg *.jpg *.jpe *.png *.bmp *.gif *.ppm *.tif *.tiff* .tga *.exr)</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_MODULATE</source>
+        <translation>Fond transparent</translation>
+    </message>
+    <message>
+        <source>PREF_CLIPPING_SCALE</source>
+        <translation>Facteur d&apos;échelle</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_RAY_TRACING</source>
+        <translation>Ray tracing</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_DEPTH</source>
+        <translation>Profondeur</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_REFLECTION</source>
+        <translation>Réflexions spéculaires</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_ANTIALIASING</source>
+        <translation>Anti-aliasing adaptatif</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_SHADOW</source>
+        <translation>Rendu des ombres</translation>
+    </message>
+    <message>
+        <source>PREF_RAY_TRACING_TRANS_SHADOW</source>
+        <translation>Ombres transparentes</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LIGHT</source>
+        <translation>Source de lumière</translation>
+    </message>
+    <message>
+        <source>PREF_LIGHT_COLOR</source>
+        <translation>Couleurr</translation>
+    </message>
+    <message>
+        <source>TOT_CLOSE</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CLOSE</source>
+        <translation>&amp;Fermer</translation>
+    </message>
+    <message>
+        <source>PRP_CLOSE</source>
+        <translation>Fermer la fenêtre active</translation>
+    </message>
+    <message>
+        <source>TOT_CLOSE_ALL</source>
+        <translation>Tout fermer</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CLOSE_ALL</source>
+        <translation>&amp;Tout fermer</translation>
+    </message>
+    <message>
+        <source>PRP_CLOSE_ALL</source>
+        <translation>Fermer toutes les fenêtres</translation>
+    </message>
+    <message>
+        <source>TOT_GROUP_ALL</source>
+        <translation>Tout grouper</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_GROUP_ALL</source>
+        <translation>Tout &amp;grouper</translation>
+    </message>
+    <message>
+        <source>PRP_GROUP_ALL</source>
+        <translation>Grouper toutes les fenêtres</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_NOT_EXISTS</source>
+        <translation>Impossible d&apos;ouvrir %1.
+Le fichier n&apos;existe pas</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_MRU</source>
+        <translation>Montrer les études récemment utilisées</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_VISIBLE_COUNT</source>
+        <translation>Nombre d&apos;études</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_INSERT_MODE</source>
+        <translation>Mode d&apos;insertion</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_MOVE_FIRST</source>
+        <translation>Placer au début</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_MOVE_LAST</source>
+        <translation>Placer à la fin</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_ADD_FIRST</source>
+        <translation>Ajouter au début</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_ADD_LAST</source>
+        <translation>Ajouter à la fin</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_TYPE</source>
+        <translation>Type de lien</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_AUTO</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_SHORT</source>
+        <translation>Court</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_FULL</source>
+        <translation>Complet</translation>
+    </message>
+    <message>
+        <source>PREFERENCES_NOT_SUPPORTED</source>
+        <translation>Les préférences du module &quot;%1&quot; ne sont pas supportées</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_SHORTCUTS</source>
+        <translation>Raccourcis clavier</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SHORTCUTS</source>
+        <translation>Réglage des raccourcis clavier</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_FULL_SCREEN</source>
+        <translation>Plein écran</translation>
+    </message>
+    <message>
+        <source>PREF_FULL_SCREEN_AUTO</source>
+        <translation>Cacher l&apos;arbre d&apos;étude and les barres d&apos;outils des vues</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_PYEDITOR</source>
+        <translation>Editeur python</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_FONT</source>
+        <translation>Paramètres de la fonte</translation>
+    </message>
+    <message>
+        <source>PREF_PY_FONT</source>
+        <translation>Fonte</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_DISPLAY</source>
+        <translation>Paramètres d&apos;affichage</translation>
+    </message>
+    <message>
+        <source>PREF_PY_CURRLINE_HIGHLIGHT</source>
+        <translation>Met en surbrillance de la ligne actuelle</translation>
+    </message>
+    <message>
+        <source>PREF_PY_TEXT_WRAP</source>
+        <translation>Retour à la ligne dynamique</translation>
+    </message>
+    <message>
+        <source>PREF_PY_CURSON_ON_SCROLL</source>
+        <translation>Centre le curseur lors du scroll</translation>
+    </message>
+    <message>
+        <source>PREF_PY_LINE_NUMBS_AREA</source>
+        <translation>Affiche les numéros de ligne</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_EDITOR</source>
+        <translation>Paramètres de l'éditeur</translation>
+    </message>
+    <message>
+        <source>PREF_PY_COMPLETION_MODE</source>
+        <translation>Mode de complétion</translation>
+    </message>
+    <message>
+        <source>PREF_PY_NONE</source>
+        <translation>Aucun</translation>
+    </message>
+    <message>
+        <source>PREF_PY_AUTO</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <source>PREF_PY_MANUAL</source>
+        <translation>Manuel</translation>
+    </message>
+    <message>
+        <source>PREF_PY_ALWAYS</source>
+        <translation>Toujours</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_TAB</source>
+        <translation>Indentation</translation>
+    </message>
+    <message>
+        <source>PREF_PY_TAB_WHITESPACES</source>
+        <translation>Affiche les guides d&apos;indentation</translation>
+    </message>
+    <message>
+        <source>PREF_PY_TAB_SIZE</source>
+        <translation>Largeur d&apos;intentation:</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VERT_EDGE</source>
+        <translation>Marqueur de retour à la ligne</translation>
+    </message>
+    <message>
+        <source>PREF_PY_VERT_EDGE</source>
+        <translation>Afficher la ligne verticale</translation>
+    </message>
+    <message>
+        <source>PREF_PY_NUM_COLUMNS</source>
+        <translation>Nombre de colonnes:</translation>
+    </message>
+    <message>
+      <source>INFO_WELCOME_TO_SALOME</source>
+      <translation type="unfinished">Welcome to SALOME</translation>
+    </message>
+    <message>
+      <source>INFO_GETTING_STARTED</source>
+      <translation type="unfinished">Getting started</translation>
+    </message>
+    <message>
+      <source>INFO_AVAILABLE_MODULES</source>
+      <translation type="unfinished">Available modules</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_Module</name>
+    <message>
+        <source>MEN_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>TOP_DISPLAY_ONLY</source>
+        <translation>Afficher uniquement</translation>
+    </message>
+    <message>
+        <source>STB_DISPLAY_ONLY</source>
+        <translation>Afficher uniquement</translation>
+    </message>
+    <message>
+        <source>MEN_DISPLAY_ONLY</source>
+        <translation>Afficher uniquement</translation>
+    </message>
+    <message>
+        <source>TOP_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>MEN_ERASE_ALL</source>
+        <translation>Tout cacher</translation>
+    </message>
+    <message>
+        <source>STB_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>STB_SHOW</source>
+        <translation>Afficher</translation>
+    </message>
+    <message>
+        <source>TOP_SHOW</source>
+        <translation>Afficher</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW</source>
+        <translation>Afficher</translation>
+    </message>
+    <message>
+        <source>STB_ERASE_ALL</source>
+        <translation>Tout cacher</translation>
+    </message>
+    <message>
+        <source>TOP_ERASE_ALL</source>
+        <translation>Tout cacher</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_ModuleDlg</name>
+    <message>
+        <source>DESCRIPTION</source>
+        <translation>Vous activez le module
+       &lt;b&gt;%1&lt;/b&gt;.&lt;br&gt;Choisissez l&apos;action nécessaire avec le bouton correspondant ci-dessous</translation>
+    </message>
+    <message>
+        <source>CANCEL</source>
+        <translation>&amp;Annuler</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Activer le module</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_NameDlg</name>
+    <message>
+        <source>TLT_RENAME</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>NAME_LBL</source>
+        <translation>Nom: </translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_PreferencesDlg</name>
+    <message>
+        <source>IMPORT_PREFERENCES</source>
+        <translation>Importer les préférences</translation>
+    </message>
+    <message>
+        <source>XML_FILES_FILTER</source>
+        <translation>Fichiers XML (*.xml)</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Préférences</translation>
+    </message>
+    <message>
+        <source>WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>IMPORT_BTN_TEXT</source>
+        <translation>Importer</translation>
+    </message>
+    <message>
+        <source>DEFAULT_QUESTION</source>
+        <translation>Voulez-vous restaurer les préférences par défaut ?</translation>
+    </message>
+    <message>
+        <source>DEFAULT_BTN_TEXT</source>
+        <translation>Défauts</translation>
+    </message>
+    <message>
+        <source>PREF_NEED_RESTART</source>
+        <translation>Des changements prendront effets seulement après un redémarrage de l&apos;application</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_ModuleAction</name>
+    <message>
+        <source>ACTIVATE_MODULE_TOP</source>
+        <translation>Activer/désactiver le module %1</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_PyEditor</name>
+    <message>
+        <source>TOT_DUMP_PYCOMMANDS</source>
+        <translation>&amp;Générer le script des commandes</translation>
+    </message>
+    <message>
+        <source>TOT_SAVE_PYLOG</source>
+        <translation>Sauver la trace</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/ShaperApp/resources/LightShaperApp_msg_ja.ts b/src/ShaperApp/resources/LightShaperApp_msg_ja.ts
new file mode 100644 (file)
index 0000000..009aff5
--- /dev/null
@@ -0,0 +1,1281 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+  <context>
+    <name>@default</name>
+    <message>
+      <source>EXTERNAL_BROWSER_CANNOT_SHOW_PAGE</source>
+      <translation>拡張ブラウザ "%1" はヘルプページ "%2"は見ることができない。設定を変更しますか?</translation>
+    </message>
+    <message>
+      <source>ABOUT_COPYRIGHT</source>
+      <translation>Copyright (C) 2007-2020 CEA/DEN, EDF R&amp;D, OPEN CASCADE
+
+Copyright (C) 2003-2007 OPEN CASCADE, EADS/CCR, LIP6,
+CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translation>
+    </message>
+    <message>
+      <source>ABOUT_CAPTION</source>
+      <translation>%1について</translation>
+    </message>
+    <message>
+      <source>ABOUT_BASE</source>
+      <translation>一般的な情報</translation>
+    </message>
+    <message>
+      <source>ABOUT_MODULE_INFOS</source>
+      <translation>モジュール情報</translation>
+    </message>
+    <message>
+      <source>ABOUT_UNKNOWN_VERSION</source>
+      <translation>不明</translation>
+    </message>
+    <message>
+      <source>ABOUT_CLOSE</source>
+      <translation>閉じる(&amp;C)</translation>
+    </message>
+    <message>
+      <source>APP_NAME</source>
+      <translation>SHAPER</translation>
+    </message>
+    <message>
+      <source>ABOUT_LICENSE</source>
+      <translation>GNU LGPL</translation>
+    </message>
+    <message>
+      <source>ABOUT_VERSION</source>
+      <translation>Version %1</translation>
+    </message>
+    <message>
+        <source>SALOME_SITE</source>
+        <translation type="unfinished">SALOME Website</translation>
+    </message>
+    <message>
+        <source>SALOME_FORUM</source>
+        <translation type="unfinished">SALOME Forum</translation>
+    </message>
+    <message>
+        <source>SALOME_VIDEO_TUTORIALS</source>
+        <translation type="unfinished">Video Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_VIDEO_TUTORIALS</source>
+        <translation type="unfinished">Visit YouTube channel with some videos</translation>
+    </message>
+    <message>
+        <source>SALOME_TUTORIALS</source>
+        <translation type="unfinished">Tutorials</translation>
+    </message>
+    <message>
+        <source>PRP_SALOME_TUTORIALS</source>
+        <translation type="unfinished">Try tutorials from SALOME site</translation>
+    </message>
+    <message>
+      <source>ENTRY_COLUMN</source>
+      <translation>エントリ</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_CAPTION</source>
+      <translation>現在のスタディを閉じる</translation>
+    </message>
+    <message>
+      <source>STUDYCLOSE_DESCRIPTION</source>
+      <translation type="unfinished">The current study has unsaved changes. Would you like to save before closing it?</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_SAVE</source>
+      <translation>はい(&amp;Y)</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_CLOSE</source>
+      <translation>いいえ(&amp;N)</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_CANCEL</source>
+      <translation>キャンセル(&amp;C)</translation>
+    </message>
+    <message>
+      <source>WRN_PYTHON_FILE_NAME_BAD</source>
+      <translation>正確なファイル名を入力してください。
+Pythonファイルは、文字、数字、アンダースコアが含まれており、文字またはアンダースコアから開始する必要があります。</translation>
+    </message>
+    <message>
+      <source>PYTHON_FILES_FILTER</source>
+      <translation>ファイル (*.py) PYTHON</translation>
+    </message>
+    <message>
+      <source>LOG_FILES_FILTER</source>
+      <translation>ログファイル (*.log *.txt)</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_Application</name>
+    <message>
+      <source>LANG_CHANGED</source>
+      <translation>アプリケーションの言語が変更されました。&lt;BR&gt;変更は、次のセッションに適用されます。</translation>
+    </message>
+    <message>
+      <source>LOCALE_CHANGED</source>
+      <translation>アプリケーションの言語が変更されました。
+次回のセッションから有効になります。</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_THEME</source>
+      <translation>テーマ(&amp;h)</translation>
+    </message>
+    <message>
+      <source>TOT_THEME</source>
+      <translation>テーマ</translation>
+    </message>
+    <message>
+      <source>PRP_THEME</source>
+      <translation>スタイルのプロパティを変更</translation>
+    </message>
+    <message>
+      <source>TOT_FULLSCREEN</source>
+      <translation>全画面表示</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_FULLSCREEN</source>
+      <translation>全画面表示</translation>
+    </message>
+    <message>
+      <source>PRP_FULLSCREEN</source>
+      <translation>全画面表示モードに切り替え</translation>
+    </message>
+    <message>
+      <source>INF_TOOLBAR_MODULES</source>
+      <translation>モジュール情報</translation>
+    </message>
+    <message>
+      <source>PREF_SHOW_LEGEND</source>
+      <translation>凡例を表示</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_RENAME</source>
+      <translation>名前変更(&amp;R)</translation>
+    </message>
+    <message>
+      <source>PREF_MULTI_FILE</source>
+      <translation>複数ファイルの保存</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_PREFERENCES</source>
+      <translation>環境設定...(&amp;f)</translation>
+    </message>
+    <message>
+      <source>PREF_TRIHEDRON_SHOW</source>
+      <translation>三面体を表示</translation>
+    </message>
+    <message>
+      <source>PREF_TRIHEDRON</source>
+      <translation>三面体</translation>
+    </message>
+    <message>
+      <source>PREF_TRIHEDRON_SIZE</source>
+      <translation>サイズ</translation>
+    </message>
+    <message>
+      <source>OBJECT_BROWSER</source>
+      <translation>オブジェクトブラウザー</translation>
+    </message>
+    <message>
+        <source>INFO_PANEL</source>
+        <translation type="unfinished">Help panel</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_PREFERENCES</source>
+      <translation>設定を変更することができます。</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_DIRECTORIES</source>
+      <translation>ディレクトリの一覧</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_VTKVIEWER</source>
+      <translation>VTK 3D Viewer</translation>
+    </message>
+    <message>
+      <source>PREF_LOAD_LIGHT</source>
+      <translation>スタディを開くときにLightモジュールを自動読み込みする</translation>
+    </message>
+    <message>
+      <source>PREF_STORE_POS</source>
+      <translation>ウィンドウの位置を保存</translation>
+    </message>
+    <message>
+      <source>PREF_STORE_TOOL_POS</source>
+      <translation>ツールバーの位置を保存します。</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_SAVE</source>
+      <translation>自動保存間隔 (分)</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_SAVE_DISABLED</source>
+      <translation>無効</translation>
+    </message>
+    <message>
+      <source>PREF_PROJECTION_MODE</source>
+      <translation>投影モード:</translation>
+    </message>
+    <message>
+      <source>PREF_ORTHOGRAPHIC</source>
+      <translation>直交</translation>
+    </message>
+    <message>
+      <source>PREF_PERSPECTIVE</source>
+      <translation>遠近法</translation>
+    </message>
+    <message>
+        <source>PREF_POLYGON_SELECTION</source>
+        <translation>Polygon</translation>
+    </message>
+    <message>
+        <source>PREF_CIRCLE_SELECTION</source>
+        <translation>Circle</translation>
+    </message>
+    <message>
+        <source>PREF_SELECTION_STYLE</source>
+        <translation>Advanced selection</translation>
+    </message>
+    <message>
+      <source>PREF_NAVIGATION</source>
+      <translation>ナビゲーション スタイル</translation>
+    </message>
+    <message>
+      <source>PREF_STANDARD_STYLE</source>
+      <translation>Salome標準コントロール</translation>
+    </message>
+    <message>
+      <source>PREF_KEYFREE_STYLE</source>
+      <translation>キーボードなしのスタイル</translation>
+    </message>
+    <message>
+      <source>PREF_ZOOMING</source>
+      <translation>ズーム モード:</translation>
+    </message>
+    <message>
+      <source>PREF_ZOOMING_AT_CENTER</source>
+      <translation>ビューの中心を基準</translation>
+    </message>
+    <message>
+      <source>PREF_ZOOMING_AT_CURSOR</source>
+      <translation>カーソルを中心に</translation>
+    </message>
+    <message>
+      <source>PREF_INCREMENTAL_SPEED</source>
+      <translation>速度の増加:</translation>
+    </message>
+    <message>
+      <source>PREF_INCREMENTAL_SPEED_MODE</source>
+      <translation>編集モード:</translation>
+    </message>
+    <message>
+      <source>PREF_ARITHMETIC</source>
+      <translation>Arithmetic progression</translation>
+    </message>
+    <message>
+      <source>PREF_GEOMETRICAL</source>
+      <translation>幾何学的進行</translation>
+    </message>
+    <message>
+      <source>PREF_FRAME_SPACEMOUSE</source>
+      <translation>Spacemouse</translation>
+    </message>
+    <message>
+      <source>PREF_SHOW_STATIC_TRIHEDRON</source>
+      <translation>静的三面体をを表示</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_FUNC_1</source>
+      <translation>速度低減</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_FUNC_2</source>
+      <translation>速度増加</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_FUNC_3</source>
+      <translation>Dominant / combined スイッチ</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_1</source>
+      <translation>ボタン 1</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_2</source>
+      <translation>ボタン 2</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_3</source>
+      <translation>ボタン 3</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_4</source>
+      <translation>ボタン 4</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_5</source>
+      <translation>ボタン 5</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_6</source>
+      <translation>ボタン 6</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_7</source>
+      <translation>ボタン 7</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_8</source>
+      <translation>ボタン 8</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_*</source>
+      <translation>ボタン *</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_10</source>
+      <translation>ボタン 10</translation>
+    </message>
+    <message>
+      <source>PREF_SPACEMOUSE_BTN_11</source>
+      <translation>ボタン 11</translation>
+    </message>
+    <message>
+      <source>PREF_FRAME_RECORDING</source>
+      <translation>AVIで記録</translation>
+    </message>
+    <message>
+      <source>PREF_ALL_DISLPAYED_FRAMES</source>
+      <translation>表示されるすべてのフレームを保存</translation>
+    </message>
+    <message>
+      <source>PREF_FPS</source>
+      <translation>FPS</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_TTL</source>
+      <translation>パラメーター</translation>
+    </message>
+    <message>
+      <source>PREF_PROGRESSIVE</source>
+      <translation>プログレッシブ</translation>
+    </message>
+    <message>
+      <source>PREF_QUALITY</source>
+      <translation>品質</translation>
+    </message>
+    <message>
+      <source>PREF_RECORDING_MODE</source>
+      <translation>モード</translation>
+    </message>
+    <message>
+      <source>PREF_SKIPPED_FRAMES</source>
+      <translation>与えられたFPSに記録しています</translation>
+    </message>
+    <message>
+      <source>PREF_FRAME_GROUP_NAMES</source>
+      <translation>グループの名前</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_NAMES_TEXT_COLOR</source>
+      <translation>テキストの色</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_NAMES_TRANSPARENCY</source>
+      <translation>透明度</translation>
+    </message>
+    <message>
+      <source>PREF_BOTTOM</source>
+      <translation>Bottom</translation>
+    </message>
+    <message>
+      <source>PREF_CURVE_TYPE</source>
+      <translation>曲線の種類:</translation>
+    </message>
+    <message>
+      <source>PREF_POINTS</source>
+      <translation>ポイント</translation>
+    </message>
+    <message>
+      <source>PRP_MODULE</source>
+      <translation>モジュール”%1”に切り替え</translation>
+    </message>
+    <message>
+      <source>PREF_ASCII_FILE</source>
+      <translation>ASCIIでの保存</translation>
+    </message>
+    <message>
+      <source>PREFERENCES_NOT_LOADED</source>
+      <translation>“&lt;b&gt;%N&lt;/b&gt;”モジュールの環境設定は、そのモジュールをロードしているときだけです。</translation>
+    </message>
+    <message>
+      <source>PREF_LINEAR</source>
+      <translation>線形</translation>
+    </message>
+    <message>
+      <source>DATA_MODELS</source>
+      <translation>データ モデル</translation>
+    </message>
+    <message>
+      <source>PRP_RENAME</source>
+      <translation>アクティブなウィンドウの名前を変更</translation>
+    </message>
+    <message>
+      <source>TOT_RENAME</source>
+      <translation>名前変更</translation>
+    </message>
+    <message>
+      <source>MEN_RENAME_OBJ</source>
+      <translation>名前変更</translation>
+    </message>
+    <message>
+      <source>LOG_WINDOW</source>
+      <translation>メッセージウィンドウ</translation>
+    </message>
+    <message>
+      <source>PREF_SPLINE</source>
+      <translation>スプライン</translation>
+    </message>
+    <message>
+      <source>PREF_OBJ_BROWSER_SEARCH_TOOL</source>
+      <translation>検索ツール</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_HIDE_SEARCH_TOOL</source>
+      <translation>自動非表示の有効化</translation>
+    </message>
+    <message>
+      <source>PREF_OBJ_BROWSER_SETTINGS</source>
+      <translation>オブジェクトブラウザーの設定</translation>
+    </message>
+    <message>
+      <source>PRP_APP_MODULE</source>
+      <translation>Salomeプラットフォームの中立ポイントにスイッチ</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PY_CONSOLE</source>
+      <translation>Python コンソールのプロパティ</translation>
+    </message>
+    <message>
+      <source>PREF_SHOW_BANNER</source>
+      <translation>バナーの表示</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_COMPLETION</source>
+      <translation>コマンドオートコンプリート</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_STYLE</source>
+      <translation>Salomeスタイル</translation>
+    </message>
+    <message>
+      <source>PREF_USE_SALOME_STYLE</source>
+      <translation>Salomeスタイルを使用</translation>
+    </message>
+    <message>
+      <source>PREF_MARKER_SIZE</source>
+      <translation>マーカーのサイズ:</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_VIEWERS</source>
+      <translation>シーン</translation>
+    </message>
+    <message>
+      <source>PREF_APP</source>
+      <translation>アプリケーション</translation>
+    </message>
+    <message>
+      <source>PREF_TOP</source>
+      <translation>トップ</translation>
+    </message>
+    <message>
+      <source>MEN_REFRESH</source>
+      <translation>更新</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_SIZE_FIRST</source>
+      <translation>[名前] 列の自動サイズ</translation>
+    </message>
+    <message>
+      <source>PREF_RESIZE_ON_EXPAND_ITEM</source>
+      <translation>オブジェクトを開いたときの列のサイズを変更</translation>
+    </message>
+    <message>
+      <source>PREF_BROWSE_TO_THE_PUBLISHED_OBJECT</source>
+      <translation>公開オブジェクトをブラウズ</translation>
+    </message>
+    <message>
+      <source>PREF_BROWSE_NEVER</source>
+      <translation>なし</translation>
+    </message>
+    <message>
+      <source>PREF_BROWSE_AFTER_APPLY_AND_CLOSE_ONLY</source>
+      <translation>適用して閉じるをした後のみ</translation>
+    </message>
+    <message>
+      <source>PREF_BROWSE_ALWAYS</source>
+      <translation>適用毎に</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_OBJBROWSER</source>
+      <translation>オブジェクトブラウザー</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_GENERAL</source>
+      <translation>一般的な</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_0</source>
+      <translation>GL 2D view(&amp;G)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_1</source>
+      <translation>Plot 2D View(&amp;P)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_2</source>
+      <translation>OCC 3D View(&amp;O)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_3</source>
+      <translation>VTK 3D View(&amp;K)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_4</source>
+      <translation>シーン QxScene(&amp;S)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_5</source>
+      <translation>グラフィックの表示 (&amp;r)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_6</source>
+      <translation>ParaView 表示 (&amp;w)</translation>
+    </message>
+    <message>
+      <source>NEW_WINDOW_7</source>
+      <translation>P&amp;ython view</translation>
+    </message>
+    <message>
+      <source>CREATING_NEW_WINDOW</source>
+      <translation>新しい %1 を作成します。</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_NAME</source>
+      <translation>オブジェクト</translation>
+    </message>
+    <message>
+      <source>PREF_LEGEND_POSITION</source>
+      <translation>凡例の位置:</translation>
+    </message>
+    <message>
+      <source>PREF_RELATIVE_SIZE</source>
+      <translation>相対</translation>
+    </message>
+    <message>
+      <source>PREF_VIEWER_BACKGROUND</source>
+      <translation>背景</translation>
+    </message>
+    <message>
+      <source>PREF_VIEWER_BACKGROUND_COLOR</source>
+      <translation>背景色</translation>
+    </message>
+    <message>
+      <source>PREF_VIEWER_SELECTION</source>
+      <translation>選択色</translation>
+    </message>
+    <message>
+      <source>PREF_XYVIEWER_BACKGROUND</source>
+      <translation>XY 表示</translation>
+    </message>
+    <message>
+      <source>PREF_XZVIEWER_BACKGROUND</source>
+      <translation>XZ ビュー</translation>
+    </message>
+    <message>
+      <source>PREF_YZVIEWER_BACKGROUND</source>
+      <translation>ビュー YZ</translation>
+    </message>
+    <message>
+      <source>PREF_3DVIEWER_BACKGROUND</source>
+      <translation>3D ビュー</translation>
+    </message>
+    <message>
+      <source>PREF_FONT</source>
+      <translation>フォント</translation>
+    </message>
+    <message>
+      <source>PREF_LEGEND_FONT</source>
+      <translation>凡例のフォント</translation>
+    </message>
+    <message>
+      <source>PREF_FONT_COLOR</source>
+      <translation>凡例のフォントの色</translation>
+    </message>
+    <message>
+      <source>PREF_SELECTED_FONT_COLOR</source>
+      <translation>ハイライトした凡例の文字色</translation>
+    </message>
+    <message>
+      <source>PREF_LEFT</source>
+      <translation>左</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_DIRECTORIES</source>
+      <translation>ディレクトリー</translation>
+    </message>
+    <message>
+      <source>ACTIVATING_MODULE</source>
+      <translation>モジュール”%1”をアクティブにする</translation>
+    </message>
+    <message>
+      <source>PREF_VERT_AXIS_SCALE</source>
+      <translation>垂直軸のスケール:</translation>
+    </message>
+    <message>
+      <source>PREF_HOR_AXIS_SCALE</source>
+      <translation>水平方向の軸のスケール:</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_LANGUAGE</source>
+      <translation>言語</translation>
+    </message>
+    <message>
+      <source>PREF_CURRENT_LANGUAGE</source>
+      <translation>現在の言語</translation>
+    </message>
+    <message>
+      <source>PREF_CURRENT_LOCALE</source>
+      <translation>言語 "C" を使います</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_LOOK_AND_FEEL</source>
+      <translation>外観</translation>
+    </message>
+    <message>
+      <source>PREF_SHOW_SPLASH</source>
+      <translation>スプラッシュ スクリーンを表示します。</translation>
+    </message>
+    <message>
+      <source>PREF_OPAQUE_RESIZE</source>
+      <translation>不透明のサイズ変更</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_STUDY</source>
+      <translation>スタディのプロパティ</translation>
+    </message>
+    <message>
+      <source>PREF_CATEGORY_SALOME</source>
+      <translation>SALOME</translation>
+    </message>
+    <message>
+      <source>PREF_DROP_DOWN_BUTTONS</source>
+      <translation>バーでのボタンの配置</translation>
+    </message>
+    <message>
+      <source>PREF_NOTIFY_TIMEOUT</source>
+      <translation type="unfinished">Notifications auto-hide timeout</translation>
+    </message>
+    <message>
+      <source>PREF_NOTIFY_TIMEOUT_NONE</source>
+      <translation type="unfinished">None</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_COMMON</source>
+      <translation>共通</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_3DVIEWER</source>
+      <translation>3D シーン</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_OCCVIEWER</source>
+      <translation>OCC 3D Viewer</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_STEREO</source>
+      <translation>ステレオレンダリング</translation>
+    </message>
+    <message>
+      <source>PREF_STEREO_TYPE</source>
+      <translation>ステレオタイプ</translation>
+    </message>
+    <message>
+      <source>PREF_ANAGLYPH_FILTER</source>
+      <translation>Anaglyph filter</translation>
+    </message>
+    <message>
+      <source>PREF_ANAGLYPH_RED_CYAN</source>
+      <translation>赤-シアン投影</translation>
+    </message>
+    <message>
+      <source>PREF_ANAGLYPH_YELLOW_BLUE</source>
+      <translation>黄-青投影</translation>
+    </message>
+    <message>
+      <source>PREF_ANAGLYPH_GREEN_MAGENTA</source>
+      <translation>緑-マゼンタ投影</translation>
+    </message>
+    <message>
+      <source>PREF_FOCUS_TYPE</source>
+      <translation>一致距離型</translation>
+    </message>
+    <message>
+      <source>PREF_FOCUS_VALUE</source>
+      <translation>立体画法焦点値</translation>
+    </message>
+    <message>
+      <source>PREF_IOD_TYPE</source>
+      <translation>眼間距離(IOD)型</translation>
+    </message>
+    <message>
+      <source>PREF_IOD_VALUE</source>
+      <translation>眼間距離(IOD)値</translation>
+    </message>
+    <message>
+      <source>PREF_ABSOLUTE</source>
+      <translation>絶対</translation>
+    </message>
+    <message>
+      <source>PREF_RELATIVE</source>
+      <translation>早退</translation>
+    </message>
+    <message>
+      <source>PREF_REVERSE_STEREO</source>
+      <translation>Reverse stereo</translation>
+    </message>
+    <message>
+      <source>PREF_ENABLE_VSYNC</source>
+      <translation>V-Syncを有効</translation>
+    </message>
+    <message>
+      <source>PREF_ENABLE_QUAD_BUFFER_SUPPORT</source>
+      <translation>quad-buffer サポートを有効</translation>
+    </message>
+    <message>
+      <source>PREF_LOGARITHMIC</source>
+      <translation>対数</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_MODULE_HELP</source>
+      <translation>モジュールのヘルプ</translation>
+    </message>
+    <message>
+      <source>PREF_SUPERV_TITLE_COLOR</source>
+      <translation>タイトルの色</translation>
+    </message>
+    <message>
+      <source>PREF_PARAM</source>
+      <translation>パラメーター</translation>
+    </message>
+    <message>
+      <source>PREF_RIGHT</source>
+      <translation>右</translation>
+    </message>
+    <message>
+      <source>PREF_LINES</source>
+      <translation>ライン</translation>
+    </message>
+    <message>
+      <source>INF_CANCELLED</source>
+      <translation>モジュールの有効化をキャンセル</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_EXT_BROWSER</source>
+      <translation>外部ブラウザー</translation>
+    </message>
+    <message>
+      <source>PREF_SUPERV_CTRL_COLOR</source>
+      <translation>コントロールの色</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_DEF_COLUMNS</source>
+      <translation>既定の列</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PLOT2DVIEWER</source>
+      <translation>Plot 2D Viewer</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_VIEWER</source>
+      <translation>ビューワ</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_LEGEND</source>
+      <translation>凡例</translation>
+    </message>
+    <message>
+      <source>PREF_LEGEND_SYMBOL_TYPE</source>
+      <translation>シンボルの型:</translation>
+    </message>
+    <message>
+      <source>PREF_MARKER_ABOVE_LINE</source>
+      <translation>線の上のマーカー</translation>
+    </message>
+    <message>
+      <source>PREF_MARKER_ON_LINE</source>
+      <translation>線上のマーカー</translation>
+    </message>
+    <message>
+      <source>PREF_DEVIATION_COLOR</source>
+      <translation>偏差のマーカーの色</translation>
+    </message>
+    <message>
+      <source>PREF_DEVIATION_MARKER_LW</source>
+      <translation>偏差のマーカーの線の太さ</translation>
+    </message>
+    <message>
+      <source>PREF_DEVIATION_MARKER_TS</source>
+      <translation>サイズ偏差マーカーのチェック マーク</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_MRU</source>
+      <translation>最近使用したファイル</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_PREFERENCES</source>
+      <translation>設定</translation>
+    </message>
+    <message>
+      <source>DEFINE_EXTERNAL_BROWSER</source>
+      <translation>外部のブラウザーが見つかりません。環境設定で設定しますか。</translation>
+    </message>
+    <message>
+      <source>PREF_AUTO_SIZE</source>
+      <translation>他の列の自動サイズ</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_MRU</source>
+      <translation>最近使用したファイル</translation>
+    </message>
+    <message>
+      <source>ACTIVATE_MODULE_OP_NEW</source>
+      <translation>新規作成(&amp;N)</translation>
+    </message>
+    <message>
+      <source>ACTIVATE_MODULE_OP_OPEN</source>
+      <translation>開く...(&amp;O)</translation>
+    </message>
+    <message>
+      <source>PYTHON_CONSOLE</source>
+      <translation>Python コンソール</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_SELECTION</source>
+      <translation>選択</translation>
+    </message>
+    <message>
+      <source>PREF_ENABLE_SELECTION</source>
+      <translation>選択範囲を有効にします。</translation>
+    </message>
+    <message>
+      <source>PREF_ENABLE_PRESELECTION</source>
+      <translation>予選を有効にします。</translation>
+    </message>
+    <message>
+      <source>PREF_PRESELECTION</source>
+      <translation>予選</translation>
+    </message>
+    <message>
+      <source>PREF_PRESELECTION_STANDARD</source>
+      <translation>標準</translation>
+    </message>
+    <message>
+      <source>PREF_PRESELECTION_DYNAMIC</source>
+      <translation>動的</translation>
+    </message>
+    <message>
+      <source>PREF_PRESELECTION_DISABLED</source>
+      <translation>無効になっています。</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_CLIPPING</source>
+      <translation>クリッピングパラメータ</translation>
+    </message>
+    <message>
+      <source>PREF_CLIPPING_COLOR</source>
+      <translation>色</translation>
+    </message>
+    <message>
+      <source>PREF_CLIPPING_DEFAULT_TEXTURE</source>
+      <translation>デフォルトテキスチャの使用</translation>
+    </message>
+    <message>
+      <source>PREF_CLIPPING_TEXTURE</source>
+      <translation>テキスチャ</translation>
+    </message>
+    <message>
+      <source>OCC_TEXTURE_FILES</source>
+      <translation>イメージファイル (*.jpeg *jpg *.jpe *.png *.bmp *.gif *.ppm *.tif *.tiff* .tga *.exr)</translation>
+    </message>
+    <message>
+      <source>PREF_CLIPPING_MODULATE</source>
+      <translation>調整</translation>
+    </message>
+    <message>
+      <source>PREF_CLIPPING_SCALE</source>
+      <translation>スケールファクタ</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_RAY_TRACING</source>
+      <translation>レイトレース</translation>
+    </message>
+    <message>
+      <source>PREF_RAY_TRACING_DEPTH</source>
+      <translation>深度</translation>
+    </message>
+    <message>
+      <source>PREF_RAY_TRACING_REFLECTION</source>
+      <translation>狭反射</translation>
+    </message>
+    <message>
+      <source>PREF_RAY_TRACING_ANTIALIASING</source>
+      <translation>最適アンチエイリアシング</translation>
+    </message>
+    <message>
+      <source>PREF_RAY_TRACING_SHADOW</source>
+      <translation>シャドウレンダリング</translation>
+    </message>
+    <message>
+      <source>PREF_RAY_TRACING_TRANS_SHADOW</source>
+      <translation>透過影</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_LIGHT</source>
+      <translation>光源</translation>
+    </message>
+    <message>
+      <source>PREF_LIGHT_COLOR</source>
+      <translation>色</translation>
+    </message>
+    <message>
+      <source>TOT_CLOSE</source>
+      <translation>閉じる</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_CLOSE</source>
+      <translation>閉じる(&amp;C)</translation>
+    </message>
+    <message>
+      <source>PRP_CLOSE</source>
+      <translation>アクティブ ウィンドウを閉じる</translation>
+    </message>
+    <message>
+      <source>TOT_CLOSE_ALL</source>
+      <translation>すべて閉じる</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_CLOSE_ALL</source>
+      <translation>すべて閉じる</translation>
+    </message>
+    <message>
+      <source>PRP_CLOSE_ALL</source>
+      <translation>すべてのウィンドウを閉じる</translation>
+    </message>
+    <message>
+      <source>TOT_GROUP_ALL</source>
+      <translation>すべてをグループ化</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_GROUP_ALL</source>
+      <translation>すべてをグループ化(&amp;G)</translation>
+    </message>
+    <message>
+      <source>PRP_GROUP_ALL</source>
+      <translation>すべてのウィンドウをグループ化</translation>
+    </message>
+    <message>
+      <source>ERR_DOC_NOT_EXISTS</source>
+      <translation>%1 を開くことができません。ファイルが存在しません</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_MRU</source>
+      <translation>MRUアイテムの表示</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_VISIBLE_COUNT</source>
+      <translation>MRUアイテムの数</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_INSERT_MODE</source>
+      <translation>挿入モード</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_MOVE_FIRST</source>
+      <translation>先頭に移動</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_MOVE_LAST</source>
+      <translation>末尾に移動</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_ADD_FIRST</source>
+      <translation>先頭に追加</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_ADD_LAST</source>
+      <translation>最後に追加</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_LINK_TYPE</source>
+      <translation>リンクの種類</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_LINK_AUTO</source>
+      <translation>自動</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_LINK_SHORT</source>
+      <translation>短い</translation>
+    </message>
+    <message>
+      <source>PREF_MRU_LINK_FULL</source>
+      <translation>完全な</translation>
+    </message>
+    <message>
+      <source>PREFERENCES_NOT_SUPPORTED</source>
+      <translation>モジュール "%1" の設定はサポートされていません</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_SHORTCUTS</source>
+      <translation>ショートカット</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_SHORTCUTS</source>
+      <translation>ショートカットの設定</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_FULL_SCREEN</source>
+      <translation>全画面表示</translation>
+    </message>
+    <message>
+      <source>PREF_FULL_SCREEN_AUTO</source>
+      <translation>オブジェクトブラウザと表示ツールバーを隠す</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_PYEDITOR</source>
+      <translation>Python Viewer</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PY_FONT</source>
+      <translation>フォント設定</translation>
+    </message>
+    <message>
+      <source>PREF_PY_FONT</source>
+      <translation>フォント</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PY_DISPLAY</source>
+      <translation>セッティング表示</translation>
+    </message>
+    <message>
+      <source>PREF_PY_CURRLINE_HIGHLIGHT</source>
+      <translation>現在のハイライト線を有効</translation>
+    </message>
+    <message>
+      <source>PREF_PY_TEXT_WRAP</source>
+      <translation>テキストラッピングを有効</translation>
+    </message>
+    <message>
+      <source>PREF_PY_CURSON_ON_SCROLL</source>
+      <translation>スクロール上のセンタカーソル</translation>
+    </message>
+    <message>
+      <source>PREF_PY_LINE_NUMBS_AREA</source>
+      <translation>ライン数エリアの表示</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PY_EDITOR</source>
+      <translation>エディタ設定</translation>
+    </message>
+    <message>
+      <source>PREF_PY_COMPLETION_MODE</source>
+      <translation>完了モード</translation>
+    </message>
+    <message>
+      <source>PREF_PY_NONE</source>
+      <translation>なし</translation>
+    </message>
+    <message>
+      <source>PREF_PY_AUTO</source>
+      <translation>自動</translation>
+    </message>
+    <message>
+      <source>PREF_PY_MANUAL</source>
+      <translation>手動</translation>
+    </message>
+    <message>
+      <source>PREF_PY_ALWAYS</source>
+      <translation>常に</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_PY_TAB</source>
+      <translation>設定タブ</translation>
+    </message>
+    <message>
+      <source>PREF_PY_TAB_WHITESPACES</source>
+      <translation>タブホワイトスペースタブの表示</translation>
+    </message>
+    <message>
+      <source>PREF_PY_TAB_SIZE</source>
+      <translation>タブサイズ:</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_VERT_EDGE</source>
+      <translation>垂直エッジ設定</translation>
+    </message>
+    <message>
+      <source>PREF_PY_VERT_EDGE</source>
+      <translation>垂直エッジの表示</translation>
+    </message>
+    <message>
+      <source>PREF_PY_NUM_COLUMNS</source>
+      <translation>列数</translation>
+    </message>
+    <message>
+      <source>INFO_WELCOME_TO_SALOME</source>
+      <translation type="unfinished">Welcome to SALOME</translation>
+    </message>
+    <message>
+      <source>INFO_GETTING_STARTED</source>
+      <translation type="unfinished">Getting started</translation>
+    </message>
+    <message>
+      <source>INFO_AVAILABLE_MODULES</source>
+      <translation type="unfinished">Available modules</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_Module</name>
+    <message>
+      <source>MEN_HIDE</source>
+      <translation>非表示</translation>
+    </message>
+    <message>
+      <source>TOP_DISPLAY_ONLY</source>
+      <translation>選択のみ表示</translation>
+    </message>
+    <message>
+      <source>STB_DISPLAY_ONLY</source>
+      <translation>選択のみ表示</translation>
+    </message>
+    <message>
+      <source>MEN_DISPLAY_ONLY</source>
+      <translation>選択のみ表示</translation>
+    </message>
+    <message>
+      <source>TOP_HIDE</source>
+      <translation>非表示</translation>
+    </message>
+    <message>
+      <source>MEN_ERASE_ALL</source>
+      <translation>すべてを非表示</translation>
+    </message>
+    <message>
+      <source>STB_HIDE</source>
+      <translation>非表示</translation>
+    </message>
+    <message>
+      <source>STB_SHOW</source>
+      <translation>表示</translation>
+    </message>
+    <message>
+      <source>TOP_SHOW</source>
+      <translation>表示</translation>
+    </message>
+    <message>
+      <source>MEN_SHOW</source>
+      <translation>表示</translation>
+    </message>
+    <message>
+      <source>STB_ERASE_ALL</source>
+      <translation>すべてを非表示</translation>
+    </message>
+    <message>
+      <source>TOP_ERASE_ALL</source>
+      <translation>すべてを非表示</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_ModuleDlg</name>
+    <message>
+      <source>DESCRIPTION</source>
+      <translation>モジュール &lt;b&gt;%1&lt;/b&gt; を起動します。&lt;br&gt;下のボタンを押して動作を選択して下さい。</translation>
+    </message>
+    <message>
+      <source>CANCEL</source>
+      <translation>キャンセル(&amp;C)</translation>
+    </message>
+    <message>
+      <source>CAPTION</source>
+      <translation>モジュールのアクティブ化</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_NameDlg</name>
+    <message>
+      <source>TLT_RENAME</source>
+      <translation>名前変更</translation>
+    </message>
+    <message>
+      <source>NAME_LBL</source>
+      <translation>名前:</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_PreferencesDlg</name>
+    <message>
+      <source>IMPORT_PREFERENCES</source>
+      <translation>インポート設定</translation>
+    </message>
+    <message>
+      <source>XML_FILES_FILTER</source>
+      <translation>XMLファイル (*.xml)</translation>
+    </message>
+    <message>
+      <source>CAPTION</source>
+      <translation>環境設定</translation>
+    </message>
+    <message>
+      <source>WARNING</source>
+      <translation>警告</translation>
+    </message>
+    <message>
+      <source>IMPORT_BTN_TEXT</source>
+      <translation>インポート</translation>
+    </message>
+    <message>
+      <source>DEFAULT_QUESTION</source>
+      <translation>既定の設定を復元しますか?</translation>
+    </message>
+    <message>
+      <source>DEFAULT_BTN_TEXT</source>
+      <translation>デフォルト</translation>
+    </message>
+    <message>
+      <source>PREF_NEED_RESTART</source>
+      <translation>幾つかの変更はアプリケーションを再起動後に有効になります</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_ModuleAction</name>
+    <message>
+      <source>ACTIVATE_MODULE_TOP</source>
+      <translation>モジュール %1 の有効/無効にします。</translation>
+    </message>
+  </context>
+  <context>
+    <name>LightApp_PyEditor</name>
+    <message>
+      <source>TOT_DUMP_PYCOMMANDS</source>
+      <translation>スクリプト コマンドを生成します。</translation>
+    </message>
+    <message>
+      <source>TOT_SAVE_PYLOG</source>
+      <translation>ログの保存</translation>
+    </message>
+  </context>
+</TS>
diff --git a/src/ShaperApp/resources/ShaperApp.xml b/src/ShaperApp/resources/ShaperApp.xml
new file mode 100644 (file)
index 0000000..aab5264
--- /dev/null
@@ -0,0 +1,49 @@
+<document>
+  <!-- import LightApp.xml file -->
+  <import name="LightShaperApp"/>
+  <section name="launch">
+    <!-- SALOME launching parameters -->
+    <parameter name="logger"     value="no"/>
+    <parameter name="xterm"      value="no"/>
+    <parameter name="portkill"   value="no"/>
+    <parameter name="killall"    value="no"/>
+    <parameter name="pinter"     value="no"/>
+    <parameter name="noexcepthandler"  value="no"/>
+    <parameter name="modules"    value="SHAPER"/>
+    <parameter name="pyModules"  value=""/>
+    <parameter name="embedded"   value="ShaperAppEngine,study,cppContainer,registry,moduleCatalog"/>
+    <parameter name="standalone" value=""/>
+  </section>
+  <section name="language">
+    <!-- Language settings (resource manager)-->
+    <parameter name="translators" value="%P_msg_%L.qm|%PM_msg_%L.qm|%P_icons.qm|%P_images.qm|%PM_images.qm"/>
+  </section>
+  <section name="ObjectBrowser" >
+    <!-- Object Browser preferences -->
+    <parameter name="visibility_column_id_1" value="false" />
+    <parameter name="visibility_column_id_2" value="false" />
+    <parameter name="visibility_column_id_3" value="false" />
+    <parameter name="visibility_column_id_4" value="false" />
+  </section>
+  <section name="Study">
+    <!-- General study settings -->
+    <parameter name="autoload_light_modules"     value="true" />
+    <parameter name="store_positions"     value="true" />
+    <parameter name="store_tool_positions"     value="true" />
+    <parameter name="store_visual_state"  value="false" />
+    <parameter name="pydump_publish"      value="true" />
+    <parameter name="multi_file_dump"     value="false" />
+    <parameter name="pydump_save_gui"     value="false" />
+  </section>
+  <section name="splash">
+    <parameter name="image" value="%GUI_ROOT_DIR/share/salome/resources/gui/shaper_splash.png"/>
+    <parameter name="text_colors" value="#ffffff|#000000"/>
+    <parameter name="show_percents" value="yes"/>
+    <parameter name="show_progress" value="yes"/>
+    <parameter name="show_message" value="yes"/>
+    <parameter name="font" value="Xirod,12,normal"/>
+  </section>
+  <!--section name="resources">
+    <parameter name="LightShaperApp" value="%GUI_ROOT_DIR/share/salome/resources/gui"/>
+  </section-->
+</document>
diff --git a/src/ShaperApp/resources/ShaperApp_images.ts b/src/ShaperApp/resources/ShaperApp_images.ts
new file mode 100644 (file)
index 0000000..305ed41
--- /dev/null
@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+</TS>
diff --git a/src/ShaperApp/resources/ShaperApp_msg_en.ts b/src/ShaperApp/resources/ShaperApp_msg_en.ts
new file mode 100644 (file)
index 0000000..d75e202
--- /dev/null
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>WRN_FILE_NOT_EXIST</source>
+        <translation>The file %1 does not exist.</translation>
+    </message>
+    <message>
+        <source>WRN_STUDY_LOCKED</source>
+        <translation>Study is locked.</translation>
+    </message>
+    <message>
+        <source>WRN_NO_STUDY_ON SERV</source>
+        <translation>No active study in this session.</translation>
+    </message>
+    <message>
+        <source>CLOSE_LOCKED_STUDY</source>
+        <translation>Close locked study?</translation>
+    </message>
+    <message>
+        <source>PUBLISH_IN_STUDY</source>
+        <translation>Publish in study</translation>
+    </message>
+    <message>
+        <source>MULTI_FILE_DUMP</source>
+        <translation>Multi file dump</translation>
+    </message>
+    <message>
+        <source>BUT_NEW</source>
+        <translation>&amp;New</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_ROOT_NAME</source>
+        <translation>GUI states</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_ROOT_TOOLTIP</source>
+        <translation>Persistent GUI states</translation>
+    </message>
+    <message>
+        <source>SAVE_GUI_STATE</source>
+        <translation>Save GUI state</translation>
+    </message>
+    <message>
+        <source>BUT_LOAD</source>
+        <translation>&amp;Load</translation>
+    </message>
+    <message>
+        <source>BUT_OPEN</source>
+        <translation>&amp;Open</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_OBJECT_TOOLTIP</source>
+        <translation>Saved GUI state: %1</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_DEF_NAME</source>
+        <translation>GUI state: </translation>
+    </message>
+    <message>
+        <source>VALUE_COLUMN</source>
+        <translation>Value</translation>
+    </message>
+    <message>
+        <source>IOR_COLUMN</source>
+        <translation>IOR</translation>
+    </message>
+    <message>
+        <source>REFENTRY_COLUMN</source>
+        <translation>Ref.Entry</translation>
+    </message>
+    <message>
+        <source>ERR_INCOMPATIBLE_TYPE</source>
+        <translation>Variable with name &quot;%1&quot; has incompatible numeric type</translation>
+    </message>
+    <message>
+        <source>ERR_INVALID_VALUE</source>
+        <translation>Value hasn&apos;t been validated</translation>
+    </message>
+    <message>
+        <source>ERR_NO_VARIABLE</source>
+        <translation>Variable with name &quot;%1&quot; doesn&apos;t exist</translation>
+    </message>
+    <message>
+        <source>ERR_ACTIVE_STUDY_CREATE</source>
+        <translation>Cannot create study: there is already an active study in this session.
+Launch a new session or close the study.</translation>
+    </message>
+    <message>
+        <source>ERR_ACTIVE_STUDY_OPEN</source>
+        <translation>Cannot open study: there is already an active study in this session.
+Launch a new session or close the study.</translation>
+    </message>
+    <message>
+        <source>OPEN_DOCUMENT_PROBLEM</source>
+        <translation>Unknown problem during opening of the document</translation>
+    </message>
+    <message>
+        <source>CREATE_DOCUMENT_PROBLEM</source>
+        <translation>Unknown problem during creation of the document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_CONNECT_STUDY</source>
+        <translation>Connect study</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_DISCONNECT_STUDY</source>
+        <translation>Disconnect study</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_CONNECT</source>
+        <translation>Connect active study</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_DISCONNECT</source>
+        <translation>Disconnect the current study</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CONNECT</source>
+        <translation>Conn&amp;ect</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_DISCONNECT</source>
+        <translation>D&amp;isconnect</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_Application</name>
+    <message>
+        <source>ALL_FILES_FILTER</source>
+        <translation>All files (*.*)</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_UNLOAD</source>
+        <translation>&amp;Disconnect w/o saving</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_UNLOAD_SAVE</source>
+        <translation>S&amp;ave &amp;&amp; Disconnect</translation>
+    </message>
+    <message>
+        <source>MEN_WINDOWS_NEW</source>
+        <translation>New Window</translation>
+    </message>
+    <message>
+        <source>MEN_DELETE_INVALID_REFERENCE</source>
+        <translation>Delete Invalid Reference</translation>
+    </message>
+    <message>
+        <source>TOT_FILE_DESK_PREFERENCES</source>
+        <translation>Preferences</translation>
+    </message>
+    <message>
+        <source>MEN_DELETE_VS</source>
+        <translation>Delete</translation>
+    </message>
+    <message>
+        <source>MEN_OPENWITH</source>
+        <translation>Activate %1 Module</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_REGISTRY_DISPLAY</source>
+        <translation>Registry &amp;Display</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Load python script</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_PUBLISH</source>
+        <translation>Publish in study in python dump</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_MULTI_FILE</source>
+        <translation>Multi file python dump</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_SAVE_GUI</source>
+        <translation>Save GUI state in python dump</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_VISUAL_STATE</source>
+        <translation>Store/restore last GUI state</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Saves current state of viewers, displayed objects, etc.</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Save GUI State</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Save GUI state</translation>
+    </message>
+    <message>
+        <source>MEN_RESTORE_VS</source>
+        <translation>Restore</translation>
+    </message>
+    <message>
+        <source>WRN_DUMP_STUDY_FAILED</source>
+        <translation>Dump study failed</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PROPERTIES</source>
+        <translation>Pro&amp;perties...</translation>
+    </message>
+    <message>
+        <source>QUE_DOC_ALREADYEXIST</source>
+        <translation>The document %1 already exists.
+Do you want to reload it ?</translation>
+    </message>
+    <message>
+        <source>MEN_RENAME_VS</source>
+        <translation>Rename</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_CATALOG_GENERATOR</source>
+        <translation>Catalog generator</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Add vars to notebook</translation>
+    </message>
+    <message>
+        <source>PUBLISH_IN_STUDY</source>
+        <translation>Publish in study</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SETTINGS</source>
+        <translation>Settings</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_REGISTRY_DISPLAY</source>
+        <translation>Displays content of the Registry CORBA server</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_DESCRIPTION</source>
+        <translation>Do you want to save study before closing?</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_PROPERTIES</source>
+        <translation>Edits study properties</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_OBJBROWSER</source>
+        <translation>Object browser</translation>
+    </message>
+    <message>
+        <source>STUDY_LOCKED</source>
+        <translation>LOCKED</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_NAME</source>
+        <translation>Object</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_REGISTRY_DISPLAY</source>
+        <translation>Registry display</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_0</source>
+        <translation>Entry</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_1</source>
+        <translation>Value</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_2</source>
+        <translation>IOR</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_3</source>
+        <translation>Reference entry</translation>
+    </message>
+    <message>
+        <source>PREF_CATEGORY_SALOME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>PYTHON_CONSOLE</source>
+        <translation>Python Console</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Load Scrip&amp;t...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_TOOLS</source>
+        <translation>&amp;Tools</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PLUGINS_TOOLS</source>
+        <translation>Tools</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PLUGINS</source>
+        <translation>Plugins</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_DUMP_STUDY</source>
+        <translation>Dump study</translation>
+    </message>
+    <message>
+        <source>MEN_VIEW_WNDS</source>
+        <translation>Windows</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_DUMP_STUDY</source>
+        <translation>&amp;Dump Study...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_CATALOG_GENERATOR</source>
+        <translation>Generates XML catalog of a component&apos;s interface</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Add variables of the study to the notebook</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_DUMP_STUDY</source>
+        <translation>Dumps study to the python script</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_NOTEBOOK</source>
+        <translation>Open Notebook</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_NOTEBOOK</source>
+        <translation>Noteboo&amp;k...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_NOTEBOOK</source>
+        <translation>Open Notebook</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_PROPERTIES</source>
+        <translation>Study properties</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DEF_COLUMNS</source>
+        <translation>Default columns</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Loads python script from file</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CATALOG_GENERATOR</source>
+        <translation>Catalog &amp;Generator</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Add vars to NoteBook</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MRU</source>
+        <translation>Most Recently Used</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_MRU</source>
+        <translation>Most recently used</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_LOAD</source>
+        <translation>&amp;Connect</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_SCRIPT</source>
+        <translation>Load &amp;Script...</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_CAPTION</source>
+        <translation>Disconnect active study</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_DESCRIPTION</source>
+        <translation>Do you want to save study before disconnect?</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_SAVE</source>
+        <translation>&amp;Save &amp;&amp; Disconnect</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_WO_SAVE</source>
+        <translation>&amp;Disconnect w/o saving</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_StudyPropertiesDlg</name>
+    <message>
+        <source>PRP_MODE_FROM_SCRATCH</source>
+        <translation>from scratch</translation>
+    </message>
+    <message>
+        <source>PRP_AUTHOR</source>
+        <translation>Author</translation>
+    </message>
+    <message>
+        <source>PRP_LOCKED</source>
+        <translation>Locked</translation>
+    </message>
+    <message>
+        <source>PRP_MODIFICATIONS</source>
+        <translation>Modifications</translation>
+    </message>
+    <message>
+        <source>PRP_COMPONENT</source>
+        <translation>Component</translation>
+    </message>
+    <message>
+        <source>PRP_VERSION</source>
+        <translation>Version</translation>
+    </message>
+    <message>
+        <source>PRP_VERSIONS</source>
+        <translation>Stored data</translation>
+    </message>
+    <message>
+        <source>PRP_DATE_MODIF</source>
+        <translation>Date</translation>
+    </message>
+    <message>
+        <source>PRP_UNITS</source>
+        <translation>Length units</translation>
+   </message>
+    <message>
+        <source>PRP_COMMENT</source>
+        <translation>Comment</translation>
+   </message>
+    <message>
+        <source>PRP_NO</source>
+        <translation>No</translation>
+    </message>
+    <message>
+        <source>PRP_YES</source>
+        <translation>Yes</translation>
+    </message>
+    <message>
+        <source>PRP_MODIFIED</source>
+        <translation>Modified</translation>
+    </message>
+    <message>
+            <source>PRP_NOT_MODIFIED</source>
+            <translation>Not modified</translation>
+    </message>
+    <message>
+        <source>PRP_DATE</source>
+        <translation>Creation date</translation>
+    </message>
+    <message>
+        <source>PRP_MODE</source>
+        <translation>Mode</translation>
+    </message>
+    <message>
+        <source>PRP_MODE_FROM_COPYFROM</source>
+        <translation>copy from</translation>
+    </message>
+    <message>
+        <source>TLT_STUDY_PROPERTIES</source>
+        <translation>Study Properties</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_ExitDlg</name>
+    <message>
+        <source>SHUTDOWN_SERVERS</source>
+        <translation>Shutdown servers</translation>
+    </message>
+</context>
+<context>
+    <name>NoteBook_Table</name>
+    <message>
+        <source>REMOVE_VARIABLE_IS_USED</source>
+        <translation>Variable with name &quot;%1&quot; is used in the study.
+Do you really want to remove it?</translation>
+    </message>
+    <message>
+        <source>RENAME_VARIABLE_IS_USED</source>
+        <translation>Variable with name &quot;%1&quot; is used in the study.
+Do you really want to rename it?</translation>
+    </message>
+    <message>
+        <source>VARNAME_COLUMN</source>
+        <translation>Variable</translation>
+    </message>
+    <message>
+        <source>VARVALUE_COLUMN</source>
+        <translation>Value</translation>
+    </message>
+    <message>
+        <source>VARVALUE_INCORRECT</source>
+        <translation>Variable Value Incorrect: %1</translation>
+    </message>
+    <message>
+        <source>VARNAME_INCORRECT</source>
+        <translation>Variable Name Incorrect :%1</translation>
+    </message>
+    <message>
+        <source>VARNAME_EXISTS</source>
+        <translation>Variable with name &quot;%1&quot; exists</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_NoteBook</name>
+    <message>
+        <source>NOTEBOOK_TITLE</source>
+        <translation>NoteBook</translation>
+    </message>
+    <message>
+        <source>BUT_UPDATE_STUDY</source>
+        <translation>&amp;Update Study</translation>
+    </message>
+    <message>
+        <source>BUT_REMOVE</source>
+        <translation>&amp;Remove</translation>
+    </message>
+    <message>
+        <source>BUT_APPLY_AND_CLOSE</source>
+        <translation>A&amp;pply and Close</translation>
+    </message>
+    <message>
+        <source>BUT_HELP</source>
+        <translation>&amp;Help</translation>
+    </message>
+    <message>
+        <source>CLOSE_CAPTION</source>
+        <translation>Close NoteBook</translation>
+    </message>
+    <message>
+        <source>CLOSE_DESCRIPTION</source>
+        <translation>Do you want to save changes you made to NoteBook?</translation>
+    </message>
+    <message>
+        <source>INCORRECT_DATA</source>
+        <translation>At least one variable has been defined incorrectly.
+Please edit its parameters or remove it from table.</translation>
+    </message>
+    <message>
+        <source>ERR_UPDATE_STUDY_FAILED</source>
+        <translation>Failed to update study!</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_DoubleSpinBox</name>
+    <message>
+        <source>VALID_RANGE_VAR_MSG</source>
+        <translation>Specify either a variable name or
+a floating-point value in range ( %1; %2 )
+with %3-digit precision</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Specify a floating-point value in range ( %1; %2 )
+with %3-digit precision</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_IntSpinBox</name>
+    <message>
+        <source>VALID_RANGE_VAR_MSG</source>
+        <translation>Specify either a variable name or
+an integer value in range ( %1; %2 )</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Specify an integer value in range ( %1; %2 )</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/ShaperApp/resources/ShaperApp_msg_fr.ts b/src/ShaperApp/resources/ShaperApp_msg_fr.ts
new file mode 100644 (file)
index 0000000..ac9e08e
--- /dev/null
@@ -0,0 +1,574 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>WRN_FILE_NOT_EXIST</source>
+        <translation>Le fichier %1 n&apos;existe pas.</translation>
+    </message>
+    <message>
+        <source>WRN_STUDY_LOCKED</source>
+        <translation>L&apos;étude est verrouillée</translation>
+    </message>
+    <message>
+        <source>WRN_NO_STUDY_ON SERV</source>
+        <translation>Pas d&apos;étude active dans cette session.</translation>
+    </message>
+    <message>
+        <source>CLOSE_LOCKED_STUDY</source>
+        <translation>Fermer l&apos;étude verrouillée ?</translation>
+    </message>
+    <message>
+        <source>PUBLISH_IN_STUDY</source>
+        <translation>Publier dans l&apos;étude</translation>
+    </message>
+    <message>
+        <source>MULTI_FILE_DUMP</source>
+        <translation>Dump multi-fichiers</translation>
+    </message>
+    <message>
+        <source>BUT_NEW</source>
+        <translation>&amp;Nouvelle</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_ROOT_NAME</source>
+        <translation>Etats d&apos;IHM</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_ROOT_TOOLTIP</source>
+        <translation>Etats d&apos;IHM persistents</translation>
+    </message>
+    <message>
+        <source>SAVE_GUI_STATE</source>
+        <translation>Sauvegarder l&apos;état d&apos;IHM</translation>
+    </message>
+    <message>
+        <source>BUT_LOAD</source>
+        <translation>&amp;Charger</translation>
+    </message>
+    <message>
+        <source>BUT_OPEN</source>
+        <translation>&amp;Ouvrir</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_OBJECT_TOOLTIP</source>
+        <translation>Etat d&apos;IHM: %1 sauvegardé</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_DEF_NAME</source>
+        <translation>Etat d&apos;IHM: </translation>
+    </message>
+    <message>
+        <source>VALUE_COLUMN</source>
+        <translation>Valeur</translation>
+    </message>
+    <message>
+        <source>IOR_COLUMN</source>
+        <translation>IOR</translation>
+    </message>
+    <message>
+        <source>REFENTRY_COLUMN</source>
+        <translation>Entrée de réf.</translation>
+    </message>
+    <message>
+        <source>ERR_INCOMPATIBLE_TYPE</source>
+        <translation>Le type numérique de la variable &quot;%1&quot; n&apos;est pas compatible</translation>
+    </message>
+    <message>
+        <source>ERR_INVALID_VALUE</source>
+        <translation>La valeur n&apos;a pas été validée</translation>
+    </message>
+    <message>
+        <source>ERR_NO_VARIABLE</source>
+        <translation>La variable &quot;%1&quot; n&apos;existe pas.</translation>
+    </message>
+    <message>
+        <source>ERR_ACTIVE_STUDY_CREATE</source>
+        <translation>Impossible de créer une étude car il y en a déjà une d&apos;active.
+Lancez une nouvelle session ou fermez l&apos;étude en cours.</translation>
+    </message>
+    <message>
+        <source>ERR_ACTIVE_STUDY_OPEN</source>
+        <translation>Impossible d&apos;ouvrir l&apos;étude car il y en a déjà une d&apos;active.
+Lancez une nouvelle session ou fermez l&apos;étude en cours.</translation>
+    </message>
+    <message>
+        <source>OPEN_DOCUMENT_PROBLEM</source>
+        <translation>Problème inconnu à l&apos;ouverture du document</translation>
+    </message>
+    <message>
+        <source>CREATE_DOCUMENT_PROBLEM</source>
+        <translation>Problème inconnu à la création du document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_CONNECT_STUDY</source>
+        <translation>Connecter l&apos;étude</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_DISCONNECT_STUDY</source>
+        <translation>Déconnecter l&apos;étude</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_CONNECT</source>
+        <translation>Connecter l&apos;étude en cours</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_DISCONNECT</source>
+        <translation>Déconnecter l&apos;étude en cours</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CONNECT</source>
+        <translation>Conn&amp;ecter</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_DISCONNECT</source>
+        <translation>D&amp;éconnecter</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_Application</name>
+    <message>
+        <source>ALL_FILES_FILTER</source>
+        <translation>Tous les fichiers (*.*)</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_UNLOAD</source>
+        <translation>&amp;Déconnecter sans sauvegarder</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_UNLOAD_SAVE</source>
+        <translation>Sauvegarder &amp;&amp; D&amp;éconnecter</translation>
+    </message>
+    <message>
+        <source>MEN_WINDOWS_NEW</source>
+        <translation>Nouvelle fenêtre</translation>
+    </message>
+    <message>
+        <source>MEN_DELETE_INVALID_REFERENCE</source>
+        <translation>Supprimer la référence invalide</translation>
+    </message>
+    <message>
+        <source>TOT_FILE_DESK_PREFERENCES</source>
+        <translation>Préférences</translation>
+    </message>
+    <message>
+        <source>MEN_DELETE_VS</source>
+        <translation>Supprimer</translation>
+    </message>
+    <message>
+        <source>MEN_OPENWITH</source>
+        <translation>Activer module %1 </translation>
+    </message>
+    <message>
+        <source>MEN_DESK_REGISTRY_DISPLAY</source>
+        <translation>Affichage du registre CORBA</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Exécuter un script python</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_PUBLISH</source>
+        <translation>Publier dans l&apos;étude dans un scrypt Python</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_MULTI_FILE</source>
+        <translation>Dump Python multi-fichiers</translation>
+    </message>
+    <message>
+        <source>PREF_PYDUMP_SAVE_GUI</source>
+        <translation>Enregistrer l&apos;état de l&apos;IHM dans un script Python</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_VISUAL_STATE</source>
+        <translation>Sauvegarder/restaurer le dernier état d&apos;IHM</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Sauvegarder l&apos;état actuel des vues 3D, des objets affichés, etc.</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Sauvegarder l&apos;état d&apos;IHM</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_SAVE_GUI_STATE</source>
+        <translation>Sauvegarder l&apos;état d&apos;IHM</translation>
+    </message>
+    <message>
+        <source>MEN_RESTORE_VS</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>WRN_DUMP_STUDY_FAILED</source>
+        <translation>Impossible de générer le script de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PROPERTIES</source>
+        <translation>Pro&amp;priétés...</translation>
+    </message>
+    <message>
+        <source>QUE_DOC_ALREADYEXIST</source>
+        <translation>Le document %1 existe déjà.
+Voulez-vous le recharger ?</translation>
+    </message>
+    <message>
+        <source>MEN_RENAME_VS</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_CATALOG_GENERATOR</source>
+        <translation>Générateur de catalogue</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Ajouter les variables au registre</translation>
+    </message>
+    <message>
+        <source>PUBLISH_IN_STUDY</source>
+        <translation>Publier dans l&apos;étude</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SETTINGS</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_REGISTRY_DISPLAY</source>
+        <translation>Visualiser le contenu du registre du serveur CORBA</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_DESCRIPTION</source>
+        <translation>Voulez-vous sauvegarder l&apos;étude avant de quitter ?</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_PROPERTIES</source>
+        <translation>Editer les propriétés de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_OBJBROWSER</source>
+        <translation>Arbre d&apos;étude</translation>
+    </message>
+    <message>
+        <source>STUDY_LOCKED</source>
+        <translation>VERROUILLEE</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_NAME</source>
+        <translation>Objet</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_REGISTRY_DISPLAY</source>
+        <translation>Visualiser le registre CORBA</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_0</source>
+        <translation>Entrée</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_1</source>
+        <translation>Valeur</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_2</source>
+        <translation>IOR</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_COLUMN_3</source>
+        <translation>Entrée de référence</translation>
+    </message>
+    <message>
+        <source>PREF_CATEGORY_SALOME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>PYTHON_CONSOLE</source>
+        <translation>Console Python</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Exécuter un scrip&amp;t...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_TOOLS</source>
+        <translation>&amp;Outils</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PLUGINS_TOOLS</source>
+        <translation>Outils</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PLUGINS</source>
+        <translation>Extensions</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_DUMP_STUDY</source>
+        <translation>Générer le script de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>MEN_VIEW_WNDS</source>
+        <translation>Fenêtres</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_DUMP_STUDY</source>
+        <translation>&amp;Générer le script de l&apos;étude...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_CATALOG_GENERATOR</source>
+        <translation>Génére un catalogue XML de l&apos;interface du composant</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Ajouter les variables de l&apos;étude au registre</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_DUMP_STUDY</source>
+        <translation>Génère le script python de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_NOTEBOOK</source>
+        <translation>Ouvrir le registre</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_NOTEBOOK</source>
+        <translation>Re&amp;gistre...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_NOTEBOOK</source>
+        <translation>Ouvrir le registre</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_PROPERTIES</source>
+        <translation>Propriétés de l&apos;étude</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DEF_COLUMNS</source>
+        <translation>Colonnes par défaut</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Exécute un script Python à partir d&apos;un fichier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CATALOG_GENERATOR</source>
+        <translation>&amp;Genérateur de catalogue</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_ADD_VARS_TO_NOTEBOOK</source>
+        <translation>Ajouter les variables au registre</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MRU</source>
+        <translation>Dernières études ouvertes</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_MRU</source>
+        <translation>Dernières études ouvertes</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_LOAD</source>
+        <translation>&amp;Connecter</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_SCRIPT</source>
+        <translation>Charger un &amp;script...</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_CAPTION</source>
+        <translation>Déconnecter l&apos;étude en cours</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_DESCRIPTION</source>
+        <translation>Voulez-vous sauver l&apos;étude avant la déconnexion ?</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_SAVE</source>
+        <translation>&amp;Sauver &amp;&amp; Déconnecter</translation>
+    </message>
+    <message>
+        <source>DISCONNECT_WO_SAVE</source>
+        <translation>&amp;Déconnecter sans sauver</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_StudyPropertiesDlg</name>
+    <message>
+        <source>PRP_MODE_FROM_SCRATCH</source>
+        <translation>du début</translation>
+    </message>
+    <message>
+        <source>PRP_AUTHOR</source>
+        <translation>Auteur</translation>
+    </message>
+    <message>
+        <source>PRP_LOCKED</source>
+        <translation>Verrouillée</translation>
+    </message>
+    <message>
+        <source>PRP_MODIFICATIONS</source>
+        <translation>Modifications</translation>
+    </message>
+    <message>
+        <source>PRP_COMPONENT</source>
+        <translation>Composant</translation>
+    </message>
+    <message>
+        <source>PRP_VERSION</source>
+        <translation>Version</translation>
+    </message>
+    <message>
+        <source>PRP_VERSIONS</source>
+        <translation>Données stockées</translation>
+    </message>
+    <message>
+        <source>PRP_DATE_MODIF</source>
+        <translation>Date</translation>
+    </message>
+    <message>
+        <source>PRP_UNITS</source>
+        <translation>Unités de longueur</translation>
+    </message>
+    <message>
+        <source>PRP_COMMENT</source>
+        <translation>Commentaires</translation>
+    </message>
+    <message>
+        <source>PRP_NO</source>
+        <translation>Non</translation>
+    </message>
+    <message>
+        <source>PRP_YES</source>
+        <translation>Oui</translation>
+    </message>
+    <message>
+        <source>PRP_MODIFIED</source>
+        <translation>Modifiée</translation>
+    </message>
+    <message>
+        <source>PRP_NOT_MODIFIED</source>
+        <translation>Non modifiée</translation>
+    </message>
+    <message>
+        <source>PRP_DATE</source>
+        <translation>Date de création</translation>
+    </message>
+    <message>
+        <source>PRP_MODE</source>
+        <translation>Mode</translation>
+    </message>
+    <message>
+        <source>PRP_MODE_FROM_COPYFROM</source>
+        <translation>copier de</translation>
+    </message>
+    <message>
+        <source>TLT_STUDY_PROPERTIES</source>
+        <translation>Propriétés de l&apos;étude</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_ExitDlg</name>
+    <message>
+        <source>SHUTDOWN_SERVERS</source>
+        <translation>Arrêter les serveurs</translation>
+    </message>
+</context>
+<context>
+    <name>NoteBook_Table</name>
+    <message>
+        <source>REMOVE_VARIABLE_IS_USED</source>
+        <translation>La variable &quot;%1&quot; est utilisée dans l&apos;étude.
+Voulez-vous vraiment la supprimer?</translation>
+    </message>
+    <message>
+        <source>RENAME_VARIABLE_IS_USED</source>
+        <translation>La variable &quot;%1&quot; est utilisée dans l&apos;étude.
+Voulez-vous vraiment la renommer?</translation>
+    </message>
+    <message>
+        <source>VARNAME_COLUMN</source>
+        <translation>Nom de la variable</translation>
+    </message>
+    <message>
+        <source>VARVALUE_COLUMN</source>
+        <translation>Valeur de la variable</translation>
+    </message>
+    <message>
+        <source>VARVALUE_INCORRECT</source>
+        <translation>La valeur de la variable n&apos;est pas correcte: %1</translation>
+    </message>
+    <message>
+        <source>VARNAME_INCORRECT</source>
+        <translation>Le nom de la variable n&apos;est pas correct: %1</translation>
+    </message>
+    <message>
+        <source>VARNAME_EXISTS</source>
+        <translation>La variable &quot;%1&quot; existe</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_NoteBook</name>
+    <message>
+        <source>NOTEBOOK_TITLE</source>
+        <translation>Registre Salome</translation>
+    </message>
+    <message>
+        <source>BUT_UPDATE_STUDY</source>
+        <translation>&amp;Mettre l&apos;étude à jour</translation>
+    </message>
+    <message>
+        <source>BUT_REMOVE</source>
+        <translation>&amp;Supprimer</translation>
+    </message>
+    <message>
+        <source>BUT_APPLY_AND_CLOSE</source>
+        <translation>A&amp;ppliquer et Fermer</translation>
+    </message>
+    <message>
+        <source>BUT_HELP</source>
+        <translation>&amp;Aide</translation>
+    </message>
+    <message>
+        <source>CLOSE_CAPTION</source>
+        <translation>Fermer le registre</translation>
+    </message>
+    <message>
+        <source>CLOSE_DESCRIPTION</source>
+        <translation>Voulez-vous sauvegarder les changements faits au registre ?</translation>
+    </message>
+    <message>
+        <source>INCORRECT_DATA</source>
+        <translation>Au moins une variable a été définie incorrectement.
+Editez ses paramètres ou retirez la de la liste.</translation>
+    </message>
+    <message>
+        <source>ERR_UPDATE_STUDY_FAILED</source>
+        <translation>Impossible de mettre l&apos;étude à jour !</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_DoubleSpinBox</name>
+    <message>
+        <source>VALID_RANGE_VAR_MSG</source>
+        <translation>Indiquez un nom de variable ou
+une valeur réelle dans l&apos;intervalle ( %1; %2 )
+avec une précision de %3 décimales</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Indiquez une valeur réelle dans l&apos;intervalle ( %1; %2 )
+avec une précision de %3 décimales</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_IntSpinBox</name>
+    <message>
+        <source>VALID_RANGE_VAR_MSG</source>
+        <translation>Indiquez un nom de variable ou
+une valeur entière dans l&apos;intervalle ( %1; %2 )</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Indiquez une valeur entière dans l&apos;intervalle ( %1; %2 )</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/ShaperApp/resources/ShaperApp_msg_ja.ts b/src/ShaperApp/resources/ShaperApp_msg_ja.ts
new file mode 100644 (file)
index 0000000..7dab9b3
--- /dev/null
@@ -0,0 +1,566 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="ja" sourcelanguage="en">
+  <context>
+    <name>@default</name>
+    <message>
+      <source>WRN_FILE_NOT_EXIST</source>
+      <translation>ファイル %1 は存在しません。</translation>
+    </message>
+    <message>
+      <source>WRN_STUDY_LOCKED</source>
+      <translation>スタディがロックされています</translation>
+    </message>
+    <message>
+      <source>WRN_NO_STUDY_ON SERV</source>
+      <translation>セッションにスタディがありません。</translation>
+    </message>
+    <message>
+      <source>CLOSE_LOCKED_STUDY</source>
+      <translation>ロックされたスタディを閉じますか。</translation>
+    </message>
+    <message>
+      <source>PUBLISH_IN_STUDY</source>
+      <translation>スタディ公開</translation>
+    </message>
+    <message>
+      <source>MULTI_FILE_DUMP</source>
+      <translation>複数ファイルの書き出し</translation>
+    </message>
+    <message>
+      <source>BUT_NEW</source>
+      <translation>新規作成(&amp;N)</translation>
+    </message>
+    <message>
+      <source>SAVE_POINT_ROOT_NAME</source>
+      <translation>HMI の状態</translation>
+    </message>
+    <message>
+      <source>SAVE_POINT_ROOT_TOOLTIP</source>
+      <translation>状態の HMI 永続的です</translation>
+    </message>
+    <message>
+      <source>SAVE_GUI_STATE</source>
+      <translation>GUIの状態を保存</translation>
+    </message>
+    <message>
+      <source>BUT_LOAD</source>
+      <translation>読み込み(&amp;L)</translation>
+    </message>
+    <message>
+      <source>BUT_OPEN</source>
+      <translation>開く(&amp;O)</translation>
+    </message>
+    <message>
+      <source>SAVE_POINT_OBJECT_TOOLTIP</source>
+      <translation>保存されたGUI状態: %1</translation>
+    </message>
+    <message>
+      <source>SAVE_POINT_DEF_NAME</source>
+      <translation>HCI の状態:</translation>
+    </message>
+    <message>
+      <source>VALUE_COLUMN</source>
+      <translation>値</translation>
+    </message>
+    <message>
+      <source>IOR_COLUMN</source>
+      <translation>IOR</translation>
+    </message>
+    <message>
+      <source>REFENTRY_COLUMN</source>
+      <translation>REFエントリ</translation>
+    </message>
+    <message>
+      <source>ERR_INCOMPATIBLE_TYPE</source>
+      <translation>変数"%1"の数値型は互換性がありません</translation>
+    </message>
+    <message>
+      <source>ERR_INVALID_VALUE</source>
+      <translation>値が検証されていません</translation>
+    </message>
+    <message>
+      <source>ERR_NO_VARIABLE</source>
+      <translation>変数"%1"は存在しません。</translation>
+    </message>
+    <message>
+      <source>ERR_ACTIVE_STUDY_CREATE</source>
+      <translation>スタディを作成できません: セッションに既にスタディがあります。
+新規セッションを開始するかスタディを閉じてください。</translation>
+    </message>
+    <message>
+      <source>ERR_ACTIVE_STUDY_OPEN</source>
+      <translation>スタディを開けません: セッションに既にスタディがあります。
+新規セッションを開始するかスタディを閉じてください。</translation>
+    </message>
+    <message>
+      <source>OPEN_DOCUMENT_PROBLEM</source>
+      <translation>ドキュメントオープン中に不明な問題が発生しました</translation>
+    </message>
+    <message>
+      <source>CREATE_DOCUMENT_PROBLEM</source>
+      <translation>ドキュメント作成中に不明な問題が発生しました</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_CONNECT_STUDY</source>
+      <translation>スタディの接続</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_DISCONNECT_STUDY</source>
+      <translation>スタディの切断</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_CONNECT</source>
+      <translation>アクティブスタディの接続</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_DISCONNECT</source>
+      <translation>カレントスタディの切断</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_CONNECT</source>
+      <translation>接続(&amp;e)</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_DISCONNECT</source>
+      <translation>切断(&amp;i)</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_Application</name>
+    <message>
+      <source>ALL_FILES_FILTER</source>
+      <translation>すべてのファイル (*. *)</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_UNLOAD</source>
+      <translation>アンロード(&amp;U)</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_UNLOAD_SAVE</source>
+      <translation>保存と切断(&amp;a)</translation>
+    </message>
+    <message>
+      <source>MEN_WINDOWS_NEW</source>
+      <translation>新しいウィンドウ</translation>
+    </message>
+    <message>
+      <source>MEN_DELETE_INVALID_REFERENCE</source>
+      <translation>無効な参照を削除します。</translation>
+    </message>
+    <message>
+      <source>TOT_FILE_DESK_PREFERENCES</source>
+      <translation>設定</translation>
+    </message>
+    <message>
+      <source>MEN_DELETE_VS</source>
+      <translation>削除</translation>
+    </message>
+    <message>
+      <source>MEN_OPENWITH</source>
+      <translation>モジュール %1 を有効</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_REGISTRY_DISPLAY</source>
+      <translation>レジストリの表示(&amp;D)</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_FILE_LOAD_SCRIPT</source>
+      <translation>Python スクリプトを実行</translation>
+    </message>
+    <message>
+      <source>PREF_PYDUMP_PUBLISH</source>
+      <translation>Python scrypt の研究を公開します。</translation>
+    </message>
+    <message>
+      <source>PREF_PYDUMP_MULTI_FILE</source>
+      <translation>複数ファイルをPythonでダンプする</translation>
+    </message>
+    <message>
+      <source>PREF_PYDUMP_SAVE_GUI</source>
+      <translation>PythonダンプでGUIの状態を保存</translation>
+    </message>
+    <message>
+      <source>PREF_STORE_VISUAL_STATE</source>
+      <translation>バックアップ/リストア HCI の最後の状態</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_FILE_SAVE_GUI_STATE</source>
+      <translation>ビューや表示オブジェクトなど、現在の状態を保存</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_FILE_SAVE_GUI_STATE</source>
+      <translation>GUIの状態を保存</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_FILE_SAVE_GUI_STATE</source>
+      <translation>GUIの状態を保存</translation>
+    </message>
+    <message>
+      <source>MEN_RESTORE_VS</source>
+      <translation>復元</translation>
+    </message>
+    <message>
+      <source>WRN_DUMP_STUDY_FAILED</source>
+      <translation>研究のスクリプトを生成できません。</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_PROPERTIES</source>
+      <translation>プロパティ...(&amp;p)</translation>
+    </message>
+    <message>
+      <source>QUE_DOC_ALREADYEXIST</source>
+      <translation>ドキュメント %1 はの存在。それを再読み込みしますか。</translation>
+    </message>
+    <message>
+      <source>MEN_RENAME_VS</source>
+      <translation>名前の変更</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_CATALOG_GENERATOR</source>
+      <translation>カタログの生成</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_ADD_VARS_TO_NOTEBOOK</source>
+      <translation>変数をレジストリに追加します。</translation>
+    </message>
+    <message>
+      <source>PUBLISH_IN_STUDY</source>
+      <translation>スタディ公開</translation>
+    </message>
+    <message>
+      <source>PREF_OBJ_BROWSER_SETTINGS</source>
+      <translation>パラメーター</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_REGISTRY_DISPLAY</source>
+      <translation>CORBAサーバーの登録内容を表示</translation>
+    </message>
+    <message>
+      <source>APPCLOSE_DESCRIPTION</source>
+      <translation>閉じる、または閉じる前にスタディをアンロードしますか?</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_PROPERTIES</source>
+      <translation>スタディのプロパティを編集</translation>
+    </message>
+    <message>
+      <source>PREF_TAB_OBJBROWSER</source>
+      <translation>オブジェクトブラウザー</translation>
+    </message>
+    <message>
+      <source>STUDY_LOCKED</source>
+      <translation>ロック</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_NAME</source>
+      <translation>オブジェクト</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_REGISTRY_DISPLAY</source>
+      <translation>レジストリの表示</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_COLUMN_0</source>
+      <translation>エントリ</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_COLUMN_1</source>
+      <translation>値</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_COLUMN_2</source>
+      <translation>IOR</translation>
+    </message>
+    <message>
+      <source>OBJ_BROWSER_COLUMN_3</source>
+      <translation>参照エントリ</translation>
+    </message>
+    <message>
+      <source>PREF_CATEGORY_SALOME</source>
+      <translation>SALOME</translation>
+    </message>
+    <message>
+      <source>PYTHON_CONSOLE</source>
+      <translation>Python コンソール</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_FILE_LOAD_SCRIPT</source>
+      <translation>スクリプトを読込み...(&amp;t)</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_TOOLS</source>
+      <translation>ツール(&amp;T)</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_PLUGINS_TOOLS</source>
+      <translation>ツール</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_PLUGINS</source>
+      <translation>プラグイン</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_FILE_DUMP_STUDY</source>
+      <translation>physonスクリプトを保存</translation>
+    </message>
+    <message>
+      <source>MEN_VIEW_WNDS</source>
+      <translation>Windows</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_FILE_DUMP_STUDY</source>
+      <translation>スクリプトを保存(&amp;D)</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_CATALOG_GENERATOR</source>
+      <translation>コンポーネントインターフェイスのXMLカタログを生成</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_ADD_VARS_TO_NOTEBOOK</source>
+      <translation>スタディの変数をnotebookに追加</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_FILE_DUMP_STUDY</source>
+      <translation>Pythonスクリプトにスタディをダンプする</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_FILE_NOTEBOOK</source>
+      <translation>レジストリを開く</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_FILE_NOTEBOOK</source>
+      <translation>Notebook...(&amp;k)</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_FILE_NOTEBOOK</source>
+      <translation>レジストリを開く</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_PROPERTIES</source>
+      <translation>スタディのプロパティ</translation>
+    </message>
+    <message>
+      <source>PREF_GROUP_DEF_COLUMNS</source>
+      <translation>既定の列</translation>
+    </message>
+    <message>
+      <source>PRP_DESK_FILE_LOAD_SCRIPT</source>
+      <translation>ファイルからPythonスクリプトを読込み</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_CATALOG_GENERATOR</source>
+      <translation>カタログ ジェネレーター(&amp;G)</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_ADD_VARS_TO_NOTEBOOK</source>
+      <translation>変数をレジストリに追加します。</translation>
+    </message>
+    <message>
+      <source>MEN_DESK_MRU</source>
+      <translation>最近のスタディ</translation>
+    </message>
+    <message>
+      <source>TOT_DESK_MRU</source>
+      <translation>最近のスタディ</translation>
+    </message>
+    <message>
+      <source>ACTIVATE_MODULE_OP_LOAD</source>
+      <translation>読込み(&amp;L)</translation>
+    </message>
+    <message>
+      <source>ACTIVATE_MODULE_OP_SCRIPT</source>
+      <translation>スクリプト読込み(&amp;S)</translation>
+    </message>
+    <message>
+      <source>DISCONNECT_CAPTION</source>
+      <translation>アクティブスタディの切断</translation>
+    </message>
+    <message>
+      <source>DISCONNECT_DESCRIPTION</source>
+      <translation>切断の前にスタディを保存しますか?</translation>
+    </message>
+    <message>
+      <source>DISCONNECT_SAVE</source>
+      <translation>保存と切断(&amp;S)</translation>
+    </message>
+    <message>
+      <source>DISCONNECT_WO_SAVE</source>
+      <translation>w/o 保存の切断(&amp;D)</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_StudyPropertiesDlg</name>
+    <message>
+      <source>PRP_MODE_FROM_SCRATCH</source>
+      <translation>ゼロから</translation>
+    </message>
+    <message>
+      <source>PRP_AUTHOR</source>
+      <translation>作成者</translation>
+    </message>
+    <message>
+      <source>PRP_LOCKED</source>
+      <translation>ロック</translation>
+    </message>
+    <message>
+      <source>PRP_MODIFICATIONS</source>
+      <translation>変更</translation>
+    </message>
+    <message>
+      <source>PRP_COMPONENT</source>
+      <translation>コンポーネント</translation>
+    </message>
+    <message>
+      <source>PRP_VERSION</source>
+      <translation>バージョン</translation>
+    </message>
+    <message>
+      <source>PRP_VERSIONS</source>
+      <translation>格納されているデータ</translation>
+    </message>
+    <message>
+      <source>PRP_DATE_MODIF</source>
+      <translation>日付</translation>
+    </message>
+    <message>
+      <source>PRP_UNITS</source>
+      <translation>長さの単位</translation>
+    </message>
+    <message>
+      <source>PRP_COMMENT</source>
+      <translation>コメント</translation>
+    </message>
+    <message>
+      <source>PRP_NO</source>
+      <translation>いいえ</translation>
+    </message>
+    <message>
+      <source>PRP_YES</source>
+      <translation>はい</translation>
+    </message>
+    <message>
+      <source>PRP_MODIFIED</source>
+      <translation>変更</translation>
+    </message>
+    <message>
+      <source>PRP_NOT_MODIFIED</source>
+      <translation>変更無</translation>
+    </message>
+    <message>
+      <source>PRP_DATE</source>
+      <translation>作成日</translation>
+    </message>
+    <message>
+      <source>PRP_MODE</source>
+      <translation>モード</translation>
+    </message>
+    <message>
+      <source>PRP_MODE_FROM_COPYFROM</source>
+      <translation>…からコピー</translation>
+    </message>
+    <message>
+      <source>TLT_STUDY_PROPERTIES</source>
+      <translation>スタディのプロパティ</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_ExitDlg</name>
+    <message>
+      <source>SHUTDOWN_SERVERS</source>
+      <translation>サーバーを停止します。</translation>
+    </message>
+  </context>
+  <context>
+    <name>NoteBook_Table</name>
+    <message>
+      <source>REMOVE_VARIABLE_IS_USED</source>
+      <translation>変数"%1"は、Studyに使用されています。\n本当にそれを削除しますか?</translation>
+    </message>
+    <message>
+      <source>RENAME_VARIABLE_IS_USED</source>
+      <translation>変数"%1"は、Studyに使用されています。\n本当にその名前を変更しますか?</translation>
+    </message>
+    <message>
+      <source>VARNAME_COLUMN</source>
+      <translation>変数名</translation>
+    </message>
+    <message>
+      <source>VARVALUE_COLUMN</source>
+      <translation>値</translation>
+    </message>
+    <message>
+      <source>VARVALUE_INCORRECT</source>
+      <translation>変数の値が正しくありません: %1</translation>
+    </message>
+    <message>
+      <source>VARNAME_INCORRECT</source>
+      <translation>変数の名前が正しくありません: %1</translation>
+    </message>
+    <message>
+      <source>VARNAME_EXISTS</source>
+      <translation>変数名「%1」が存在します。</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_NoteBook</name>
+    <message>
+      <source>NOTEBOOK_TITLE</source>
+      <translation>ノート</translation>
+    </message>
+    <message>
+      <source>BUT_UPDATE_STUDY</source>
+      <translation>スタディ更新(&amp;U)</translation>
+    </message>
+    <message>
+      <source>BUT_REMOVE</source>
+      <translation>削除(&amp;R)</translation>
+    </message>
+    <message>
+      <source>BUT_APPLY_AND_CLOSE</source>
+      <translation>適用して閉じる(&amp;p)</translation>
+    </message>
+    <message>
+      <source>BUT_HELP</source>
+      <translation>ヘルプ(&amp;H)</translation>
+    </message>
+    <message>
+      <source>CLOSE_CAPTION</source>
+      <translation>レジストリを閉じます</translation>
+    </message>
+    <message>
+      <source>CLOSE_DESCRIPTION</source>
+      <translation>レジストリに変更を保存しますか?</translation>
+    </message>
+    <message>
+      <source>INCORRECT_DATA</source>
+      <translation>少なくとも、一つの変数の定義が正しくありません。その設定を編集または一覧から削除して下さい。</translation>
+    </message>
+    <message>
+      <source>ERR_UPDATE_STUDY_FAILED</source>
+      <translation>スタディの更新に失敗しました!</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_DoubleSpinBox</name>
+    <message>
+      <source>VALID_RANGE_VAR_MSG</source>
+      <translation>小数点以下%3桁の精度で(%1; %2)の範囲の数値または変数名を入力してください。</translation>
+    </message>
+    <message>
+      <source>VALID_RANGE_NOVAR_MSG</source>
+      <translation>%3桁の精度で(%1; %2)の範囲の浮動小数点値を入力します。</translation>
+    </message>
+  </context>
+  <context>
+    <name>SalomeApp_IntSpinBox</name>
+    <message>
+      <source>VALID_RANGE_VAR_MSG</source>
+      <translation>変数名または整数値のいずれか (%1;%2) の範囲で指定します</translation>
+    </message>
+    <message>
+      <source>VALID_RANGE_NOVAR_MSG</source>
+      <translation>(%1;%2) の範囲の整数値を指定します。</translation>
+    </message>
+  </context>
+</TS>
diff --git a/src/ShaperApp/resources/shaper.png b/src/ShaperApp/resources/shaper.png
new file mode 100644 (file)
index 0000000..d4827e2
Binary files /dev/null and b/src/ShaperApp/resources/shaper.png differ
index 23401523bfd346205be67ceefad033f4bb3a4321..ce0538bd66ae575cf8fab0b44ec82e19d57096ee 100644 (file)
@@ -38,6 +38,8 @@
 #endif  // WIN32
 
 #include "utilities.h"
+
+#ifndef DISABLE_ORB
 #include "SALOMEDSClient.hxx"
 
 class TOOLSGUI_EXPORT ToolsGUI  
@@ -49,5 +51,6 @@ public :
                                            const bool  theValue,
                                            void*       theId );
 };
+#endif
 
 #endif // TOOLSGUI_H