]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
CCAR: update with V5_1_main (28/09) BR_Observer
authorcaremoli <caremoli>
Tue, 28 Sep 2010 15:13:30 +0000 (15:13 +0000)
committercaremoli <caremoli>
Tue, 28 Sep 2010 15:13:30 +0000 (15:13 +0000)
102 files changed:
configure.ac
doc/salome/gui/images/pref11.png
doc/salome/gui/images/pref41.png [new file with mode: 0644]
doc/salome/gui/input/salome_preferences.doc
src/CAF/Makefile.am
src/CAF/resources/CAF_msg_en.ts
src/CAF/resources/CAF_msg_fr.ts [new file with mode: 0644]
src/CAM/CAM_Module.cxx
src/CAM/CAM_Module.h
src/CAM/Makefile.am
src/CAM/resources/CAM_msg_en.ts
src/CAM/resources/CAM_msg_fr.ts [new file with mode: 0755]
src/GLViewer/Makefile.am
src/GLViewer/resources/GLViewer_msg_en.ts
src/GLViewer/resources/GLViewer_msg_fr.ts [new file with mode: 0755]
src/LightApp/LightApp.qrc [new file with mode: 0644]
src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_Module.cxx
src/LightApp/Makefile.am
src/LightApp/images/en.png [new file with mode: 0644]
src/LightApp/images/fr.png [new file with mode: 0644]
src/LightApp/resources/LightApp.xml
src/LightApp/resources/LightApp_msg_en.ts
src/LightApp/resources/LightApp_msg_fr.ts [new file with mode: 0755]
src/LogWindow/Makefile.am
src/LogWindow/resources/LogWindow_msg_en.ts
src/LogWindow/resources/LogWindow_msg_fr.ts [new file with mode: 0755]
src/OCCViewer/Makefile.am
src/OCCViewer/OCCViewer_ViewWindow.cxx
src/OCCViewer/resources/OCCViewer_msg_en.ts
src/OCCViewer/resources/OCCViewer_msg_fr.ts [new file with mode: 0755]
src/ObjBrowser/Makefile.am
src/ObjBrowser/resources/OB_msg_en.ts
src/ObjBrowser/resources/OB_msg_fr.ts [new file with mode: 0755]
src/Plot2d/Makefile.am
src/Plot2d/Plot2d_ViewFrame.cxx
src/Plot2d/Plot2d_ViewModel.cxx
src/Plot2d/resources/Plot2d_msg_en.ts
src/Plot2d/resources/Plot2d_msg_fr.ts [new file with mode: 0755]
src/PyConsole/Makefile.am
src/PyConsole/resources/PyConsole_msg_en.ts
src/PyConsole/resources/PyConsole_msg_fr.ts [new file with mode: 0755]
src/QDS/Makefile.am
src/QDS/resources/QDS_msg_en.ts
src/QDS/resources/QDS_msg_fr.ts [new file with mode: 0755]
src/Qtx/Makefile.am
src/Qtx/QtxAction.cxx
src/Qtx/QtxAction.h
src/Qtx/QtxColorButton.cxx
src/Qtx/QtxPagePrefMgr.cxx
src/Qtx/QtxResourceMgr.cxx
src/Qtx/QtxShortcutEdit.cxx
src/Qtx/QtxShortcutEdit.h
src/Qtx/QtxTreeView.cxx
src/Qtx/resources/Qtx_msg_fr.ts [new file with mode: 0644]
src/QxGraph/Makefile.am
src/QxGraph/resources/QxGraph_msg_en.ts
src/QxGraph/resources/QxGraph_msg_fr.ts [new file with mode: 0755]
src/QxScene/Makefile.am
src/QxScene/resources/QxSceneViewer_msg_en.ts
src/QxScene/resources/QxSceneViewer_msg_fr.ts [new file with mode: 0755]
src/STD/Makefile.am
src/STD/resources/STD_msg_en.ts
src/STD/resources/STD_msg_fr.ts [new file with mode: 0755]
src/SUIT/Makefile.am
src/SUIT/SUIT_Application.cxx
src/SUIT/SUIT_Application.h
src/SUIT/SUIT_ShortcutMgr.cxx [new file with mode: 0644]
src/SUIT/SUIT_ShortcutMgr.h [new file with mode: 0644]
src/SUIT/resources/SUIT_msg_en.ts
src/SUIT/resources/SUIT_msg_fr.ts [new file with mode: 0755]
src/SUITApp/Makefile.am
src/SUITApp/SUITApp.cxx
src/SUITApp/resources/SUITApp_msg_en.ts
src/SUITApp/resources/SUITApp_msg_fr.ts [new file with mode: 0755]
src/SUPERVGraph/Makefile.am
src/SUPERVGraph/resources/SUPERVGraph_msg_en.ts
src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts [new file with mode: 0755]
src/SVTK/Makefile.am
src/SVTK/SVTK_ViewWindow.cxx
src/SVTK/resources/SVTK_msg_en.ts
src/SVTK/resources/SVTK_msg_fr.ts [new file with mode: 0755]
src/SalomeApp/Makefile.am
src/SalomeApp/SalomeApp_Application.cxx
src/SalomeApp/addvars2notebook.py [new file with mode: 0644]
src/SalomeApp/resources/SalomeApp.xml
src/SalomeApp/resources/SalomeApp_msg_en.ts
src/SalomeApp/resources/SalomeApp_msg_fr.ts [new file with mode: 0755]
src/Session/SALOME_Session_Server.cxx
src/Style/Makefile.am
src/Style/Style_PrefDlg.cxx
src/Style/resources/Style_msg_fr.ts [new file with mode: 0644]
src/TOOLSGUI/Makefile.am
src/TOOLSGUI/ToolsGUI_RegWidget.cxx
src/TOOLSGUI/ToolsGUI_RegWidget.h
src/TOOLSGUI/resources/ToolsGUI_msg_en.ts
src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts [new file with mode: 0755]
src/VTKViewer/Makefile.am
src/VTKViewer/VTKViewer_CellCenters.cxx [new file with mode: 0644]
src/VTKViewer/VTKViewer_CellCenters.h [new file with mode: 0644]
src/VTKViewer/resources/VTKViewer_msg_en.ts
src/VTKViewer/resources/VTKViewer_msg_fr.ts [new file with mode: 0755]

index bf6d0b1f6aa869e609238361d0cedb816208d37b..bc7d43df9674fe19a4bf52e39171fce13817fab5 100644 (file)
@@ -657,3 +657,5 @@ AC_OUTPUT([ \
   idl/Makefile \
   Makefile
 ])
+
+AC_HACK_LIBTOOL
index 39755e71076737e4e59b198f5b4ec4762835489a..43b6fad6f8e31451c76ade1107f8c8e05ce75b7b 100755 (executable)
Binary files a/doc/salome/gui/images/pref11.png and b/doc/salome/gui/images/pref11.png differ
diff --git a/doc/salome/gui/images/pref41.png b/doc/salome/gui/images/pref41.png
new file mode 100644 (file)
index 0000000..73f62b2
Binary files /dev/null and b/doc/salome/gui/images/pref41.png differ
index a560371d1c56498d7fa7aaa216af7e802c3570ca..19688a32baaf8aafa571734259dabfa08143e0ab 100644 (file)
@@ -209,4 +209,16 @@ resizing columns on expanding an object browser item.</li>
 <b>Entry</b>, <b>IOR</b> and <b>Reference entry</b> columns in the Object Browser.</li>
 </ul>
 
+<br><h2>Shortcuts Preferences</h2>
+
+\image html pref41.png
+
+<ul>
+<li>
+<b>Shortcuts settings</b> widget allows to define custom shortcuts for the presented actions.
+<br>To change keyboard sequence for the certain action - select the action and press desirable 
+keys combination.
+</li>
+</ul>
+
 */
index a0fc8e5ff6412ae40e2d945a0d0732aa1c61e18e..e95bc4463301948b63e8694cfc54f8301527ddd2 100755 (executable)
@@ -49,7 +49,8 @@ MOC_FILES =                   \
 nodist_libcaf_la_SOURCES = $(MOC_FILES)
 
 nodist_salomeres_DATA = \
-       CAF_msg_en.qm
+       CAF_msg_en.qm \
+       CAF_msg_fr.qm
 
 libcaf_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) -I$(srcdir)/../STD -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
 libcaf_la_LDFLAGS  = $(QT_MT_LIBS) $(CAS_OCAF) $(CAS_OCAFVIS)
index 590baaac3825542f843eef01717d4c47fce68250..ed2ac521df9aa62a053232bfa65adfb22aa6fe31 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>CAF_Application</name>
     <message>
diff --git a/src/CAF/resources/CAF_msg_fr.ts b/src/CAF/resources/CAF_msg_fr.ts
new file mode 100644 (file)
index 0000000..2a3397b
--- /dev/null
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>CAF_Application</name>
+    <message>
+        <source>MEN_APP_EDIT</source>
+        <translation>&amp;Editer</translation>
+    </message>
+    <message>
+        <source>INF_ALL_FILTER</source>
+        <translation>Tous les Fichiers (*.*)</translation>
+    </message>
+    <message>
+        <source>INF_ALL_DOCUMENTS_FILTER</source>
+        <translation>Tous les Documents Lisibles</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_EDIT</source>
+        <translation>&amp;Editer</translation>
+    </message>
+    <message>
+        <source>MEN_APP_EDIT_UNDO</source>
+        <translation>&amp;Défaire</translation>
+    </message>
+    <message>
+        <source>MEN_APP_EDIT_REDO</source>
+        <translation>&amp;Refaire</translation>
+    </message>
+    <message>
+        <source>PRP_APP_EDIT_REDO</source>
+        <translation>Refaire la dernière opération</translation>
+    </message>
+    <message>
+        <source>PRP_APP_EDIT_UNDO</source>
+        <translation>Défaire la dernière opération</translation>
+    </message>
+    <message>
+        <source>TOT_APP_EDIT_REDO</source>
+        <translation>Refaire</translation>
+    </message>
+    <message>
+        <source>TOT_APP_EDIT_UNDO</source>
+        <translation>Défaire</translation>
+    </message>
+    <message>
+        <source>INF_APP_REDOACTIONS</source>
+        <translation> Refait %1 action(s) </translation>
+    </message>
+    <message>
+        <source>INF_APP_UNDOACTIONS</source>
+        <translation> Défait %1 action(s) </translation>
+    </message>
+    <message>
+        <source>ABOUT_INFO</source>
+        <translation>SUIT Caf application</translation>
+    </message>
+</context>
+</TS>
index 39beee2d7045418e1fff437a39dc3bd6f8c6fc75..8e39ab66bb8e64ed6b931704794bd9ee17fa544a 100755 (executable)
@@ -835,9 +835,10 @@ int CAM_Module::actionId( const QAction* a ) const
 */
 QAction* CAM_Module::createAction( const int id, const QString& text, const QIcon& icon,
                                    const QString& menu, const QString& tip, const int key,
-                                   QObject* parent, const bool toggle, QObject* reciever, const char* member )
+                                   QObject* parent, const bool toggle, QObject* reciever,
+                                  const char* member, const QString& shortcutAction )
 {
-  QtxAction* a = new QtxAction( text, icon, menu, key, parent, toggle );
+  QtxAction* a = new QtxAction( text, icon, menu, key, parent, toggle, shortcutAction );
   a->setStatusTip( tip );
 
   if ( reciever && member )
index 73aaf71b9f51b55190d48de63e7ffdf0d03b3e39..2a3022d665b4781321e2e9aaf15eb32ce6e90be8 100755 (executable)
@@ -128,7 +128,7 @@ protected:
   bool                   unregisterAction( QAction* );
   QAction*               createAction( const int, const QString&, const QIcon&, const QString&,
                                        const QString&, const int, QObject* = 0,
-                                       const bool = false, QObject* = 0, const char* = 0 );
+                                       const bool = false, QObject* = 0, const char* = 0, const QString& = QString() );
 
 private:
   CAM_Application*       myApp;             //!< parent application object
index cd568c63fa281c4d4a59877877edfecefdc338b2..98630d977ddf33334f670e3a2fa709d80f7f678a 100755 (executable)
@@ -51,7 +51,7 @@ MOC_FILES =                   \
        CAM_DataModel_moc.cxx
 nodist_libCAM_la_SOURCES = $(MOC_FILES)
 
-nodist_salomeres_DATA = CAM_msg_en.qm
+nodist_salomeres_DATA = CAM_msg_en.qm CAM_msg_fr.qm
 
 libCAM_la_CPPFLAGS = $(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../STD -I$(srcdir)/../Qtx
 libCAM_la_LDFLAGS  = $(QT_MT_LIBS)
index 831ce43f14ac754a1f85a1eff07d02dea038887c..6779ef2282e2a0d0cf9043aef928bee251b68e5e 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/CAM/resources/CAM_msg_fr.ts b/src/CAM/resources/CAM_msg_fr.ts
new file mode 100755 (executable)
index 0000000..09e8fec
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>ERROR_TLT</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>ERROR_ACTIVATE_MODULE_MSG</source>
+        <translation>Impossible d&apos;activer le module %1</translation>
+    </message>
+    <message>
+        <source>MODULE_ROOT_OBJECT_TOOLTIP</source>
+        <translation>%1 objet-racine du module</translation>
+    </message>
+</context>
+</TS>
index 1eec79e89bb7aebff0b33b8e9d5e82a348523fc9..e134a769f71aa1da251fbdd759978813ae827d92 100644 (file)
@@ -111,7 +111,8 @@ dist_salomeres_DATA =                       \
 
 nodist_salomeres_DATA =                \
        GLViewer_images.qm      \
-       GLViewer_msg_en.qm
+       GLViewer_msg_en.qm      \
+       GLViewer_msg_fr.qm
 
 libGLViewer_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
 libGLViewer_la_LDFLAGS  = $(QT_MT_LIBS) $(CAS_KERNEL) $(OGL_LIBS)
index 667a0a688d0f85d0de516fb44c614827ecae09de..d99e2af4c218e827d122739caa2c5726b5f0a256 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/GLViewer/resources/GLViewer_msg_fr.ts b/src/GLViewer/resources/GLViewer_msg_fr.ts
new file mode 100755 (executable)
index 0000000..fa5eff4
--- /dev/null
@@ -0,0 +1,117 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>DSC_FITSELECT</source>
+        <translation>Montrer la zone choisie dans la vue</translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>MNU_DUMP_VIEW</source>
+        <translation>Clicher</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Redimensionnement</translation>
+    </message>
+    <message>
+        <source>DSC_GLOBALPAN_VIEW</source>
+        <translation>Sélection d&apos;un nouveau centre de vue</translation>
+    </message>
+    <message>
+        <source>MNU_ZOOM_VIEW</source>
+        <translation>Zoomer</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>DSC_FITALL</source>
+        <translation>Montrer tous les objets dans la vue</translation>
+    </message>
+    <message>
+        <source>MNU_FITALL</source>
+        <translation>Montrer Tous</translation>
+    </message>
+    <message>
+        <source>MNU_GLOBALPAN_VIEW</source>
+        <translation>Redimensionnement Global</translation>
+    </message>
+    <message>
+        <source>INF_APP_DUMP_VIEW</source>
+        <translation>Clicher la vue</translation>
+    </message>
+    <message>
+        <source>GL_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png)</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>DSC_FITRECT</source>
+        <translation>Montrer la zone dans la vue</translation>
+    </message>
+    <message>
+        <source>MNU_FITRECT</source>
+        <translation>Montrer la zone</translation>
+    </message>
+    <message>
+        <source>CHANGE_BGCOLOR</source>
+        <translation>Changee la couleur d&apos;arrier-plan...</translation>
+    </message>
+    <message>
+        <source>DSC_DUMP_VIEW</source>
+        <translation>Sauvegarder la vue en cours au fichier image</translation>
+    </message>
+    <message>
+        <source>MNU_FITSELECT</source>
+        <translation>Montrer la Sélection</translation>
+    </message>
+    <message>
+        <source>DSC_ZOOM_VIEW</source>
+        <translation>Zoomer la vue</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_CANT_SAVE_FILE</source>
+        <translation>Impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de Visualisation</translation>
+    </message>
+</context>
+<context>
+    <name>GLViewer_ViewFrame</name>
+    <message>
+        <source>DUMP_VIEW_SAVE_FILE_DLG_CAPTION</source>
+        <translation>Sauvegarder la Vue Clichée au Fichier</translation>
+    </message>
+    <message>
+        <source>DUMP_VIEW_ERROR_DLG_TEXT</source>
+        <translation>Impossible de Sauvegarder la Vue Clichée au Fichier</translation>
+    </message>
+    <message>
+        <source>DUMP_VIEW_ERROR_DLG_CAPTION</source>
+        <translation>Erreur</translation>
+    </message>
+</context>
+<context>
+    <name>GLViewer_ViewManager</name>
+    <message>
+        <source>GL_VIEW_TITLE</source>
+        <translation>GL Scène:%M - visualisateur:%V</translation>
+    </message>
+</context>
+</TS>
diff --git a/src/LightApp/LightApp.qrc b/src/LightApp/LightApp.qrc
new file mode 100644 (file)
index 0000000..ffcce9a
--- /dev/null
@@ -0,0 +1,7 @@
+<!DOCTYPE RCC><RCC version="1.0">
+<qresource>
+  <file>images/en.png</file>
+  <file>images/fr.png</file>
+</qresource>
+</RCC>
index 1c2be69d3226e6487858b140b291ea5885eee50d..60fbb1f649189e8a23c48382998144129927b332 100644 (file)
@@ -70,6 +70,7 @@
 #include <SUIT_Study.h>
 #include <SUIT_FileDlg.h>
 #include <SUIT_ResourceMgr.h>
+#include <SUIT_ShortcutMgr.h>
 #include <SUIT_Tools.h>
 #include <SUIT_Accel.h>
 #include <SUIT_MessageBox.h>
@@ -231,6 +232,8 @@ LightApp_Application::LightApp_Application()
 : CAM_Application( false ),
   myPrefs( 0 )
 {
+  Q_INIT_RESOURCE( LightApp );
+
   STD_TabDesktop* desk = new STD_TabDesktop();
 
   setDesktop( desk );
@@ -1596,6 +1599,9 @@ void LightApp_Application::showPreferences( const QString& itemText )
     if ( desktop() )
       resourceMgr()->setValue( "desktop", "geometry", desktop()->storeGeometry() );
     resourceMgr()->save();
+
+    // Update shortcuts
+    shortcutMgr()->updateShortcuts();
   }
 
   delete prefDlg;
@@ -1854,6 +1860,19 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->setItemIcon( salomeCat, Qtx::scaleIcon( resourceMgr()->loadPixmap( "LightApp", tr( "APP_DEFAULT_ICO" ), false ), 20 ) );
 
   int genTab = pref->addPreference( tr( "PREF_TAB_GENERAL" ), salomeCat );
+
+  int langGroup = pref->addPreference( tr( "PREF_GROUP_LANGUAGE" ), genTab );
+  pref->setItemProperty( "columns", 2, langGroup );
+  int curLang = pref->addPreference( tr( "PREF_CURRENT_LANGUAGE" ), langGroup,
+                                          LightApp_Preferences::Selector, "language", "language" );
+  QStringList aLangs = SUIT_Session::session()->resourceMgr()->stringValue( "language", "languages", "en" ).split( "," );
+  QList<QVariant> aIcons;
+  foreach ( QString aLang, aLangs ) {
+    aIcons << QPixmap( QString( ":/images/%1" ).arg( aLang ) );
+  }
+  pref->setItemProperty( "strings", aLangs, curLang );
+  pref->setItemProperty( "icons",   aIcons, curLang );
+
   int studyGroup = pref->addPreference( tr( "PREF_GROUP_STUDY" ), genTab );
 
   pref->setItemProperty( "columns", 2, studyGroup );
@@ -2143,6 +2162,12 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   pref->addPreference( tr( "PREF_RESIZE_ON_EXPAND_ITEM" ), objSetGroup, LightApp_Preferences::Bool,
                        "ObjectBrowser", "resize_on_expand_item" );
 
+  // Shortcuts preferences
+  int shortcutTab = pref->addPreference( tr( "PREF_TAB_SHORTCUTS" ), salomeCat );
+  int shortcutGroup = pref->addPreference( tr( "PREF_GROUP_SHORTCUTS" ), shortcutTab );
+  pref->addPreference( tr( "" ), shortcutGroup,
+                       LightApp_Preferences::ShortcutTree, "shortcuts" );
+
   // MRU preferences
   int mruGroup = pref->addPreference( tr( "PREF_GROUP_MRU" ), genTab, LightApp_Preferences::Auto, "MRU", "show_mru" );
   pref->setItemProperty( "columns", 4, mruGroup );
@@ -2435,6 +2460,10 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
         mru->setVisible( resMgr->booleanValue( "MRU", "show_mru", false ) );          // do not show MRU menu item by default
     }
   }
+  if ( sec == "language" && param == "language" )
+  {
+    SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LANG_CHANGED" ) );
+  }
 }
 
 /*!
index 7fa22775f64330249ed2cd2367d8851927083964..b06fc08fab7b945532fc98f718e5e3139392ab9e 100644 (file)
@@ -46,6 +46,7 @@
 #include <SUIT_Operation.h>
 #include <SUIT_ViewManager.h>
 #include <SUIT_ResourceMgr.h>
+#include <SUIT_ShortcutMgr.h>
 #include <SUIT_Desktop.h>
 #include <SUIT_TreeModel.h>
 
@@ -222,6 +223,14 @@ bool LightApp_Module::activateModule( SUIT_Study* study )
   if ( mySwitchOp == 0 )
     mySwitchOp = new LightApp_SwitchOp( this );
 
+  // Enable Display and Erase actions
+  if ( action(myDisplay) )
+    action(myDisplay)->setEnabled(true);
+  if ( action(myErase) )
+    action(myErase)->setEnabled(true);
+
+  application()->shortcutMgr()->setSectionEnabled( moduleName() );
+
   /*  BUG 0020498 : The Entry column is always shown at module activation
       The registration of column is moved into LightApp_Application
 
@@ -253,6 +262,14 @@ bool LightApp_Module::deactivateModule( SUIT_Study* study )
     anIt.value()->abort();
   }
 
+  // Disable Display and Erase action
+  if ( action(myDisplay) )
+    action(myDisplay)->setEnabled(false);
+  if ( action(myErase) )
+    action(myErase)->setEnabled(false);
+
+  application()->shortcutMgr()->setSectionEnabled( moduleName(), false );
+  
   /*  BUG 0020498 : The Entry column is always shown at module activation
   QString EntryCol = QObject::tr( "ENTRY_COLUMN" );
   LightApp_DataModel* m = dynamic_cast<LightApp_DataModel*>( dataModel() );
@@ -388,9 +405,9 @@ QtxPopupMgr* LightApp_Module::popupMgr()
     
     QAction 
       *disp = createAction( -1, tr( "TOP_SHOW" ), p, tr( "MEN_SHOW" ), tr( "STB_SHOW" ),
-                            0, d, false, this, SLOT( onShowHide() ) ),
+                            0, d, false, this, SLOT( onShowHide() ), QString("General:Show object(s)") ),
       *erase = createAction( -1, tr( "TOP_HIDE" ), p, tr( "MEN_HIDE" ), tr( "STB_HIDE" ),
-                             0, d, false, this, SLOT( onShowHide() ) ),
+                             0, d, false, this, SLOT( onShowHide() ) , QString("General:Hide object(s)") ),
       *dispOnly = createAction( -1, tr( "TOP_DISPLAY_ONLY" ), p, tr( "MEN_DISPLAY_ONLY" ), tr( "STB_DISPLAY_ONLY" ),
                                 0, d, false, this, SLOT( onShowHide() ) ),
       *eraseAll = createAction( -1, tr( "TOP_ERASE_ALL" ), p, tr( "MEN_ERASE_ALL" ), tr( "STB_ERASE_ALL" ),
index c1d8006d2b7f3b595ed729f3367f3729d87c6ee7..0e4a307555f5f83f05cbda074444ffccd696ff10 100755 (executable)
 #
 include $(top_srcdir)/adm_local/unix/make_common_starter.am
 
+EXTRA_DIST += images
+
+QRC_FILES = qrc_LightApp.cxx
+
 lib_LTLIBRARIES = libLightApp.la
 
 salomeinclude_HEADERS =                        \
@@ -157,8 +161,7 @@ endif
 if ENABLE_PLOT2DVIEWER
   MOC_FILES += LightApp_Plot2dSelector_moc.cxx
 endif
-nodist_libLightApp_la_SOURCES = $(MOC_FILES)
-
+nodist_libLightApp_la_SOURCES = $(MOC_FILES) $(QRC_FILES)
 dist_salomeres_DATA =                  \
        resources/icon_about.png        \
        resources/icon_applogo.png      \
@@ -171,7 +174,8 @@ dist_salomeres_DATA =                       \
 
 nodist_salomeres_DATA =                \
        LightApp_images.qm      \
-       LightApp_msg_en.qm
+       LightApp_msg_en.qm      \
+       LightApp_msg_fr.qm
 
 libLightApp_la_CPPFLAGS = $(PYTHON_INCLUDES) $(QT_INCLUDES) $(CAS_CPPFLAGS)            \
        $(HDF5_INCLUDES) @KERNEL_CXXFLAGS@ -I$(srcdir)/../SUIT -I$(srcdir)/../STD       \
diff --git a/src/LightApp/images/en.png b/src/LightApp/images/en.png
new file mode 100644 (file)
index 0000000..ff701e1
Binary files /dev/null and b/src/LightApp/images/en.png differ
diff --git a/src/LightApp/images/fr.png b/src/LightApp/images/fr.png
new file mode 100644 (file)
index 0000000..8332c4e
Binary files /dev/null and b/src/LightApp/images/fr.png differ
index db336784eb6772c993ecef736155fdf7c588ad63..bdfbfae045f04d8c2730dddeeee2809ecb1dd8a5 100644 (file)
@@ -33,6 +33,7 @@
   </section>
   <section name="language">
     <!-- Language settings (resource manager)-->
+    <parameter name="languages"   value="en,fr"/>
     <parameter name="language"    value="en"/>
     <parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
   </section>
@@ -55,6 +56,8 @@
   </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="Plot2d"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
     <parameter name="User's Guide"      value="${KERNEL_ROOT_DIR}/share/doc/salome/gui/KERNEL/index.html"/>
     <parameter name="Developer's Guide" value="${KERNEL_ROOT_DIR}/share/doc/salome/tui/KERNEL/index.html"/>
   </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+S"/>
+    <parameter name="Hide object(s)" value="Ctrl+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+T"/>
+    <parameter name="Bottom view" value="Ctrl+Alt+B"/>
+    <parameter name="Left view" value="Ctrl+Alt+L"/>
+    <parameter name="Right view" value="Ctrl+Alt+R"/>
+    <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="Ctrl+Alt+G"/>
+    <parameter name="Increase transparency" value="Ctrl+Alt+T"/>
+    <parameter name="Decrease transparency" value="Alt+T"/>
+  </section>
 </document>
index 1d391cd0f5fcbc0d0f024106aa0a4c716f89b879..aabf97e7211a7430d043e198b747114716f6e48f 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
@@ -58,6 +37,11 @@ CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translatio
 </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>MEN_DESK_THEME</source>
         <translation>Theme</translation>
@@ -462,6 +446,14 @@ CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translatio
         <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_GROUP_STUDY</source>
         <translation>Study properties</translation>
@@ -641,8 +633,17 @@ File does not exist</translation>
     </message>
     <message>
         <source>PREFERENCES_NOT_SUPPORTED</source>
-        <translation>Preferences for module "%1" not supported</translation>
+        <translation>Preferences for module &quot;%1&quot; not supported</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_SHORTCUTS</source>
+        <translation type="unfinished">Shortcuts</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SHORTCUTS</source>
+        <translation type="unfinished">Shortcuts settings</translation>
     </message>
+
 </context>
 <context>
     <name>LightApp_Module</name>
@@ -699,7 +700,7 @@ File does not exist</translation>
     <name>LightApp_ModuleDlg</name>
     <message>
         <source>DESCRIPTION</source>
-        <translation>You're activating module
+        <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>
diff --git a/src/LightApp/resources/LightApp_msg_fr.ts b/src/LightApp/resources/LightApp_msg_fr.ts
new file mode 100755 (executable)
index 0000000..c1491a8
--- /dev/null
@@ -0,0 +1,752 @@
+<?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 de référence &quot;%2&quot;. Voulez-vous changer sa location dans les préférences?</translation>
+    </message>
+    <message>
+        <source>ABOUT_COPYRIGHT</source>
+        <translation>Copyright (C) 2007-2010 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>APP_NAME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>ABOUT_LICENSE</source>
+        <translation>GNU LGPL</translation>
+    </message>
+    <message>
+        <source>ABOUT_VERSION</source>
+        <translation>Version %1</translation>
+    </message>
+    <message>
+        <source>ENTRY_COLUMN</source>
+        <translation>Entrée</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_Application</name>
+    <message>
+        <source>LANG_CHANGED</source>
+        <translation>La langue de l&apos;application a été modifié.
+Les modifications seront appliquées à la suivante session de l&apos;application.</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>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>Sauvegarder multi-fichier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_PREFERENCES</source>
+        <translation>&amp;Préférences...</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SHOW</source>
+        <translation>Montrer le trièdre</translation>
+    </message>
+    <message>
+        <source>PREF_TRIHEDRON_SIZE</source>
+        <translation>Taille du Trièdre</translation>
+    </message>
+    <message>
+        <source>OBJECT_BROWSER</source>
+        <translation>Navigateur d&apos;Objets</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 rapide de répertoires</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_VTKVIEWER</source>
+        <translation>Visualisateur VTK 3D</translation>
+    </message>
+    <message>
+        <source>PREF_STORE_POS</source>
+        <translation>Retenir les positions des fenêtres</translation>
+    </message>
+    <message>
+        <source>PREF_AUTO_SAVE</source>
+        <translation>Intervale 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_NAVIGATION</source>
+        <translation>Navigation:</translation>
+    </message>
+    <message>
+        <source>PREF_STANDARD_STYLE</source>
+        <translation>Contrôles types Salomé</translation>
+    </message>
+    <message>
+        <source>PREF_KEYFREE_STYLE</source>
+        <translation>Style sans clavier</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>Souris Spaciale</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>Rediure l&apos;incrément de vitesse</translation>
+    </message>
+    <message>
+        <source>PREF_SPACEMOUSE_FUNC_2</source>
+        <translation>Rediure 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>Renregistrement AVI</translation>
+    </message>
+    <message>
+        <source>PREF_ALL_DISLPAYED_FRAMES</source>
+        <translation>Enregistrer tous les cadres visualisés</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>Progressive</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 aux FPS donnés</translation>
+    </message>
+    <message>
+        <source>PREF_FRAME_GROUP_NAMES</source>
+        <translation>Noms 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_ISOS_U</source>
+        <translation>Numéro des isolignes au long de U</translation>
+    </message>
+    <message>
+        <source>PREF_ISOS_V</source>
+        <translation>Numéro des isolignes au long de V</translation>
+    </message>
+    <message>
+        <source>PREF_POINTS</source>
+        <translation>Points</translation>
+    </message>
+    <message>
+        <source>PRP_MODULE</source>
+        <translation>Changer au 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 aussitôt que le module soit choisi</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>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>Activer auto-cacher</translation>
+    </message>
+    <message>
+        <source>PREF_OBJ_BROWSER_SETTINGS</source>
+        <translation>Paramètres du Navigateur d&apos;Objets</translation>
+    </message>
+    <message>
+        <source>PRP_APP_MODULE</source>
+        <translation>Tourner au point neutre de la plate-forme SALOME</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PY_CONSOLE</source>
+        <translation>Propriétés du console Python</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STYLE</source>
+        <translation>Style Salomé</translation>
+    </message>
+    <message>
+        <source>PREF_USE_SALOME_STYLE</source>
+        <translation>Utiliser le style Salome </translation>
+    </message>
+    <message>
+        <source>PREF_MARKER_SIZE</source>
+        <translation>Taille de repère:</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_VIEWERS</source>
+        <translation>Visualisateurs</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 première colonne</translation>
+    </message>
+    <message>
+        <source>PREF_RESIZE_ON_EXPAND_ITEM</source>
+        <translation>Redimensionner les colonnes de l&apos;objet agrandi</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SUPERV</source>
+        <translation>Superviseur des Graphes</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_OBJBROWSER</source>
+        <translation>Navigateur d&apos;objets</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_GENERAL</source>
+        <translation>Général</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_0</source>
+        <translation>Vue &amp;GL </translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_1</source>
+        <translation>Vue &amp;Plot2d </translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_2</source>
+        <translation>Vue &amp;OCC</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_3</source>
+        <translation>Vue VT&amp;K</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_4</source>
+        <translation>Vue &amp;QxGraph</translation>
+    </message>
+    <message>
+        <source>NEW_WINDOW_5</source>
+        <translation>Vue Qx&amp;Scene</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>Taille Relative</translation>
+    </message>
+    <message>
+        <source>PREF_VIEWER_BACKGROUND</source>
+        <translation>Couleur de l&apos;arrière-plan</translation>
+    </message>
+    <message>
+        <source>PREF_FONT</source>
+        <translation>Font</translation>
+    </message>
+    <message>
+        <source>PREF_LEFT</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>PREF_TAB_DIRECTORIES</source>
+        <translation>Répertoires</translation>
+    </message>
+    <message>
+        <source>ACTIVATING_MODULE</source>
+        <translation>Essayer d&apos;activer le module &quot;%1&quot;</translation>
+    </message>
+    <message>
+        <source>PREF_VERT_AXIS_SCALE</source>
+        <translation>Echelle de l&apos;axe verticale:</translation>
+    </message>
+    <message>
+        <source>PREF_HOR_AXIS_SCALE</source>
+        <translation>Echelle de l&apos;axe horisontale:</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_LANGUAGE</source>
+        <translation>Langue</translation>
+    </message>
+    <message>
+        <source>PREF_CURRENT_LANGUAGE</source>
+        <translation>Langue actuel</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_STUDY</source>
+        <translation>Propiétés d&apos;une Etude</translation>
+    </message>
+    <message>
+        <source>PREF_CATEGORY_SALOME</source>
+        <translation>SALOME</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_OCCVIEWER</source>
+        <translation>Visualisateur OCC 3D</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 titre</translation>
+    </message>
+    <message>
+        <source>PREF_PARAM</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>PREF_RIGHT</source>
+        <translation>Droit</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 alternatif</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_DEF_COLUMNS</source>
+        <translation>Colonnnes de Défaut </translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_PLOT2DVIEWER</source>
+        <translation>Visualisateur Plot2d</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_USE_ADVANCED_SELECTION_ALGORITHM</source>
+        <translation>Utiliser l&apos;Algorithme Avancé de Sélection </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>Fermer tous</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CLOSE_ALL</source>
+        <translation>Fermer &amp;Tous</translation>
+    </message>
+    <message>
+        <source>PRP_CLOSE_ALL</source>
+        <translation>Fermer toutes les fenêtres</translation>
+    </message>
+    <message>
+        <source>TOT_GROUP_ALL</source>
+        <translation>Grouper Tous</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_GROUP_ALL</source>
+        <translation>&amp;Grouper Tous</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 objets MRU</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_VISIBLE_COUNT</source>
+        <translation>Numéro d&apos;objets MRU</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_INSERT_MODE</source>
+        <translation>Mode d&apos;Insértion </translation>
+    </message>
+    <message>
+        <source>PREF_MRU_MOVE_FIRST</source>
+        <translation>Placer au commencement</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 commencement</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_ADD_LAST</source>
+        <translation>Ajouter à la fin</translation>
+    </message>
+    <message>
+        <source>PREF_MRU_LINK_TYPE</source>
+        <translation>Référence type</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 type="unfinished">Shortcuts</translation>
+    </message>
+    <message>
+        <source>PREF_GROUP_SHORTCUTS</source>
+        <translation type="unfinished">Shortcuts settings</translation>
+    </message>
+</context>
+<context>
+    <name>LightApp_Module</name>
+    <message>
+        <source>MEN_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>TOP_DISPLAY_ONLY</source>
+        <translation>Montrer seulement</translation>
+    </message>
+    <message>
+        <source>STB_DISPLAY_ONLY</source>
+        <translation>Montrer seulement</translation>
+    </message>
+    <message>
+        <source>MEN_DISPLAY_ONLY</source>
+        <translation>Montrer Seulement</translation>
+    </message>
+    <message>
+        <source>TOP_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>MEN_ERASE_ALL</source>
+        <translation>Cacher tous</translation>
+    </message>
+    <message>
+        <source>STB_HIDE</source>
+        <translation>Cacher</translation>
+    </message>
+    <message>
+        <source>STB_SHOW</source>
+        <translation>Montrer</translation>
+    </message>
+    <message>
+        <source>TOP_SHOW</source>
+        <translation>Montrer</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW</source>
+        <translation>Montrer</translation>
+    </message>
+    <message>
+        <source>STB_ERASE_ALL</source>
+        <translation>Cacher tous</translation>
+    </message>
+    <message>
+        <source>TOP_ERASE_ALL</source>
+        <translation>Cacher Tous</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 la touche correspondante 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>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 de défaut?</translation>
+    </message>
+    <message>
+        <source>DEFAULT_BTN_TEXT</source>
+        <translation>Defauts</translation>
+    </message>
+</context>
+</TS>
index 492ebb8ffe80b8c25f2375cfcfae4af77ffa98c9..166a2ac56a2ac74ead6a63f3dffdd8708c8dd865 100755 (executable)
@@ -37,7 +37,8 @@ MOC_FILES = LogWindow_moc.cxx
 nodist_libLogWindow_la_SOURCES = $(MOC_FILES)
 
 nodist_salomeres_DATA = \
-       LogWindow_msg_en.qm
+       LogWindow_msg_en.qm \
+       LogWindow_msg_fr.qm
 
 libLogWindow_la_CPPFLAGS = $(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
 libLogWindow_la_LDFLAGS  = $(QT_MT_LIBS)
index 91681176b591865b9e4853859f65173a9f655b25..a7421d8375c0dea27b001b797e0236341e45a819 100644 (file)
@@ -1,27 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1">
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
--->
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>LogWindow</name>
     <message>
diff --git a/src/LogWindow/resources/LogWindow_msg_fr.ts b/src/LogWindow/resources/LogWindow_msg_fr.ts
new file mode 100755 (executable)
index 0000000..1fc2bc2
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>LogWindow</name>
+    <message>
+        <location filename="../LogWindow.cxx" line="293"/>
+        <source>EDIT_COPY_CMD</source>
+        <translation>&amp;Copier</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="298"/>
+        <source>EDIT_CLEAR_CMD</source>
+        <translation>&amp;Effacer</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="303"/>
+        <source>EDIT_SELECTALL_CMD</source>
+        <translation>Choisir &amp;Tous</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="308"/>
+        <source>EDIT_SAVETOFILE_CMD</source>
+        <translation>&amp;Sauvegarder le journal au fichier...</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="368"/>
+        <source>ERR_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="368"/>
+        <source>ERR_CANT_SAVE_FILE</source>
+        <translation>Impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <location filename="../LogWindow.cxx" line="368"/>
+        <source>BUT_OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+</context>
+</TS>
index 65d59fc7ecef6c884896fbe143aa07b131fedeec..a9ab7c7c7a7f64cecb415d730a85708f0ead7b00 100755 (executable)
@@ -105,7 +105,8 @@ dist_salomeres_DATA =                               \
 
 nodist_salomeres_DATA =                \
        OCCViewer_images.qm     \
-       OCCViewer_msg_en.qm 
+       OCCViewer_msg_en.qm     \
+       OCCViewer_msg_fr.qm 
 
 libOCCViewer_la_CPPFLAGS = $(QT_INCLUDES) $(OGL_INCLUDES) $(CAS_CPPFLAGS) \
        -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx -I$(srcdir)/../OpenGLUtils
index ee2ba5cb823795d487d40e4c94c7db276cbc5cd0..fd0992fbaef6f84cdd1a9ea6f23a49b302eca9ed 100755 (executable)
@@ -1039,46 +1039,54 @@ void OCCViewer_ViewWindow::createActions()
 
   // Projections
   aAction = new QtxAction(tr("MNU_FRONT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_FRONT" ) ),
-                           tr( "MNU_FRONT_VIEW" ), 0, this);
+                           tr( "MNU_FRONT_VIEW" ), 0, this, false, "Viewers:Front view");
   aAction->setStatusTip(tr("DSC_FRONT_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onFrontView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, FrontId );
 
   aAction = new QtxAction(tr("MNU_BACK_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_BACK" ) ),
-                           tr( "MNU_BACK_VIEW" ), 0, this);
+                           tr( "MNU_BACK_VIEW" ), 0, this, false, "Viewers:Back view");
   aAction->setStatusTip(tr("DSC_BACK_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onBackView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, BackId );
 
   aAction = new QtxAction(tr("MNU_TOP_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_TOP" ) ),
-                           tr( "MNU_TOP_VIEW" ), 0, this);
+                           tr( "MNU_TOP_VIEW" ), 0, this, false, "Viewers:Top view");
   aAction->setStatusTip(tr("DSC_TOP_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onTopView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, TopId );
 
   aAction = new QtxAction(tr("MNU_BOTTOM_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_BOTTOM" ) ),
-                           tr( "MNU_BOTTOM_VIEW" ), 0, this);
+                           tr( "MNU_BOTTOM_VIEW" ), 0, this, false, "Viewers:Bottom view");
   aAction->setStatusTip(tr("DSC_BOTTOM_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onBottomView()));
+  this->addAction(aAction);
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, BottomId );
-
+  
   aAction = new QtxAction(tr("MNU_LEFT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_LEFT" ) ),
-                           tr( "MNU_LEFT_VIEW" ), 0, this);
+                           tr( "MNU_LEFT_VIEW" ), 0, this, false, "Viewers:Left view");
   aAction->setStatusTip(tr("DSC_LEFT_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onLeftView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, LeftId );
 
   aAction = new QtxAction(tr("MNU_RIGHT_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_RIGHT" ) ),
-                           tr( "MNU_RIGHT_VIEW" ), 0, this);
+                           tr( "MNU_RIGHT_VIEW" ), 0, this, false, "Viewers:Right view");
   aAction->setStatusTip(tr("DSC_RIGHT_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onRightView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, RightId );
 
   // Reset
   aAction = new QtxAction(tr("MNU_RESET_VIEW"), aResMgr->loadPixmap( "OCCViewer", tr( "ICON_OCCVIEWER_VIEW_RESET" ) ),
-                           tr( "MNU_RESET_VIEW" ), 0, this);
+                           tr( "MNU_RESET_VIEW" ), 0, this, false, "Viewers:Reset view");
   aAction->setStatusTip(tr("DSC_RESET_VIEW"));
   connect(aAction, SIGNAL(triggered()), this, SLOT(onResetView()));
+  this->addAction(aAction);
   toolMgr()->registerAction( aAction, ResetId );
 
   // Clone
index 5fcc11b74551cd9be5f3eca3be098da8c570193d..8b19e4c5b9859d9fcecdd7c3b814555b04f0cdea 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/OCCViewer/resources/OCCViewer_msg_fr.ts b/src/OCCViewer/resources/OCCViewer_msg_fr.ts
new file mode 100755 (executable)
index 0000000..501547e
--- /dev/null
@@ -0,0 +1,310 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR" sourcelanguage="en_US">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MNU_FRONT_VIEW</source>
+        <translation>Devant</translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>MNU_DUMP_VIEW</source>
+        <translation>Sauvegarder la scène</translation>
+    </message>
+    <message>
+        <source>DSC_TOP_VIEW</source>
+        <translation>Vue de dessus</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Panoramique</translation>
+    </message>
+    <message>
+        <source>MNU_CLONE_VIEW</source>
+        <translation>Dupliquer la scène</translation>
+    </message>
+    <message>
+        <source>DSC_SHOW_TRIHEDRE</source>
+        <translation>Monter/Cacher les axes de coordonnées dans la scène</translation>
+    </message>
+    <message>
+        <source>MNU_SHOW_TRIHEDRE</source>
+        <translation>Monter/Cacher les axes de coordonnées</translation>
+    </message>
+    <message>
+        <source>MNU_TOP_VIEW</source>
+        <translation>Dessus</translation>
+    </message>
+    <message>
+        <source>DSC_GLOBALPAN_VIEW</source>
+        <translation>Sélection d&apos;un nouveau centre de la vue</translation>
+    </message>
+    <message>
+        <source>DSC_ROTATE_VIEW</source>
+        <translation>Tourner le point de vue autour du centre de la scène</translation>
+    </message>
+    <message>
+        <source>MNU_ZOOM_VIEW</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>DSC_LEFT_VIEW</source>
+        <translation>Vue de gauche</translation>
+    </message>
+    <message>
+        <source>DSC_SHOOT_VIEW</source>
+        <translation>Memorizer l&apos;état courant de la scène et l&apos;ajouter dans la liste</translation>
+    </message>
+    <message>
+        <source>DSC_FITALL</source>
+        <translation>Redimentionner la scène pour montrer tous les objets</translation>
+    </message>
+    <message>
+        <source>MNU_FITALL</source>
+        <translation>Montrer tous</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATE_VIEW</source>
+        <translation>Rotation</translation>
+    </message>
+    <message>
+        <source>DSC_FRONT_VIEW</source>
+        <translation>Vue de devant</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATIONPOINTGRAVITY_VIEW</source>
+        <translation>Point de Rotation : le centre de gravité</translation>
+    </message>
+    <message>
+        <source>MNU_GLOBALPAN_VIEW</source>
+        <translation>Panoramique globale</translation>
+    </message>
+    <message>
+        <source>INF_APP_DUMP_VIEW</source>
+        <translation>Clicher la vue</translation>
+    </message>
+    <message>
+        <source>DSC_CLIPPING</source>
+        <translation>Définir le plan de découpe</translation>
+    </message>
+    <message>
+        <source>DSC_CLONE_VIEW</source>
+        <translation>Ouvrir une nouvelle fenêtre de visualisation pour la scène en cours</translation>
+    </message>
+    <message>
+        <source>INF_APP_SHOOT_VIEW</source>
+        <translation>Sauvegarder la scène</translation>
+    </message>
+    <message>
+        <source>MNU_CLIPPING</source>
+        <translation>Plan de coupe</translation>
+    </message>
+    <message>
+        <source>MNU_BACK_VIEW</source>
+        <translation>Arrière</translation>
+    </message>
+    <message>
+        <source>MNU_SHOOT_VIEW</source>
+        <translation>Memorizer la Vue</translation>
+    </message>
+    <message>
+        <source>DSC_CHANGINGROTATIONPOINT_VIEW</source>
+        <translation>Changer le point, autour duquel la scène est tournée</translation>
+    </message>
+    <message>
+        <source>MNU_BOTTOM_VIEW</source>
+        <translation>Dessous</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer le point de vue</translation>
+    </message>
+    <message>
+        <source>MNU_LEFT_VIEW</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>DSC_RIGHT_VIEW</source>
+        <translation>Vue de droit</translation>
+    </message>
+    <message>
+        <source>MNU_CHANGINGROTATIONPOINT_VIEW</source>
+        <translation>Changer le point de rotation</translation>
+    </message>
+    <message>
+        <source>DSC_FITRECT</source>
+        <translation>Redimensionner la scène pour ne montrer que sa partie choisie par l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>MNU_FITRECT</source>
+        <translation>Montrer l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>DSC_BOTTOM_VIEW</source>
+        <translation>Vue de dessous</translation>
+    </message>
+    <message>
+        <source>DSC_DUMP_VIEW</source>
+        <translation>Sauvegarder la scène en cours au fichier image</translation>
+    </message>
+    <message>
+        <source>DSC_ZOOM_VIEW</source>
+        <translation>Zoom la vue</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATIONPOINT000_VIEW</source>
+        <translation>Point de Rotation : (0,0,0)</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATIONPOINTSELECTED_VIEW</source>
+        <translation>Point de Rotation : le point choisi par l&apos;utilisateur</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le point de vue</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_CANT_SAVE_FILE</source>
+        <translation>Il est impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>DSC_PRESETS_VIEW</source>
+        <translation>Restaurer l&apos;état mémorisé de la scène courante</translation>
+    </message>
+    <message>
+        <source>MNU_PRESETS_VIEW</source>
+        <translation>Restaurer la vue</translation>
+    </message>
+    <message>
+        <source>MNU_RIGHT_VIEW</source>
+        <translation>Droit</translation>
+    </message>
+    <message>
+        <source>INF_APP_PRESETS_VIEW</source>
+        <translation>Restaurer la scène</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de visualisation</translation>
+    </message>
+    <message>
+        <source>DSC_BACK_VIEW</source>
+        <translation>Vue d&apos;arrière</translation>
+    </message>
+    <message>
+        <source>DSC_SCALING</source>
+        <translation>Changer l&apos;échelle des axes de coordonnées</translation>
+    </message>
+    <message>
+        <source>MNU_SCALING</source>
+        <translation>Changer l&apos;échelle</translation>
+    </message>
+    <message>
+        <source>DSC_AMBIENT</source>
+        <translation>Ne montrer que la lumière d&apos;ambiance</translation>
+    </message>
+    <message>
+        <source>MNU_AMBIENT</source>
+        <translation>Ne montrer que la lumière d&apos;ambiance</translation>
+    </message>
+    <message>
+        <source>DSC_STYLE_SWITCH</source>
+        <translation>Changer le style d&apos;intéraction</translation>
+    </message>
+    <message>
+        <source>MNU_STYLE_SWITCH</source>
+        <translation>Changer le style d&apos;intéraction</translation>
+    </message>
+    <message>
+        <source>OCC_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg)</translation>
+    </message>
+</context>
+<context>
+    <name>OCCViewer_CreateRestoreViewDlg</name>
+    <message>
+        <source>CAPTION</source>
+        <translation>Restaurer la vue</translation>
+    </message>
+</context>
+<context>
+    <name>OCCViewer_SetRotationPointDlg</name>
+    <message>
+        <source>LBL_X</source>
+        <translation>X:</translation>
+    </message>
+    <message>
+        <source>LBL_Y</source>
+        <translation>Y:</translation>
+    </message>
+    <message>
+        <source>LBL_Z</source>
+        <translation>Z:</translation>
+    </message>
+    <message>
+        <source>USE_BBCENTER</source>
+        <translation>Utiliser le Centre du Cadre d&apos;Objet</translation>
+    </message>
+    <message>
+        <source>LBL_TOORIGIN</source>
+        <translation>Implanter á l&apos;Origine</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Indiquer le point de rotation</translation>
+    </message>
+    <message>
+        <source>LBL_SELECTPOINT</source>
+        <translation>Choisir le Point dans la Vue</translation>
+    </message>
+</context>
+<context>
+    <name>OCCViewer_ViewManager</name>
+    <message>
+        <source>OCC_VIEW_TITLE</source>
+        <translation>Scène OCC :%M - visualisateur:%V</translation>
+    </message>
+</context>
+<context>
+    <name>OCCViewer_Viewer</name>
+    <message>
+        <source>MEN_DUMP_VIEW</source>
+        <translation>Sauvegarder la Vue</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW_TOOLBAR</source>
+        <translation>Montrer la Barre d&apos;Outils</translation>
+    </message>
+    <message>
+        <source>MEN_CHANGE_BACKGROUD</source>
+        <translation>Changer l&apos;Arrière Plan</translation>
+    </message>
+</context>
+<context>
+    <name>OCCViewer_AxialScaleDlg</name>
+    <message>
+        <source>DLG_SCALING</source>
+        <translation>Changer l&apos;échelle des axes</translation>
+    </message>
+    <message>
+        <source>LBL_X</source>
+        <translation>X:</translation>
+    </message>
+    <message>
+        <source>LBL_Y</source>
+        <translation>Y:</translation>
+    </message>
+    <message>
+        <source>LBL_Z</source>
+        <translation>Z:</translation>
+    </message>
+</context>
+</TS>
index aa46ccd3785c7fbef76ff6a039f95f87397a7215..0e0f32a6efb4a76000ee47019d3661fa88499be7 100755 (executable)
@@ -45,7 +45,7 @@ MOC_FILES =                   \
 
 nodist_libObjBrowser_la_SOURCES = $(MOC_FILES)
 
-nodist_salomeres_DATA = OB_msg_en.qm
+nodist_salomeres_DATA = OB_msg_en.qm OB_msg_fr.qm
 
 libObjBrowser_la_CPPFLAGS = $(QT_INCLUDES) -I$(srcdir)/../Qtx
 libObjBrowser_la_LDFLAGS  = $(QT_MT_LIBS)
index cddaea49a99feb6a9897d9990b79433e4bc84dcf..ae666a88dcf1b3da7c7de0f7d75109ba5b59f17c 100644 (file)
@@ -1,26 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>OB_Browser</name>
     <message>
diff --git a/src/ObjBrowser/resources/OB_msg_fr.ts b/src/ObjBrowser/resources/OB_msg_fr.ts
new file mode 100755 (executable)
index 0000000..5717c12
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>OB_Browser</name>
+    <message>
+        <source>MEN_EXPAND_ALL</source>
+        <translation>Afficher Tous</translation>
+    </message>
+    <message>
+        <source>MEN_COLLAPSE_ALL</source>
+        <translation>Réduire Tous</translation>
+    </message>
+    <message>
+        <source>MEN_FIND</source>
+        <translation>Chercher</translation>
+    </message>
+</context>
+<context>
+    <name>OB_FindDlg</name>
+    <message>
+        <source>FIND</source>
+        <translation>Chercher</translation>
+    </message>
+    <message>
+        <source>CLOSE</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <source>CASE_SENSITIVE</source>
+        <translation>Sensible à la casse</translation>
+    </message>
+    <message>
+        <source>IS_REG_EXP</source>
+        <translation>Expression Régulaire</translation>
+    </message>
+</context>
+</TS>
index dac45b6e104d4b1f86e39fda0b2a8d95fd038e51..8cb2b6e21aca9781f083bbb503fe7c198cb21f1e 100755 (executable)
@@ -87,7 +87,8 @@ dist_salomeres_DATA =                         \
 
 nodist_salomeres_DATA =                \
        Plot2d_images.qm        \
-       Plot2d_msg_en.qm 
+       Plot2d_msg_en.qm        \
+       Plot2d_msg_fr.qm 
 
 libPlot2d_la_CPPFLAGS = $(QT_INCLUDES) $(PYTHON_INCLUDES) $(QWT_INCLUDES) \
        -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
index b2fc5e26e5f661ba80b16dd3adaf8549435c0bba..7dcafc445ed218ce8cddec7f469b1b8c62366c43 100755 (executable)
@@ -363,6 +363,10 @@ bool Plot2d_ViewFrame::eventFilter( QObject* watched, QEvent* e )
         }
         break;
       }
+    case QEvent::ContextMenu:
+      // Fix from SLN
+      // Do nothing because context menu is called from MouseRelease
+      return true;
     }
   }
   return QWidget::eventFilter( watched, e );
index 2e912da1ae822ebb913141deadc952b812cdbf28..a36346e0b2e6a31f2c47fa6efabd1669132a618d 100755 (executable)
@@ -121,7 +121,9 @@ void Plot2d_Viewer::update()
 void Plot2d_Viewer::clearPrs()
 {
   SUIT_ViewManager* aMgr = getViewManager();
-  QVector<SUIT_ViewWindow*> aViews = aMgr->getViews();
+  QVector<SUIT_ViewWindow*> aViews;
+  if ( aMgr )
+    aViews = aMgr->getViews();
   unsigned int aSize = aViews.size();
   for (uint i = 0; i < aSize; i++) {
     Plot2d_ViewWindow* aView = (Plot2d_ViewWindow*)aViews[i];
index 3a084267ff79a4f1de0439c6ddfb4d0721b438c0..08b09ca768a1af8a42da81936854aa0fc2eaaed3 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/Plot2d/resources/Plot2d_msg_fr.ts b/src/Plot2d/resources/Plot2d_msg_fr.ts
new file mode 100755 (executable)
index 0000000..01ee4c8
--- /dev/null
@@ -0,0 +1,511 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>PLOT2D_CURVE_TYPE_LBL</source>
+        <translation>Type de Courbe:</translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SET_AS_DEFAULT_CHECK</source>
+        <translation>Enregistrer comme les paramètres de defaut</translation>
+    </message>
+    <message>
+        <source>TLT_SETUP_CURVE</source>
+        <translation>Initialiser une Courbe</translation>
+    </message>
+    <message>
+        <source>MNU_DUMP_VIEW</source>
+        <translation>Clicher la vue...</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SCALE_MODE_HOR</source>
+        <translation>Axe Horizontale:</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SCALE_MODE_VER</source>
+        <translation>Axe Verticale:</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Panoramique</translation>
+    </message>
+    <message>
+        <source>MNU_CLONE_VIEW</source>
+        <translation>Cloner la Vue</translation>
+    </message>
+    <message>
+        <source>POSTSCRIPT_FILES</source>
+        <translation>Fichiers PostScript (*.ps)</translation>
+    </message>
+    <message>
+        <source>ENCAPSULATED_POSTSCRIPT_FILES</source>
+        <translation>Fichiers PostScript Encapsulés (*.eps)</translation>
+    </message>
+    <message>
+        <source>DSC_GLOBALPAN_VIEW</source>
+        <translation>Sélection d&apos;un nouveau centre de la vue</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_MODE_LINEAR_VER</source>
+        <translation>Changer la vue au mode d&apos;échelle linéaire au long de l&apos;axe verticale</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_MODE_LINEAR_HOR</source>
+        <translation>Changer la vue au mode d&apos;échelle linéaire au long de l&apos;axe horizontale</translation>
+    </message>
+    <message>
+        <source>CURVE_LINE_WIDTH_LAB</source>
+        <translation>Largeur de la Ligne:</translation>
+    </message>
+    <message>
+        <source>CURVE_TYPE_POPUP</source>
+        <translation>Type de Courbe</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_MODE_LINEAR_VER</source>
+        <translation>Axe verticale: linéaire</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_MODE_LINEAR_HOR</source>
+        <translation>Axe horizontale: linéaire</translation>
+    </message>
+    <message>
+        <source>FIT_DATA_TLT</source>
+        <translation>Montrer le diapason des données</translation>
+    </message>
+    <message>
+        <source>MNU_ZOOM_VIEW</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>PLOT2D_GRID_TLT</source>
+        <translation>Maillage / Repères des Axes</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>DASHDOT_LINE_LBL</source>
+        <translation>TiretPoint</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_CURVES_SPLINES</source>
+        <translation>Changer le mode de vue aux splines</translation>
+    </message>
+    <message>
+        <source>INF_AXES_X</source>
+        <translation>Axe X</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SCALE_TLT</source>
+        <translation>Mode d&apos;échelle</translation>
+    </message>
+    <message>
+        <source>DSC_FITALL</source>
+        <translation>Montrer tous les objets</translation>
+    </message>
+    <message>
+        <source>MNU_FITALL</source>
+        <translation>Montrer tous</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_MODE_LOGARITHMIC_HOR</source>
+        <translation>Axe horizontale: logarithmique</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_MODE_LOGARITHMIC_VER</source>
+        <translation>Axe Verticale: logarithmique</translation>
+    </message>
+    <message>
+        <source>MNU_GLOBALPAN_VIEW</source>
+        <translation>Panoramique Globale</translation>
+    </message>
+    <message>
+        <source>INF_APP_DUMP_VIEW</source>
+        <translation>Clicher la vue</translation>
+    </message>
+    <message>
+        <source>PLOT2D_LEGEND_POSITION_BOTTOM</source>
+        <translation>Dessous</translation>
+    </message>
+    <message>
+        <source>INF_COORDINATES</source>
+        <translation>Coordonnées: X : %1, Y : %2</translation>
+    </message>
+    <message>
+        <source>DSC_CLONE_VIEW</source>
+        <translation>Ouvrir un nouveau visualisateur OCC pour la scène actuelle</translation>
+    </message>
+    <message>
+        <source>DASH_LINE_LBL</source>
+        <translation>Tiret</translation>
+    </message>
+    <message>
+        <source>DTRIANGLE_MARKER_LBL</source>
+        <translation>Triangle orienté en bas</translation>
+    </message>
+    <message>
+        <source>UTRIANGLE_MARKER_LBL</source>
+        <translation>Triangle orienté en haut</translation>
+    </message>
+    <message>
+        <source>LTRIANGLE_MARKER_LBL</source>
+        <translation>Triangle orienté à Gauche </translation>
+    </message>
+    <message>
+        <source>RTRIANGLE_MARKER_LBL</source>
+        <translation>Triangle orienté à droit</translation>
+    </message>
+    <message>
+        <source>RECTANGLE_MARKER_LBL</source>
+        <translation>Rectangle</translation>
+    </message>
+    <message>
+        <source>TLT_SETUP_PLOT2D_VIEW</source>
+        <translation>Plot 2d Paramètres de Visualisation</translation>
+    </message>
+    <message>
+        <source>CURVE_LINE_TYPE_LAB</source>
+        <translation>Type de la Ligne:</translation>
+    </message>
+    <message>
+        <source>CROSS_MARKER_LBL</source>
+        <translation>Croix</translation>
+    </message>
+    <message>
+        <source>XCROSS_MARKER_LBL</source>
+        <translation>Croix Diagonale</translation>
+    </message>
+    <message>
+        <source>PLOT2D_ENABLE_VER_TITLE</source>
+        <translation>Titre de l&apos;axe Verticale</translation>
+    </message>
+    <message>
+        <source>PLOT2D_ENABLE_HOR_TITLE</source>
+        <translation>Titre d&apos;Axe Horizontale</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_SETTINGS</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>PLOT2D_CURVE_TYPE_LINES</source>
+        <translation>Lignes</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_CURVES_SPLINES</source>
+        <translation>Dessiner les Splines</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_MODE_LOGARITHMIC_HOR</source>
+        <translation>Changer la vue au mode d&apos;échelle logarithmique au long de l&apos;axe horizontale</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_MODE_LOGARITHMIC_VER</source>
+        <translation>Changer la vue au mode d&apos;échelle logarithmique au long de l&apos;axe verticale</translation>
+    </message>
+    <message>
+        <source>PLOT2D_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg)</translation>
+    </message>
+    <message>
+        <source>PLOT2D_MAX_INTERVALS</source>
+        <translation>Intervalles Maximaux</translation>
+    </message>
+    <message>
+        <source>INF_AXES_Y_LEFT</source>
+        <translation>Axe Y Gauche</translation>
+    </message>
+    <message>
+        <source>CURVE_COLOR_LAB</source>
+        <translation>Couleur:</translation>
+    </message>
+    <message>
+        <source>CURVE_PREVIEW_LAB</source>
+        <translation>Prévisualiser</translation>
+    </message>
+    <message>
+        <source>DIAMOND_MARKER_LBL</source>
+        <translation>Diamant</translation>
+    </message>
+    <message>
+        <source>PLOT2D_LEGEND_POSITION_TOP</source>
+        <translation>Dessus</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_CHANGE_BACKGROUND</source>
+        <translation>Changer l&apos;arrière-plan</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_CHANGE_BACKGROUND</source>
+        <translation>Changer l&apos;Arrère-Plan...</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_CHANGE_BACKGROUND</source>
+        <translation>Changer la couleur d&apos;arrière plan</translation>
+    </message>
+    <message>
+        <source>SOLID_LINE_LBL</source>
+        <translation>Solide</translation>
+    </message>
+    <message>
+        <source>PLOT2D_GRID_ENABLE_VER_MAJOR</source>
+        <translation>La Verticale majeure</translation>
+    </message>
+    <message>
+        <source>PLOT2D_GRID_ENABLE_HOR_MAJOR</source>
+        <translation>La horizontale majeure</translation>
+    </message>
+    <message>
+        <source>PLOT2D_GRID_ENABLE_VER_MINOR</source>
+        <translation>La Verticale mineure</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_CURVES_POINTS</source>
+        <translation>Dessiner points</translation>
+    </message>
+    <message>
+        <source>PLOT2D_GRID_ENABLE_HOR_MINOR</source>
+        <translation>La horizontale mineure</translation>
+    </message>
+    <message>
+        <source>PLOT2D_BACKGROUND_COLOR_LBL</source>
+        <translation>Couleur d&apos;arrière-plan:</translation>
+    </message>
+    <message>
+        <source>WRN_XLOG_NOT_ALLOWED</source>
+        <translation>On a détecté des points avec les valeurs non-positives sur l&apos;abscisse.
+L&apos;échelle logarithmique de l&apos;abscisse n&apos;est pas permise.</translation>
+    </message>
+    <message>
+        <source>WRN_YLOG_NOT_ALLOWED</source>
+        <translation>On a détecté des points avec les valeurs non-positives sur l&apos;ordonnée.
+L&apos;échelle logarithmique de l&apos;ordonnée n&apos;est pas permise.</translation>
+    </message>
+    <message>
+        <source>DSC_FITRECT</source>
+        <translation>Montrer la zone choisie par l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>PLOT2D_LEGEND_POSITION_LEFT</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>MNU_FITRECT</source>
+        <translation>Montrer la Zone</translation>
+    </message>
+    <message>
+        <source>DOT_LINE_LBL</source>
+        <translation>Point</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_CURVES_POINTS</source>
+        <translation>Dessiner les Points</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_CURVES_POINTS</source>
+        <translation>Changer le mode de vue aux points</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SCALE_MODE_LOGARITHMIC</source>
+        <translation>Logarithmique</translation>
+    </message>
+    <message>
+        <source>PLOT2D_LEGEND_POSITION_RIGHT</source>
+        <translation>Droit</translation>
+    </message>
+    <message>
+        <source>DSC_DUMP_VIEW</source>
+        <translation>Sauvegarder la vue actuelle au fichier image</translation>
+    </message>
+    <message>
+        <source>WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>PLOT2D_ENABLE_LEGEND</source>
+        <translation>Montrer la légende</translation>
+    </message>
+    <message>
+        <source>DSC_ZOOM_VIEW</source>
+        <translation>Zoomer la vue</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_SETTINGS</source>
+        <translation>Indiquer les paramètres de visualisation</translation>
+    </message>
+    <message>
+        <source>INF_COORDINATES_SOME_Y</source>
+        <translation>Coordonnées: X : %1, Y : %2 ( %3 )</translation>
+    </message>
+    <message>
+        <source>SCALING_POPUP</source>
+        <translation>Echelle</translation>
+    </message>
+    <message>
+        <source>PLOT2D_SCALE_MODE_LINEAR</source>
+        <translation>Linéaire</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_FITDATA</source>
+        <translation>Montrer le Diapason</translation>
+    </message>
+    <message>
+        <source>PLOT2D_CURVE_TYPE_POINTS</source>
+        <translation>Points</translation>
+    </message>
+    <message>
+        <source>PLOT2D_CURVE_TYPE_SPLINE</source>
+        <translation>Spline</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_FITDATA</source>
+        <translation>Montrer &amp;Ranger</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_MODE_LOGARITHMIC_HOR</source>
+        <translation>Axe Horizontale: Logarithmique</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_MODE_LOGARITHMIC_VER</source>
+        <translation>Axe Verticale: Logarithmique</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_FITDATA</source>
+        <translation>Monter le diapason de données indiqué</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_MODE_LINEAR_VER</source>
+        <translation>Axe Verticale: Linéaire</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_MODE_LINEAR_HOR</source>
+        <translation>Axe Horizontale: Linéaire</translation>
+    </message>
+    <message>
+        <source>NONE_MARKER_LBL</source>
+        <translation>Zéro</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_CANT_SAVE_FILE</source>
+        <translation>Impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_SHOW_LEGEND</source>
+        <translation>Montrer &amp;Légende</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_SHOW_LEGEND</source>
+        <translation>Activer/désactiver la légende</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_SHOW_LEGEND</source>
+        <translation>Montrer la Légende</translation>
+    </message>
+    <message>
+        <source>INF_AXES_Y_RIGHT</source>
+        <translation>Axe Y Droite</translation>
+    </message>
+    <message>
+        <source>DAHSDOTDOT_LINE_LBL</source>
+        <translation>TiretPointPoint</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_CURVES_SPLINES</source>
+        <translation>Dessiner splines</translation>
+    </message>
+    <message>
+        <source>CURVE_MARKER_TYPE_LAB</source>
+        <translation>Type de Repère:</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_SETTINGS</source>
+        <translation>&amp;Paramètres</translation>
+    </message>
+    <message>
+        <source>CIRCLE_MARKER_LBL</source>
+        <translation>Circle</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de visualisation </translation>
+    </message>
+    <message>
+        <source>NONE_LINE_LBL</source>
+        <translation>Zéro</translation>
+    </message>
+    <message>
+        <source>PLOT2D_MARKER_SIZE_LBL</source>
+        <translation>Repère de Taille:</translation>
+    </message>
+    <message>
+        <source>PLOT2D_ENABLE_MAIN_TITLE</source>
+        <translation>Titre principal</translation>
+    </message>
+    <message>
+        <source>TOT_PLOT2D_CURVES_LINES</source>
+        <translation>Dessiner Lignes</translation>
+    </message>
+    <message>
+        <source>PRP_PLOT2D_CURVES_LINES</source>
+        <translation>Changer le mode de vue aux lignes</translation>
+    </message>
+    <message>
+        <source>MEN_PLOT2D_CURVES_LINES</source>
+        <translation>Dessiner les Lignes</translation>
+    </message>
+</context>
+<context>
+    <name>Plot2d_FitDataDlg</name>
+    <message>
+        <source>FIT_HORIZONTAL</source>
+        <translation>Montrer horizontale</translation>
+    </message>
+    <message>
+        <source>MIN_VALUE_LAB</source>
+        <translation>Min:</translation>
+    </message>
+    <message>
+        <source>VERTICAL_AXIS</source>
+        <translation>Axe Verticale</translation>
+    </message>
+    <message>
+        <source>MAX_VALUE_LAB</source>
+        <translation>Max:</translation>
+    </message>
+    <message>
+        <source>HORIZONTAL_AXIS</source>
+        <translation>Axe Horizontale</translation>
+    </message>
+    <message>
+        <source>VERTICAL_LEFT_AXIS</source>
+        <translation>Axe Gauche Verticale</translation>
+    </message>
+    <message>
+        <source>FIT_ALL</source>
+        <translation>Montrer tous</translation>
+    </message>
+    <message>
+        <source>VERTICAL_RIGHT_AXIS</source>
+        <translation>Axe droite verticale</translation>
+    </message>
+    <message>
+        <source>FIT_VERTICAL</source>
+        <translation>Montrer verticale</translation>
+    </message>
+</context>
+<context>
+    <name>Plot2d_ViewManager</name>
+    <message>
+        <source>PLOT2D_VIEW_TITLE</source>
+        <translation>Plot2d scène:%M - visualisateur:%V</translation>
+    </message>
+</context>
+</TS>
index fe0b4a1f6dd744ef04daac271c77d85364cb44f2..e28a2b67fcca8d4e5ec251a5dbee283505a0cd85 100755 (executable)
@@ -44,7 +44,8 @@ MOC_FILES =                           \
 nodist_libPyConsole_la_SOURCES = $(MOC_FILES)
 
 nodist_salomeres_DATA = \
-       PyConsole_msg_en.qm
+       PyConsole_msg_en.qm \
+       PyConsole_msg_fr.qm
 
 libPyConsole_la_CPPFLAGS = $(PYTHON_INCLUDES) $(QT_INCLUDES) \
        -I$(srcdir)/../PyInterp -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
index 986b476b1a8ccdcc16e1661a604ef69855fa9730..85393a2bf43151b66038132a164f075b373c5955 100644 (file)
@@ -1,28 +1,6 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!DOCTYPE TS><TS version="1.1">
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>PyConsole_Console</name>
     <message>
@@ -50,7 +28,6 @@
         <translation>D&amp;ump commands</translation>
     </message>
 </context>
-
 <context>
     <name>PyConsole_Editor</name>
     <message>
@@ -58,8 +35,8 @@
         <translation>Dump commands</translation>
     </message>
     <message>
-       <source>PYTHON_FILES_FILTER</source>
-       <translation>PYTHON Files (*.py)</translation>
+        <source>PYTHON_FILES_FILTER</source>
+        <translation>PYTHON Files (*.py)</translation>
     </message>
 </context>
 </TS>
diff --git a/src/PyConsole/resources/PyConsole_msg_fr.ts b/src/PyConsole/resources/PyConsole_msg_fr.ts
new file mode 100755 (executable)
index 0000000..c582d38
--- /dev/null
@@ -0,0 +1,42 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>PyConsole_Console</name>
+    <message>
+        <location filename="../PyConsole_Console.cxx" line="216"/>
+        <source>EDIT_COPY_CMD</source>
+        <translation>&amp;Copier</translation>
+    </message>
+    <message>
+        <location filename="../PyConsole_Console.cxx" line="221"/>
+        <source>EDIT_PASTE_CMD</source>
+        <translation>C&amp;oller</translation>
+    </message>
+    <message>
+        <location filename="../PyConsole_Console.cxx" line="226"/>
+        <source>EDIT_CLEAR_CMD</source>
+        <translation>&amp;Effacer</translation>
+    </message>
+    <message>
+        <location filename="../PyConsole_Console.cxx" line="231"/>
+        <source>EDIT_SELECTALL_CMD</source>
+        <translation>Choisir &amp;Tous</translation>
+    </message>
+    <message>
+        <source>EDIT_DUMPCOMMANDS_CMD</source>
+        <translation>C&amp;licher les commandes</translation>
+    </message>
+</context>
+<context>
+    <name>PyConsole_Editor</name>
+    <message>
+        <source>TOT_DUMP_PYCOMMANDS</source>
+        <translation>C&amp;licher les commandes</translation>
+    </message>
+    <message>
+        <source>PYTHON_FILES_FILTER</source>
+        <translation>Fichiers PYTHON (*.py)</translation>
+    </message>
+</context>
+</TS>
index cd641de0d98336bfe03acef711d27a5c4b828507..ff1bdea07959794e0f7f87658e63bb91b1083f54 100755 (executable)
@@ -82,7 +82,7 @@ MOC_FILES =                   \
 
 nodist_libQDS_la_SOURCES = $(MOC_FILES)
 
-nodist_salomeres_DATA = QDS_msg_en.qm
+nodist_salomeres_DATA = QDS_msg_en.qm QDS_msg_fr.qm
 
 libQDS_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) \
                    -I$(srcdir)/../Qtx -I$(srcdir)/../DDS
index 0caa8c1f22833fcc0c184f28699358aec9c607a3..2388719f03add9accdee3ecd15e3db9d2a1ceb32 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>QDS_Datum</name>
     <message>
@@ -50,7 +29,7 @@
     </message>
     <message>
         <source>DATA_SHOULD_BE_VALUE</source>
-        <translation>Should be%1 value</translation>
+        <translation>Should be %1 value</translation>
     </message>
     <message>
         <source>DATA_INTEGER</source>
diff --git a/src/QDS/resources/QDS_msg_fr.ts b/src/QDS/resources/QDS_msg_fr.ts
new file mode 100755 (executable)
index 0000000..c31b476
--- /dev/null
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>QDS_Datum</name>
+    <message>
+        <source>DATA_ERR_TITLE</source>
+        <translation>Valeur incorrecte du paramètre</translation>
+    </message>
+    <message>
+        <source>DATA_STRING</source>
+        <translation> ligne non-vide</translation>
+    </message>
+    <message>
+        <source>DATA_NON_EMPTY</source>
+        <translation> non-vide</translation>
+    </message>
+    <message>
+        <source>DATA_MIN_LIMIT</source>
+        <translation> est plus de %1</translation>
+    </message>
+    <message>
+        <source>DATA_FLOAT</source>
+        <translation> réelle</translation>
+    </message>
+    <message>
+        <source>DATA_RANGE</source>
+        <translation> au diapason [%1, %2]</translation>
+    </message>
+    <message>
+        <source>DATA_SHOULD_BE_VALUE</source>
+        <translation>Une valeur %1 est nécessaire</translation>
+    </message>
+    <message>
+        <source>DATA_INTEGER</source>
+        <translation> entière</translation>
+    </message>
+    <message>
+        <source>DATA_INCORRECT_VALUE</source>
+        <translation>La Valeur du paramètre &quot;%1&quot; n&apos;est pas correcte.</translation>
+    </message>
+    <message>
+        <source>DATA_MAX_LIMIT</source>
+        <translation> est moins de %1</translation>
+    </message>
+    <message>
+        <source>DATA_INPUT_VALUE</source>
+        <translation>Indiquez une valeur correcte.</translation>
+    </message>
+</context>
+</TS>
index 771008a0356869078aea9a0c761211cbab6ab988..610935c5517772b87bc001fd3eb5b4dd5e7bd3bf 100755 (executable)
@@ -67,7 +67,7 @@ salomeinclude_HEADERS =               \
        QtxResourceMgr.h        \
        QtxRubberBand.h         \
        QtxSearchTool.h         \
-       QtxShortcutEdit.h       \       
+       QtxShortcutEdit.h       \
        QtxSplash.h             \
        QtxToolBar.h            \
        QtxToolTip.h            \
@@ -192,3 +192,6 @@ nodist_libqtx_la_SOURCES = $(MOC_FILES)
 
 libqtx_la_CPPFLAGS = $(QT_INCLUDES)
 libqtx_la_LDFLAGS  = $(QT_MT_LIBS)
+
+nodist_salomeres_DATA =                \
+       Qtx_msg_fr.qm
index 0bc9508aa50f0978238c1ca07dbbfcb1ebe16ead..b706f850a5cfb02372bd8a2d93ea5c3ea89ab016 100755 (executable)
@@ -67,14 +67,19 @@ private:
 
   Creates an action owned by \a parent. 
   Parameter \a toggle can be used to make the action checkable.
+  Parameter \a shortcutAction can be used to assign the shortcut from
+  preferences. This parameter value corresponds to shortcut action identifier
+  in shortcut preferences.
 
   \param parent parent object
   \param toggle if \c true the action will be a toggle action
+  \param shortcutAction shortcut action identifier
 */
-QtxAction::QtxAction( QObject* parent, bool toggle )
+QtxAction::QtxAction( QObject* parent, bool toggle, const QString& shortcutAction )
 : QWidgetAction( parent )
 {
   setCheckable( toggle );
+  setShortcutActionName(shortcutAction);
 
   QApplication::instance()->installEventFilter( this );
 }
@@ -85,6 +90,9 @@ QtxAction::QtxAction( QObject* parent, bool toggle )
   Creates an action owned by \a parent. Parameters \a text,
   \a icon, \a menuText and \a accel specify the action's attributes.
   Parameter \a toggle can be used to make the action checkable.
+  Parameter \a shortcutAction can be used to assign the shortcut from
+  preferences. This parameter value corresponds to shortcut action identifier
+  in shortcut preferences.
 
   \param text tooltip text
   \param icon iconset
@@ -92,9 +100,10 @@ QtxAction::QtxAction( QObject* parent, bool toggle )
   \param accel shortcut key sequence
   \param parent parent object
   \param toggle if \c true the action will be a toggle action
+  \param shortcutAction shortcut action identifier
 */
-QtxAction::QtxAction( const QString& text, const QIcon& icon,
-                      const QString& menuText, int accel, QObject* parent, bool toggle )
+QtxAction::QtxAction( const QString& text, const QIcon& icon, const QString& menuText, 
+                     int accel, QObject* parent, bool toggle, const QString& shortcutAction )
 : QWidgetAction( parent )
 {
   setIcon( icon );
@@ -102,6 +111,7 @@ QtxAction::QtxAction( const QString& text, const QIcon& icon,
   setToolTip( text );
   setShortcut( accel );
   setCheckable( toggle );
+  setShortcutActionName(shortcutAction);
 
   QApplication::instance()->installEventFilter( this );
 }
@@ -112,22 +122,27 @@ QtxAction::QtxAction( const QString& text, const QIcon& icon,
   Creates an action owned by \a parent. Parameters \a text,
   \a menuText and \a accel specify the action's attributes.
   Parameter \a toggle can be used to make the action checkable.
+  Parameter \a shortcutAction can be used to assign the shortcut from
+  preferences. This parameter value corresponds to shortcut action identifier
+  in shortcut preferences.
 
   \param text tooltip text
   \param menuText menu text
   \param accel shortcut key sequence
   \param parent parent object
   \param toggle if \c true the action is a toggle action
+  \param shortcutAction shortcut action identifier
 */
 QtxAction::QtxAction( const QString& text, const QString& menuText,
-                      int accel, QObject* parent, bool toggle )
+                      int accel, QObject* parent, bool toggle, const QString& shortcutAction )
 : QWidgetAction( parent )
 {
   setText( menuText );
   setToolTip( text );
   setShortcut( accel );
   setCheckable( toggle );
-
+  setShortcutActionName(shortcutAction);
+  
   QApplication::instance()->installEventFilter( this );
 }
 
@@ -208,3 +223,27 @@ void QtxAction::customEvent( QEvent* e )
   else
     removedFrom( ae->widget() );
 }
+
+/*!
+  \brief Return shortcut action name for the action.
+  
+  \return shortcut action name
+  \sa setShortcutActionName()
+*/
+QString QtxAction::shortcutActionName() const
+{
+  return myShortcutActionName;
+}
+
+/*!
+  \brief Set shortcut action name to the action.
+
+  Shortcut action name is used for shortcuts customization.
+
+  \param shortcutAction shortcut action name
+  \sa shortcutActionName()
+*/
+void QtxAction::setShortcutActionName( const QString& shortcutAction )
+{
+  myShortcutActionName = shortcutAction;
+}
index c7a87293fcb127d17b765fcaedd24f93471b0f96..4536fa5ba6b943e63f36c22fbd3ce425b1e9b15c 100755 (executable)
@@ -43,18 +43,24 @@ class QTX_EXPORT QtxAction : public QWidgetAction
   class ActionNotify;
 
 public:
-  QtxAction( QObject* = 0, bool = false );
-  QtxAction( const QString&, const QString&, int, QObject*, bool = false );
-  QtxAction( const QString&, const QIcon&, const QString&, int, QObject*, bool = false );
+  QtxAction( QObject* = 0, bool = false, const QString& = QString() );
+  QtxAction( const QString&, const QString&, int, QObject*, bool = false, const QString& = QString() );
+  QtxAction( const QString&, const QIcon&, const QString&, int, QObject*, bool = false, const QString& = QString() );
   virtual ~QtxAction();
 
   virtual bool eventFilter( QObject*, QEvent* );
 
+  QString shortcutActionName() const;
+  void setShortcutActionName( const QString& );
+
 protected:
   virtual void addedTo( QWidget* );
   virtual void removedFrom( QWidget* );
 
   virtual void customEvent( QEvent* );
+
+private:
+  QString myShortcutActionName;
 };
 
 #ifdef WIN32
index af9a76673ec65f28a719ba871cd9c1ae4f3eb92b..173516daed45d7bc81da08a9504d3672ea4ec779 100644 (file)
@@ -54,7 +54,7 @@ QtxColorButton::QtxColorButton( QWidget* parent )
 : QToolButton( parent )
 {
   setCheckable( false );
-  setPopupMode( MenuButtonPopup );
+  setPopupMode( InstantPopup );
 
   QMenu* pm = new QMenu( this );
   QGridLayout* grid = new QGridLayout( pm );
index 28a9db0d8a63a64af2ef9eb97b4578a52a9eb066..a67e97a5ea9cf9914312c9491ebe42775b9902e7 100644 (file)
@@ -3071,7 +3071,7 @@ void QtxPagePrefSpinItem::setPrecision( const QVariant& prec )
   if ( QtxDoubleSpinBox* dsb = ::qobject_cast<QtxDoubleSpinBox*>( control() ) )
   {
     if ( prec.canConvert( QVariant::Int ) ) {
-      dsb->setDecimals( prec.toInt() );
+      dsb->setDecimals( qAbs( prec.toInt() ) );
       dsb->setPrecision( prec.toInt() );
     }
   }
@@ -4245,7 +4245,17 @@ QtxPagePrefShortcutTreeItem::QtxPagePrefShortcutTreeItem( const QString& title,
                                                           const QString& param ): QtxPageNamedPrefItem( title, parent, sect, "" )
 {
   mySection = sect;
+
   myShortcutTree = new QtxShortcutTree();
+
+  // Retrieve shortcuts common sections from resources
+  QtxResourceMgr* resMgr = resourceMgr();
+  if ( resMgr ){
+    QString generalSections = resourceMgr()->stringValue( "shortcuts_settings", "general_sections", QString() );
+    QStringList sectionsList = generalSections.split( ";", QString::SkipEmptyParts );
+    myShortcutTree->setGeneralSections( sectionsList );
+  }
   setControl( myShortcutTree );
 }
 
index 0afcf7799a4631ebd88274be85b6f7054040887d..8328d8a0a73ec5be9527f478b2243f9eb52c23f4 100644 (file)
@@ -31,6 +31,7 @@
 #include <QRegExp>
 #include <QTextStream>
 #include <QApplication>
+#include <QLibraryInfo>
 #ifndef QT_NO_DOM
 #include <QDomDocument>
 #include <QDomElement>
@@ -2436,6 +2437,14 @@ void QtxResourceMgr::loadLanguage( const QString& pref, const QString& l )
   else
     prefixList = parameters( resSection() );
 
+  if ( pref.isEmpty() && lang != "en" ) {
+    // load Qt resources
+    QString qt_translations = QLibraryInfo::location( QLibraryInfo::TranslationsPath );
+    QTranslator* trans = new QtxTranslator( 0 );
+    if ( trans->load( QString("qt_%1").arg( lang ), qt_translations ) )
+      QApplication::instance()->installTranslator( trans );
+  }
+
   for ( QStringList::ConstIterator iter = prefixList.begin(); iter != prefixList.end(); ++iter )
   {
     QString prefix = *iter;
index c5aa6eaa7c44c514e97c1622cb02c90f5c1b4c1d..efa555de1fc35e2a9da62145db14b707fd56b95f 100755 (executable)
@@ -26,6 +26,7 @@
 #include <QToolButton>
 #include <QLineEdit>
 #include <QTableWidgetItem>
+#include <QMessageBox>
 
 #include <QKeyEvent>
 #include <QKeySequence>
@@ -251,13 +252,14 @@ bool QtxShortcutTree::eventFilter(QObject* obj, QEvent* event)
       if ( keyEvent->key() == Qt::Key_Delete || keyEvent->key() == Qt::Key_Backspace )
         currentItem()->setText( 1, "" );
       if ( text != "" ) {
-        currentItem()->setText( 1, text );
+       if ( text.endsWith( "+" ) || checkUniqueness( currentItem(), text ) )
+          currentItem()->setText( 1, text );
       }
       return true;
     }
     if ( event->type() == QEvent::KeyRelease ) {
       if ( currentItem()->text( 1 ).endsWith( "+" ) )
-        currentItem()->setText( 1, myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] );
+       currentItem()->setText( 1, myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] );
       else myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] = currentItem()->text( 1 );
 
       return true;
@@ -277,7 +279,6 @@ void QtxShortcutTree::onCurrentItemChanged( QTreeWidgetItem* cur, QTreeWidgetIte
       prev->setText( 1, myPrevBindings[ prev->parent()->text( 0 ) ][ prev->text( 0 ) ] );
 }
 
-
 /*!
   \brief Set key bindings to the tree
   \param title the name of top-level item
@@ -286,8 +287,12 @@ void QtxShortcutTree::onCurrentItemChanged( QTreeWidgetItem* cur, QTreeWidgetIte
 void QtxShortcutTree::setBindings( const QString& title, const ShortcutMap& theShortcutMap )
 {
   QTreeWidgetItem* item= new QTreeWidgetItem();
+  QFont font = item->font(0);
+  font.setBold(true);
+  
   if ( findItems( title, Qt::MatchFixedString ).isEmpty()  ) {
     item->setText( 0, title );
+    item->setFont( 0, font );
     addTopLevelItem( item );
     item->setFlags( Qt::ItemIsEnabled );
   } else {
@@ -315,10 +320,12 @@ ShortcutMap* QtxShortcutTree::bindings( const QString& sec ) const
 {
   ShortcutMap* aMap = new ShortcutMap();
   QTreeWidgetItem* item = findItems( sec, Qt::MatchFixedString ).first();
-  QList< QTreeWidgetItem* > childLst = item->takeChildren();
+  int nbChildren = item->childCount();
 
-  for( int i = 0; i < childLst.size(); i++ ) 
-    aMap->insert( childLst.at(i)->text( 0 ), childLst.at(i)->text(1) );
+  for( int i = 0; i < nbChildren; i++ ) {
+    QTreeWidgetItem* child =  item->child(i);
+    aMap->insert( child->text( 0 ), child->text( 1 ) );
+  }
 
   return aMap;
 }
@@ -326,6 +333,72 @@ ShortcutMap* QtxShortcutTree::bindings( const QString& sec ) const
 void QtxShortcutTree::focusOutEvent ( QFocusEvent* event )
 {
   QWidget::focusOutEvent( event );
-  if ( currentItem()->isSelected() )
+  if ( currentItem() && currentItem()->isSelected() )
     currentItem()->setText( 1, myPrevBindings[ currentItem()->parent()->text( 0 ) ][ currentItem()->text( 0 ) ] );
 }
+
+/*!
+  \brief Set the list of shortcuts general sections.
+  
+  Key combinations in general sections should not intersect
+  with any other key combinations.
+
+  \param sectionsList list of common section names
+*/
+void QtxShortcutTree::setGeneralSections( const QStringList& sectionsList )
+{
+  myGeneralSections = sectionsList;
+}
+
+/*!
+  \brief Check uniqueness of the shortcut.
+  \param item current item of the shortcut tree
+  \param shortcut shortcut appointed for the current item
+  \return \c true if the given shortcut is allowed
+*/
+bool QtxShortcutTree::checkUniqueness( QTreeWidgetItem* item, const QString& shortcut )
+{
+  // List of sections to check shortcut intersections
+  QStringList sectionsList;
+
+  // Current section
+  QString currentSection = currentItem()->parent()->text( 0 );
+
+  // If the current section is general 
+  if ( myGeneralSections.contains(currentSection) ) {
+    sectionsList = sections();
+    int currentSectionIndex = sectionsList.indexOf(currentSection);
+    sectionsList.move( currentSectionIndex, 0);
+  } 
+  else {
+    sectionsList = myGeneralSections;
+    sectionsList.prepend(currentSection);
+  }
+
+  // Iterate on sections
+  QStringList::const_iterator it;
+  for( it = sectionsList.constBegin(); it != sectionsList.constEnd(); ++it ) {
+    QString section = *it;
+
+    // Iterate on actual section
+    QTreeWidgetItem* sectionRoot = findItems( section, Qt::MatchFixedString ).first();
+    int nbChildren = sectionRoot->childCount();
+
+    for( int i = 0; i < nbChildren; i++ ) {
+      QTreeWidgetItem* child =  sectionRoot->child(i);
+      
+      if ( (child != item) && (shortcut == child->text( 1 )) ) {
+       bool res = QMessageBox::warning( parentWidget(), tr("Warning"), 
+                                        tr("The \"%1\" shortcut has already used by the \"%2\" action.\n")
+                                        .arg(shortcut, section + ":" + child->text( 0 ) ) +
+                                        tr("Do you want to reassign it from that action to the current one?"),
+                                        QMessageBox::Yes, QMessageBox::No ) == QMessageBox::Yes;
+       if (res) 
+         child->setText( 1, "" );
+       return res;     
+      }
+    }
+  }
+
+  return true;
+}
index 78240228854d39a9382d70e079e32e34d89adf20..01791d761f96cb1ec028d3acc9b27c706112a3df 100755 (executable)
@@ -69,16 +69,19 @@ public:
   void                      setBindings( const QString&, const ShortcutMap& );
   ShortcutMap*              bindings( const QString& ) const;
   QStringList               sections() const;
+  void                      setGeneralSections( const QStringList& );
 
 protected:
   virtual bool              eventFilter( QObject*, QEvent* );
   virtual void              focusOutEvent( QFocusEvent* );
+  virtual bool              checkUniqueness( QTreeWidgetItem*, const QString& );
 
 private slots:
   void                      onCurrentItemChanged( QTreeWidgetItem*, QTreeWidgetItem* );
 
 private:
   QMap< QString, ShortcutMap > myPrevBindings;
+  QStringList myGeneralSections;
 };
 
 #endif // QTXSHORTCUTEDIT_H
index d86270d85482f2ea6767119933ef340c9893265c..4370928386a93263852cf3c7ac2a4cc2854075ae 100644 (file)
@@ -124,7 +124,7 @@ void QtxTreeView::Header::contextMenuEvent( QContextMenuEvent* e )
   QAction* sortAction = 0;
   if ( count() > 0 && myEnableSortMenu ) {
     menu.addSeparator();
-    sortAction = menu.addAction( tr( "Enable sorting" ) );
+    sortAction = menu.addAction( QtxTreeView::tr( "Enable sorting" ) );
     sortAction->setCheckable( true );
     sortAction->setChecked( isSortIndicatorShown() );
   }
diff --git a/src/Qtx/resources/Qtx_msg_fr.ts b/src/Qtx/resources/Qtx_msg_fr.ts
new file mode 100644 (file)
index 0000000..346d564
--- /dev/null
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>QtxTreeView</name>
+    <message>
+        <source>Enable sorting</source>
+        <translation>Activer le triage</translation>
+    </message>
+</context>
+<context>
+    <name>QtxWorkspaceAction</name>
+    <message>
+        <source>Arranges the windows as overlapping tiles</source>
+        <translation>Ranger les fenêtres en pavés superposés</translation>
+    </message>
+    <message>
+        <source>Cascade</source>
+        <translation>Cascade</translation>
+    </message>
+    <message>
+        <source>Arranges the windows as nonoverlapping tiles</source>
+        <translation>Ranger les fenêtres en pavés sans superposition</translation>
+    </message>
+    <message>
+        <source>Tile</source>
+        <translation>Pavé</translation>
+    </message>
+    <message>
+        <source>Arranges the windows as nonoverlapping horizontal tiles</source>
+        <translation>Ranger les fenêtres en pavés à l&apos;horisontale et sans superposition</translation>
+    </message>
+    <message>
+        <source>Tile horizontally</source>
+        <translation>Ranger à l&apos;horisontale</translation>
+    </message>
+    <message>
+        <source>Arranges the windows as nonoverlapping vertical tiles</source>
+        <translation>Ranger les fenêtres en pavés à la verticale et sans superposition</translation>
+    </message>
+    <message>
+        <source>Tile vertically</source>
+        <translation>Ranger au verticale</translation>
+    </message>
+</context>
+<context>
+    <name>QtxMainWindow</name>
+    <message>
+        <source>Menu bar</source>
+        <translation>Barre de menu</translation>
+    </message>
+    <message>
+        <source>Status bar</source>
+        <translation>Barre de statut</translation>
+    </message>
+</context>
+<context>
+    <name>QtxPathDialog</name>
+    <message>
+        <source>Open file</source>
+        <translation>Ouvrir le fichier</translation>
+    </message>
+    <message>
+        <source>Save file</source>
+        <translation>Sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>File name</source>
+        <translation>Nom du fichier</translation>
+    </message>
+    <message>
+        <source>File name not specified</source>
+        <translation>Le nom du fichier n&apos;est pas indiqué</translation>
+    </message>
+    <message>
+        <source>File \&quot;%1\&quot; does not exist</source>
+        <translation>Le fichier \&quot;%1\&quot; n&apos;existe pas</translation>
+    </message>
+    <message>
+        <source>File \&quot;%1\&quot; already exist. Do you want to overwrite it?</source>
+        <translation>Le fichier \&quot;%1\&quot; déjà existe. Voulez-vous le réécrire?</translation>
+    </message>
+    <message>
+        <source>Directory \&quot;%1\&quot; does not exist</source>
+        <translation>Le répertoire \&quot;%1\&quot; n&apos;existe pas</translation>
+    </message>
+    <message>
+        <source>Directory \&quot;%1\&quot; can&apos;t be created because file with the same name exist</source>
+        <translation>Il est impossible de créer le répertoire \&quot;%1\&quot; parce qu&apos;un fichier avec ce nom déjà existe</translation>
+    </message>
+    <message>
+        <source>Directory \&quot;%1\&quot; not empty. Do you want to remove all files in this directory?</source>
+        <translation>Le répertoire \&quot;%1\&quot; n&apos;est pas vide. Voulez-vous supprimer tous les fichier dans ce répertoire?</translation>
+    </message>
+    <message>
+        <source>File dialog</source>
+        <translation>Dialogue de fichier</translation>
+    </message>
+    <message>
+        <source>All files (*.*)</source>
+        <translation>Tous les fichiers (*.*)</translation>
+    </message>
+</context>
+<context>
+    <name>QtxFontEdit</name>
+    <message>
+        <source>B</source>
+        <translatorcomment>Bold</translatorcomment>
+        <translation>G</translation>
+    </message>
+    <message>
+        <source>I</source>
+        <translatorcomment>Italic</translatorcomment>
+        <translation>I</translation>
+    </message>
+    <message>
+        <source>U</source>
+        <translatorcomment>Underline</translatorcomment>
+        <translation>S</translation>
+    </message>
+    <message>
+        <source>S</source>
+        <translatorcomment>Strikethrough</translatorcomment>
+        <translation>R</translation>
+    </message>
+</context>
+<context>
+    <name>QtxPathListEdit</name>
+    <message>
+        <source>Warning</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>Path \&quot;%1\&quot; doesn&apos;t exist. Add it to list anyway?</source>
+        <translation>Le chemin \&quot;%1\&quot; n&apos;existe pas. Faut-il l&apos;ajouter dans la liste?</translation>
+    </message>
+    <message>
+        <source>Error</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>Location \&quot;%1\&quot; doesn&apos;t point to file</source>
+        <translation>La location \&quot;%1\&quot; ne contient pas d&apos;indication du fichier</translation>
+    </message>
+    <message>
+        <source>Location \&quot;%1\&quot; doesn&apos;t point to directory</source>
+        <translation>La location \&quot;%1\&quot; ne contient pas d&apos;indication du répertoire</translation>
+    </message>
+    <message>
+        <source>Path \&quot;%1\&quot; already exist in the list</source>
+        <translation>Le chemin \&quot;%1\&quot; déjà existe dans la liste</translation>
+    </message>
+</context>
+<context>
+    <name>QtxMRUAction</name>
+    <message>
+        <source>Most Recently Used</source>
+        <translation>Récemment utilisés</translation>
+    </message>
+    <message>
+        <source>Clear</source>
+        <translation>Effacer</translation>
+    </message>
+    <message>
+        <source>&lt;Empty&gt;</source>
+        <translation>&lt;Vide&gt;</translation>
+    </message>
+</context>
+<context>
+    <name>QtxDialog</name>
+    <message>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+    <message>
+        <source>&amp;Cancel</source>
+        <translation>&amp;Annuler</translation>
+    </message>
+    <message>
+        <source>C&amp;lose</source>
+        <translation>&amp;Fermer</translation>
+    </message>
+    <message>
+        <source>&amp;Help</source>
+        <translation>&amp;Aide</translation>
+    </message>
+    <message>
+        <source>&amp;Apply</source>
+        <translation>A&amp;ppliquer</translation>
+    </message>
+    <message>
+        <source>&amp;Yes</source>
+        <translation>&amp;Oui</translation>
+    </message>
+    <message>
+        <source>&amp;No</source>
+        <translation>&amp;Non</translation>
+    </message>
+</context>
+<context>
+    <name>QtxSearchTool</name>
+    <message>
+        <source>Case sensitive</source>
+        <translation>Sensible à la casse</translation>
+    </message>
+    <message>
+        <source>Regular expression</source>
+        <translation>Expression régulaire</translation>
+    </message>
+    <message>
+        <source>Wrap search</source>
+        <translation>Terminer la recherche</translation>
+    </message>
+</context>
+<context>
+    <name>QtxSplash</name>
+    <message>
+        <source>Error</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>&amp;OK</source>
+        <translation>&amp;OK</translation>
+    </message>
+</context>
+<context>
+    <name>QtxWorkstack</name>
+    <message>
+        <source>Split vertically</source>
+        <translation>Diviser verticalement</translation>
+    </message>
+    <message>
+        <source>Split horizontally</source>
+        <translation>Diviser horisontalement</translation>
+    </message>
+    <message>
+        <source>Close</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <source>Rename</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>Enter new name:</source>
+        <translation>Indiquer un nouveau nom</translation>
+    </message>
+</context>
+<context>
+    <name>QtxWorkstackAction</name>
+    <message>
+        <source>Split the active window on two vertical parts</source>
+        <translation>Diviser la fenêtre actuelle en deux parties verticales</translation>
+    </message>
+    <message>
+        <source>Split vertically</source>
+        <translation>Diviser à la verticale</translation>
+    </message>
+    <message>
+        <source>Split the active window on two horizontal parts</source>
+        <translation>Diviser la fenêtre actuelle en deux parties horisontales</translation>
+    </message>
+    <message>
+        <source>Split horizontally</source>
+        <translation>Diviser à l&apos;horisontale</translation>
+    </message>
+</context>
+<context>
+    <name>QtxColorButton</name>
+    <message>
+        <source>Auto</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <source>Other colors...</source>
+        <translation>Autres couleurs...</translation>
+    </message>
+</context>
+<context>
+    <name>QtxColorScale</name>
+    <message>
+        <source>Color scale</source>
+        <translation>Echelle de couleurs</translation>
+    </message>
+</context>
+</TS>
index a3ee2853c8d8567fd07a3d98bed08e3ec0b4f69b..d7366aee21d1c59316f938d5059ab105fcde9aa0 100755 (executable)
@@ -63,7 +63,8 @@ dist_salomeres_DATA =                 \
 
 nodist_salomeres_DATA =                \
        QxGraph_images.qm       \
-       QxGraph_msg_en.qm  
+       QxGraph_msg_en.qm       \
+       QxGraph_msg_fr.qm  
 
 libQxGraph_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) \
                         -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
index ddd193551c0b9ef92f7be4d23e9327488a30c64d..08f6833f9f87817567db907a969524f025d868c4 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/QxGraph/resources/QxGraph_msg_fr.ts b/src/QxGraph/resources/QxGraph_msg_fr.ts
new file mode 100755 (executable)
index 0000000..0a67787
--- /dev/null
@@ -0,0 +1,31 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_CHANGE_BACKGROUND</source>
+        <translation>Changer l&apos;arrier-plan...</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Redimensionnement</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de Visualisation</translation>
+    </message>
+</context>
+</TS>
index d877bf81e3fb78a81f0e41d5cbb7212993ae3c8b..72f9947c2e5cdac8430bfb852c1f9c79bbd60065 100755 (executable)
@@ -55,7 +55,8 @@ dist_salomeres_DATA= \
 
 nodist_salomeres_DATA= \
        QxSceneViewer_images.qm \
-       QxSceneViewer_msg_en.qm  
+       QxSceneViewer_msg_en.qm \
+       QxSceneViewer_msg_fr.qm
 
 libQxScene_la_CPPFLAGS=$(QT_INCLUDES) $(CAS_CPPFLAGS) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) \
        -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
index 4ad001ec8020b8302272fbc50c8a57ee71945725..fe62d243d54c5c46262edf2324167dce42f59c7c 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/QxScene/resources/QxSceneViewer_msg_fr.ts b/src/QxScene/resources/QxSceneViewer_msg_fr.ts
new file mode 100755 (executable)
index 0000000..27fa779
--- /dev/null
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_CHANGE_BACKGROUND</source>
+        <translation>Changer l&apos;arrier-plan</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Redimensionnement</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de Visualisation</translation>
+    </message>
+</context>
+<context>
+    <name>QxScene_ViewManager</name>
+    <message>
+        <source>QXSCENE_VIEW_TITLE</source>
+        <translation>QGraphics scène:%M - visualisateur:%V</translation>
+    </message>
+</context>
+</TS>
index 7c023b5772e78e7969d9d7ff5db147b8065c9c68..2e8d99fb405ef403e457606e0baa52028a512dcb 100755 (executable)
@@ -71,7 +71,8 @@ dist_salomeres_DATA =                 \
 
 nodist_salomeres_DATA =        \
        STD_images.qm   \
-       STD_msg_en.qm
+       STD_msg_en.qm   \
+       STD_msg_fr.qm
 
 libstd_la_CPPFLAGS = $(QT_INCLUDES) -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx
 libstd_la_LDFLAGS  = $(QT_MT_LIBS)
index b6c4b838dd4f5fe521838490c3e811e5653de430..d4b65578c2f882d95cdddbeb693062a91949abfb 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/STD/resources/STD_msg_fr.ts b/src/STD/resources/STD_msg_fr.ts
new file mode 100755 (executable)
index 0000000..caf464c
--- /dev/null
@@ -0,0 +1,490 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>TOT_DESK_EDIT_CUT</source>
+        <translation>Découpe</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_EDIT_CUT</source>
+        <translation>Couper la sélection et la placer dans la presse-papier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_EDIT_CUT</source>
+        <translation>&amp;Découper</translation>
+    </message>
+    <message>
+        <source>ERR_APP_NOAPP</source>
+        <translation>Pas d&apos;application</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW</source>
+        <translation>&amp;Fenêtre</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_EDIT_COPY</source>
+        <translation>Copier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_CASCADE</source>
+        <translation>&amp;Cascade</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_EDIT_COPY</source>
+        <translation>Copier la sélection dans la presse-papiers</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_CASCADE</source>
+        <translation>Ranger les fenêtres en pavés superposés</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_SAVEAS</source>
+        <translation>Enregistrer le document sous...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_EDIT_COPY</source>
+        <translation>&amp;Copier</translation>
+    </message>
+    <message>
+        <source>MSG_CANT_SAVE</source>
+        <translation>Impossible de sauvegarder le fichier &quot;%1&quot;.</translation>
+    </message>
+    <message>
+        <source>INF_DESK_TOOLBAR_STANDARD</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>ALL_FILES</source>
+        <translation>Tous les Fichiers (*.*)</translation>
+    </message>
+    <message>
+        <source>DESK_DEFAULTTITLE</source>
+        <translation>Qt Framework d&apos;Applications</translation>
+    </message>
+    <message>
+        <source>QUE_DESK_EXIT</source>
+        <translation>Etes-vous sûr que vous voulez abandonner?</translation>
+    </message>
+    <message>
+        <source>INF_INFO</source>
+        <translation>Information</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_UNKNOWNTYPE_OPEN</source>
+        <translation>Vous essayez d&apos;ouvrir le document d&apos;un type inconnu
+( %1 )</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_UNKNOWNTYPE_SAVE</source>
+        <translation>Vous essayez de sauvegarder le document sous un type inconnu
+( %1 )</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_NEWWINDOW</source>
+        <translation>Créer une nouvelle fenêtre</translation>
+    </message>
+    <message>
+        <source>BUT_CANCEL</source>
+        <translation>&amp;Annuler</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_HELP_ABOUT</source>
+        <translation>&amp;A propos de...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_NEWWINDOW</source>
+        <translation>Créer une nouvelle Fenêtre</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_VIEW_STATUSBAR</source>
+        <translation>&amp;Barre de Status</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_NEWWINDOW</source>
+        <translation>&amp;Nouvelle Fenêtre</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_VIEW_STATUSBAR</source>
+        <translation>Activer ou désactiver la barre de status</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_DIRWITHNAMEEXIST_SAVE</source>
+        <translation>Impossible de sauvegarder le fichier %1.
+Le répertoir avec ce nom existe sur la disque. Essayez d&apos;utiliser un autre nom</translation>
+    </message>
+    <message>
+        <source>BUT_NO</source>
+        <translation>N&amp;on</translation>
+    </message>
+    <message>
+        <source>BUT_OK</source>
+        <translation>O&amp;k</translation>
+    </message>
+    <message>
+        <source>FILTER_FILES</source>
+        <translation>%1 Fichiers (%2)</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_ACTIVATE</source>
+        <translation>Activer la fenêtre</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_PRINT</source>
+        <translation>Imprimer un document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_CLOSE</source>
+        <translation>Fermer le document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_NEW</source>
+        <translation>Créer un nouveau document</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_NEW</source>
+        <translation>Créer un nouveau document</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_MRU</source>
+        <translation>Ouvrir un document</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_NEW</source>
+        <translation>&amp;Nouveau</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_MRU</source>
+        <translation>&amp;Fichiers Recents</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_EDIT_PASTE</source>
+        <translation>Coller</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_VIEW_DOCKWINDOWS</source>
+        <translation>W&amp;indows</translation>
+    </message>
+    <message>
+        <source>BUT_YES</source>
+        <translation>O&amp;ui</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_VIEW</source>
+        <translation>&amp;Vue</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_HELP_ABOUT</source>
+        <translation>Montre la dialogue &apos;A propos&apos;</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE</source>
+        <translation>Fic&amp;hier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_EDIT</source>
+        <translation>&amp;Editer</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_HELP</source>
+        <translation>A&amp;ide</translation>
+    </message>
+    <message>
+        <source>ERR_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>ERR_DESK_NOAPP</source>
+        <translation>Pas d&apos;applications enregistrées</translation>
+    </message>
+    <message>
+        <source>INF_DESK_DOC_CREATE</source>
+        <translation>Créer un nouveau document</translation>
+    </message>
+    <message>
+        <source>QUE_DOC_ALREADYOPEN</source>
+        <translation>Le document %1 est déjà ouvert.
+Voulez-vous le rouvrir?</translation>
+    </message>
+    <message>
+        <source>BUT_APPLY</source>
+        <translation>A&amp;ppliquer</translation>
+    </message>
+    <message>
+        <source>BUT_CLOSE</source>
+        <translation>&amp;Fermer</translation>
+    </message>
+    <message>
+        <source>INF_DESK_EXIT</source>
+        <translation>Abandonner</translation>
+    </message>
+    <message>
+        <source>ERR_UNKNOWN</source>
+        <translation>Erreur Inconnue</translation>
+    </message>
+    <message>
+        <source>BUT_HELP</source>
+        <translation>A&amp;ide</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_CLOSE</source>
+        <translation>Fermer le document actuel</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_PRINT</source>
+        <translation>imprimer le document actuel</translation>
+    </message>
+    <message>
+        <source>WRN_WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_HELP_ABOUT</source>
+        <translation>A propos...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_VIEW_TOOLBARS</source>
+        <translation>Barres d&apos;&amp;Outils</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_HSPLIT</source>
+        <translation>Diviser la fenêtre actuelle en deux parties horizontales</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_HSPLIT</source>
+        <translation>Division &amp;Horizontale</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_EDIT_PASTE</source>
+        <translation>Insérer le contenu du Presse-papiers au point d&apos;insertion</translation>
+    </message>
+    <message>
+        <source>DLG_LOAD_STUDY_CAPTION</source>
+        <translation>Ouvrir une Etude</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_HELP_SEARCH</source>
+        <translation>Chercher de l&apos;information sur le sujet</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_SAVEAS</source>
+        <translation>Sauvegarder le document actuel sous un nouveau nom</translation>
+    </message>
+    <message>
+        <source>INF_READY</source>
+        <translation>Prêt</translation>
+    </message>
+    <message>
+        <source>INF_CANCELLED</source>
+        <translation>Annulé</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_VSPLIT</source>
+        <translation>Diviser la fenêtre actuelle en deux parties verticales</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_VSPLIT</source>
+        <translation>Division &amp;Verticale</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_TILE</source>
+        <translation>Ranger les fenêtres en pavés non-superposés</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_HELP_CONTENTS</source>
+        <translation>&amp;Contenu</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_HELP_CONTENTS</source>
+        <translation>Montre le sommaire de la référence documentaire</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_HTILE</source>
+        <translation>&amp;Paver Horizontalement</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_VTILE</source>
+        <translation>Paver Vertica&amp;lement</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_PERMISSIONDENIED_SAVE</source>
+        <translation>Impossible de sauvegardet le fichier %1. Authorisaton refusée.</translation>
+    </message>
+    <message>
+        <source>INF_DESK_DOCALREADYOPEN</source>
+        <translation>Impossible de sauvegarder le document sous un nom du document déjà ouvert.
+Indiquez un autre nom du document que vous allez sauvegarder.
+( %1 )</translation>
+    </message>
+    <message>
+        <source>TIT_FILE_SAVEAS</source>
+        <translation>Enregistrer sous</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_CLOSE</source>
+        <translation>Fer&amp;mer</translation>
+    </message>
+    <message>
+        <source>MSG_FILE_EXISTS</source>
+        <translation>Le Fichier &quot;%1&quot; déjà existe.
+Voulez-vous le réécrire?</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_PRINT</source>
+        <translation>&amp;Imprimer</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_HELP_SEARCH</source>
+        <translation>&amp;Recherche...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_VIEW_STDTOOLBAR</source>
+        <translation>&amp;Standard</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_SAVEAS</source>
+        <translation>Enre&amp;gistrer Sous...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_VIEW_STDTOOLBAR</source>
+        <translation>Activer ou désactiver la barre usuelle</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_SAVE</source>
+        <translation>Enregistrer un document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_EXIT</source>
+        <translation>Abandonner l&apos;application</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_LOAD</source>
+        <translation>Ouvrir le document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_OPEN</source>
+        <translation>Ouvrir un document</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_REOPEN</source>
+        <translation>Rouvrir un document</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_EXIT</source>
+        <translation>Abandonner l&apos;application</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_OPEN</source>
+        <translation>Ouvrir un document</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_REOPEN</source>
+        <translation>Rouvrir le document actuel d&apos;un fichier</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_SAVE</source>
+        <translation>Sauvegarder le document actuel</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_LOAD</source>
+        <translation>Ouvrir un document</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_HTILE</source>
+        <translation>Ranger les fenêtres en pavés horizontales non-superposés</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_VTILE</source>
+        <translation>Ranger les fenêtres en pavés verticales non-superposés</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_TILE</source>
+        <translation>&amp;Pavé</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_EXIT</source>
+        <translation>A&amp;bandonner</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_OPEN</source>
+        <translation>&amp;Ouvrir...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_REOPEN</source>
+        <translation>&amp;Rouvrir</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_LOAD</source>
+        <translation>Connec&amp;ter...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_SAVE</source>
+        <translation>&amp;Enregistrer</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_EDIT_PASTE</source>
+        <translation>Co&amp;ller</translation>
+    </message>
+    <message>
+        <source>MEN_STUDIES_CHOICE</source>
+        <translation>Choisir l&apos;Etude Existante</translation>
+    </message>
+</context>
+<context>
+    <name>STD_Application</name>
+    <message>
+        <source>INF_DOC_MODIFIED</source>
+        <translation>Le document a été modifié.
+Voulez-vous sauvegarder les modifications?</translation>
+    </message>
+    <message>
+        <source>INF_DOC_SAVING</source>
+        <translation>Sauvegarder l&apos;étude</translation>
+    </message>
+    <message>
+        <source>INF_DOC_SAVED</source>
+        <translation>L&apos;étude %1 est sauvegardée</translation>
+    </message>
+    <message>
+        <source>TOT_DOCK_WINDOWS</source>
+        <translation>Montrer / cacher les fenêtres encrables et les barres d&apos;outils</translation>
+    </message>
+    <message>
+        <source>MEN_DOCK_WINDOWS</source>
+        <translation>Fenêtres et Barres d&apos;outils</translation>
+    </message>
+    <message>
+        <source>ABOUT_INFO</source>
+        <translation>SUIT Std application</translation>
+    </message>
+    <message>
+        <source>INF_DOC_SAVING_FAILS</source>
+        <translation>Impossible de sauvegarder le fichier &quot;%1&quot;.
+Probablement, l&apos;action n&apos;est pas authorisée ou la disque est remplie.
+Essayez d&apos;utiliser un autre nom de fichier.</translation>
+    </message>
+    <message>
+        <source>INF_DOCUMENT_MODIFIED</source>
+        <translation>Le document &quot;%1&quot; a été modifié.
+Voulez-vous sauvegarder les changements?</translation>
+    </message>
+    <message>
+        <source>CLOSE_STUDY</source>
+        <translation>Fermer l&apos;étude actuelle</translation>
+    </message>
+    <message>
+        <source>CLOSE_QUESTION</source>
+        <translation>Voulez-vous sauvegarder l&apos;étude avant de la fermer?</translation>
+    </message>
+    <message>
+        <source>REOPEN_STUDY</source>
+        <translation>Rouvrir l&apos;étude</translation>
+    </message>
+    <message>
+        <source>REOPEN_QUESTION</source>
+        <translation>Voulez-vous rouvrir l&apos;étude?
+Toutes les modifications introduites après le dernier enregistrement seront perdues.</translation>
+    </message>
+</context>
+</TS>
index 1cf97028860a3e8fea1a60148fd69b30007aa5d9..9b1df08d98b3b95809944af406ae8d14577ef39e 100755 (executable)
@@ -61,7 +61,8 @@ salomeinclude_HEADERS =                       \
        SUIT_TreeModel.h                \
        SUIT_ViewManager.h              \
        SUIT_ViewModel.h                \
-       SUIT_ViewWindow.h
+       SUIT_ViewWindow.h               \
+       SUIT_ShortcutMgr.h
 
 dist_libsuit_la_SOURCES =              \
        SUIT_Accel.cxx                  \
@@ -92,7 +93,8 @@ dist_libsuit_la_SOURCES =             \
        SUIT_TreeModel.cxx              \
        SUIT_ViewManager.cxx            \
        SUIT_ViewModel.cxx              \
-       SUIT_ViewWindow.cxx
+       SUIT_ViewWindow.cxx             \
+       SUIT_ShortcutMgr.cxx
 
 MOC_FILES =                            \
        SUIT_Accel_moc.cxx              \
@@ -113,12 +115,14 @@ MOC_FILES =                               \
        SUIT_TreeModel_moc.cxx          \
        SUIT_ViewManager_moc.cxx        \
        SUIT_ViewModel_moc.cxx          \
-       SUIT_ViewWindow_moc.cxx
+       SUIT_ViewWindow_moc.cxx         \
+       SUIT_ShortcutMgr_moc.cxx
 
 nodist_libsuit_la_SOURCES = $(MOC_FILES)
 
 nodist_salomeres_DATA =                        \
-       SUIT_msg_en.qm
+       SUIT_msg_en.qm                  \
+       SUIT_msg_fr.qm
 
 libsuit_la_CPPFLAGS = $(QT_INCLUDES) -I$(srcdir)/../Qtx -I$(srcdir)/../ObjBrowser
 
index 7624b5c6a0c07e23f61d99b5c8929a4b79c0c7e5..e7129b5e867f954c1fa8d4e253ba8e052ab70e82 100755 (executable)
@@ -26,6 +26,7 @@
 #include "SUIT_Session.h"
 #include "SUIT_Desktop.h"
 #include "SUIT_ResourceMgr.h"
+#include "SUIT_ShortcutMgr.h"
 
 #include <QTimer>
 #include <QLabel>
@@ -37,6 +38,7 @@
 #include <QtxActionMenuMgr.h>
 #include <QtxActionToolMgr.h>
 
+
 /*!
   \class StatusLabel
   \brief Status bar customization label. Used to workaroubd desktop resizing bug.
@@ -123,6 +125,9 @@ void SUIT_Application::start()
 {
   if ( desktop() )
     desktop()->show();
+
+  // Initialize shortcut manager
+  SUIT_ShortcutMgr::Init();
 }
 
 /*!
@@ -174,6 +179,15 @@ SUIT_ResourceMgr* SUIT_Application::resourceMgr() const
   return SUIT_Session::session()->resourceMgr();
 }
 
+/*!
+  \brief Get access to shortcut manager.
+  \return global shortcut manager
+*/
+SUIT_ShortcutMgr* SUIT_Application::shortcutMgr() const
+{
+  return SUIT_ShortcutMgr::getShortcutMgr();
+}
+
 #define DEFAULT_MESSAGE_DELAY 3000
 
 /*!
@@ -612,9 +626,10 @@ QList<int> SUIT_Application::actionIds() const
 */
 QAction* SUIT_Application::createAction( const int id, const QString& text, const QIcon& icon,
                                          const QString& menu, const QString& tip, const int key,
-                                         QObject* parent, const bool toggle, QObject* reciever, const char* member )
+                                         QObject* parent, const bool toggle, QObject* reciever, 
+                                        const char* member, const QString& shortcutAction )
 {
-  QtxAction* a = new QtxAction( text, icon, menu, key, parent, toggle );
+  QtxAction* a = new QtxAction( text, icon, menu, key, parent, toggle, shortcutAction );
   a->setStatusTip( tip );
 
   if ( reciever && member )
index e04cee4f587aa52f3d28b6f5fd4675321b1441ef..3773977fc21bac50c2d74a0d53126d262199e5bf 100755 (executable)
@@ -37,6 +37,7 @@ class QWidget;
 class SUIT_Desktop;
 class SUIT_ViewModel;
 class SUIT_ResourceMgr;
+class SUIT_ShortcutMgr;
 class SUIT_Study;
 
 #ifdef WIN32
@@ -97,6 +98,8 @@ public:
 
   SUIT_ResourceMgr*     resourceMgr() const;
 
+  SUIT_ShortcutMgr*     shortcutMgr() const;
+
   //! Puts the message to the status bar  
   void putInfo ( const QString&, const int = 0 );
 
@@ -164,7 +167,8 @@ protected:
   int                   registerAction( const int, QAction* );
   QAction*              createAction( const int, const QString&, const QIcon&, const QString&,
                                       const QString&, const int, QObject* = 0,
-                                      const bool = false, QObject* = 0, const char* = 0 );
+                                      const bool = false, QObject* = 0, const char* = 0,
+                                     const QString& = QString() );
 
 protected slots:
   virtual void          onDesktopActivated();
@@ -173,6 +177,7 @@ private:
   SUIT_Study*           myStudy;
   SUIT_Desktop*         myDesktop;
   QMap<int, QAction*>   myActionMap;
+  SUIT_ShortcutMgr*     myShortcutMgr;
 
   QLabel*               myStatusLabel;
 };
diff --git a/src/SUIT/SUIT_ShortcutMgr.cxx b/src/SUIT/SUIT_ShortcutMgr.cxx
new file mode 100644 (file)
index 0000000..44eb8a9
--- /dev/null
@@ -0,0 +1,187 @@
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  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.
+//
+//  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 "SUIT_ShortcutMgr.h"
+
+#include "SUIT_Session.h"
+#include "SUIT_ResourceMgr.h"
+
+#include <QtxAction.h>
+
+#include <QApplication>
+#include <QActionEvent>
+
+SUIT_ShortcutMgr* SUIT_ShortcutMgr::myShortcutMgr = NULL;
+
+/*!
+  \brief Constructor
+*/
+SUIT_ShortcutMgr::SUIT_ShortcutMgr()
+: QObject()
+{
+  qApp->installEventFilter( this );
+}
+
+/*!
+  \brief Destructor
+*/
+SUIT_ShortcutMgr::~SUIT_ShortcutMgr()
+{
+  qApp->removeEventFilter( this );
+}
+
+/*!
+  \brief Create new instance of shortcut manager.
+*/
+void SUIT_ShortcutMgr::Init()
+{
+  if( myShortcutMgr==NULL )
+    myShortcutMgr = new SUIT_ShortcutMgr();
+}
+
+/*!
+  \brief Return shortcut manager. 
+*/
+SUIT_ShortcutMgr* SUIT_ShortcutMgr::getShortcutMgr()
+{
+  Init();
+  
+  return myShortcutMgr;
+}
+
+/*!
+  \brief Custom event filter for qapplication .
+  
+  Redefined from QObject::eventFilter();
+*/
+bool SUIT_ShortcutMgr::eventFilter( QObject* o, QEvent* e )
+{
+  if ( e->type() == QEvent::ActionAdded ) {
+    QActionEvent* anActionEvent = (QActionEvent*)e;
+    if (anActionEvent) {
+      QtxAction* anAction = qobject_cast<QtxAction*>( anActionEvent->action() );
+      if ( anAction )
+       processAction( anAction );
+    }
+  }
+
+  return QObject::eventFilter( o, e );
+}
+
+/*!
+  \brief Return key sequence for shortcut action name.
+  \param actionName name of shortcut action in preferences
+  \return key sequence defined in preferences or empty sequence
+*/
+QKeySequence SUIT_ShortcutMgr::getShortcutByActionName( const QString& actionName ) const
+{
+  SUIT_ResourceMgr* resMgr = SUIT_Session::session()->resourceMgr();
+
+  QString section = actionName.section( resMgr->sectionsToken(), 0, 0 );
+  section.prepend( QString("shortcuts") + resMgr->sectionsToken() );
+  QString parameter = actionName.section( resMgr->sectionsToken(), 1, 1 );
+
+  QString shortcutValue;
+  bool hasValue = resMgr->value( section, parameter, shortcutValue, false );
+
+  if ( !hasValue )
+    return QKeySequence();
+
+  return QKeySequence::fromString( shortcutValue );
+}
+
+/*!
+  \brief Set shortcut to the given action if the shortcut is defined.
+  \param action action to process
+ */
+void SUIT_ShortcutMgr::processAction( QtxAction* action )
+{
+  QString shortcutActionName = action->shortcutActionName();
+  if ( !shortcutActionName.isEmpty() ) {
+    // Add action to the actions map
+    if ( !myShortcutActions.contains( shortcutActionName, action ) ) {
+      myShortcutActions.insert( shortcutActionName, action );
+      connect( action, SIGNAL( destroyed( QObject* ) ), 
+              this, SLOT ( onActionDestroyed( QObject* ) ) );
+    }
+
+    QKeySequence keySeq = getShortcutByActionName( shortcutActionName );
+    action->setShortcut( keySeq );
+  }
+}
+
+/*!
+  \brief Enable/disable a shortcuts section.
+
+  Enables or disables actions which belong to the given shortcuts section.
+  Only actions which have an active desktop as a parent widget 
+  are taken into account.
+
+  \param section shorcuts section
+  \param on if \c true - action will be enabled, otherwise - disabled
+*/
+void SUIT_ShortcutMgr::setSectionEnabled( const QString& section, const bool on )
+{
+  QMap<QString, QtxAction*>::ConstIterator it;
+  for ( it = myShortcutActions.constBegin(); it != myShortcutActions.constEnd(); ++it ) {
+    QtxAction* action = it.value();
+    QString shortcutActionName = action->shortcutActionName();
+    QString actionSection = shortcutActionName.section( ":", 0, 0 );
+    if ( actionSection == section ) {
+      // Check if the action parent widget equals to the active desktop
+      SUIT_Application* app = SUIT_Session::session()->activeApplication();
+      if ( !app )
+       return;
+      if ( action->parentWidget() == (QWidget*)app->desktop() )
+       action->setEnabled( on );
+    }
+  }
+}
+
+/*!
+  \brief Update shortcuts from preferences.
+*/
+void SUIT_ShortcutMgr::updateShortcuts()
+{
+  QMap<QString, QtxAction*>::ConstIterator it;
+  for ( it = myShortcutActions.constBegin(); it != myShortcutActions.constEnd(); ++it ) {
+    QtxAction* action = it.value();
+    QKeySequence keySeq = getShortcutByActionName( action->shortcutActionName() );
+    action->setShortcut( keySeq );
+  }
+}
+
+/*!
+  \brief Called when the corresponding action is destroyed.
+  
+  Removes destroyed action from the actions list.
+
+  \param obj action being destroyed
+*/
+void SUIT_ShortcutMgr::onActionDestroyed( QObject* obj )
+{
+  QtxAction* anAction = (QtxAction*)obj;
+  
+  if ( anAction )
+    myShortcutActions.remove( anAction->shortcutActionName(), anAction );
+}
diff --git a/src/SUIT/SUIT_ShortcutMgr.h b/src/SUIT/SUIT_ShortcutMgr.h
new file mode 100644 (file)
index 0000000..eafd854
--- /dev/null
@@ -0,0 +1,75 @@
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  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.
+//
+//  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 SUIT_SHORTCUTMGR_H
+#define SUIT_SHORTCUTMGR_H
+
+#include "SUIT.h"
+
+#include <QObject>
+#include <QMultiMap>
+
+class QtxAction;
+
+class QKeySequence;
+
+#if defined WIN32
+#pragma warning( disable: 4251 )
+#endif
+
+/*!
+  \class SUIT_ShortcutMgr
+  \brief Class which manages shortcuts customization.
+*/
+class SUIT_EXPORT SUIT_ShortcutMgr: public QObject 
+{
+  Q_OBJECT
+public:
+  static void Init();
+  static SUIT_ShortcutMgr* getShortcutMgr();
+
+  void setSectionEnabled( const QString&, const bool = true );
+  void updateShortcuts();
+
+protected:
+  SUIT_ShortcutMgr();
+  virtual ~SUIT_ShortcutMgr();
+
+private slots:
+  void onActionDestroyed( QObject* );
+
+private:
+  virtual bool eventFilter( QObject* o, QEvent* e );
+
+  void processAction( QtxAction* );
+  QKeySequence getShortcutByActionName( const QString& ) const;
+
+private:
+  static SUIT_ShortcutMgr* myShortcutMgr;
+  QMultiMap<QString, QtxAction*> myShortcutActions;
+};
+
+#if defined WIN32
+#pragma warning( default: 4251 )
+#endif
+
+#endif
index d477c7f9cb2c6b27d22533f8723ac36764aa48b1..c9465cf2c008a25a42723c454b40f16907fe13d4 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/SUIT/resources/SUIT_msg_fr.ts b/src/SUIT/resources/SUIT_msg_fr.ts
new file mode 100755 (executable)
index 0000000..cf28736
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MEN_DESK_WINDOW</source>
+        <translation>&amp;Fenêtre</translation>
+    </message>
+    <message>
+        <source>ERR_CANT_DUMP_VIEW</source>
+        <translation>Impossible de clicher le contenu de la vue au fichier.</translation>
+    </message>
+    <message>
+        <source>TLT_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg)</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_CASCADE</source>
+        <translation>&amp;Cascade</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_CASCADE</source>
+        <translation>Superposer les fenêtres</translation>
+    </message>
+    <message>
+        <source>ERR_DIR_NOT_EXIST</source>
+        <translation>Le répertoire &quot;%1&quot; n&apos;existe pas!</translation>
+    </message>
+    <message>
+        <source>ERR_FILE_NOT_DIR</source>
+        <translation>&quot;%1&quot; n&apos;est pas un répertoire!</translation>
+    </message>
+    <message>
+        <source>CONTINUE</source>
+        <translation>Continuer</translation>
+    </message>
+    <message>
+        <source>CANCEL</source>
+        <translation>Annuler</translation>
+    </message>
+    <message>
+        <source>ERR_FILE_NOT_EXIST</source>
+        <translation>Le fichier &quot;%1&quot; n&apos;existe pas!</translation>
+    </message>
+    <message>
+        <source>QUE_DOC_FILEEXISTS</source>
+        <translation>Le fichier %1 déjà existe. Faut-il le réécrire?</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_ACTIVATE</source>
+        <translation>Activer la fenêtre</translation>
+    </message>
+    <message>
+        <source>ERR_PERMISSION_DENIED</source>
+        <translation>Impossible de sauvegarder le fichier &quot;%1&quot;.
+Autorisation interdite.</translation>
+    </message>
+    <message>
+        <source>ERR_OPEN_PERMISSION_DENIED</source>
+        <translation>Impossible de sauvegarder le fichier &quot;%1&quot;.
+Autorisation interdite.</translation>
+    </message>
+    <message>
+        <source>ERR_DIR_READ_PERMISSION_DENIED</source>
+        <translation>Impossible de sauvegarder le répertoire &quot;%1&quot;.
+Autorisation interdite.</translation>
+    </message>
+    <message>
+        <source>ERR_DIR_WRITE_PERMISSION_DENIED</source>
+        <translation>Impossible de sauvegarder le répertoire &quot;%1&quot;.
+Autorisation interdite.</translation>
+    </message>
+    <message>
+        <source>ERR_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>QUE_FILE_EXISTS</source>
+        <translation>Le fichier &quot;%1&quot; déjà existe.
+Faut-il le réécrire?</translation>
+    </message>
+    <message>
+        <source>WRN_WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>TLT_DUMP_VIEW</source>
+        <translation>Clicher la Vue au Fichier</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_TILE</source>
+        <translation>Placer les fenêtres sans superposition</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_VTILE</source>
+        <translation>Paver &amp;Verticalement</translation>
+    </message>
+    <message>
+        <source>INF_DIRECTORIES_FILTER</source>
+        <translation>Répertoires</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_WINDOW_VTILE</source>
+        <translation>Placer les fenêtres verticalement et sans superposition</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_WINDOW_TILE</source>
+        <translation>&amp;Paver</translation>
+    </message>
+    <message>
+        <source>NAME_COLUMN</source>
+        <translation>Nom</translation>
+    </message>
+</context>
+<context>
+    <name>SUIT_Study</name>
+    <message>
+        <source>OPERATION_LAUNCH</source>
+        <translation>Lancer l&apos;Opération</translation>
+    </message>
+    <message>
+        <source>PREVIOUS_NOT_FINISHED</source>
+        <translation>L&apos;opération précédente n&apos;est pas aboutie et sera interrompue</translation>
+    </message>
+</context>
+<context>
+    <name>SUIT_FileDlg</name>
+    <message>
+        <source>LAB_QUICK_PATH</source>
+        <translation>Chemin Court:</translation>
+    </message>
+    <message>
+        <source>BUT_ADD_PATH</source>
+        <translation>Ajouter un chemin</translation>
+    </message>
+    <message>
+        <source>INF_DESK_DOC_OPEN</source>
+        <translation>Ouvrir un Fichier</translation>
+    </message>
+    <message>
+        <source>INF_DESK_DOC_SAVE</source>
+        <translation>Sauvegarder un Fichier</translation>
+    </message>
+    <message>
+        <source>ALL_FILES_FILTER</source>
+        <translation>Tous les Fichiers (*)</translation>
+    </message>
+</context>
+</TS>
index 30e2e8264431e956dd8eff304917610c02923b4c..cc87c70de632e7245cc9b91dfb60a083f21ff886 100644 (file)
@@ -46,7 +46,7 @@ MOC_FILES =                           \
 
 nodist_libSUITApp_la_SOURCES = $(MOC_FILES)
 
-nodist_salomeres_DATA = SUITApp_msg_en.qm
+nodist_salomeres_DATA = SUITApp_msg_en.qm SUITApp_msg_fr.qm
 
 libSUITApp_la_CPPFLAGS = $(QT_INCLUDES) $(PYTHON_INCLUDES) \
                          -I$(srcdir)/../SUIT -I$(srcdir)/../Qtx -I$(srcdir)/../Style
index 989542ba449359d09108b016735079bd946d53ff..9668c4e185f1f9e3d63fd20f27173205566d84f6 100644 (file)
@@ -248,7 +248,7 @@ int main( int argc, char* argv[] )
     {
       if ( resMgr )
       {
-        resMgr->loadLanguage( false );
+        resMgr->loadLanguage();
 
         splash = QtxSplash::splash( QPixmap() );
         splash->readSettings( resMgr );
index 23ba569c8d0a17ee024afda48003d0aaad13144e..b67d2ec370bcaad2bee5d422b3a74f7be22013f0 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/SUITApp/resources/SUITApp_msg_fr.ts b/src/SUITApp/resources/SUITApp_msg_fr.ts
new file mode 100755 (executable)
index 0000000..92f8f53
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>APP_OK</source>
+        <translation>Ok</translation>
+    </message>
+    <message>
+        <source>APP_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>APP_UNK_EXCEPTION</source>
+        <translation>Exception inconnue</translation>
+    </message>
+</context>
+</TS>
index f33bbbbcd19daa0d11baa0618d078c30700e4b3a..35e26250008cf85c90095b05f25cea58c6e3303d 100755 (executable)
@@ -49,7 +49,8 @@ dist_salomeres_DATA =                 \
 
 nodist_salomeres_DATA =                \
        SUPERVGraph_images.qm   \
-       SUPERVGraph_msg_en.qm  
+       SUPERVGraph_msg_en.qm   \
+       SUPERVGraph_msg_fr.qm  
 
 libSUPERVGraph_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) $(PYTHON_INCLUDES) $(BOOST_CPPFLAGS) \
                             -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT -I$(srcdir)/../OBJECT
index 922fe3dcdf7be72a4860778ca04aeffa05a27138..6a21a259ebf8ac397d613a61b9e0d38d59d0479b 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts b/src/SUPERVGraph/resources/SUPERVGraph_msg_fr.ts
new file mode 100755 (executable)
index 0000000..047e851
--- /dev/null
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Redimensionnement</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionnement de la vue</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de Visualisation</translation>
+    </message>
+</context>
+</TS>
index 6f626d02fadc898ddb3131d1a5f4439c1a4fb6ca..9ecf180b4246d572109e5d08791f8cccd87de3bb 100755 (executable)
@@ -136,6 +136,7 @@ dist_salomeres_DATA=\
 
 nodist_salomeres_DATA =        \
        SVTK_msg_en.qm  \
+       SVTK_msg_fr.qm  \
        SVTK_images.qm
 
 libSVTK_la_CPPFLAGS =          \
index 10c16646e624537f77dea2f641d0077797d3731a..a8fa48f19400b477a2c2607ff2e07cf3204ad52e 100755 (executable)
@@ -1634,52 +1634,59 @@ void SVTK_ViewWindow::createActions(SUIT_ResourceMgr* theResourceMgr)
   // Projections
   anAction = new QtxAction(tr("MNU_FRONT_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_FRONT" ) ),
-                           tr( "MNU_FRONT_VIEW" ), 0, this);
+                           tr( "MNU_FRONT_VIEW" ), 0, this, false, "Viewers:Front view");
   anAction->setStatusTip(tr("DSC_FRONT_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onFrontView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, FrontId );
 
   anAction = new QtxAction(tr("MNU_BACK_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_BACK" ) ),
-                           tr( "MNU_BACK_VIEW" ), 0, this);
+                           tr( "MNU_BACK_VIEW" ), 0, this, false, "Viewers:Back view");
   anAction->setStatusTip(tr("DSC_BACK_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onBackView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, BackId );
 
   anAction = new QtxAction(tr("MNU_TOP_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_TOP" ) ),
-                           tr( "MNU_TOP_VIEW" ), 0, this);
+                           tr( "MNU_TOP_VIEW" ), 0, this, false, "Viewers:Top view");
   anAction->setStatusTip(tr("DSC_TOP_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onTopView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, TopId );
 
   anAction = new QtxAction(tr("MNU_BOTTOM_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_BOTTOM" ) ),
-                           tr( "MNU_BOTTOM_VIEW" ), 0, this);
+                           tr( "MNU_BOTTOM_VIEW" ), 0, this, false, "Viewers:Bottom view");
   anAction->setStatusTip(tr("DSC_BOTTOM_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onBottomView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, BottomId );
 
   anAction = new QtxAction(tr("MNU_LEFT_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_LEFT" ) ),
-                           tr( "MNU_LEFT_VIEW" ), 0, this);
+                           tr( "MNU_LEFT_VIEW" ), 0, this, false, "Viewers:Left view");
   anAction->setStatusTip(tr("DSC_LEFT_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onLeftView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, LeftId );
 
   anAction = new QtxAction(tr("MNU_RIGHT_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_RIGHT" ) ),
-                           tr( "MNU_RIGHT_VIEW" ), 0, this);
+                           tr( "MNU_RIGHT_VIEW" ), 0, this, false, "Viewers:Right view");
   anAction->setStatusTip(tr("DSC_RIGHT_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onRightView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, RightId );
 
   // Reset
   anAction = new QtxAction(tr("MNU_RESET_VIEW"), 
                            theResourceMgr->loadPixmap( "VTKViewer", tr( "ICON_VTKVIEWER_VIEW_RESET" ) ),
-                           tr( "MNU_RESET_VIEW" ), 0, this);
+                           tr( "MNU_RESET_VIEW" ), 0, this, false, "Viewers:Reset view");
   anAction->setStatusTip(tr("DSC_RESET_VIEW"));
   connect(anAction, SIGNAL(activated()), this, SLOT(onResetView()));
+  this->addAction(anAction);
   mgr->registerAction( anAction, ResetId );
 
   // onViewTrihedron: Shows - Hides Trihedron
index 9d7454fcfdcb4225116d6716256347bc96fdf96e..3663ce51edc8a9b7a6e6e8d511e5517d8bcffc41 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
@@ -534,11 +513,11 @@ Please, refer to the documentation.</translation>
         <source>LBL_TOBBCENTER</source>
         <translation>Set to Bounding Box Center</translation>
     </message>
-      <message>
+    <message>
         <source>LBL_TOORIGIN</source>
         <translation>Set to Origin</translation>
     </message>
-  <message>
+    <message>
         <source>LBL_SELECTPOINT</source>
         <translation>Select Point from View</translation>
     </message>
diff --git a/src/SVTK/resources/SVTK_msg_fr.ts b/src/SVTK/resources/SVTK_msg_fr.ts
new file mode 100755 (executable)
index 0000000..be1f001
--- /dev/null
@@ -0,0 +1,622 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MNU_FRONT_VIEW</source>
+        <translation>Arrière</translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>MNU_DUMP_VIEW</source>
+        <translation>Clicher la scène...</translation>
+    </message>
+    <message>
+        <source>DSC_TOP_VIEW</source>
+        <translation>Vue de dessus</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Panoramique</translation>
+    </message>
+    <message>
+        <source>MNU_TOP_VIEW</source>
+        <translation>Devant</translation>
+    </message>
+    <message>
+        <source>DSC_GLOBALPAN_VIEW</source>
+        <translation>Sélection d&apos;un nouveau centre de la vue</translation>
+    </message>
+    <message>
+        <source>DSC_ROTATE_VIEW</source>
+        <translation>Tourner le point de vue autour du centre de la scène</translation>
+    </message>
+    <message>
+        <source>MNU_ZOOM_VIEW</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>DSC_LEFT_VIEW</source>
+        <translation>Vue de gauche</translation>
+    </message>
+    <message>
+        <source>DSC_FITALL</source>
+        <translation>Redimensionner la scène pour montrer tous les objets</translation>
+    </message>
+    <message>
+        <source>MNU_FITALL</source>
+        <translation>Montrer Tous</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATE_VIEW</source>
+        <translation>Rotation</translation>
+    </message>
+    <message>
+        <source>DSC_SHOW_TRIHEDRON</source>
+        <translation>Montrer/Cacher les axes de coordonnées dans la scène</translation>
+    </message>
+    <message>
+        <source>DSC_FRONT_VIEW</source>
+        <translation>Vue de devant</translation>
+    </message>
+    <message>
+        <source>MNU_GLOBALPAN_VIEW</source>
+        <translation>Panoramique globale</translation>
+    </message>
+    <message>
+        <source>INF_APP_DUMP_VIEW</source>
+        <translation>Clicher la vue</translation>
+    </message>
+    <message>
+        <source>MNU_BACK_VIEW</source>
+        <translation>Arrière</translation>
+    </message>
+    <message>
+        <source>MNU_SHOW_TRIHEDRON</source>
+        <translation>Montrer les axes de coordonnées</translation>
+    </message>
+    <message>
+        <source>DSC_CHANGINGROTATIONPOINT_VIEW</source>
+        <translation>Changer le point, autour duquel la scène est tournée</translation>
+    </message>
+    <message>
+        <source>MNU_BOTTOM_VIEW</source>
+        <translation>Dessous</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer</translation>
+    </message>
+    <message>
+        <source>MNU_LEFT_VIEW</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>DSC_RIGHT_VIEW</source>
+        <translation>Vue de droit</translation>
+    </message>
+    <message>
+        <source>MNU_CHANGINGROTATIONPOINT_VIEW</source>
+        <translation>Changer le Point de Rotation</translation>
+    </message>
+    <message>
+        <source>DSC_FITRECT</source>
+        <translation>Redimensionner la scène pour ne montrer que sa partie choisie par l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>MNU_FITRECT</source>
+        <translation>Montrer l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>DSC_BOTTOM_VIEW</source>
+        <translation>Vue de dessous</translation>
+    </message>
+    <message>
+        <source>DSC_DUMP_VIEW</source>
+        <translation>Sauvegarder la scène actuelle au fichier image</translation>
+    </message>
+    <message>
+        <source>DSC_ZOOM_VIEW</source>
+        <translation>Zoomer la vue</translation>
+    </message>
+    <message>
+        <source>VTK_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg)</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue</translation>
+    </message>
+    <message>
+        <source>ERR_DOC_CANT_SAVE_FILE</source>
+        <translation>Impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>MNU_RIGHT_VIEW</source>
+        <translation>Droit</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Opérations de Visualisation </translation>
+    </message>
+    <message>
+        <source>DSC_BACK_VIEW</source>
+        <translation>Vue d&apos;arrière</translation>
+    </message>
+    <message>
+        <source>SVTK_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg *.pdf *.ps *.eps)</translation>
+    </message>
+    <message>
+        <source>MNU_VIEWPARAMETERS_VIEW</source>
+        <translation>Changer les Paramètres de Visualisation</translation>
+    </message>
+    <message>
+        <source>DSC_VIEWPARAMETERS_VIEW</source>
+        <translation>Changer les paramètres de la vue</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_PARALLEL_MODE</source>
+        <translation>Mode Orthogonal</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_PARALLEL_MODE</source>
+        <translation>Choisir la projection orthogonale</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_PERSPECTIVE_MODE</source>
+        <translation>Mode Perspective</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_PERSPECTIVE_MODE</source>
+        <translation>Choisir la projection perspective</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_STYLE_SWITCH</source>
+        <translation>Changer le style d&apos;intéraction</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_STYLE_SWITCH</source>
+        <translation>Changer le Style d&apos;Interaction</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_CubeAxesDlg</name>
+    <message>
+        <source>X_AXIS</source>
+        <translation>Axe X</translation>
+    </message>
+    <message>
+        <source>Y_AXIS</source>
+        <translation>Axe Y</translation>
+    </message>
+    <message>
+        <source>Z_AXIS</source>
+        <translation>Axe Z</translation>
+    </message>
+    <message>
+        <source>CAPTION</source>
+        <translation>Axes Graduées</translation>
+    </message>
+    <message>
+        <source>IS_VISIBLE</source>
+        <translation>Est visible</translation>
+    </message>
+    <message>
+        <source>FONT</source>
+        <translation>Font</translation>
+    </message>
+    <message>
+        <source>NAME</source>
+        <translation>Nom</translation>
+    </message>
+    <message>
+        <source>TICK_MARKS</source>
+        <translation>Marques de Graduation</translation>
+    </message>
+    <message>
+        <source>LABELS</source>
+        <translation>Repères</translation>
+    </message>
+    <message>
+        <source>LENGTH</source>
+        <translation>Longueur</translation>
+    </message>
+    <message>
+        <source>NUMBER</source>
+        <translation>Numéro</translation>
+    </message>
+    <message>
+        <source>OFFSET</source>
+        <translation>Décalage</translation>
+    </message>
+    <message>
+        <source>AXIS_NAME</source>
+        <translation>Nom de l&apos;Axe </translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_FontWidget</name>
+    <message>
+        <source>BOLD</source>
+        <translation>Gras</translation>
+    </message>
+    <message>
+        <source>ARIAL</source>
+        <translation>Arial</translation>
+    </message>
+    <message>
+        <source>TIMES</source>
+        <translation>Times</translation>
+    </message>
+    <message>
+        <source>ITALIC</source>
+        <translation>Italique</translation>
+    </message>
+    <message>
+        <source>SHADOW</source>
+        <translation>Ombré</translation>
+    </message>
+    <message>
+        <source>COURIER</source>
+        <translation>Courier</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_ViewWindow</name>
+    <message>
+        <source>DSC_SVTK_UPDATE_RATE</source>
+        <translation>Fréquence de mise à jour</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_SCALING</source>
+        <translation>Mise à l&apos;échelle</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_SCALING</source>
+        <translation>Echelle</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_GRADUATED_AXES</source>
+        <translation>Axes Graduées</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_GRADUATED_AXES</source>
+        <translation>Axes Graduées</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_UPDATE_RATE</source>
+        <translation>Fréquence de mise à jour</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_RECORDING_START</source>
+        <translation>Commencer l&apos;enregistrement</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_RECORDING_START</source>
+        <translation>Commencer</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_RECORDING_PLAY</source>
+        <translation>Reprendre l&apos;enregistrement</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_RECORDING_PLAY</source>
+        <translation>Reprendre</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_RECORDING_PAUSE</source>
+        <translation>Pauser l&apos;enregistrement</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_RECORDING_PAUSE</source>
+        <translation>Pauser</translation>
+    </message>
+    <message>
+        <source>DSC_SVTK_RECORDING_STOP</source>
+        <translation>Arrêter l&apos;enregistrement</translation>
+    </message>
+    <message>
+        <source>MNU_SVTK_RECORDING_STOP</source>
+        <translation>Arrêter</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_RECORD_LABEL</source>
+        <translation>Opérations d&apos;Enregistrement</translation>
+    </message>
+    <message>
+        <source>MSG_NO_AVI_MAKER</source>
+        <translation>l&apos;outil jpeg2yuv, requis pour enregistrer les fichiers AVI, n&apos;est pas disponible.
+Adressez-vous à la documentation.</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_NonIsometricDlg</name>
+    <message>
+        <source>LBL_X</source>
+        <translation>X:</translation>
+    </message>
+    <message>
+        <source>LBL_Y</source>
+        <translation>Y:</translation>
+    </message>
+    <message>
+        <source>LBL_Z</source>
+        <translation>Z:</translation>
+    </message>
+    <message>
+        <source>MEN_SCALING</source>
+        <translation>Echelle</translation>
+    </message>
+    <message>
+        <source>DLG_TITLE</source>
+        <translation>Mise à l&apos;échelle</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_RecorderDlg</name>
+    <message>
+        <source>ALL_DISLPAYED_FRAMES</source>
+        <translation>Enregistrer tous les cadres visualisés</translation>
+    </message>
+    <message>
+        <source>CLOSE</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <source>DLG_RECORDER_TITLE</source>
+        <translation>Enregistrer</translation>
+    </message>
+    <message>
+        <source>FILE_NAME</source>
+        <translation>Sauvegarder au fichier : </translation>
+    </message>
+    <message>
+        <source>FLT_ALL_FILES</source>
+        <translation>Tous les Fichiers (*.*)</translation>
+    </message>
+    <message>
+        <source>FLT_AVI_FILES</source>
+        <translation>Fichiers AVI (*.avi)</translation>
+    </message>
+    <message>
+        <source>FPS</source>
+        <translation>FPS : </translation>
+    </message>
+    <message>
+        <source>HELP</source>
+        <translation>Aide</translation>
+    </message>
+    <message>
+        <source>PROGRESSIVE</source>
+        <translation>Progressive</translation>
+    </message>
+    <message>
+        <source>QUALITY</source>
+        <translation>Qualité : </translation>
+    </message>
+    <message>
+        <source>RECORDING_MODE</source>
+        <translation>Mode : </translation>
+    </message>
+    <message>
+        <source>SETTINGS</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>SKIPPED_FRAMES</source>
+        <translation>Enregistrer avec FPS donné</translation>
+    </message>
+    <message>
+        <source>START</source>
+        <translation>Commencer</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_SetRotationPointDlg</name>
+    <message>
+        <source>LBL_X</source>
+        <translation>X:</translation>
+    </message>
+    <message>
+        <source>LBL_Y</source>
+        <translation>Y:</translation>
+    </message>
+    <message>
+        <source>LBL_Z</source>
+        <translation>Z:</translation>
+    </message>
+    <message>
+        <source>LBL_CENTER_OF_BOUNDING_BOX</source>
+        <translation>Centre de la boîte englobante</translation>
+    </message>
+    <message>
+        <source>RBUTTONGROUP_TITLE</source>
+        <translation>Le type du point de rotation</translation>
+    </message>
+    <message>
+        <source>USE_BBCENTER</source>
+        <translation>Utiliser le Centre de la boîte englobante</translation>
+    </message>
+    <message>
+        <source>LBL_ORIGIN</source>
+        <translation>Origine du système de coordonnées</translation>
+    </message>
+    <message>
+        <source>LBL_SELECTED_POINT</source>
+        <translation>Point Choisi</translation>
+    </message>
+    <message>
+        <source>LBL_TOORIGIN</source>
+        <translation>Réinitialiser</translation>
+    </message>
+    <message>
+        <source>LBL_SELECTPOINT</source>
+        <translation>Choisir un Point dans la Vue</translation>
+    </message>
+    <message>
+        <source>DLG_TITLE</source>
+        <translation>Définir le Point de Rotation </translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_ViewParameterDlg</name>
+    <message>
+        <source>LBL_X</source>
+        <translation>X :</translation>
+    </message>
+    <message>
+        <source>LBL_Y</source>
+        <translation>Y :</translation>
+    </message>
+    <message>
+        <source>LBL_Z</source>
+        <translation>Z :</translation>
+    </message>
+    <message>
+        <source>LBL_DX</source>
+        <translation>DX :</translation>
+    </message>
+    <message>
+        <source>LBL_DY</source>
+        <translation>DY :</translation>
+    </message>
+    <message>
+        <source>LBL_DZ</source>
+        <translation>DZ :</translation>
+    </message>
+    <message>
+        <source>PROJECTION_MODE</source>
+        <translation>Mode de Projection </translation>
+    </message>
+    <message>
+        <source>ORTHOGONAL_MODE</source>
+        <translation>Orthogonal</translation>
+    </message>
+    <message>
+        <source>PERSPECTIVE_MODE</source>
+        <translation>Perspective</translation>
+    </message>
+    <message>
+        <source>USE_BBCENTER</source>
+        <translation>Utiliser le Centre de la Boîte Englobante</translation>
+    </message>
+    <message>
+        <source>LBL_TOBBCENTER</source>
+        <translation>Initialiser au Centre de la Boîte Englobante</translation>
+    </message>
+    <message>
+        <source>LBL_TOORIGIN</source>
+        <translation>Initialiser à l&apos;Origine</translation>
+    </message>
+    <message>
+        <source>LBL_SELECTPOINT</source>
+        <translation>Choisir un Point de la Vue</translation>
+    </message>
+    <message>
+        <source>FOCAL_POINT</source>
+        <translation>Point Focal </translation>
+    </message>
+    <message>
+        <source>CAMERA_POSITION</source>
+        <translation>Position de la Caméra </translation>
+    </message>
+    <message>
+        <source>WORLD_COORDINATES</source>
+        <translation>Coordonnées du Monde </translation>
+    </message>
+    <message>
+        <source>FOCAL_RELATIVE</source>
+        <translation>Relative au Point Focal</translation>
+    </message>
+    <message>
+        <source>PROJECTION_DIRECTION</source>
+        <translation>Direction de la Projection :</translation>
+    </message>
+    <message>
+        <source>FOCAL_DISTANCE</source>
+        <translation>Distance Focale :</translation>
+    </message>
+    <message>
+        <source>VIEW_UP_DIRECTION</source>
+        <translation>Direction du Regard en Haut:</translation>
+    </message>
+    <message>
+        <source>ZOOMING</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>LBL_SCALE</source>
+        <translation>Echelle</translation>
+    </message>
+    <message>
+        <source>LBL_VIEW_ANGLE</source>
+        <translation>Angle de Visualisation</translation>
+    </message>
+    <message>
+        <source>DLG_TITLE</source>
+        <translation>Paramètres de la Visualisation</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_UpdateRateDlg</name>
+    <message>
+        <source>INFORMATION_FRAME_TITLE</source>
+        <translation>Information sur le Rendu</translation>
+    </message>
+    <message>
+        <source>STILL</source>
+        <translation>La fréquence réduite de mise à jour , FPS</translation>
+    </message>
+    <message>
+        <source>INPUT_FRAME_TITLE</source>
+        <translation>Activer</translation>
+    </message>
+    <message>
+        <source>NUMBER_CELLS</source>
+        <translation>Nombre de Cellules, -</translation>
+    </message>
+    <message>
+        <source>DESIRED</source>
+        <translation>La fréquence de mise à jour requise, FPS</translation>
+    </message>
+    <message>
+        <source>CURRENT_FPS</source>
+        <translation>La fréquence actuelle de mise à jour , FPS</translation>
+    </message>
+    <message>
+        <source>DLG_TITLE</source>
+        <translation>Fréquence de mise à jour </translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_ViewManager</name>
+    <message>
+        <source>VTK_VIEW_TITLE</source>
+        <translation>VTK scène:%1 - visualisateur:%2</translation>
+    </message>
+</context>
+<context>
+    <name>SVTK_Viewer</name>
+    <message>
+        <source>MEN_DUMP_VIEW</source>
+        <translation>Clicher la Vue...</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW_TOOLBAR</source>
+        <translation>Montrer la barre d&apos;outils</translation>
+    </message>
+    <message>
+        <source>MEN_CHANGE_BACKGROUD</source>
+        <translation>Changer l&apos;arrière-plan...</translation>
+    </message>
+</context>
+</TS>
index 9c94a2680f9775591cca7d2d46ebe8d82f7caa24..c82f8e5ebaf1e2bb2261576bbcf726d5a3bdcfec 100755 (executable)
@@ -98,13 +98,16 @@ nodist_libSalomeApp_la_SOURCES = $(MOC_FILES)
 # python modules
 salomepython_PYTHON = salome_pluginsmanager.py
 
+dist_salomescript_DATA = addvars2notebook.py
+
 dist_salomeres_DATA =          \
        resources/SalomeApp.ini \
        resources/SalomeApp.xml
 
 nodist_salomeres_DATA =                \
        SalomeApp_images.qm     \
-       SalomeApp_msg_en.qm
+       SalomeApp_msg_en.qm     \
+       SalomeApp_msg_fr.qm
 
 libSalomeApp_la_CPPFLAGS = $(PYTHON_INCLUDES) $(QT_INCLUDES) $(QWT_INCLUDES)   \
        $(CAS_CPPFLAGS) $(VTK_INCLUDES) $(BOOST_CPPFLAGS) @KERNEL_CXXFLAGS@     \
index 8dc5250f35cbbc3c139876e6c377b361b4100e24..00bf15f8fbd39a98a95cce08a47ff698cd5e3676 100644 (file)
@@ -84,6 +84,7 @@
 #include <QListWidget>
 #include <QGridLayout>
 #include <QMenu>
+#include <QtDebug>
 
 #include <SALOMEDSClient_ClientFactory.hxx>
 #include <Basics_Utils.hxx>
@@ -205,26 +206,45 @@ void SalomeApp_Application::start()
     // import/execute python scripts
     if ( pyfiles.count() > 0 && activeStudy() ) {
       SalomeApp_Study* appStudy = dynamic_cast<SalomeApp_Study*>( activeStudy() );
-      if ( appStudy ) {
+      PyConsole_Console* pyConsole = pythonConsole();
+      if ( appStudy && pyConsole ) {
         _PTR(Study) aStudy = appStudy->studyDS();
         if ( !aStudy->GetProperties()->IsLocked() ) {
           for (uint j = 0; j < pyfiles.count(); j++ ) {
             QFileInfo fi ( pyfiles[j] );
-            PyConsole_Console* pyConsole = pythonConsole();
-            if ( pyConsole ) {
-              QString extension = fi.suffix().toLower();
-              if ( fi.exists() ) {
-                // execute python script
-                QString command = QString( "execfile(r\"%1\")" ).arg( fi.absoluteFilePath() );
-                pyConsole->exec( command );
-              }
-              else {
-                // import python module
-                QString command = QString( "import %1" ).arg( pyfiles[j] );
-                if ( extension == "py" )
-                  command = QString( "import %1" ).arg( fi.completeBaseName() );
-                pyConsole->exec( command );
-              }
+            QFileInfo fipy ( pyfiles[j] + ".py" );
+           QString command = QString( "execfile(r\"%1\")" );
+           if ( fi.isAbsolute() ) {
+             if ( fi.exists() )
+               pyConsole->exec( command.arg( fi.absoluteFilePath() ) );
+             else if ( fipy.exists() )
+               pyConsole->exec( command.arg( fipy.absoluteFilePath() ) );
+             else 
+               qDebug() << "Can't execute file" << pyfiles[j];
+           }
+           else {
+             bool found = false;
+             QStringList dirs;
+             dirs << QDir::currentPath();
+             if ( ::getenv( "PYTHONPATH" ) )
+               dirs += QString( ::getenv( "PYTHONPATH" ) ).split( QRegExp( "[:|;]" ) );
+             foreach( QString dir, dirs ) {
+               qDebug() << "try" << QFileInfo( dir, pyfiles[j] ).absoluteFilePath();
+               qDebug() << "try" << QFileInfo( dir, pyfiles[j] + ".py" ).absoluteFilePath();
+               if ( QFileInfo( dir, pyfiles[j] ).exists() ) {
+                 pyConsole->exec( command.arg( QFileInfo( dir, pyfiles[j] ).absoluteFilePath() ) );
+                 found = true;
+                 break;
+               }
+               else if ( QFileInfo( dir, pyfiles[j] + ".py" ).exists() ) {
+                 pyConsole->exec( command.arg( QFileInfo( dir, pyfiles[j] + ".py" ).absoluteFilePath() ) );
+                 found = true;
+                 break;
+               }
+             }
+             if ( !found ) {
+               qDebug() << "Can't execute file" << pyfiles[j];
+             }
             }
           }
         }
diff --git a/src/SalomeApp/addvars2notebook.py b/src/SalomeApp/addvars2notebook.py
new file mode 100644 (file)
index 0000000..6f23755
--- /dev/null
@@ -0,0 +1,67 @@
+
+import os
+import os.path
+
+def addvars2notebook(filename):
+    #
+    vars_and_values = []
+    contents = []
+    #
+    directory = os.path.dirname(filename)
+    base = os.path.basename(filename)
+    prefix = base[:-3] # remove ".py"
+    prefix = prefix + '_'
+    from os import listdir
+    l = listdir(directory)
+    for f in l:
+        if f.find(prefix) != 0: continue
+        if f[-3:] != ".py": continue
+        module = f[len(prefix):-3]
+        try:
+            mod = __import__("addvars2notebook_%s"%(module))
+        except ImportError:
+            continue
+        try:
+            func = mod.addvars2notebook
+        except AttributeError:
+            continue
+        fff = os.path.join(directory, f)
+        content = func(fff, vars_and_values)
+        contents.append([fff, content])
+        pass
+    #
+    if vars_and_values:
+        stream = open(filename)
+        content = stream.read()
+        stream.close()
+        fields = content.split("import iparameters")
+        if len(fields) == 2:
+            begin = fields[0]
+            if begin.find("## NoteBook E.A.") >= 0:
+                begin = begin.split("## NoteBook E.A.")[0]
+                pass
+            end = "import iparameters" + fields[1]
+            content = begin
+            content += "## NoteBook E.A.\n"
+            for var, value in vars_and_values:
+                content += "notebook.set(%s,%s)\n"%(var.__repr__(), value)
+                pass
+            content += end
+            stream = open(filename, "w")
+            stream.write(content)
+            stream.close()
+            #
+            for fff, content in contents:
+                stream = open(fff, "w")
+                stream.write(content)
+                stream.close()
+                pass
+            pass
+        pass
+    #
+    return
+
+if __name__ == "__main__":
+    import sys
+    addvars2notebook(sys.argv[1])
+    pass
index 46ab023a55967ca7581ff76a6e4fd916cf13fb2c..542811fc798615783821c0a91bc299d917d3ca44 100644 (file)
@@ -42,6 +42,7 @@
   </section>
   <section name="language">
     <!-- Language settings (resource manager)-->
+    <parameter name="languages"   value="en,fr"/>
     <parameter name="language"    value="en"/>
     <parameter name="translators" value="%P_msg_%L.qm|%PM_msg_%L.qm|%P_icons.qm|%P_images.qm|%PM_images.qm"/>
   </section>
@@ -64,6 +65,8 @@
   </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="Plot2d"       value="${GUI_ROOT_DIR}/share/salome/resources/gui"/>
     <parameter name="User's Guide"      value="${KERNEL_ROOT_DIR}/share/doc/salome/gui/KERNEL/index.html"/>
     <parameter name="Developer's Guide" value="${KERNEL_ROOT_DIR}/share/doc/salome/tui/KERNEL/index.html"/>
   </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+S"/>
+    <parameter name="Hide object(s)" value="Ctrl+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+T"/>
+    <parameter name="Bottom view" value="Ctrl+Alt+B"/>
+    <parameter name="Left view" value="Ctrl+Alt+L"/>
+    <parameter name="Right view" value="Ctrl+Alt+R"/>
+    <parameter name="Reset view" value="Ctrl+Alt+R"/>
+  </section>
+  <section name="shortcuts:Geometry">
+    <parameter name="Increase number of isolines" value="Meta+I"/>
+    <parameter name="Decrease number of isolines" value="Ctrl+Alt+G"/>
+    <parameter name="Increase transparency" value="Ctrl+Alt+T"/>
+    <parameter name="Decrease transparency" value="Alt+T"/>
+  </section>
 </document>
index e12a7d532d3a74ca4c6fa96d5184ae6fafde962b..2e04655b54a29617f8bb7a18768c75130f37b540 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
@@ -87,15 +66,15 @@ Python file must include only letters, digits and underscores and start from let
     </message>
     <message>
         <source>ERR_INCOMPATIBLE_TYPE</source>
-        <translation>Variable with name "%1" has incompatible numeric type</translation>
+        <translation>Variable with name &quot;%1&quot; has incompatible numeric type</translation>
     </message>
     <message>
         <source>ERR_INVALID_VALUE</source>
-        <translation>Value hasn't been validated</translation>
+        <translation>Value hasn&apos;t been validated</translation>
     </message>
     <message>
         <source>ERR_NO_VARIABLE</source>
-        <translation>Variable with name "%1" doesn't exist</translation>
+        <translation>Variable with name &quot;%1&quot; doesn&apos;t exist</translation>
     </message>
 </context>
 <context>
@@ -185,6 +164,10 @@ Do you want to reload it ?</translation>
         <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>
@@ -277,6 +260,10 @@ Do you want to reload it ?</translation>
         <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>
@@ -309,6 +296,10 @@ Do you want to reload it ?</translation>
         <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>APPCLOSE_CAPTION</source>
         <translation>Close active study</translation>
@@ -382,101 +373,101 @@ Do you want to reload it ?</translation>
 </context>
 <context>
     <name>NoteBook_Table</name>
-        <message>
-           <source>REMOVE_VARIABLE_IS_USED</source>
-           <translation>Variable with name "%1" is used in the study.
+    <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 "%1" is used in the study.
+    </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 Name</translation>
-        </message>
-        <message>      
-           <source>VARVALUE_COLUMN</source>
-           <translation>Variable 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 "%1" exists</translation>
-       </message>
+    </message>
+    <message>
+        <source>VARNAME_COLUMN</source>
+        <translation>Variable Name</translation>
+    </message>
+    <message>
+        <source>VARVALUE_COLUMN</source>
+        <translation>Variable 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_NoteBookDlg</name>
-        <message>
-           <source>NOTEBOOK_TITLE</source>
-           <translation>Salome 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.
+    <message>
+        <source>NOTEBOOK_TITLE</source>
+        <translation>Salome 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>
+    </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
+    <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 )
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Specify a floating-point value in range ( %1; %2 )
 with %3-digit precision</translation>
-        </message>
+    </message>
 </context>
 <context>
-    <name>SalomeApp_IntSpinBox</name>  
-        <message>
-            <source>VALID_RANGE_VAR_MSG</source>
-            <translation>Specify either a variable name or
+    <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>
+    </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/SalomeApp/resources/SalomeApp_msg_fr.ts b/src/SalomeApp/resources/SalomeApp_msg_fr.ts
new file mode 100755 (executable)
index 0000000..16e6b53
--- /dev/null
@@ -0,0 +1,461 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>WRN_FILE_NAME_BAD</source>
+        <translation>Indiquez le nom de fichier correctement.
+Le fichier Python ne devrait inclure que de lettres, chiffres et soulignages et commencer avec une lettre ou soulignage.</translation>
+    </message>
+    <message>
+        <source>WRN_FILE_NOT_EXIST</source>
+        <translation>Le fichier %1 n&apos;existe pas.</translation>
+    </message>
+    <message>
+        <source>CLOSE_LOCKED_STUDY</source>
+        <translation>Fermer l&apos;étude?</translation>
+    </message>
+    <message>
+        <source>PUBLISH_IN_STUDY</source>
+        <translation>Publier dans l&apos;étude</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>Sauvegarder l&apos;état d&apos;IHM: %1</translation>
+    </message>
+    <message>
+        <source>SAVE_POINT_DEF_NAME</source>
+        <translation>L&apos;état 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>Ref.Entrée</translation>
+    </message>
+    <message>
+        <source>ERR_INCOMPATIBLE_TYPE</source>
+        <translation>Le tupe 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>
+</context>
+<context>
+    <name>SalomeApp_Application</name>
+    <message>
+        <source>ALL_FILES_FILTER</source>
+        <translation>Tous les fichiers (*.*)</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_UNLOAD</source>
+        <translation>V&amp;ider</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CLOSE</source>
+        <translation>&amp;Fermer sans modifications</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>Enregistrer &amp;Visualiser</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_SAVE</source>
+        <translation>&amp;Sauvegarder &amp;&amp; Fermer</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Ouvrit 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 visualisateurs, des scènes, 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 clipper l&apos;Sauvegarder 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>Ce document %1 déjà existe dans l&apos;étude.
+Allez-vous rouvrir ce document ?</translation>
+    </message>
+    <message>
+        <source>MEN_RENAME_VS</source>
+        <translation>Renommer</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_CATALOG_GENERATOR</source>
+        <translation>Générateur du Catalogue</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>PYTHON_FILES_FILTER</source>
+        <translation>Fichiers PYTHON (*.py)</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_DESCRIPTION</source>
+        <translation>Voulez-vous fermer ou vider l&apos;étude avant de la fermer?</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>Navigateur d&apos;Objets</translation>
+    </message>
+    <message>
+        <source>STUDY_LOCKED</source>
+        <translation>BLOQUEE</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CANCEL</source>
+        <translation>&amp;Annuler</translation>
+    </message>
+    <message>
+        <source>OBJ_BROWSER_NAME</source>
+        <translation>Objet</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_REGISTRY_DISPLAY</source>
+        <translation>Visualiser Registre</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>Ouvrir Scrip&amp;t...</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_TOOLS</source>
+        <translation>&amp;Outils</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_DUMP_STUDY</source>
+        <translation>Clicher l&apos;étude</translation>
+    </message>
+    <message>
+        <source>MEN_VIEW_WNDS</source>
+        <translation>Windows</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_DUMP_STUDY</source>
+        <translation>&amp;Clicher l&apos;étude...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_CATALOG_GENERATOR</source>
+        <translation>Générer une catalogue XML  de l&apos;interface du composant</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_DUMP_STUDY</source>
+        <translation>Clicher l&apos;étude au script python</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_FILE_NOTEBOOK</source>
+        <translation>Ouvrir le Carnet</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_FILE_NOTEBOOK</source>
+        <translation>Car&amp;net...</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_NOTEBOOK</source>
+        <translation>Ouvrir le Carnet</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 de Défaut</translation>
+    </message>
+    <message>
+        <source>PRP_DESK_FILE_LOAD_SCRIPT</source>
+        <translation>Ouvrir le script python du fichier</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_CATALOG_GENERATOR</source>
+        <translation>Catalogue &amp;Générateur</translation>
+    </message>
+    <message>
+        <source>APPCLOSE_CAPTION</source>
+        <translation>Fermer l&apos;étude actuelle</translation>
+    </message>
+    <message>
+        <source>MEN_DESK_MRU</source>
+        <translation>Le plus recemment utilisé</translation>
+    </message>
+    <message>
+        <source>TOT_DESK_MRU</source>
+        <translation>Le plus recemment utilisé</translation>
+    </message>
+    <message>
+        <source>ACTIVATE_MODULE_OP_LOAD</source>
+        <translation>&amp;Charger...</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>Autheur</translation>
+    </message>
+    <message>
+        <source>PRP_LOCKED</source>
+        <translation>Bloqué</translation>
+    </message>
+    <message>
+        <source>PRP_MODIFICATIONS</source>
+        <translation>Modifications</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é</translation>
+    </message>
+    <message>
+        <source>PRP_DATE</source>
+        <translation>Crée</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>Arreter les serveurs autonomes</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.
+Est-ce que vous allez 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.
+Est-ce que vous allez 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_NoteBookDlg</name>
+    <message>
+        <source>NOTEBOOK_TITLE</source>
+        <translation>Carnet 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 Carnet</translation>
+    </message>
+    <message>
+        <source>CLOSE_DESCRIPTION</source>
+        <translation>Allez-vous sauvegarder les changements faits au Carnet?</translation>
+    </message>
+    <message>
+        <source>INCORRECT_DATA</source>
+        <translation>Au moins une variable a été définie incorrectement.
+Editez ses paramètres ou l&apos;éliminez de la table.</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 le nom de la variable ou
+la valeur du point flottant au diapason ( %1; %2 )
+avec la précision de %3 chiffres</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Indiquez la valeur du point flottant au diapason ( %1; %2 )
+avec la précision de %3 chiffres</translation>
+    </message>
+</context>
+<context>
+    <name>SalomeApp_IntSpinBox</name>
+    <message>
+        <source>VALID_RANGE_VAR_MSG</source>
+        <translation>Indiquez le nom de la variable ou
+une valeur entière au diapason ( %1; %2 )</translation>
+    </message>
+    <message>
+        <source>VALID_RANGE_NOVAR_MSG</source>
+        <translation>Indiquez une valeur entière au diapason ( %1; %2 )</translation>
+    </message>
+</context>
+</TS>
index 7e3be00c33c03653cb378f47c2fa0fbdf542748c..594ca26fbc39ec586c3494ae8be921d8a11f211a 100755 (executable)
@@ -401,7 +401,6 @@ void shutdownServers( SALOME_NamingService* theNS )
 // ---------------------------- MAIN -----------------------
 int main( int argc, char **argv )
 {
-
   if(getenv ("DEBUGGER"))
     {
       setsig(SIGSEGV,&Handler);
@@ -440,7 +439,7 @@ int main( int argc, char **argv )
     SUIT_ResourceMgr resMgr( "SalomeApp", QString( "%1Config" ) );
     resMgr.setCurrentFormat( "xml" );
     resMgr.setWorkingMode( QtxResourceMgr::IgnoreUserValues );
-    resMgr.loadLanguage( "LightApp", "en" );
+    resMgr.loadLanguage( "LightApp" );
     //
     splash = QtxSplash::splash( QPixmap() );
     splash->readSettings( &resMgr );
index 4b2d215a5db6bf771ee7b3febc38d8133e067918..ec4efbf620b967fb8252ef1e134f2b88a53fa47f 100644 (file)
@@ -65,3 +65,5 @@ libSalomeStyle_la_LDFLAGS  = $(QT_MT_LIBS)    \
        ../Qtx/libqtx.la
 
 dist_salomeres_DATA = resources/SalomeStyle.xml
+
+nodist_salomeres_DATA = Style_msg_fr.qm
index 326dbcc03a2389bcfe7b5ebf065b406257cf3040..e748d06c65c162e514e61f98fa91171fe3b5ecb5 100644 (file)
@@ -127,7 +127,7 @@ void Style_PrefDlg::PaletteEditor::addColumn( const QString& title )
 
   l->addWidget( myActiveLab   = new QLabel( tr( "Active" ),   myContainer ), myCurrentRow, myCurrentColumn*4+1 );
   l->addWidget( myInactiveLab = new QLabel( tr( "Inactive" ), myContainer ), myCurrentRow, myCurrentColumn*4+2 );
-  l->addWidget( myDisabledLab = new QLabel( tr( "Disable" ),  myContainer ), myCurrentRow, myCurrentColumn*4+3 );
+  l->addWidget( myDisabledLab = new QLabel( tr( "Disabled" ), myContainer ), myCurrentRow, myCurrentColumn*4+3 );
   int w = 0;
   w = qMax( w, myActiveLab->sizeHint().width() );
   w = qMax( w, myInactiveLab->sizeHint().width() );
@@ -376,7 +376,7 @@ QString Style_PrefDlg::PaletteEditor::idToName( int id )
   case Style_Model::BrightText:        //  7
     name = tr( "Bright text" );      break;
   case Style_Model::ButtonText:        //  8
-    name = tr( "Buttont text" );      break;
+    name = tr( "Button text" );      break;
   case Style_Model::Base:              //  9
     name = tr( "Base" );             break;
   case Style_Model::Window:            // 10
@@ -496,7 +496,7 @@ Style_PrefDlg::Style_PrefDlg( QWidget* parent )
   main->setMargin( 0 ); main->setSpacing( SPACING );
 
   // create main widgets
-  myStyleCheck = new QCheckBox( tr( "Use SALOME Style" ), this );
+  myStyleCheck = new QCheckBox( tr( "Enable SALOME Style" ), this );
   QFrame* fr = new QFrame( this );
   fr->setFrameStyle( QFrame::Box | QFrame::Sunken );
 
diff --git a/src/Style/resources/Style_msg_fr.ts b/src/Style/resources/Style_msg_fr.ts
new file mode 100644 (file)
index 0000000..8ff55f0
--- /dev/null
@@ -0,0 +1,287 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>Style_PrefDlg</name>
+    <message>
+        <source>Quick</source>
+        <translation>Rapide</translation>
+    </message>
+    <message>
+        <source>Auto</source>
+        <translation>Auto</translation>
+    </message>
+    <message>
+        <source>Base colors</source>
+        <translation>Couleurs de base</translation>
+    </message>
+    <message>
+        <source>Additional colors</source>
+        <translation>Couleurs supplémentaires</translation>
+    </message>
+    <message>
+        <source>Active</source>
+        <translation>Actif</translation>
+    </message>
+    <message>
+        <source>Inactive</source>
+        <translation>Désactivé</translation>
+    </message>
+    <message>
+        <source>Disabled</source>
+        <translation>Désactivé</translation>
+    </message>
+    <message>
+        <source>Window text</source>
+        <translation>Texte du fenêtre</translation>
+    </message>
+    <message>
+        <source>Button</source>
+        <translation>Touche</translation>
+    </message>
+    <message>
+        <source>Light</source>
+        <translation>Clair</translation>
+    </message>
+    <message>
+        <source>Midlight</source>
+        <translation>Demi-clair</translation>
+    </message>
+    <message>
+        <source>Dark</source>
+        <translation>Foncé</translation>
+    </message>
+    <message>
+        <source>Mid</source>
+        <translation>Moyen</translation>
+    </message>
+    <message>
+        <source>Text</source>
+        <translation>Texte</translation>
+    </message>
+    <message>
+        <source>Bright text</source>
+        <translation>Texte éclairé</translation>
+    </message>
+    <message>
+        <source>Button text</source>
+        <translation>Texte de la touche</translation>
+    </message>
+    <message>
+        <source>Base</source>
+        <translation>Base</translation>
+    </message>
+    <message>
+        <source>Window</source>
+        <translation>Fenêtre</translation>
+    </message>
+    <message>
+        <source>Shadow</source>
+        <translation>Ombre</translation>
+    </message>
+    <message>
+        <source>Highlight</source>
+        <translation>Surligner</translation>
+    </message>
+    <message>
+        <source>Highlighted text</source>
+        <translation>Texte surligné</translation>
+    </message>
+    <message>
+        <source>Link</source>
+        <translation>Lien</translation>
+    </message>
+    <message>
+        <source>Visited link</source>
+        <translation>Lien visité</translation>
+    </message>
+    <message>
+        <source>Alternate base</source>
+        <translation>Base alternative</translation>
+    </message>
+    <message>
+        <source>Tooltip base</source>
+        <translation>Base d&apos;infobulle</translation>
+    </message>
+    <message>
+        <source>Tooltip text</source>
+        <translation>Texte d&apos;infobulle</translation>
+    </message>
+    <message>
+        <source>Border top</source>
+        <translation>Frontière de dessus</translation>
+    </message>
+    <message>
+        <source>Border bottom</source>
+        <translation>Frontière de dessous</translation>
+    </message>
+    <message>
+        <source>Tab border top</source>
+        <translation>Frontière de dessus de l&apos;onglet</translation>
+    </message>
+    <message>
+        <source>Tab border bottom</source>
+        <translation>Frontière de dessous de l&apos;onglet</translation>
+    </message>
+    <message>
+        <source>Field light</source>
+        <translation>Champ clair</translation>
+    </message>
+    <message>
+        <source>Field dark</source>
+        <translation>Champ foncé</translation>
+    </message>
+    <message>
+        <source>Slider</source>
+        <translation>Barre de défilement</translation>
+    </message>
+    <message>
+        <source>Lines</source>
+        <translation>Lignes</translation>
+    </message>
+    <message>
+        <source>Widget center</source>
+        <translation>Centre de l&apos;objet-fenêtre</translation>
+    </message>
+    <message>
+        <source>Widget border</source>
+        <translation>Frontière de l&apos;objet-fenêtre</translation>
+    </message>
+    <message>
+        <source>Header</source>
+        <translation>Titre</translation>
+    </message>
+    <message>
+        <source>Progress bar</source>
+        <translation>Barre de progrès</translation>
+    </message>
+    <message>
+        <source>Pointer</source>
+        <translation>Pointeur</translation>
+    </message>
+    <message>
+        <source>Checked</source>
+        <translation>Coché</translation>
+    </message>
+    <message>
+        <source>Table grid</source>
+        <translation>Maillage de la table</translation>
+    </message>
+    <message>
+        <source>SALOME style preferences</source>
+        <translation>Préférences de style Salomé</translation>
+    </message>
+    <message>
+        <source>Enable SALOME Style</source>
+        <translation>Activer le style Salomé</translation>
+    </message>
+    <message>
+        <source>Font</source>
+        <translation>Caractères</translation>
+    </message>
+    <message>
+        <source>Type</source>
+        <translation>Type</translation>
+    </message>
+    <message>
+        <source>None</source>
+        <translation>Aucun</translation>
+    </message>
+    <message>
+        <source>Horizontal</source>
+        <translation>Horisontal</translation>
+    </message>
+    <message>
+        <source>Inclined</source>
+        <translation>Incliné</translation>
+    </message>
+    <message>
+        <source>Transparency</source>
+        <translation>Transparence</translation>
+    </message>
+    <message>
+        <source>Widgets rounding</source>
+        <translation>Arrondi des objets-fenêtres</translation>
+    </message>
+    <message>
+        <source>Buttons</source>
+        <translation>Touches</translation>
+    </message>
+    <message>
+        <source>Edit boxes</source>
+        <translation>Editer les boîtes</translation>
+    </message>
+    <message>
+        <source>Frames</source>
+        <translation>Cadres</translation>
+    </message>
+    <message>
+        <source>Sliders</source>
+        <translation>Barres de défilement</translation>
+    </message>
+    <message>
+        <source>Anti-aliased borders</source>
+        <translation>Frontières d&apos;anticrénelage</translation>
+    </message>
+    <message>
+        <source>Handle</source>
+        <translation>Pointeur</translation>
+    </message>
+    <message>
+        <source>Horizontal spacin</source>
+        <translation>Espacement horisontal</translation>
+    </message>
+    <message>
+        <source>Vertical spacing</source>
+        <translation>Espacement vertical</translation>
+    </message>
+    <message>
+        <source>Splitter handle size</source>
+        <translation>Taille du pointeur du diviseur</translation>
+    </message>
+    <message>
+        <source>Slider handle size</source>
+        <translation>Taille du curseur de la barre de défilement</translation>
+    </message>
+    <message>
+        <source>Widget effect</source>
+        <translation>Effet de l&apos;objet-fenêtre</translation>
+    </message>
+    <message>
+        <source>Highlight widgets</source>
+        <translation>Surligner les objets fenêtres</translation>
+    </message>
+    <message>
+        <source>Auto raise widgets</source>
+        <translation>Activer l&apos;objet fenêtre automatiquement</translation>
+    </message>
+    <message>
+        <source>Colors</source>
+        <translation>Couleurs</translation>
+    </message>
+    <message>
+        <source>Properties</source>
+        <translation>Paramètres</translation>
+    </message>
+    <message>
+        <source>[ Current ]</source>
+        <translation>[ Actuel ]</translation>
+    </message>
+    <message>
+        <source>[ Default ]</source>
+        <translation>[ Défaut ]</translation>
+    </message>
+    <message>
+        <source>Delete user theme</source>
+        <translation>Supprimer la thème d&apos;utilisateur</translation>
+    </message>
+    <message>
+        <source>Remove theme %1?</source>
+        <translation>Supprimer la thème %1?</translation>
+    </message>
+    <message>
+        <source>Custom schema</source>
+        <translation>Schéma actuel</translation>
+    </message>
+</context>
+</TS>
index 0c41e9a8d7f0258fac6a0676a84d6f09895f7c5c..462bb6d65830cb7c4c437fa15b7cb5213a6923f6 100755 (executable)
@@ -48,7 +48,8 @@ nodist_libToolsGUI_la_SOURCES = $(MOC_FILES)
 
 # .po files to transform in .qm
 nodist_salomeres_DATA =                \
-       ToolsGUI_msg_en.qm
+       ToolsGUI_msg_en.qm      \
+       ToolsGUI_msg_fr.qm
 
 libToolsGUI_la_CPPFLAGS = $(QT_INCLUDES) $(CAS_CPPFLAGS) $(BOOST_CPPFLAGS)     \
        @KERNEL_CXXFLAGS@ @CORBA_CXXFLAGS@ @CORBA_INCLUDES@                     \
index ef267b1e3524f9faaa9813f52bf0c6dad12d6526..bc4a9f85dcae4108eb1459d03c76dbb5897ce3d2 100755 (executable)
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SALOME RegistryDisplay : GUI for Registry server implementation
-//  File   : ToolsGUI_RegWidget.cxx
-//  Author : Pascale NOYRET, EDF
-//
 # include "ToolsGUI_RegWidget.h"
 
-# include <QAction>
-# include <QDialog>
-# include <QSpinBox>
-# include <QPushButton>
-# include <QTreeWidget>
-# include <QTabWidget> 
-# include <QStatusBar>
-# include <QTextEdit>
-# include <QTextStream>
-# include <QTimer>
-# include <QToolBar>
-# include <QEvent>
-# include <QKeyEvent>
-# include <QCloseEvent>
-# include <QFileInfo>
-# include <QGridLayout>
-# include <QLabel>
-# include <QGroupBox>
-
-# include <SALOME_NamingService.hxx>
-# include <ServiceUnreachable.hxx>
-# include <Utils_SINGLETON.hxx>
-# include <Utils_CommException.hxx>
-
-# include <utilities.h>
-# include <OpUtil.hxx>
-
-# include <Qtx.h>
-
-typedef int PIXELS;
+#include <QApplication>
+#include <QInputDialog>
+#include <QMenuBar>
+#include <QStatusBar>
+#include <QTabWidget>
+#include <QTextEdit>
+#include <QTimer>
+#include <QToolBar>
+#include <QTreeWidget>
+#include <QVBoxLayout>
+
+#include <Qtx.h>
+
+#include <SALOME_NamingService.hxx>
+#include <Utils_SINGLETON.hxx>
+#include <Utils_CommException.hxx>
 
 #define MARGIN_SIZE      11
 #define SPACING_SIZE      6
 #define MIN_SPIN_WIDTH  100 
 
-#define BOLD( text ) ( QString( "<b>" ) + QString( text ) + QString( "</b>" ) )
+#define BOLD( text ) QString( "<b>%1</b>" ).arg( QString( text ) )
 
 static const char* const time_data[] = { 
 "16 16 6 1",
@@ -138,315 +120,32 @@ static const char* const refresh_data[] = {
 "......aaaaa....."};
 
 /*!
-  \brief Create components list.
+  \brief Get access to the Registry service
   \internal
   \param orb CORBA ORB reference
-  \return list of registered components
+  \return reference to the Registry service
 */
-static Registry::Components_var MakeRegistry( CORBA::ORB_var& orb )
+static Registry::Components_ptr GetRegistry( CORBA::ORB_ptr orb )
 {
-
-  const char *registryName="Registry" ;
+  static const char* registryName = "Registry";
+  Registry::Components_var aRegistry;
   
-  SALOME_NamingService &naming = *SINGLETON_<SALOME_NamingService>::Instance() ;
-  naming.init_orb( orb ) ;
+  SALOME_NamingService& naming = *SINGLETON_<SALOME_NamingService>::Instance();
+  naming.init_orb( orb );
   
-  // Recuperation de la reference de l'objet
-  CORBA::Object_var object = 0 ;
+  CORBA::Object_var object = 0;
   try
   {
-    SCRUTE(registryName) ;
-    object = naming.Resolve( registryName ) ;
-    if(CORBA::is_nil(object)) throw CommException( "unable to find the RegistryService" ) ;
+    object = naming.Resolve( registryName );
+    if ( CORBA::is_nil( object ) ) throw CommException( "Unable to find the Registry service" );
+    aRegistry = Registry::Components::_narrow( object );
   }
-  catch( const ServiceUnreachable& ex )
+  catch( const CORBA::Exception& ex )
   {
-    MESSAGE( ex.what() )
-    exit( EXIT_FAILURE ) ;
-  }
-  catch( const CORBA::Exception& )
-  {
-    exit( EXIT_FAILURE ) ;
-  }
-
-  // Specialisation de l'objet generique
-
-  return Registry::Components::_narrow( object ) ;
-}
-
-/*!
-  \class ToolsGUI_RegWidget::InfoWindow
-  \brief Information window.
-  \internal
-*/
-
-class ToolsGUI_RegWidget::InfoWindow : public QMainWindow
-{
-public:
-  InfoWindow( QWidget* parent );
-
-  void setText( const QString& text );
-
-protected:
-  void keyPressEvent( QKeyEvent * e );
-
-private:
-  QTextEdit* myTextView;
-};
-
-/*!
-  \brief Constructor.
-  \internal
-  \param parent parent widget
-*/
-ToolsGUI_RegWidget::InfoWindow::InfoWindow( QWidget* parent )
-: QMainWindow( parent )
-{
-  setAttribute( Qt::WA_DeleteOnClose );
-
-  myTextView = new QTextEdit( this );
-  myTextView->setReadOnly( true );
-  setCentralWidget( myTextView );
-  setMinimumSize( 450, 250 );
-}
-
-/*!
-  \brief Set text to the information window.
-  \internal
-  \param text ionfo text
-*/
-void ToolsGUI_RegWidget::InfoWindow::setText( const QString& text )
-{
-  myTextView->setText( text );
-}
-
-/*!
-  \brief Key press event handler. Closeswindow on \c Escape key pressing.
-  \internal
-  \param e key press event
-*/
-void ToolsGUI_RegWidget::InfoWindow::keyPressEvent( QKeyEvent * e )
-{
-  QMainWindow::keyPressEvent( e );
-  if ( e->key() == Qt::Key_Escape )
-    close();
-}
-
-/*!
-  \class ToolsGUI_RegWidget::HelpWindow
-  \brief Help window.
-  \internal
-*/
-
-class ToolsGUI_RegWidget::HelpWindow : public QMainWindow
-{
-public:
-  HelpWindow( QWidget* parent );
-  ~HelpWindow();
-
-  void setText( const QString& text );
-
-private:
-  QTextEdit* myTextView;
-};
-
-/*!
-  \brief Constructor.
-  \internal
-  \param parent parent widget
-*/
-ToolsGUI_RegWidget::HelpWindow::HelpWindow( QWidget* parent ) 
-: QMainWindow( parent )
-{
-  setAttribute( Qt::WA_DeleteOnClose );
-  setWindowTitle( tr( "Help" ) );
-
-  myTextView = new QTextEdit( this );
-  myTextView->setReadOnly( true );
-  QPalette pal = myTextView->palette();
-
-  pal.setBrush( QPalette::Active, QPalette::Highlight,       QBrush( QColor( 0, 0, 128 ) ) );
-  pal.setBrush( QPalette::Active, QPalette::HighlightedText, QBrush( Qt::white ) );
-  pal.setBrush( QPalette::Active, QPalette::Base,            QBrush( QColor( 255,255,220 ) ) );
-  pal.setBrush( QPalette::Active, QPalette::Text,            QBrush( Qt::black ) );
-
-  pal.setBrush( QPalette::Inactive, QPalette::Highlight,       QBrush( QColor( 0, 0, 128 ) ) );
-  pal.setBrush( QPalette::Inactive, QPalette::HighlightedText, QBrush( Qt::white ) );
-  pal.setBrush( QPalette::Inactive, QPalette::Base,            QBrush( QColor( 255,255,220 ) ) );
-  pal.setBrush( QPalette::Inactive, QPalette::Text,            QBrush( Qt::black ) );
-
-  pal.setBrush( QPalette::Disabled, QPalette::Highlight,       QBrush( QColor( 0, 0, 128 ) ) );
-  pal.setBrush( QPalette::Disabled, QPalette::HighlightedText, QBrush( Qt::white ) );
-  pal.setBrush( QPalette::Disabled, QPalette::Base,            QBrush( QColor( 255,255,220 ) ) );
-  pal.setBrush( QPalette::Disabled, QPalette::Text,            QBrush( Qt::black ) );
-
-  myTextView->setPalette( pal );
-  
-  setCentralWidget( myTextView );
-  setMinimumSize( 450, 250 );
-
-  QFile f ( "tmp.txt" );
-  if ( f.open( QIODevice::ReadOnly ) ) {
-    QTextStream t( &f ); 
-    while ( !t.atEnd() ) {
-      myTextView->append( t.readLine() );
-    }
+    MESSAGE( "Error: can't access Registry server" );
   }
-  f.close();
-}
-
-/*!
-  \brief Destructor.
-  \internal
-*/
-ToolsGUI_RegWidget::HelpWindow::~HelpWindow()
-{
-};
-
-/*!
-  \brief Set text to the help window.
-  \internal
-  \param text help text
-*/
-void ToolsGUI_RegWidget::HelpWindow::setText( const QString& text )
-{
-  myTextView->setText( text );
-}
-
-/*!
-  \class ToolsGUI_RegWidget::IntervalWindow
-  \brief Dialog box to enter time delay between registry window updates
-  \internal
-*/
-
-class ToolsGUI_RegWidget::IntervalWindow : public QDialog
-{
-public:
-  IntervalWindow( QWidget* parent );
-  ~IntervalWindow();
-  
-  QPushButton* Ok();
-  QPushButton* Cancel();
-
-  int getValue();
-  void setValue( int );
-
-private:
-  QSpinBox* mySpinBox;
-  QPushButton* myButtonOk;
-  QPushButton* myButtonCancel;
-};
-
-/*!
-  \brief Constructor.
-  \internal
-  \param parent parent widget
-*/
-ToolsGUI_RegWidget::IntervalWindow::IntervalWindow ( QWidget* parent )
-: QDialog( parent )
-{
-  setModal( true );
-  setAttribute( Qt::WA_DeleteOnClose );
-
-  setWindowTitle( tr( "Refresh Interval"  ) );
-  setSizeGripEnabled( true );
-
-  QGridLayout* topLayout = new QGridLayout( this );
-  topLayout->setSpacing( SPACING_SIZE );
-  topLayout->setMargin( MARGIN_SIZE );
-
-  QGroupBox* intervalGrp = new QGroupBox( this );
-  intervalGrp->setObjectName( "intervalGrp" );
-  QGridLayout* intervalGrpLayout = new QGridLayout( intervalGrp );
-  intervalGrpLayout->setAlignment( Qt::AlignTop );
-  intervalGrpLayout->setSpacing( SPACING_SIZE );
-  intervalGrpLayout->setMargin( MARGIN_SIZE  );  
-
-  QHBoxLayout* aBtnLayout = new QHBoxLayout;
-  aBtnLayout->setSpacing( SPACING_SIZE );
-  aBtnLayout->setMargin( 0 );
-
-  myButtonOk = new QPushButton( this );
-  myButtonOk->setObjectName( "buttonOk" );
-  myButtonOk->setText( tr( "BUT_OK"  ) );
-  myButtonOk->setAutoDefault( TRUE );
-  myButtonOk->setDefault( TRUE );
-  
-  myButtonCancel = new QPushButton( this );
-  myButtonCancel->setObjectName( "buttonCancel" );
-  myButtonCancel->setText( tr( "BUT_CANCEL"  ) );
-  myButtonCancel->setAutoDefault( TRUE );
-
-  QLabel* TextLabel = new QLabel( intervalGrp );
-  TextLabel->setObjectName( "TextLabel" );
-  TextLabel->setText( tr( "Please, enter a number of seconds:"  ) );
-
-  mySpinBox = new QSpinBox( intervalGrp );
-  mySpinBox->setMinimum( 1 );
-  mySpinBox->setMaximum( 999999999 );
-  mySpinBox->setSingleStep( 1 );
-  mySpinBox->setObjectName( "SpinBox" );
-  mySpinBox->setValue( 100 );
-  mySpinBox->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
-  mySpinBox->setMinimumWidth(MIN_SPIN_WIDTH);
-
-  intervalGrpLayout->addWidget(TextLabel, 0, 0);
-  intervalGrpLayout->addWidget(mySpinBox, 0, 1);
-
-  aBtnLayout->addWidget( myButtonOk );
-  aBtnLayout->addItem( new QSpacerItem( 20, 20, QSizePolicy::Expanding, QSizePolicy::Minimum ) );
-  aBtnLayout->addWidget( myButtonCancel );
-
-  topLayout->addWidget( intervalGrp, 0, 0 );
-  topLayout->addLayout( aBtnLayout, 1, 0 ); 
-}
-
-/*!
-  \brief Destructor
-  \internal
-*/
-ToolsGUI_RegWidget::IntervalWindow::~IntervalWindow()
-{
-}
-
-/*!
-  \brief Set time interval value
-  \internal
-  \param size interval value
-*/
-void ToolsGUI_RegWidget::IntervalWindow::setValue( const int size )
-{
-  mySpinBox->setValue(size);
-}
-
-/*!
-  \brief Get time interval value
-  \internal
-  \return interval value
-*/
-int ToolsGUI_RegWidget::IntervalWindow::getValue()
-{
-  return mySpinBox->value();
-}
 
-/*!
-  \brief Get \c OK button
-  \internal
-  \return a pointer to \c OK button
-*/
-QPushButton* ToolsGUI_RegWidget::IntervalWindow::Ok()
-{
-  return myButtonOk;
-}
-
-/*!
-  \brief Get \c Cancel button
-  \internal
-  \return a pointer to \c Cancel button
-*/
-QPushButton* ToolsGUI_RegWidget::IntervalWindow::Cancel()
-{
-  return myButtonCancel;
+  return aRegistry._retn();
 }
 
 /*!
@@ -462,7 +161,7 @@ ToolsGUI_RegWidget* ToolsGUI_RegWidget::myRegWidgetPtr = 0;
   \param orb CORBA ORB reference
   \param parent parent widget
 */
-ToolsGUI_RegWidget* ToolsGUI_RegWidget::GetRegWidget( CORBA::ORB_var& orb,
+ToolsGUI_RegWidget* ToolsGUI_RegWidget::GetRegWidget( CORBA::ORB_ptr orb,
                                                       QWidget* parent )
 {
   if ( !myRegWidgetPtr ) 
@@ -470,99 +169,108 @@ ToolsGUI_RegWidget* ToolsGUI_RegWidget::GetRegWidget( CORBA::ORB_var& orb,
   return myRegWidgetPtr;
 }
 
-/*!
-  \brief This virtual function is reimplenented to disable popup menu on dock areas
-  (instead of QMainWindow::setDockMenuEnabled( false ) method used in Qt3).
-  \return always 0 to disable menu
-*/
-QMenu* ToolsGUI_RegWidget::createPopupMenu()
-{
-  QMenu* aPopup = 0;
-  return aPopup;
-}
-
 /*!
   \brief Constructor
   \param orb CORBA ORB reference
   \param parent parent widget
 */
-ToolsGUI_RegWidget::ToolsGUI_RegWidget( CORBA::ORB_var& orb, QWidget* parent ) 
-: QMainWindow( parent, Qt::Window ),
-  _VarComponents( MakeRegistry(orb) ),
-  _clients( 0 ), 
-  _history( 0 ), 
-  _parent( parent ),
-  _tabWidget( 0 ), 
-  _refresh( 0 ), 
-  _interval( 0 ),
-  myInfoWindow( 0 ), 
-  myHelpWindow( 0 ), 
-  myIntervalWindow( 0 )
+ToolsGUI_RegWidget::ToolsGUI_RegWidget( CORBA::ORB_ptr orb, QWidget* parent ) 
+: QMainWindow( parent )
 {
-  setAttribute( Qt::WA_DeleteOnClose );
+  myOrb = CORBA::ORB::_duplicate( orb );
 
-  if ( parent )
-    setWindowIcon( parent->windowIcon() );
-
-  // pixmap for buttons
-  QPixmap image_refresh ( ( const char** ) refresh_data );
-  QPixmap image_interval( ( const char** ) time_data );
-  QPixmap image_close   ( ( const char** ) close_data );
+  // set window attributes
+  setAttribute( Qt::WA_DeleteOnClose );
+  setWindowTitle( tr( "TLT_REGISTRY" ) );
 
-  // Buttons definition
-  QToolBar* topbar = new QToolBar( tr("Toolbar"), this );
-  topbar->setToolButtonStyle( Qt::ToolButtonTextBesideIcon );
-  addToolBar( Qt::TopToolBarArea, topbar );
+  // show status bar
+  statusBar();
 
-  _refresh = topbar->addAction(image_refresh, tr( "Refresh" ), this, SLOT( slotListeSelect() ));
-  _refresh->setToolTip( "" );
-  _refresh->setStatusTip( tr("Immediately updates list of components") );
+  // get main menu bar
+  QMenuBar* mainMenu = menuBar();
   
-  /* PAL5540 - this button is needless
-  QPushButton* help = new QPushButton( tr( "Help" ), topbar );
-  connect( help, SIGNAL( clicked() ), this, SLOT( slotHelp() ) );
-  QToolTip::add( help, "", toolTipGroup(), tr("Opens Help window") );
-  */
+  // add 'Actions' menu
+  QMenu* m = mainMenu->addMenu( tr( "MNU_ACTIONS" ) );
+  // add 'Actions' toolbar
+  QToolBar* tb = addToolBar( tr( "TB_ACTIONS" ) );
+
+  // create actions
+  myActions[Refresh] = new QAction( QPixmap( refresh_data ), tr( "MEN_REFRESH" ), this );
+  myActions[Refresh]->setStatusTip( tr( "STB_REFRESH" ) );
+  connect( myActions[Refresh], SIGNAL( triggered() ), this, SLOT( refresh() ) );
+  m->addAction( myActions[Refresh] );
+  tb->addAction( myActions[Refresh] );
   
-  _interval = topbar->addAction(image_interval, tr( "Interval" ), this, SLOT( slotSelectRefresh() ));
-  _interval->setToolTip( "" );
-  _interval->setStatusTip( tr("Changes refresh interval") );
-  
-  topbar->addSeparator();
-
-  _close = topbar->addAction( image_close, tr("Close"), this, SLOT( close() ));
-  _close->setToolTip( "" );
-  _close->setStatusTip( tr("Closes Registry window") );
+  myActions[Interval] = new QAction( QPixmap( time_data ), tr( "MEN_INTERVAL" ), this );
+  myActions[Interval]->setStatusTip( tr( "STB_INTERVAL" ) );
+  connect( myActions[Interval], SIGNAL( triggered() ), this, SLOT( refreshInterval() ) );
+  m->addAction( myActions[Interval] );
+  tb->addAction( myActions[Interval] );
   
-  // Display area and associated slots definition
-  _tabWidget = new QTabWidget( this );
-  _clients   = new QTreeWidget( _tabWidget );
-  SetListe();
-  _history   = new QTreeWidget( _tabWidget );
-  SetListeHistory();
-  
-  _tabWidget->addTab( _clients, tr( "Running" ) );
-  _tabWidget->addTab( _history, tr( "History" ) );
-  connect( _tabWidget, SIGNAL( currentChanged( QWidget* )), this, SLOT( slotListeSelect() ) );
-  connect( _clients,   SIGNAL( itemDoubleClicked( QTreeWidgetItem*, int ) ),        this, SLOT( slotClientChanged( QTreeWidgetItem* , int ) ) );
-  connect( _history,   SIGNAL( itemDoubleClicked( QTreeWidgetItem*, int ) ),        this, SLOT( slotHistoryChanged( QTreeWidgetItem* , int ) ) );
-  setCentralWidget( _tabWidget );
+  m->addSeparator();
+  tb->addSeparator();
+
+  myActions[Close] = new QAction( QPixmap( close_data ), tr( "MEN_CLOSE" ), this );
+  myActions[Close]->setStatusTip( tr( "STB_CLOSE" ) );
+  connect( myActions[Close], SIGNAL( triggered() ), this, SLOT( close() ) );
+  m->addAction( myActions[Close] );
+  tb->addAction( myActions[Close] );
+
+  // central widget
+  setCentralWidget( new QWidget( this ) );
+
+  // Create tab widget: SALOME serives list (running and history)
+  QTabWidget* tabWidget = new QTabWidget( centralWidget() );
+
+  myViews[Clients]   = new QTreeWidget( tabWidget );
+  myViews[Clients]->setColumnCount( 6 );
+  myViews[Clients]->setAllColumnsShowFocus( true );
+  myViews[Clients]->setRootIsDecorated( false );
+  QStringList runningLabels;
+  runningLabels << tr( "HDR_COMPONENT" ) << tr( "HDR_PID" )     << tr( "HDR_USERNAME" )
+               << tr( "HDR_HOSTNAME" )  << tr( "HDR_STARTED" ) << tr( "HDR_HELLO" );
+  myViews[Clients]->setHeaderLabels( runningLabels );
+  tabWidget->addTab( myViews[Clients], tr( "TAB_RUNNING" ) );
+
+  myViews[History]   = new QTreeWidget( tabWidget );
+  myViews[History]->setColumnCount(6);
+  myViews[History]->setAllColumnsShowFocus( true );
+  myViews[History]->setRootIsDecorated( false );
+  QStringList historyLabels;
+  historyLabels << tr( "HDR_COMPONENT" ) << tr( "HDR_PID" )     << tr( "HDR_USERNAME" )
+               << tr( "HDR_HOSTNAME" )  << tr( "HDR_STARTED" ) << tr( "HDR_FINISHED" );
+  myViews[History]->setHeaderLabels( historyLabels );
+  tabWidget->addTab( myViews[History], tr( "TAB_HISTORY" ) );
+
+  connect( tabWidget, SIGNAL( currentChanged( int ) ), this, SLOT( refresh() ) );
+  connect( myViews[Clients], SIGNAL( itemActivated( QTreeWidgetItem*, int ) ), 
+          this,             SLOT( showDetails( QTreeWidgetItem*, int ) ) );
+  connect( myViews[History], SIGNAL( itemActivated( QTreeWidgetItem*, int ) ),
+          this,             SLOT( showDetails( QTreeWidgetItem*, int ) ) );
+
+  // create information window
+  myDetails = new QTextEdit( centralWidget() );
+  myDetails->setReadOnly( true );
+  myDetails->setMinimumHeight( 100 );
+
+  // layout widgets
+  QVBoxLayout* topLayout = new QVBoxLayout( centralWidget() );
+  topLayout->setMargin( 0 );
+  topLayout->setSpacing( SPACING_SIZE );
+  topLayout->addWidget( tabWidget );
+  topLayout->addWidget( myDetails );
   
-  // Timer definition (used to automaticaly refresh the display area)
-  _counter = new QTimer( this );
-  connect( _counter, SIGNAL( timeout() ), this, SLOT( slotListeSelect() ) );
-  myRefreshInterval = 10;
-  _counter->start( myRefreshInterval * 1000 );
+  // install auto-update timer
+  myTimer = new QTimer( this );
+  connect( myTimer, SIGNAL( timeout() ), this, SLOT( refresh() ) );
+  myTimer->start( 10000 ); // 10 seconds by default
   
-  PIXELS xpos    = 160 ;
-  PIXELS ypos    = 100 ;
-  PIXELS largeur = 800 ;
-  PIXELS hauteur = 350 ;
-  setGeometry( xpos, ypos, largeur, hauteur ) ;
-  setWindowTitle( tr( "Registry" ) ) ;
-  statusBar()->showMessage("    ");
-
-  slotListeSelect();
+  // resize window and set its position
+  resize( 800, 400 );
+  Qtx::alignWidget( (QWidget*)this, (QWidget*)QApplication::desktop(), Qtx::AlignCenter );
+
+  // refresh registry information
+  refresh();
 }
 
 /*!
@@ -570,277 +278,115 @@ ToolsGUI_RegWidget::ToolsGUI_RegWidget( CORBA::ORB_var& orb, QWidget* parent )
 */
 ToolsGUI_RegWidget::~ToolsGUI_RegWidget()
 {
-  _counter->stop();
   myRegWidgetPtr = 0;
 };
 
 /*!
-  \brief Event filter
-  \param object event receiver
-  \param event event being processed
-  \return \c true if event processing should be stopped
-*/
-bool ToolsGUI_RegWidget::eventFilter( QObject* object, QEvent* event )
-{
-  if ( object ) {
-    if ( object == myHelpWindow && event->type() == QEvent::Close ) {
-      myHelpWindow = 0;
-    }
-    else if ( object == myInfoWindow && event->type() == QEvent::Close ) {
-      myInfoWindow = 0;
-    }
-    else if ( object == myIntervalWindow && event->type() == QEvent::Close ) {
-      myIntervalWindow = 0;
-    }
-    else if ( object == _clients && event->type() == QEvent::KeyPress ) {
-      QKeyEvent* ke = (QKeyEvent*)event;
-      if ( ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Return ) {
-        slotClientChanged( _clients->currentItem(), 0 );
-      }
-    }
-    else if ( object == _history && event->type() == QEvent::KeyPress ) {
-      QKeyEvent* ke = (QKeyEvent*)event;
-      if ( ke->key() == Qt::Key_Enter || ke->key() == Qt::Key_Return ) {
-        slotHistoryChanged( _history->currentItem(), 0 );
-      }
-    }
-  }
-  return QMainWindow::eventFilter( object, event );
-}
-
-/*!
-  \brief Search item in the list.
-  \param name component name
-  \param pid PID
-  \param machine machine name
-  \param listclient list of registry data
-  \return item index or -1 if it is not found.
-*/
-int ToolsGUI_RegWidget::numitem( const QString& name, 
-                                 const QString& pid, 
-                                 const QString& machine,
-                                 const Registry::AllInfos* listclient )
-{
-  for (CORBA::ULong i=0; i<listclient->length(); i++) {       
-    const Registry::Infos & c_info=(*listclient)[i];
-    ASSERT( c_info.name!=NULL);
-    QString b;
-    b.setNum(int(c_info.pid));
-    if ( (name.compare(QString(c_info.name)) == 0) && 
-         (machine.compare(QString(c_info.machine)) == 0) && 
-         (pid.compare(b) == 0) ) {
-      return i;
-    }
-  }
-  return -1;
-}
-
-/*!
-  \brief Get description text, containing information about client.
+  \brief Get description text, containing information about the service.
   \param c_info client info data
   \return formatted client description
 */
-QString ToolsGUI_RegWidget::setlongText( const Registry::Infos& c_info )
+QString ToolsGUI_RegWidget::getDetails( const Registry::Infos& c_info )
 {
-  ASSERT( c_info.name != NULL );
-  QString a = QString( "<hr><h2>" ) + tr( "Code" ) + QString( " : " );
-  a.append( QString( c_info.name ) );
-  a.append( "</h1><hr><br>" );
-  a.append( "<code>" ); // ASV: 28.07.06 : added <code> tags to make the text font be 
-                        // fixed width (looks much better on Windows)
-  a.append( tr( "Process Id" ) + QString( " : " ) );
-  a.append( BOLD( QString::number( int( c_info.pid ) ) ) );
-  a.append( QString( " " ) + tr( "on machine" ) + QString( " " ) );
-  a.append( BOLD( c_info.machine ) ); 
-  a.append( QString( " " ) + tr( "ip address" ) + QString( " : " ) );
-  a.append( BOLD( c_info.adip ) );
-  a.append( "<br>" );
-  
-  a.append( tr( "launched by user" ) + QString( " " ) );
-  a.append( BOLD( c_info.pwname ) );
-  a.append( QString( " ( " ) + tr( "pid" ) + QString( " : " ) );
-  a.append( BOLD( QString::number( int( c_info.uid ) ) ) );
-  a.append( QString( " )<br> " ) + tr( "in directory" ) + QString( " " ));
-  a.append( BOLD( c_info.cdir ) );
-
-  time_t aTime;
-  a.append( QString( "<br>" ) + tr( "begins" ) + QString( " " ) );
-  aTime = time_t(c_info.tc_start);
-  char * t1 = (char * )duplicate(ctime(&aTime));
-  t1 [strlen(t1) -1 ] = ' ';
-  a.append( BOLD( t1 ) ); 
-  delete [] t1;
-  a.append( "<br>" );
-  
-  if (c_info.tc_hello != 0 ) {
-    aTime = time_t(c_info.tc_hello);
-    char * t2 = (char * )duplicate(ctime(&aTime));
-    t2 [strlen(t2) -1 ] = ' ';
-    a.append( tr( "last signal" ) + QString(" : ") ); 
-    a.append( BOLD( t2 ) ); 
+  QString a;
+  if ( c_info.name != NULL ) {
+    time_t aStarted( c_info.tc_start );
+    time_t aLastPing( c_info.tc_hello );
+    time_t aFinished( c_info.tc_end );
+
+    a.append( BOLD( tr( "INFO_SERVICE" ).arg( QString( c_info.name ) ) ) );
     a.append( "<br>" );
-    delete [] t2;
-  }
-  if ((c_info.tc_end - c_info.difftime) != 0) {
-    aTime = time_t(c_info.tc_end);
-    char * t3 = (char * )duplicate(ctime(&aTime));
-    t3 [strlen(t3) -1 ] = ' ';
-    a.append( tr( "ends" ) + QString( " " ) ); 
-    a.append( BOLD( t3 ) ); 
     a.append( "<br>" );
-    delete [] t3;
-  }
-  else {
-    a.append( tr( "still running" ) + QString( "<br>" ) );
-  }
-  
-  SCRUTE(c_info.difftime);
-  if (c_info.difftime!= 0) {
-    a.append( QString( "(" ) + tr( "Time on" ) + QString( " " ) ); 
-    a.append( BOLD( c_info.machine ) ); 
-    a.append( QString( " " ) + tr( "differs from server's time. The difference is" ) + QString( " " )); 
-    a.append( BOLD( QString::number( int( c_info.difftime ) ) ) );
-    a.append( QString( " " ) + tr( "seconds" ) + QString( ")<br>" ) );
+    a.append( tr( "INFO_PROCESS" ).arg( BOLD( QString::number( c_info.pid ) ),
+                                       BOLD( c_info.machine ),
+                                       BOLD( c_info.adip ),
+                                       BOLD( c_info.pwname ),
+                                       BOLD( QString::number( c_info.uid ) ),
+                                       BOLD( c_info.cdir ) ) );
+    a.append( "<br>" );
+    a.append( "<br>" );
+    a.append( tr( "INFO_STARTED" ).arg( BOLD( QString( ctime( &aStarted ) ).trimmed() ) ) );
+    a.append( "<br>" );
+    if ( c_info.tc_hello != 0 ) {
+      a.append( tr( "INFO_LAST_PING" ).arg( BOLD( QString( ctime( &aLastPing ) ).trimmed() ) ) );
+      a.append( "<br>" );
+    }
+    if ( c_info.tc_end - c_info.difftime != 0 ) {
+      a.append( tr( "INFO_FINISHED" ).arg( BOLD( QString( ctime( &aFinished ) ).trimmed() ) ) );
+      a.append( "<br>" );
+    }
+    else {
+      a.append( tr( "INFO_RUNNING" ) );
+      a.append( "<br>" );
+    }
+    if ( c_info.difftime != 0 ) {
+      a.append( tr( "INFO_TIME_DIFF" ).arg( BOLD( c_info.machine ), BOLD( QString::number( c_info.difftime ) ) ) ); 
+      a.append( "<br>" );
+    }
+    a.append( "</code>" ); // ASV: 28.07.06 : added <code> tags to make the text font be 
+                           // fixed width (looks much better on Windows)
   }
-  a.append( "</code>" ); // ASV: 28.07.06 : added <code> tags to make the text font be 
-                         // fixed width (looks much better on Windows)
   return a;
-  
 }
 
 /*!
-  \brief Close event handler.
-  \param e close event
+  \brief Refresh registry information
 */
-void ToolsGUI_RegWidget::closeEvent( QCloseEvent* e )
+void ToolsGUI_RegWidget::refresh()
 {
-  if ( myInfoWindow )
-    myInfoWindow->close();
-  if ( myHelpWindow )
-    myHelpWindow->close();
-  if (myIntervalWindow)
-    myIntervalWindow->close();
-  e->accept();
-};
-
-/*!
-  \brief Setup clients list.
-*/
-void ToolsGUI_RegWidget::SetListe()
-{
-  _clients->installEventFilter( this );
-  _clients->setColumnCount(6);
-  _clients->setAllColumnsShowFocus( true );
-  QStringList aLabels;
-  aLabels << tr("Component") << tr("PID") << tr("User Name") << tr("Machine") << tr("begins") << tr("hello");
-  _clients->setHeaderLabels( aLabels );
-  //_clients->setColumnAlignment( 1, Qt::AlignRight );
-}
-
-/*!
-  \brief Setup history list.
-*/
-void ToolsGUI_RegWidget::SetListeHistory()
-{
-  _history->installEventFilter( this );
-   _history->setColumnCount(6);
-  _history->setAllColumnsShowFocus( true );
-  QStringList aLabels;
-  aLabels << tr("Component") << tr("PID") << tr("User Name") << tr("Machine") << tr("begins") << tr("ends");
-  _history->setHeaderLabels( aLabels );
-  //_history->setColumnAlignment( 1, Qt::AlignRight );
-}
-
-/*!
-  \brief Update history list
-*/
-void ToolsGUI_RegWidget::InfoHistory()
-{
-
-  _history->clear();
   try {
-    time_t aTime;
-    _serverhistory = _VarComponents->history();
-    for (CORBA::ULong i=0; i<_serverhistory->length(); i++) {       
-      const Registry::Infos & c_info=(*_serverhistory)[i];
-      ASSERT( c_info.name!=NULL);
-      QString a;
-      a.setNum(int(c_info.pid));
-      aTime = time_t(c_info.tc_start);
-      char * t1 = (char * )duplicate(ctime(&aTime));
-      t1 [strlen(t1) -1 ] = ' ';
-      aTime = time_t(c_info.tc_end);
-      char * t2 = (char * )duplicate(ctime(&aTime));
-      t2 [strlen(t2) -1 ] = ' ';
-      QStringList anItem;
-      anItem << QString(c_info.name) << a << QString(c_info.pwname) << QString(c_info.machine) << QString(t1) << QString(t2);
-      QTreeWidgetItem * item = new QTreeWidgetItem(_history, anItem);
-      item=0 ;
-      delete [] t1;
-      delete [] t2;
-      
+    // get reference to the Registry service
+    Registry::Components_var aRegistry = GetRegistry( myOrb );
+    if ( aRegistry->_is_nil() ) {
+      myActions[Interval]->setDisabled( true );
+      myActions[Refresh]->setDisabled( true );
+      myTimer->stop();
+      MESSAGE( "Sorry, no more Registry Server" );
+      statusBar()->showMessage( tr( "ERR_NO_REGISTRY" ) );
+      return;
     }
-  }
-  catch( ... ) {
-    _interval->setDisabled( TRUE ) ;
-    _refresh->setDisabled( TRUE ) ;
-    _counter->stop();
-    MESSAGE("Sorry, No more Registry Server") ;
-    statusBar()->showMessage( tr( "Sorry, No more Registry Server" ) ) ;
-  }
-}
 
-/*!
-  \brief Update clients list
-*/
-void ToolsGUI_RegWidget::InfoReg()
-{
-  _clients->clear();
-  try {
-    time_t aTime;
-    _serverclients = _VarComponents->getall();
-    for (CORBA::ULong i=0; i<_serverclients->length(); i++) {       
-      const Registry::Infos & c_info=(*_serverclients)[i];
-      ASSERT( c_info.name!=NULL);
-      QString a;
-      a.setNum(int(c_info.pid));
-      aTime = time_t(c_info.tc_start);
-      char * t1 = (char * )duplicate(ctime(&aTime));
-      t1 [strlen(t1) -1 ] = ' ';
-      aTime = time_t(c_info.tc_hello);
-      char * t2 = (char * )duplicate(ctime(&aTime));
-      t2 [strlen(t2) -1 ] = ' ';
-      QStringList anItem;
-      anItem << QString(c_info.name) << a << QString(c_info.pwname) << QString(c_info.machine) << QString(t1) << QString(t2);
-      QTreeWidgetItem * item = new QTreeWidgetItem(_clients, anItem);
-      item=0 ;
-      delete [] t1;
-      delete [] t2;
-      
+    myData[Clients] = aRegistry->getall();
+    myData[History] = aRegistry->history();
+
+    // update current services list
+    myViews[Clients]->clear();
+    for ( int i = 0; i < myData[Clients]->length(); i++ ) {
+      const Registry::Infos& c_info = (*myData[Clients])[i];
+      time_t aStarted  = time_t( c_info.tc_start );
+      time_t aLastPing = time_t( c_info.tc_hello );
+      QStringList aData;
+      aData << QString( c_info.name )
+           << QString::number( c_info.pid )
+           << QString( c_info.pwname )
+           << QString( c_info.machine )
+           << QString( ctime( &aStarted ) ).trimmed()
+           << QString( ctime( &aLastPing ) ).trimmed();
+      myViews[Clients]->addTopLevelItem( new QTreeWidgetItem( aData ) );
     }
-  }
-  catch( ... ) {
-    _interval->setDisabled( TRUE ) ;
-    _refresh->setDisabled( TRUE ) ;
-    _counter->stop();
-    MESSAGE("Sorry, No more Registry Server") ;
-    statusBar()->showMessage( tr( "Sorry, No more Registry Server" ) ) ;
-  }
-}
 
-/*!
-  \brief Called when \c Refresh button is clicked
-*/
-void ToolsGUI_RegWidget::slotListeSelect()
-{
-  try {
-    ASSERT(_tabWidget->currentWidget() != NULL);
-    if (_tabWidget->currentWidget () == _clients) InfoReg();
-    else if (_tabWidget->currentWidget () == _history) InfoHistory();
+    // update history
+    myViews[History]->clear();
+    for ( int i = 0; i < myData[History]->length(); i++ ) {       
+      const Registry::Infos& c_info = (*myData[History])[i];
+      time_t aStarted  = time_t( c_info.tc_start );
+      time_t aFinished = time_t( c_info.tc_end );
+      QStringList aData;
+      aData << QString( c_info.name )
+           << QString::number( c_info.pid )
+           << QString( c_info.pwname )
+           << QString( c_info.machine )
+           << QString( ctime( &aStarted ) ).trimmed()
+           << QString( ctime( &aFinished ) ).trimmed();
+      myViews[History]->addTopLevelItem( new QTreeWidgetItem( aData ) );
+    }
   }
   catch( ... ) {
-    MESSAGE("Sorry, No more Registry Server") ;
-    statusBar()->showMessage( tr( "Sorry, No more Registry Server" ) ) ;
+    myActions[Interval]->setDisabled( true );
+    myActions[Refresh]->setDisabled( true );
+    myTimer->stop();
+    MESSAGE( "Sorry, no more Registry Server" );
+    statusBar()->showMessage( tr( "ERR_NO_REGISTRY" ) );
   }
 }
 
@@ -848,105 +394,27 @@ void ToolsGUI_RegWidget::slotListeSelect()
   \brief Called when \c Interval button is clicked (open dialog box to 
   change refresh interval).
 */
-void ToolsGUI_RegWidget::slotSelectRefresh()
+void ToolsGUI_RegWidget::refreshInterval()
 {
-  myIntervalWindow = new ToolsGUI_RegWidget::IntervalWindow(this);
-  myIntervalWindow->installEventFilter( this );
-  myIntervalWindow->setValue(myRefreshInterval);
-  myIntervalWindow->show();
-  connect( myIntervalWindow->Cancel(), SIGNAL( clicked() ), myIntervalWindow, SLOT( close() ) );
-  connect( myIntervalWindow->Ok(), SIGNAL( clicked() ), this, SLOT( slotIntervalOk() ) );
+  bool ok;
+  int sec = QInputDialog::getInt( this, tr( "TLT_REFRESH_INTERVAL" ), tr( "LAB_REFRESH_INTERVAL" ), 
+                                 myTimer->interval() / 1000, 1, 24 * 60 * 60, 1, &ok );
+  if ( ok )
+    myTimer->start( sec * 1000 );
 }
 
 /*!
-  \brief Called when IntervalWindow's \c OK button is clicked
-*/
-void ToolsGUI_RegWidget::slotIntervalOk()
-{
-  myRefreshInterval = myIntervalWindow->getValue();
-  _counter->start( myRefreshInterval * 1000 );
-  SCRUTE(myRefreshInterval);
-  myIntervalWindow->close();
-}
-/*!
-  \brief Called when \c Help button is clicked
+  \brief Show details about the chosen service.
+  \param item item activated by the user
+  \param column column index
 */
-void ToolsGUI_RegWidget::slotHelp()
+void ToolsGUI_RegWidget::showDetails( QTreeWidgetItem* item, int column )
 {
-  if ( !myHelpWindow ) {
-    myHelpWindow  = new ToolsGUI_RegWidget::HelpWindow( this );
-    myHelpWindow->installEventFilter( this );
-  }
-  myHelpWindow->show();
-  myHelpWindow->raise();
-  myHelpWindow->activateWindow();
+  if ( !item || column < 0 ) return;
+  int i = sender() == myViews[Clients] ? Clients : History;
+  int idx  = myViews[i]->indexOfTopLevelItem( item );
+  int size = myData[i]->length();
+  if ( idx < 0 || idx > size-1 ) return;
+  const Registry::Infos& c_info = (*myData[i])[idx];
+  myDetails->setText( getDetails( c_info ) );
 }
-
-/*!
-  \brief Called when user clicks on item in \c Running list
-  \param item item clicked by the user
-*/
-void ToolsGUI_RegWidget::slotClientChanged( QTreeWidgetItem* item, int col )
-{
-  if ( !item || col < 0 )
-    return;
-
-  blockSignals( true ); // for sure that item will not be deleted when refreshing
-
-  int numeroItem = numitem(item->text(0), item->text(1), item->text(3), _serverclients);
-  SCRUTE(numeroItem) ;
-  SCRUTE(item->text(1).toLatin1().constData()) ;
-  
-  ASSERT(numeroItem>=0) ;
-  ASSERT((size_t)numeroItem<_serverclients->length()) ;
-  const Registry::Infos & c_info=(*_serverclients)[numeroItem];
-  ASSERT( c_info.name!=NULL);
-  
-  if ( !myInfoWindow ) {
-    myInfoWindow  = new ToolsGUI_RegWidget::InfoWindow( this );
-    myInfoWindow->installEventFilter( this );
-  }
-  QString a = tr( "More about" ) + QString( " " ) + QString( c_info.name );
-  myInfoWindow->setWindowTitle(a);
-  myInfoWindow->setText( ToolsGUI_RegWidget::setlongText( c_info) );
-  myInfoWindow->show();
-  myInfoWindow->raise();
-  myInfoWindow->activateWindow();
-
-  blockSignals( false ); // enabling signals again
-}
-
-/*!
-  \brief Called when user clicks on item in \c History list
-  \param item item clicked by the user
-*/
-void ToolsGUI_RegWidget::slotHistoryChanged( QTreeWidgetItem* item, int col )
-{
-  if ( !item || col < 0 )
-    return;
-
-  blockSignals( true ); // for sure that item will not be deleted when refreshing
-
-  int numeroItem = numitem(item->text(0), item->text(1), item->text(3), _serverhistory);
-  
-  SCRUTE(numeroItem) ;
-  SCRUTE(item->text(1).toLatin1().constData()) ;
-  ASSERT(numeroItem>=0) ;
-  ASSERT((size_t)numeroItem<_serverhistory->length()) ;
-  const Registry::Infos & c_info=(*_serverhistory)[numeroItem];
-  ASSERT( c_info.name!=NULL);
-  
-  if ( !myInfoWindow ) {
-    myInfoWindow  = new ToolsGUI_RegWidget::InfoWindow( this );
-    myInfoWindow->installEventFilter( this );
-  }
-  QString a = tr( "More about" ) + QString( " " ) + QString( c_info.name );
-  myInfoWindow->setWindowTitle(a);
-  myInfoWindow->setText( ToolsGUI_RegWidget::setlongText( c_info ) );
-  myInfoWindow->show();
-  myInfoWindow->raise();
-  myInfoWindow->activateWindow();
-
-  blockSignals( false ); // enabling signals again
-}
-
index 586cc9867c9538b420f66ef4e4f62e198d0498b5..657bed0227b8e394b4e27e1314f5897fc055d7dc 100755 (executable)
 //  See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com
 //
 
-//  SALOME RegistryDisplay : GUI for Registry server implementation
-//  File   : ToolsGUI_RegWidget.h
-//  Author : Pascale NOYRET, EDF
-//
 #ifndef TOOLSGUI_REGWIDGET_H
 #define TOOLSGUI_REGWIDGET_H
 
 #include "ToolsGUI.h"
 
 #include <QMainWindow>
+#include <QMap>
 
 #include <SALOMEconfig.h>
 #include CORBA_CLIENT_HEADER(SALOME_Registry)
 
-class QTabWidget;
 class QTreeWidget;
 class QTreeWidgetItem;
-class QWidget;
 class QTimer;
-class QCloseEvent;
 class QAction;
+class QTextEdit;
 
 class TOOLSGUI_EXPORT ToolsGUI_RegWidget : public QMainWindow
 {
   Q_OBJECT
 
-  class HelpWindow;
-  class IntervalWindow;
-  class InfoWindow;
+  enum { Refresh, Interval, Close };
+  enum { Clients, History };
 
-  ToolsGUI_RegWidget( CORBA::ORB_var& orb, QWidget* parent = 0 );
+  ToolsGUI_RegWidget( CORBA::ORB_ptr orb, QWidget* parent = 0 );
 
 public:
   ~ToolsGUI_RegWidget();
 
-  void                       SetListe();
-  void                       SetListeHistory();
-  void                       InfoReg();
-  void                       InfoHistory();
-
-  bool                       eventFilter( QObject* object, QEvent* event );
-
-  static ToolsGUI_RegWidget* GetRegWidget( CORBA::ORB_var& orb, 
+  static ToolsGUI_RegWidget* GetRegWidget( CORBA::ORB_ptr orb, 
                                            QWidget* parent = 0 );
 
-  virtual QMenu*             createPopupMenu();
+private slots:
+  void                       refresh();
+  void                       showDetails( QTreeWidgetItem*, int );
+  void                       refreshInterval();
 
-public slots:
-  void                       slotHelp();
-  void                       slotListeSelect();
-  void                       slotClientChanged( QTreeWidgetItem*, int );
-  void                       slotHistoryChanged( QTreeWidgetItem*, int );
-  void                       slotSelectRefresh();
-  void                       slotIntervalOk();
-
-protected:  
-  static QString             setlongText( const Registry::Infos& c_info );
-  int                        numitem( const QString& name, 
-                                      const QString& pid, 
-                                      const QString& machine, 
-                                      const Registry::AllInfos* clistclient );
-  void                       closeEvent( QCloseEvent* e );
+private:  
+  static QString             getDetails( const Registry::Infos& c_info );
    
-protected :
-  QTreeWidget*         _clients;
-  QTreeWidget*         _history;
-  QWidget*             _parent;
-  QTabWidget*          _tabWidget;
-  QAction*             _refresh;
-  QAction*             _interval;
-  QAction*             _close;
-  QTimer*              _counter;
-  Registry::AllInfos*  _serverhistory;
-  Registry::AllInfos*  _serverclients;
-  InfoWindow*          myInfoWindow;
-  HelpWindow*          myHelpWindow;
-  IntervalWindow*      myIntervalWindow;
-  int                  myRefreshInterval;
-
 private:
-  const Registry::Components_var _VarComponents;
-  static ToolsGUI_RegWidget*     myRegWidgetPtr;
+  static ToolsGUI_RegWidget* myRegWidgetPtr;
+
+  CORBA::ORB_var             myOrb;
+  QMap<int, Registry::AllInfos*> myData;
+  QMap<int, QAction*>        myActions;
+  QMap<int, QTreeWidget*>    myViews;
+  QTextEdit*                 myDetails;
+  QTimer*                    myTimer;
 };
 
 #endif // TOOLSGUI_REGWIDGET_H
index 8f25a61e57b256772b67920bd01b18be0054ce46..4337da127c694117ee3eb4d8990faba2c61a1305 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
@@ -125,4 +104,119 @@ File doesn&apos;t exist</translation>
         <translation>IDL : </translation>
     </message>
 </context>
+<context>
+    <name>ToolsGUI_RegWidget</name>
+    <message>
+        <source>TLT_REFRESH_INTERVAL</source>
+        <translation>Refresh Interval</translation>
+    </message>
+    <message>
+        <source>LAB_REFRESH_INTERVAL</source>
+        <translation>New refresh interval (in seconds)</translation>
+    </message>
+    <message>
+        <source>TLT_REGISTRY</source>
+        <translation>Registry</translation>
+    </message>
+    <message>
+        <source>MNU_ACTIONS</source>
+        <translation>Actions</translation>
+    </message>
+    <message>
+        <source>TB_ACTIONS</source>
+        <translation>Actions</translation>
+    </message>
+    <message>
+        <source>MEN_REFRESH</source>
+        <translation>Refresh</translation>
+    </message>
+    <message>
+        <source>STB_REFRESH</source>
+        <translation>Immediately updates list of components</translation>
+    </message>
+    <message>
+        <source>MEN_INTERVAL</source>
+        <translation>Refresh interval...</translation>
+    </message>
+    <message>
+        <source>STB_INTERVAL</source>
+        <translation>Change refresh interval</translation>
+    </message>
+    <message>
+        <source>MEN_CLOSE</source>
+        <translation>Close</translation>
+    </message>
+    <message>
+        <source>STB_CLOSE</source>
+        <translation>Close Registry window</translation>
+    </message>
+    <message>
+        <source>TAB_RUNNING</source>
+        <translation>Running</translation>
+    </message>
+    <message>
+        <source>TAB_HISTORY</source>
+        <translation>History</translation>
+    </message>
+    <message>
+        <source>HDR_COMPONENT</source>
+        <translation>Component</translation>
+    </message>
+    <message>
+        <source>HDR_PID</source>
+        <translation>PID</translation>
+    </message>
+    <message>
+        <source>HDR_USERNAME</source>
+        <translation>User name</translation>
+    </message>
+    <message>
+        <source>HDR_HOSTNAME</source>
+        <translation>Host name</translation>
+    </message>
+    <message>
+        <source>HDR_STARTED</source>
+        <translation>Started</translation>
+    </message>
+    <message>
+        <source>HDR_FINISHED</source>
+        <translation>Finished</translation>
+    </message>
+    <message>
+        <source>HDR_HELLO</source>
+        <translation>Last ping</translation>
+    </message>
+    <message>
+        <source>ERR_NO_REGISTRY</source>
+        <translation>Error: Registry Server is not found</translation>
+    </message>
+    <message>
+        <source>INFO_SERVICE</source>
+        <translation>Service : %1</translation>
+    </message>
+    <message>
+        <source>INFO_PROCESS</source>
+        <translation>Process ( PID : %1 ) on the machine %2 ( ip address : %3 ); launched by the user %4 ( UID : %5 ) in directory %6.</translation>
+    </message>
+    <message>
+        <source>INFO_STARTED</source>
+        <translation>Started : %1</translation>
+    </message>
+    <message>
+        <source>INFO_LAST_PING</source>
+        <translation>Last signal : %1</translation>
+    </message>
+    <message>
+        <source>INFO_FINISHED</source>
+        <translation>Finished : %1</translation>
+    </message>
+    <message>
+        <source>INFO_RUNNING</source>
+        <translation>Still running</translation>
+    </message>
+    <message>
+        <source>INFO_TIME_DIFF</source>
+        <translation>Time on %1 differs from server&apos;s time. The difference is %2 seconds.</translation>
+    </message>
+</context>
 </TS>
diff --git a/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts b/src/TOOLSGUI/resources/ToolsGUI_msg_fr.ts
new file mode 100755 (executable)
index 0000000..189eecc
--- /dev/null
@@ -0,0 +1,222 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>TOOLS_WRN_WARNING</source>
+        <translation>Avertissement</translation>
+    </message>
+    <message>
+        <source>TOOLS_BUT_BROWSE</source>
+        <translation>Naviquer...</translation>
+    </message>
+    <message>
+        <source>TOOLS_ERR_ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>TOOLS_ERR_FILE_NOT_EXIST</source>
+        <translation>%1
+Le fichier n&apos;existe pas</translation>
+    </message>
+    <message>
+        <source>TOOLS_BUT_OK</source>
+        <translation>&amp;Ok</translation>
+    </message>
+    <message>
+        <source>TOOLS_BUT_APPLY</source>
+        <translation>&amp;Appliquer</translation>
+    </message>
+    <message>
+        <source>TOOLS_BUT_CLOSE</source>
+        <translation>&amp;Fermer</translation>
+    </message>
+</context>
+<context>
+    <name>ToolsGUI_CatalogGeneratorDlg</name>
+    <message>
+        <source>TOOLS_MEN_EXPORT</source>
+        <translation>Exporter</translation>
+    </message>
+    <message>
+        <source>TOOLS_MEN_IMPORT</source>
+        <translation>Importer</translation>
+    </message>
+    <message>
+        <source>TOOLS_VERSION</source>
+        <translation>Version : </translation>
+    </message>
+    <message>
+        <source>TOOLS_COMP_NAME</source>
+        <translation>Nom : </translation>
+    </message>
+    <message>
+        <source>TOOLS_COMP_TYPE</source>
+        <translation>Type : </translation>
+    </message>
+    <message>
+        <source>TOOLS_XML_FILE</source>
+        <translation>XML : </translation>
+    </message>
+    <message>
+        <source>TOOLS_PNG_FILE</source>
+        <translation>Icône : </translation>
+    </message>
+    <message>
+        <source>TOOLS_SUPPLEMENT</source>
+        <translation>Données du Composant Supplémentaires</translation>
+    </message>
+    <message>
+        <source>TOOLS_AUTHOR</source>
+        <translation>Autheur : </translation>
+    </message>
+    <message>
+        <source>TOOLS_COMP_MULTISTD</source>
+        <translation>Multiétude : </translation>
+    </message>
+    <message>
+        <source>TOOLS_COMP_USERNAME</source>
+        <translation>NomUtilisateur : </translation>
+    </message>
+    <message>
+        <source>TOOLS_CATALOG_GENERATOR</source>
+        <translation>Générateur du Catalogue</translation>
+    </message>
+    <message>
+        <source>TOOLS_FILES</source>
+        <translation>Fichiers</translation>
+    </message>
+    <message>
+        <source>TOOLS_MEN_IMPORT_PNG</source>
+        <translation>Fichiers PNG ( *.png )</translation>
+    </message>
+    <message>
+        <source>TOOLS_MEN_IMPORT_IDL</source>
+        <translation>Fichiers IDL ( *.idl )</translation>
+    </message>
+    <message>
+        <source>TOOLS_MEN_EXPORT_XML</source>
+        <translation>Fichiers XML ( *.xml )</translation>
+    </message>
+    <message>
+        <source>TOOLS_IDL_FILE</source>
+        <translation>IDL : </translation>
+    </message>
+</context>
+<context>
+    <name>ToolsGUI_RegWidget</name>
+    <message>
+        <source>TLT_REFRESH_INTERVAL</source>
+        <translation>Fréquence d&apos;actualisation</translation>
+    </message>
+    <message>
+        <source>LAB_REFRESH_INTERVAL</source>
+        <translation>Nouvelle fréquence d&apos;actualisation (en secondes)</translation>
+    </message>
+    <message>
+        <source>TLT_REGISTRY</source>
+        <translation>Registre</translation>
+    </message>
+    <message>
+        <source>MNU_ACTIONS</source>
+        <translation>Actions</translation>
+    </message>
+    <message>
+        <source>TB_ACTIONS</source>
+        <translation>Actions</translation>
+    </message>
+    <message>
+        <source>MEN_REFRESH</source>
+        <translation>Refresh</translation>
+    </message>
+    <message>
+        <source>STB_REFRESH</source>
+        <translation>Met à jour toutb de suite la liste des composants</translation>
+    </message>
+    <message>
+        <source>MEN_INTERVAL</source>
+        <translation>Fréquence d&apos;actualisation...</translation>
+    </message>
+    <message>
+        <source>STB_INTERVAL</source>
+        <translation>Changer la fréquence d&apos;actualisation</translation>
+    </message>
+    <message>
+        <source>MEN_CLOSE</source>
+        <translation>Fermer</translation>
+    </message>
+    <message>
+        <source>STB_CLOSE</source>
+        <translation>Fermer la fenêtre du Registre</translation>
+    </message>
+    <message>
+        <source>TAB_RUNNING</source>
+        <translation>En cours</translation>
+    </message>
+    <message>
+        <source>TAB_HISTORY</source>
+        <translation>Historique</translation>
+    </message>
+    <message>
+        <source>HDR_COMPONENT</source>
+        <translation>Composant</translation>
+    </message>
+    <message>
+        <source>HDR_PID</source>
+        <translation>PID</translation>
+    </message>
+    <message>
+        <source>HDR_USERNAME</source>
+        <translation>Nom de l&apos;utilisateur</translation>
+    </message>
+    <message>
+        <source>HDR_HOSTNAME</source>
+        <translation>Nom de l&apos;hôte</translation>
+    </message>
+    <message>
+        <source>HDR_STARTED</source>
+        <translation>Commencé</translation>
+    </message>
+    <message>
+        <source>HDR_FINISHED</source>
+        <translation>Fini</translation>
+    </message>
+    <message>
+        <source>HDR_HELLO</source>
+        <translation>Dernier ping</translation>
+    </message>
+    <message>
+        <source>ERR_NO_REGISTRY</source>
+        <translation>Erreur: le Serveur du Registre n&apos;est pas trouvé</translation>
+    </message>
+    <message>
+        <source>INFO_SERVICE</source>
+        <translation>Service : %1</translation>
+    </message>
+    <message>
+        <source>INFO_PROCESS</source>
+        <translation>Le procédé ( PID : %1 ) sur la station %2 ( ip adresse : %3 ); lancé par l&apos;utilisateur %4 ( UID : %5 ) au répertoire %6.</translation>
+    </message>
+    <message>
+        <source>INFO_STARTED</source>
+        <translation>Commencé : %1</translation>
+    </message>
+    <message>
+        <source>INFO_LAST_PING</source>
+        <translation>Dernier signal : %1</translation>
+    </message>
+    <message>
+        <source>INFO_FINISHED</source>
+        <translation>Fini : %1</translation>
+    </message>
+    <message>
+        <source>INFO_RUNNING</source>
+        <translation>Demeure en cours</translation>
+    </message>
+    <message>
+        <source>INFO_TIME_DIFF</source>
+        <translation>Le temps de la station %1 est différent du temps du serveur. La différence est %2 secondes.</translation>
+    </message>
+</context>
+</TS>
index b5187b2956358372726d568ad6b920e6107c881d..56da23db41d1f8f8df075ebb425b2b6896f76ed1 100755 (executable)
@@ -59,7 +59,8 @@ salomeinclude_HEADERS =                               \
        VTKViewer_MarkerWidget.h                \
        VTKViewer_MarkerDlg.h                   \
        VTKViewer_PolyDataMapper.h              \
-       VTKViewer_DataSetMapper.h
+       VTKViewer_DataSetMapper.h               \
+       VTKViewer_CellCenters.h
 
 dist_libVTKViewer_la_SOURCES =                 \
        VTKViewer_CellLocationsArray.cxx        \
@@ -87,7 +88,8 @@ dist_libVTKViewer_la_SOURCES =                        \
        VTKViewer_MarkerWidget.cxx              \
        VTKViewer_MarkerDlg.cxx                 \
        VTKViewer_PolyDataMapper.cxx            \
-       VTKViewer_DataSetMapper.cxx
+       VTKViewer_DataSetMapper.cxx             \
+       VTKViewer_CellCenters.cxx
 
 MOC_FILES =                                            \
        VTKViewer_RenderWindow_moc.cxx                  \
@@ -131,7 +133,8 @@ dist_salomeres_DATA =                               \
 
 nodist_salomeres_DATA =                \
        VTKViewer_images.qm     \
-       VTKViewer_msg_en.qm
+       VTKViewer_msg_en.qm     \
+       VTKViewer_msg_fr.qm
 
 libVTKViewer_la_CPPFLAGS = $(QT_INCLUDES) $(VTK_INCLUDES) $(CAS_CPPFLAGS)      \
        -I$(srcdir)/../Qtx -I$(srcdir)/../SUIT
diff --git a/src/VTKViewer/VTKViewer_CellCenters.cxx b/src/VTKViewer/VTKViewer_CellCenters.cxx
new file mode 100644 (file)
index 0000000..91c9988
--- /dev/null
@@ -0,0 +1,184 @@
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  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.
+//
+//  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 "VTKViewer_CellCenters.h"
+
+#include <vtkCell.h>
+#include <vtkCellData.h>
+#include <vtkDataSet.h>
+#include <vtkInformation.h>
+#include <vtkInformationVector.h>
+#include <vtkObjectFactory.h>
+#include <vtkPointData.h>
+#include <vtkPoints.h>
+#include <vtkPolyData.h>
+#include <vtkCellArray.h>
+
+vtkCxxRevisionMacro(VTKViewer_CellCenters, "$Revision$");
+vtkStandardNewMacro(VTKViewer_CellCenters);
+
+/*!
+ * Class       : VTKViewer_CellCenters
+ * Description : Filter computing geometrical centers of given cells
+ *               (differs from native vtk filter by small fix for VTK_CONVEX_POINT_SET cells)
+ */
+
+/*!
+  Constructor
+*/
+VTKViewer_CellCenters::VTKViewer_CellCenters()
+{
+}
+
+/*!
+  Redefined main method
+*/
+int VTKViewer_CellCenters::RequestData(
+  vtkInformation *vtkNotUsed(request),
+  vtkInformationVector **inputVector,
+  vtkInformationVector *outputVector)
+{
+  // get the info objects
+  vtkInformation *inInfo = inputVector[0]->GetInformationObject(0);
+  vtkInformation *outInfo = outputVector->GetInformationObject(0);
+
+  // get the input and ouptut
+  vtkDataSet *input = vtkDataSet::SafeDownCast(
+    inInfo->Get(vtkDataObject::DATA_OBJECT()));
+  vtkPolyData *output = vtkPolyData::SafeDownCast(
+    outInfo->Get(vtkDataObject::DATA_OBJECT()));
+
+  vtkIdType cellId, numCells;
+  int subId;
+  vtkCellData *inCD;
+  vtkPointData *outPD;
+  vtkPoints *newPts;
+  vtkCell *cell;
+  double x[3], pcoords[3];
+  double *weights;
+
+  inCD=input->GetCellData();
+  outPD=output->GetPointData();
+
+  if ( (numCells = input->GetNumberOfCells()) < 1 )
+    {
+    vtkWarningMacro(<<"No cells to generate center points for");
+    return 1;
+    }
+
+  newPts = vtkPoints::New();
+  newPts->SetNumberOfPoints(numCells);
+  weights = new double [input->GetMaxCellSize()];
+
+  int abort=0;
+  vtkIdType progressInterval = numCells/10 + 1;
+  int hasEmptyCells = 0;
+  for (cellId=0; cellId < numCells && !abort; cellId++)
+    {
+    if ( ! (cellId % progressInterval) ) 
+      {
+      vtkDebugMacro(<<"Processing #" << cellId);
+      this->UpdateProgress (0.5*cellId/numCells);
+      abort = this->GetAbortExecute();
+      }
+
+    cell = input->GetCell(cellId);
+    if (cell->GetCellType() != VTK_EMPTY_CELL)
+      {
+        // fix for VTK_CONVEX_POINT_SET cells
+        if (cell->GetCellType() == VTK_CONVEX_POINT_SET )
+        {
+          x[0] = x[1] = x[2] = 0;
+          vtkPoints* aPoints = cell->GetPoints();
+          int aNbPoints = aPoints->GetNumberOfPoints();
+          for( int i = 0; i < aNbPoints; i++ )
+          {
+            double aCoord[3];
+            aPoints->GetPoint( i, aCoord );
+            x[0] += aCoord[0];
+            x[1] += aCoord[1];
+            x[2] += aCoord[2];
+          }
+          x[0] /= aNbPoints;
+          x[1] /= aNbPoints;
+          x[2] /= aNbPoints;
+        }
+        else
+        {
+          subId = cell->GetParametricCenter(pcoords);
+          cell->EvaluateLocation(subId, pcoords, x, weights);
+        }
+        newPts->SetPoint(cellId,x);
+      }
+    else
+      {
+      hasEmptyCells = 1;
+      }
+    }
+
+  if ( this->VertexCells )
+    {
+    vtkIdType pts[1];
+    vtkCellData *outCD=output->GetCellData();
+    vtkCellArray *verts = vtkCellArray::New();
+    verts->Allocate(verts->EstimateSize(1,numCells),1);
+
+    for (cellId=0; cellId < numCells && !abort; cellId++)
+      {
+      if ( ! (cellId % progressInterval) ) 
+        {
+        vtkDebugMacro(<<"Processing #" << cellId);
+        this->UpdateProgress (0.5+0.5*cellId/numCells);
+        abort = this->GetAbortExecute();
+        }
+
+      cell = input->GetCell(cellId);
+      if (cell->GetCellType() != VTK_EMPTY_CELL)
+        {
+        pts[0] = cellId;
+        verts->InsertNextCell(1,pts);
+        }
+      }
+
+    output->SetVerts(verts);
+    verts->Delete();
+    if (!hasEmptyCells)
+      {
+      outCD->PassData(inCD); //only if verts are generated
+      }
+    }
+
+  // clean up and update output
+  output->SetPoints(newPts);
+  newPts->Delete();
+
+  if (!hasEmptyCells)
+    {
+    outPD->PassData(inCD); //because number of points = number of cells
+    }
+  if (weights)
+    {
+    delete [] weights;
+    }
+
+  return 1;
+}
diff --git a/src/VTKViewer/VTKViewer_CellCenters.h b/src/VTKViewer/VTKViewer_CellCenters.h
new file mode 100644 (file)
index 0000000..7057d79
--- /dev/null
@@ -0,0 +1,60 @@
+//  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
+//
+//  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.
+//
+//  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 VTKVIEWER_CELLCENTERS_H
+#define VTKVIEWER_CELLCENTERS_H
+
+#include "VTKViewer.h"
+
+#include <vtkCellCenters.h>
+
+#ifdef WIN32
+#pragma warning ( disable:4251 )
+#endif
+
+/*!
+ * Class       : VTKViewer_CellCenters
+ * Description : Filter computing geometrical centers of given cells
+ *               (differs from native vtk filter by small fix for VTK_CONVEX_POINT_SET cells)
+ */
+class VTKVIEWER_EXPORT VTKViewer_CellCenters : public vtkCellCenters
+{
+public:
+  vtkTypeRevisionMacro(VTKViewer_CellCenters,vtkCellCenters);
+
+  static VTKViewer_CellCenters *New();
+
+protected:
+  VTKViewer_CellCenters();
+
+  virtual int RequestData(vtkInformation *, vtkInformationVector **, vtkInformationVector *);
+
+private:
+  VTKViewer_CellCenters(const VTKViewer_CellCenters&);  // Not implemented.
+  void operator=(const VTKViewer_CellCenters&);  // Not implemented.
+};
+
+#ifdef WIN32
+#pragma warning ( default:4251 )
+#endif
+
+#endif
index 76b6902fae887868d0d731bfb4dd1ecacd9dd6bd..c737763d7ecb0539256271d96a64355aaf8b674b 100644 (file)
@@ -1,27 +1,6 @@
-<!DOCTYPE TS><TS>
-<!--
-  Copyright (C) 2007-2010  CEA/DEN, EDF R&D, OPEN CASCADE
-
-  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.
-
-  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
-
--->
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="en_US">
 <context>
     <name>@default</name>
     <message>
diff --git a/src/VTKViewer/resources/VTKViewer_msg_fr.ts b/src/VTKViewer/resources/VTKViewer_msg_fr.ts
new file mode 100755 (executable)
index 0000000..530b17a
--- /dev/null
@@ -0,0 +1,207 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!DOCTYPE TS>
+<TS version="2.0" language="fr_FR">
+<context>
+    <name>@default</name>
+    <message>
+        <source>MNU_FRONT_VIEW</source>
+        <translation>Devant</translation>
+    </message>
+    <message>
+        <source>ERROR</source>
+        <translation>Erreur</translation>
+    </message>
+    <message>
+        <source>MNU_DUMP_VIEW</source>
+        <translation>Clipper une vue...</translation>
+    </message>
+    <message>
+        <source>DSC_TOP_VIEW</source>
+        <translation>Vue de dessus</translation>
+    </message>
+    <message>
+        <source>MNU_PAN_VIEW</source>
+        <translation>Panoramique</translation>
+    </message>
+    <message>
+        <source>MNU_TOP_VIEW</source>
+        <translation>Dessus</translation>
+    </message>
+    <message>
+        <source>DSC_GLOBALPAN_VIEW</source>
+        <translation>Sélection d&apos;un nouveau centre de la vue</translation>
+    </message>
+    <message>
+        <source>DSC_ROTATE_VIEW</source>
+        <translation>Tourner le point de vue autour du centre de la scène</translation>
+    </message>
+    <message>
+        <source>MNU_ZOOM_VIEW</source>
+        <translation>Zoom</translation>
+    </message>
+    <message>
+        <source>DSC_PAN_VIEW</source>
+        <translation>Redimensionner la vue</translation>
+    </message>
+    <message>
+        <source>DSC_LEFT_VIEW</source>
+        <translation>Vue de gauche</translation>
+    </message>
+    <message>
+        <source>DSC_FITALL</source>
+        <translation>Redimensionner la scène pour montrer tous les objets</translation>
+    </message>
+    <message>
+        <source>MNU_FITALL</source>
+        <translation>Montrer tous</translation>
+    </message>
+    <message>
+        <source>MNU_ROTATE_VIEW</source>
+        <translation>Rotation</translation>
+    </message>
+    <message>
+        <source>DSC_SHOW_TRIHEDRON</source>
+        <translation>Montrer/Cacher les axes de coordonnées dans la scène</translation>
+    </message>
+    <message>
+        <source>DSC_FRONT_VIEW</source>
+        <translation>Vue de Devant</translation>
+    </message>
+    <message>
+        <source>MNU_GLOBALPAN_VIEW</source>
+        <translation>Panoramique Globale</translation>
+    </message>
+    <message>
+        <source>INF_APP_DUMP_VIEW</source>
+        <translation>Clicher la vue</translation>
+    </message>
+    <message>
+        <source>MNU_BACK_VIEW</source>
+        <translation>Arrière</translation>
+    </message>
+    <message>
+        <source>MNU_SHOW_TRIHEDRON</source>
+        <translation>Montrer/Cacher les axes de coordonnées</translation>
+    </message>
+    <message>
+        <source>MNU_BOTTOM_VIEW</source>
+        <translation>Dessous</translation>
+    </message>
+    <message>
+        <source>MNU_RESET_VIEW</source>
+        <translation>Restaurer le point de vue</translation>
+    </message>
+    <message>
+        <source>MNU_LEFT_VIEW</source>
+        <translation>Gauche</translation>
+    </message>
+    <message>
+        <source>DSC_RIGHT_VIEW</source>
+        <translation>Veu de Droit</translation>
+    </message>
+    <message>
+        <source>DSC_FITRECT</source>
+        <translation>Redimensionner la scène pour ne montrer que la partie choisie par l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>MNU_FITRECT</source>
+        <translation>Montrer l&apos;encadré</translation>
+    </message>
+    <message>
+        <source>DSC_BOTTOM_VIEW</source>
+        <translation>Vue de Dessous</translation>
+    </message>
+    <message>
+        <source>DSC_DUMP_VIEW</source>
+        <translation>Sauvegarder la scène en cours au fichier image</translation>
+    </message>
+    <message>
+        <source>DSC_ZOOM_VIEW</source>
+        <translation>Zoom la vue</translation>
+    </message>
+    <message>
+        <source>VTK_IMAGE_FILES</source>
+        <translation>Fichiers Images (*.bmp *.png *.jpg *.jpeg)</translation>
+    </message>
+    <message>
+        <source>DSC_RESET_VIEW</source>
+        <translation>Restaurer le Point de Vue </translation>
+    </message>
+    <message>
+        <source>ERR_DOC_CANT_SAVE_FILE</source>
+        <translation>Il est impossible de sauvegarder le fichier</translation>
+    </message>
+    <message>
+        <source>MNU_RIGHT_VIEW</source>
+        <translation>Droit</translation>
+    </message>
+    <message>
+        <source>LBL_TOOLBAR_LABEL</source>
+        <translation>Visualiser les Opérations</translation>
+    </message>
+    <message>
+        <source>DSC_BACK_VIEW</source>
+        <translation>Vue d&apos;Arrière</translation>
+    </message>
+</context>
+<context>
+    <name>VTKViewer_MarkerDlg</name>
+    <message>
+        <source>SET_MARKER_TLT</source>
+        <translation>Définir le Repère Point</translation>
+    </message>
+</context>
+<context>
+    <name>VTKViewer_MarkerWidget</name>
+    <message>
+        <source>STANDARD_MARKER</source>
+        <translation>Standard</translation>
+    </message>
+    <message>
+        <source>CUSTOM_MARKER</source>
+        <translation>Personnalisé</translation>
+    </message>
+    <message>
+        <source>TYPE</source>
+        <translation>Type:</translation>
+    </message>
+    <message>
+        <source>SCALE</source>
+        <translation>Echelle:</translation>
+    </message>
+    <message>
+        <source>CUSTOM</source>
+        <translation>Texture:</translation>
+    </message>
+    <message>
+        <source>BROWSE</source>
+        <translation>Naviguer...</translation>
+    </message>
+    <message>
+        <source>LOAD_TEXTURE_TLT</source>
+        <translation>Charger une Texture</translation>
+    </message>
+</context>
+<context>
+    <name>VTKViewer_ViewManager</name>
+    <message>
+        <source>VTK_VIEW_TITLE</source>
+        <translation>VTK scène:%M - visualisateur:%V</translation>
+    </message>
+</context>
+<context>
+    <name>VTKViewer_Viewer</name>
+    <message>
+        <source>MEN_DUMP_VIEW</source>
+        <translation>Clicher la Vue...</translation>
+    </message>
+    <message>
+        <source>MEN_SHOW_TOOLBAR</source>
+        <translation>Montrer la Barre d&apos;Outils</translation>
+    </message>
+    <message>
+        <source>MEN_CHANGE_BACKGROUD</source>
+        <translation>Changer l&apos;Arrière-Plan...</translation>
+    </message>
+</context>
+</TS>