]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
InfoPanel introduction v3.
authorvsr <vsr@opencascade.com>
Wed, 18 Nov 2020 15:38:58 +0000 (18:38 +0300)
committervsr <vsr@opencascade.com>
Wed, 18 Nov 2020 15:38:58 +0000 (18:38 +0300)
src/CAM/CAM_Application.cxx
src/CAM/CAM_Application.h
src/LightApp/LightApp_Application.cxx
src/LightApp/LightApp_ModuleAction.cxx
src/LightApp/LightApp_ModuleAction.h
src/LightApp/resources/LightApp_msg_en.ts
src/LightApp/resources/LightApp_msg_fr.ts
src/LightApp/resources/LightApp_msg_ja.ts

index ae731cee51f48a1906f062719fbea145e5af7cf3..f7052bb2036485a83a9bab2f6043dc631c9c99c3 100644 (file)
@@ -640,7 +640,7 @@ QString CAM_Application::moduleTitle( const QString& name )
 
 /*!
   \brief Get module icon name.
-  \param name module name
+  \param name module name or title
   \return module icon or null QString if module is not found
 */
 QString CAM_Application::moduleIcon( const QString& name )
@@ -648,24 +648,40 @@ QString CAM_Application::moduleIcon( const QString& name )
   QString res;
   for ( ModuleInfoList::const_iterator it = myInfoList.begin(); it != myInfoList.end() && res.isNull(); ++it )
   {
-    if ( (*it).name == name )
+    if ( (*it).name == name || (*it).title == name )
       res = (*it).icon;
   }
   return res;
 }
 
+/*!
+  \brief Get module description.
+  \param name module name or title
+  \return module description or null QString if description is not provided in config file.
+*/
+QString CAM_Application::moduleDescription( const QString& name )
+{
+  QString res;
+  for ( ModuleInfoList::const_iterator it = myInfoList.begin(); it != myInfoList.end() && res.isNull(); ++it )
+  {
+    if ( (*it).name == name || (*it).title == name )
+      res = (*it).description;
+  }
+  return res;
+}
+
 /*!
   \brief Get module library name by its title (user name).
-  \param title module title (user name)
+  \param title module name or title
   \param full if \c true, return full library name, otherwise return its internal name
   \return module library name or null QString if module is not found
  */
-QString CAM_Application::moduleLibrary( const QString& title, const bool full )
+QString CAM_Application::moduleLibrary( const QString& name, const bool full )
 {
   QString res;
   for ( ModuleInfoList::const_iterator it = myInfoList.begin(); it != myInfoList.end() && res.isEmpty(); ++it )
   {
-    if ( (*it).title == title )
+    if ( (*it).name == name || (*it).title == name )
       res = (*it).library;
   }
   if ( !res.isEmpty() && full )
@@ -771,6 +787,8 @@ void CAM_Application::readModuleList()
 
     QString modIcon = resMgr->stringValue( *it, "icon", QString() );
 
+    QString modDescription = resMgr->stringValue( *it, "description", QString() );
+
     QString modLibrary = resMgr->stringValue( *it, "library", QString() ).trimmed();
     if ( !modLibrary.isEmpty() )
     {
@@ -801,6 +819,7 @@ void CAM_Application::readModuleList()
     inf.status = hasGui ? stUnknown : stNoGui;
     if ( hasGui ) inf.library = modLibrary;
     inf.icon = modIcon;
+    inf.description = modDescription;
     inf.version = version;
     myInfoList.append( inf );
   }
index b0b69d3f6423aba76ae753b6dc49e3514272a724..a11669897c504317043ac1d23e914df7cb1bef8d 100644 (file)
@@ -74,6 +74,7 @@ public:
   static QString      moduleName( const QString& );
   static QString      moduleTitle( const QString& );
   static QString      moduleIcon( const QString& );
+  static QString      moduleDescription( const QString& );
   static QString      moduleLibrary( const QString&, const bool = true );
 
   virtual void        createEmptyStudy();
@@ -100,7 +101,7 @@ private:
 private:
   enum { stUnknown = 0, stNoGui, stInaccessible, stReady };
   typedef struct { 
-    QString name, title, icon, library, version;
+    QString name, title, icon, library, version, description;
     int status;
   } ModuleInfo;
   typedef QList<ModuleInfo> ModuleInfoList;
index 67b1112136c51ef5bcb46c244a90c4ececed9a44..bb80f17f6729f69423c8121c0f905dfa8e9a5569 100644 (file)
@@ -4154,9 +4154,20 @@ void LightApp_Application::updateWindows()
 
   loadDockWindowsState();
 
-  if (!activeModule() && infoPanel() ) {
+  if (!activeModule() && infoPanel() )
+  {
     infoPanel()->clear();
-    infoPanel()->addAction( action(ModulesListId) );
+    LightApp_ModuleAction* ma = qobject_cast<LightApp_ModuleAction*>(action(ModulesListId));
+    if ( ma && ma->count() > 0 )
+    {
+      int grp = infoPanel()->addGroup( tr( "INFO_AVAILABLE_MODULES" ) );
+      foreach(QString mname, ma->modules())
+      {
+        infoPanel()->addAction( ma->moduleAction( mname ), grp );
+        if ( !moduleDescription( mname ).isEmpty() )
+          infoPanel()->addLabel( moduleDescription( mname ), grp );
+      }
+    }
   }
 }
 
index fa9a8c6953ce059aee0e1f79d407e2af0f7f084e..9431ec346630067710ece247ea3bad8f697bc76c 100644 (file)
@@ -271,6 +271,15 @@ LightApp_ModuleAction::~LightApp_ModuleAction()
 {
 }
 
+/*!
+  \brief Get number of registered modules.
+  \return modules count
+*/
+int LightApp_ModuleAction::count() const
+{
+  return modules().count();
+}
+
 /*!
   \brief Get list of modules.
   \return modules names list
@@ -314,6 +323,15 @@ void LightApp_ModuleAction::setModuleIcon( const QString& name, const QIcon& ico
   update();
 }
 
+/*!
+  \brief Get module action.
+  \param name module name
+*/
+QAction* LightApp_ModuleAction::moduleAction( const QString& name ) const
+{
+  return mySet->moduleAction( name );
+}
+
 /*!
   \brief Add module into the list.
   \param name module name
index c5e6da61c8c207c8cf3a111aa02b2060cfdd9bc1..1048e8b4c496a24e0ebc1d6bf84da2f1e459a988 100644 (file)
@@ -50,11 +50,14 @@ public:
   LightApp_ModuleAction( const QString&, const QIcon&, QObject* = 0 );
   virtual ~LightApp_ModuleAction();
 
+  int              count() const;
   QStringList      modules() const;
 
   QIcon            moduleIcon( const QString& ) const;
   void             setModuleIcon( const QString&, const QIcon& );
 
+  QAction*         moduleAction( const QString& ) const;
+
   void             insertModule( const QString&, const QIcon&, const int = -1 );
   void             removeModule( const QString& );
 
index c19044846a1a8307c0f5ebe42f847115655062ee..afee886f9eadd2f7aac98679f6eeffed67677f1d 100644 (file)
@@ -1125,6 +1125,14 @@ File does not exist</translation>
     <source>PREF_PY_NUM_COLUMNS</source>
     <translation>Number of columns:</translation>
   </message>
+  <message>
+    <source>INFO_GETTING_STARTED</source>
+    <translation>Getting started</translation>
+  </message>
+  <message>
+    <source>INFO_AVAILABLE_MODULES</source>
+    <translation>Available modules</translation>
+  </message>
 </context>
 <context>
     <name>LightApp_Module</name>
index 9bc1562180a18ede5fda40e53c1c12d3bfa73a1d..899f3bd49b8061171e478480d74c3b7f2404d7fe 100644 (file)
@@ -1125,6 +1125,14 @@ Le fichier n&apos;existe pas</translation>
         <source>PREF_PY_NUM_COLUMNS</source>
         <translation>Nombre de colonnes:</translation>
     </message>
+    <message>
+      <source>INFO_GETTING_STARTED</source>
+      <translation type="unfinished">Getting started</translation>
+    </message>
+    <message>
+      <source>INFO_AVAILABLE_MODULES</source>
+      <translation type="unfinished">Available modules</translation>
+    </message>
 </context>
 <context>
     <name>LightApp_Module</name>
index fc99440c00b7fc1829187680c2571843661f866c..06eadeb995b3dfcf658c735c206e1a33605fade6 100644 (file)
@@ -1123,6 +1123,14 @@ Pythonファイルは、文字、数字、アンダースコアが含まれて
       <source>PREF_PY_NUM_COLUMNS</source>
       <translation>列数</translation>
     </message>
+    <message>
+      <source>INFO_GETTING_STARTED</source>
+      <translation type="unfinished">Getting started</translation>
+    </message>
+    <message>
+      <source>INFO_AVAILABLE_MODULES</source>
+      <translation type="unfinished">Available modules</translation>
+    </message>
   </context>
   <context>
     <name>LightApp_Module</name>