]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Implementation of the ACTION 61.7 from the COTECH61: Add preference to
authorrnv <rnv@opencascade.com>
Thu, 24 Apr 2014 06:48:40 +0000 (10:48 +0400)
committerrnv <rnv@opencascade.com>
Thu, 24 Apr 2014 06:48:40 +0000 (10:48 +0400)
set C locale for the application by default.

doc/salome/gui/images/pref_salome_general.png
doc/salome/gui/input/setting_preferences.doc
src/LightApp/LightApp_Application.cxx
src/LightApp/resources/LightApp.xml
src/LightApp/resources/LightApp_msg_en.ts
src/Qtx/QtxResourceMgr.cxx
src/Qtx/QtxResourceMgr.h
src/SUITApp/SUITApp.cxx
src/Session/SALOME_Session_Server.cxx

index a9506accfb7b87f4a9c6846290189c3b2273621e..6dade45e1656fa039fe82e97170e6e740a2898cd 100644 (file)
Binary files a/doc/salome/gui/images/pref_salome_general.png and b/doc/salome/gui/images/pref_salome_general.png differ
index 99d47827166ed2231240c643ff69d183f509c552..9fabab109f09755d21e2be44eaf455327e0add51 100644 (file)
@@ -35,6 +35,9 @@ the whole GUI SALOME session.
 - <b>Language</b>
   - <b>Current language</b> - the language used by the application
   GUI. The language change will come in force only after the application is restarted.
+  - <b>Use C locale</b>  - when checked, the C locale will be set for the application,
+  otherwise a system locale will be used. The locale change will come in force only after
+  the application is restarted.
 - <b>Look and feel</b>
   - <b>Opaque resize</b> - force opaque resize mode for viewers area (tabbed workspace).
   Clear this checkbox for less perfomant workstations.
index 15c0e9aa40ff091de1deeb25a297c0ca824daac7..976f9c8032f27411191db982a311f073f2048df1 100644 (file)
@@ -2124,6 +2124,9 @@ void LightApp_Application::createPreferences( LightApp_Preferences* pref )
   }
   pref->setItemProperty( "strings", aLangs, curLang );
   pref->setItemProperty( "icons",   aIcons, curLang );
+
+  int curLocale = pref->addPreference( tr( "PREF_CURRENT_LOCALE" ), langGroup,
+                                          LightApp_Preferences::Bool, "language", "locale" );
   // ... "Language" group <<end>>
 
   // ... "Look and feel" group <<start>>
@@ -2994,6 +2997,10 @@ void LightApp_Application::preferencesChanged( const QString& sec, const QString
   {
     SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LANG_CHANGED" ) );
   }
+  if ( sec == "language" && param == "locale")
+  {
+    SUIT_MessageBox::information( desktop(), tr( "WRN_WARNING" ), tr( "LOCALE_CHANGED" ) );
+  }
   if ( sec == "desktop" && param == "opaque_resize" ) {
     bool opaqueResize = resMgr->booleanValue( "desktop", "opaque_resize", false );
     QMainWindow::DockOptions dopts = desktop()->dockOptions();
index ff874775a8d2225815c1c9b8543ec0d7e2787ef8..4588f9ae979190009f22608fb6714c7920bcdc0c 100644 (file)
@@ -35,6 +35,7 @@
     <!-- Language settings (resource manager)-->
     <parameter name="languages"   value="en,fr,ja"/>
     <parameter name="language"    value="en"/>
+    <parameter name="locale"      value="true"/>
     <parameter name="translators" value="%P_msg_%L.qm|%P_icons.qm|%P_images.qm"/>
   </section>
   <section name="splash" >
index c9ccbaf8b94df0a804e2bf860b87bb5350373b59..8e44f37f91d432028f327b653ac246ebc13d221b 100644 (file)
@@ -92,6 +92,11 @@ CEA/DEN, CEDRAT, EDF R&amp;D, LEG, PRINCIPIA R&amp;D, BUREAU VERITAS</translatio
     <message>
         <source>LANG_CHANGED</source>
         <translation>Application language has been changed.
+The changes will be applied on the next application session.</translation>
+    </message>
+    <message>
+        <source>LOCALE_CHANGED</source>
+        <translation>Application locale has been changed.
 The changes will be applied on the next application session.</translation>
     </message>
     <message>
@@ -590,6 +595,10 @@ The changes will be applied on the next application session.</translation>
         <source>PREF_CURRENT_LANGUAGE</source>
         <translation>Current language</translation>
     </message>
+    <message>
+        <source>PREF_CURRENT_LOCALE</source>
+        <translation>Use C locale</translation>
+    </message>
     <message>
         <source>PREF_GROUP_LOOK_AND_FEEL</source>
         <translation>Look and feel</translation>
index 31cb87fc44b2125a0401937ac455b017d56a10bf..0e74d6a8dc6da70eac854cea7db917a72024dd44 100644 (file)
 
 #include <stdlib.h>
 
+/* XPM for the default pixmap */
+static const char* pixmap_not_found_xpm[] = {
+"16 16 3 1",
+"       c None",
+".      c #000000",
+"+      c #A80000",
+"                ",
+"                ",
+"    .     .     ",
+"   .+.   .+.    ",
+"  .+++. .+++.   ",
+"   .+++.+++.    ",
+"    .+++++.     ",
+"     .+++.      ",
+"    .+++++.     ",
+"   .+++.+++.    ",
+"  .+++. .+++.   ",
+"   .+.   .+.    ",
+"    .     .     ",
+"                ",
+"                ",
+"                "};
+
+QPixmap*  QtxResourceMgr::myDefaultPix = NULL;
+
 /*!
   \class QtxResourceMgr::Resources
   \internal
@@ -1214,7 +1239,6 @@ bool QtxResourceMgr::Format::save( Resources* res )
 QtxResourceMgr::QtxResourceMgr( const QString& appName, const QString& resVarTemplate )
 : myAppName( appName ),
   myCheckExist( true ),
-  myDefaultPix( 0 ),
   myIsPixmapCached( true ),
   myHasUserValues( true ),
   myWorkingMode( AllowUserValues )
@@ -1252,8 +1276,6 @@ QtxResourceMgr::~QtxResourceMgr()
 
   qDeleteAll( myResources );
   qDeleteAll( myFormats );
-
-  delete myDefaultPix;
 }
 
 /*!
@@ -2521,9 +2543,12 @@ QString QtxResourceMgr::sectionsToken() const
   \return default pixmap
   \sa setDefaultPixmap(), loadPixmap()
 */
-QPixmap QtxResourceMgr::defaultPixmap() const
+QPixmap QtxResourceMgr::defaultPixmap()
 {
   QPixmap res;
+  if(!myDefaultPix)
+    myDefaultPix = new QPixmap( pixmap_not_found_xpm );
+  
   if ( myDefaultPix && !myDefaultPix->isNull() )
     res = *myDefaultPix;
   return res;
@@ -2543,7 +2568,7 @@ void QtxResourceMgr::setDefaultPixmap( const QPixmap& pix )
   if ( pix.isNull() )
     myDefaultPix = 0;
   else
-    myDefaultPix = new QPixmap( pix );
+    myDefaultPix = new QPixmap( pix ); 
 }
 
 /*!
@@ -2863,7 +2888,6 @@ QString QtxResourceMgr::userFileName( const QString& appName, const bool /*for_l
 {
   QString fileName;
   QString pathName = QDir::homePath();
-
   QString cfgAppName = QApplication::applicationName();
   if ( !cfgAppName.isEmpty() )
     pathName = Qtx::addSlash( Qtx::addSlash( pathName ) + QString( ".config" ) ) + cfgAppName;
index 6abab30100c71d21ec4b00239827dbd5cf35a9ce..11eab4a4a5b7f0b41895b8fbd85203fb080a9313 100644 (file)
@@ -141,8 +141,8 @@ public:
   QString          option( const QString& ) const;
   void             setOption( const QString&, const QString& );
 
-  QPixmap          defaultPixmap() const;
-  virtual void     setDefaultPixmap( const QPixmap& );
+  static QPixmap  defaultPixmap();
+  static void     setDefaultPixmap( const QPixmap& );
 
   QString          resSection() const;
   QString          langSection() const;
@@ -201,7 +201,7 @@ private:
   ResList          myResources;               //!< resources list
   bool             myCheckExist;              //!< "check existance" flag
   TransListMap     myTranslator;              //!< map of loaded translators
-  QPixmap*         myDefaultPix;              //!< default icon
+  static QPixmap*  myDefaultPix;              //!< default icon
   bool             myIsPixmapCached;          //!< "cached pixmaps" flag
 
   bool             myHasUserValues;           //!< \c true if user preferences has been read
index 9340f4d00bd924b4852281884ea250440b28d9f0..ee301cb25fce7f9bae9cf61ea1fbc5e786851da6 100644 (file)
@@ -97,29 +97,6 @@ static QString getAppName( const QString& libName )
 //   }
 // }
 
-/* XPM */
-static const char* pixmap_not_found_xpm[] = {
-"16 16 3 1",
-"       c None",
-".      c #000000",
-"+      c #A80000",
-"                ",
-"                ",
-"    .     .     ",
-"   .+.   .+.    ",
-"  .+++. .+++.   ",
-"   .+++.+++.    ",
-"    .+++++.     ",
-"     .+++.      ",
-"    .+++++.     ",
-"   .+++.+++.    ",
-"  .+++. .+++.   ",
-"   .+.   .+.    ",
-"    .     .     ",
-"                ",
-"                ",
-"                "};
-
 class SUITApp_Session: public SUIT_Session
 {
 public:
@@ -143,8 +120,6 @@ public:
 
     if ( resMgr )
     {
-      static QPixmap defaultPixmap( pixmap_not_found_xpm );
-      resMgr->setDefaultPixmap( defaultPixmap );
       resMgr->setOption( "translators", QString( "%P_msg_%L.qm|%P_icons.qm|%P_images.qm" ) );
     }
     return resMgr;
index 3f78ea2a08812d8d29ee7e2b77fa9825a554c13b..42770dbfca724eb6ff84b328ac8365236e603a45 100755 (executable)
@@ -110,29 +110,6 @@ void MessageOutput( QtMsgType type, const char* msg )
   }
 }
 
-/* XPM */
-static const char* pixmap_not_found_xpm[] = {
-"16 16 3 1",
-"       c None",
-".      c #000000",
-"+      c #A80000",
-"                ",
-"                ",
-"    .     .     ",
-"   .+.   .+.    ",
-"  .+++. .+++.   ",
-"   .+++.+++.    ",
-"    .+++++.     ",
-"     .+++.      ",
-"    .+++++.     ",
-"   .+++.+++.    ",
-"  .+++. .+++.   ",
-"   .+.   .+.    ",
-"    .     .     ",
-"                ",
-"                ",
-"                "};
-
 QString salomeVersion()
 {
   return GUI_VERSION_STR;
@@ -145,7 +122,6 @@ public:
   {
     setCurrentFormat( "xml" );
     setOption( "translators", QString( "%P_msg_%L.qm|%P_icons.qm|%P_images.qm" ) );
-    setDefaultPixmap( QPixmap( pixmap_not_found_xpm ) );
   }
   static void initResourceMgr()
   {
@@ -277,7 +253,7 @@ public:
   SALOME_Session() : SUIT_Session() {}
   virtual ~SALOME_Session() {}
 
-protected:
+public:
   virtual SUIT_ResourceMgr* createResourceMgr( const QString& appName ) const
   {
     SALOME_ResourceMgr::initResourceMgr();
@@ -414,6 +390,19 @@ int main( int argc, char **argv )
   if ( !qtdir.isEmpty() )
     QApplication::addLibraryPath( QDir( qtdir ).absoluteFilePath( "plugins" ) );
 
+  {
+    SALOME_Session s;
+    QApplication::setApplicationName( "salome" );
+    SUIT_ResourceMgr* resMgr = s.createResourceMgr( "SalomeApp" );
+    bool isCloc = resMgr->booleanValue( "language", "locale", true );
+    if ( isCloc ) { 
+      QLocale::setDefault( QLocale::c() );
+    }
+    else {
+      QLocale::setDefault( QLocale::system() );
+    }
+  }
+
   // Create Qt application instance;
   // this should be done the very first!
   SALOME_QApplication _qappl( argc, argv );