]> SALOME platform Git repositories - modules/gui.git/commitdiff
Salome HOME
Improve Help menu management
authoradv <adv@opencascade.com>
Mon, 8 Feb 2010 08:30:34 +0000 (08:30 +0000)
committeradv <adv@opencascade.com>
Mon, 8 Feb 2010 08:30:34 +0000 (08:30 +0000)
src/LightApp/LightApp_Application.cxx
src/LightApp/resources/LightApp.xml
src/SalomeApp/resources/SalomeApp.xml

index 3a6d053b26096cc57a4ea8d68700bb9dfd719f89..8257b5f335ef1160b2534eb7a82c10d02c94d919 100644 (file)
@@ -451,6 +451,12 @@ void LightApp_Application::createActionForViewer( const int id,
 }
 
 /*!Create actions:*/
+
+typedef struct {
+  QString filePath;
+  QString subMenu;
+} helpInfoStruct;
+
 void LightApp_Application::createActions()
 {
   STD_Application::createActions();
@@ -465,9 +471,8 @@ void LightApp_Application::createActions()
 
   //! Help for modules
   int helpMenu = createMenu( tr( "MEN_DESK_HELP" ), -1, -1, 1000 );
-  int helpModuleMenu = createMenu( tr( "MEN_DESK_MODULE_HELP" ), helpMenu, -1, 0 );
   createMenu( separator(), helpMenu, -1, 1 );
-
+  helpInfoStruct helpData; 
   QStringList aModuleList;
   modules( aModuleList, false );
   aModuleList.prepend( "GUI" );
@@ -476,22 +481,23 @@ void LightApp_Application::createActions()
   int id = LightApp_Application::UserID + FIRST_HELP_ID;
 
   // help for other existing modules
+
   QString aModule;
   foreach( aModule, aModuleList ) {
     if ( aModule.isEmpty() )                                         // module title (user name)
       continue;
     QString modName = moduleName( aModule );                         // module name
-    IMap <QString, QString> paramValue;
+    IMap <QString, helpInfoStruct > paramValue;
     if ( modName.isEmpty() ) modName = aModule;                      // for KERNEL and GUI
     QString rootDir = QString( "%1_ROOT_DIR" ).arg( modName );       // module root dir variable
     QString modDir  = getenv( rootDir.toLatin1().constData() );      // module root dir
-
     QString docSection;
     if (resMgr->hasValue( modName, "documentation" ) )
       docSection  = resMgr->stringValue(modName, "documentation");
     else if ( resMgr->hasSection( modName + "_documentation" ) )
       docSection = modName + "_documentation";
     if ( !docSection.isEmpty() ) {
+      helpData.subMenu = resMgr->stringValue( docSection, "sub_menu", "" ).arg( modName );
       QStringList listOfParam = resMgr->parameters( docSection );
       foreach( QString paramName, listOfParam ){
         QString valueStr = resMgr->stringValue( docSection, paramName );
@@ -499,8 +505,10 @@ void LightApp_Application::createActions()
           QFileInfo fi( valueStr );
           if ( fi.isRelative() && !modDir.isEmpty() )
             valueStr = Qtx::addSlash( modDir ) + valueStr;
-          if ( QFile::exists( valueStr ) )
-            paramValue.insert( paramName, valueStr );
+          if ( QFile::exists( valueStr ) ){
+            helpData.filePath = valueStr;
+            paramValue.insert( paramName, helpData );
+          }
         }
       }
     }
@@ -508,20 +516,27 @@ void LightApp_Application::createActions()
     if ( paramValue.isEmpty() && !modDir.isEmpty() ) {
       QStringList idxLst = QStringList() << modDir << "share" << "doc" << "salome" << "gui" << modName << "index.html";
       QString indexFile = idxLst.join( QDir::separator() );          // index file
-      if ( QFile::exists( indexFile ) )
-        paramValue.insert( tr( "%1 Help" ).arg( aModule ), indexFile );
+      if ( QFile::exists( indexFile ) ){
+        helpData.filePath = indexFile;
+        paramValue.insert( tr( "%1 Help" ).arg( aModule ), helpData );
+      }
     }
     
-    IMapConstIterator<QString, QString> fileIt;
+    IMapConstIterator<QString, helpInfoStruct > fileIt;
     for ( fileIt = paramValue.begin(); fileIt != paramValue.end(); fileIt++ ) {
       QString helpFileName = fileIt.key();
-      QString helpFilePath = fileIt.value();
+      helpData = fileIt.value();
       QAction* a = createAction( id, helpFileName,
                                  resMgr->loadPixmap( "STD", tr( "ICON_HELP" ), false ),
                                  helpFileName, helpFileName,
                                  0, desk, false, this, SLOT( onHelpContentsModule() ) );
-      a->setData( helpFilePath );
-      createMenu( a, helpModuleMenu, -1 );
+      a->setData( helpData.filePath );
+      if ( !helpData.subMenu.isEmpty() ){
+        int helpSubMenu = createMenu( helpData.subMenu, helpMenu, -1, 0 );
+        createMenu( a, helpSubMenu, -1 ); 
+      }
+      else
+        createMenu( a, helpMenu, -1, 0 );
       id++;
     }
   }
index 348795f7a07b19ae248f5ceba3ef3e5df83d6b62..42ea7105b863bb7467ab346b26de3fe5e968d887 100644 (file)
     <parameter name="Title"      value="63, 213, 255"  />
     <parameter name="NodeBody"   value="255, 249, 147" />
   </section>
+  <section name="GUI" >
+    <parameter name="documentation" value="HELP_GUI"/>
+  </section>
+  <section name="KERNEL" >
+    <parameter name="documentation" value="HELP_KERNEL"/>
+  </section>
+  <section name="HELP_GUI" >
+    <parameter name="sub_menu" value="%1"/>
+    <parameter name="GUI User's Documentation" value="${GUI_ROOT_DIR}/share/doc/salome/gui/GUI/index.html"/>
+    <parameter name="GUI Developer's Documentation" value="${GUI_ROOT_DIR}/share/doc/salome/tui/GUI/index.html"/>
+  </section>
+  <section name="HELP_KERNEL" >
+    <parameter name="sub_menu" value="%1"/>
+    <parameter name="KERNEL User's Documentation" value="${KERNEL_ROOT_DIR}/share/doc/salome/gui/KERNEL/index.html"/>
+    <parameter name="KERNEL Developer's Documentation" value="${KERNEL_ROOT_DIR}/share/doc/salome/tui/KERNEL/index.html"/>
+  </section>
 </document>
index 956a3a13c7c4cdc2a7a3d5dc0070abc9bf4359ff..38ab2e1a16f47d75c7988255a63989b756242a01 100644 (file)
     <parameter value="C:\Program Files\Internet Explorer\iexplore.exe" name="winapplication" />
     <parameter value="/usr/bin/mozilla" name="application" />
   </section>
+  <section name="GUI" >
+    <parameter name="documentation" value="HELP_GUI"/>
+  </section>
+  <section name="KERNEL" >
+    <parameter name="documentation" value="HELP_KERNEL"/>
+  </section>
+  <section name="HELP_GUI" >
+    <parameter name="sub_menu" value="%1"/>
+    <parameter name="GUI User's Documentation" value="${GUI_ROOT_DIR}/share/doc/salome/gui/GUI/index.html"/>
+    <parameter name="GUI Developer's Documentation" value="${GUI_ROOT_DIR}/share/doc/salome/tui/GUI/index.html"/>
+  </section>
+  <section name="HELP_KERNEL" >
+    <parameter name="sub_menu" value="%1"/>
+    <parameter name="KERNEL User's Documentation" value="${KERNEL_ROOT_DIR}/share/doc/salome/gui/KERNEL/index.html"/>
+    <parameter name="KERNEL Developer's Documentation" value="${KERNEL_ROOT_DIR}/share/doc/salome/tui/KERNEL/index.html"/>
+  </section>
+
 </document>