Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_MainMenu.cpp
index a558cdb36f052c09ef5327f80022683aea9c3e99..d874cc974d48745772d71c12124baf12a7cdd1b4 100644 (file)
@@ -3,6 +3,9 @@
 #include <XGUI_MenuGroupPanel.h>
 #include <XGUI_MainWindow.h>
 #include <XGUI_Command.h>
+#include <XGUI_Preferences.h>
+
+#include <SUIT_ResourceMgr.h>
 
 #include <QLayout>
 #include <QTabWidget>
@@ -13,7 +16,8 @@
 #include <QTabBar>
 
 XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent)
-    : QWidget(parent), myDesktop(parent)
+    : QWidget(parent),
+      myDesktop(parent)
 {
   myGeneralPage = new XGUI_MenuGroupPanel(this);
   myGeneralPage->setObjectName("Default");
@@ -29,7 +33,7 @@ XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent)
   aMainLayout->setContentsMargins(0, 2, 2, 0);
   aMainLayout->setSpacing(2);
   setLayout(aMainLayout);
-  setFixedHeight(menuHeight());
+  updateFromResources();
 }
 
 XGUI_MainMenu::~XGUI_MainMenu(void)
@@ -45,6 +49,7 @@ XGUI_Workbench* XGUI_MainMenu::addWorkbench(const QString& theId, const QString&
   XGUI_Workbench* aPage = new XGUI_Workbench(myMenuTabs);
   aPage->setObjectName(theId);
   myMenuTabs->addTab(aPage, aTitle);
+  myWorkbenches.append(aPage);
   return aPage;
 }
 
@@ -56,7 +61,6 @@ XGUI_Workbench* XGUI_MainMenu::findWorkbench(const QString& theObjName) const
   return myDesktop->findChild<XGUI_Workbench*>(theObjName);
 }
 
-
 bool XGUI_MainMenu::eventFilter(QObject *theWatched, QEvent *theEvent)
 {
   if (theWatched == myGeneralPage) {
@@ -77,12 +81,9 @@ void XGUI_MainMenu::insertConsole(QWidget* theConsole)
   aCloseTabButton->setFixedSize(16, 16);
   aCloseTabButton->setIcon(QIcon(":pictures/wnd_close.png"));
   aCloseTabButton->setFlat(true);
-  aTabBar->setTabButton(aConsoleTabId,
-                        QTabBar::RightSide,
-                        aCloseTabButton);
+  aTabBar->setTabButton(aConsoleTabId, QTabBar::RightSide, aCloseTabButton);
 
-  connect(aCloseTabButton, SIGNAL(clicked()),
-          myDesktop, SLOT(dockPythonConsole()));
+  connect(aCloseTabButton, SIGNAL(clicked()), myDesktop, SLOT(dockPythonConsole()));
 }
 
 void XGUI_MainMenu::removeConsole()
@@ -96,10 +97,12 @@ XGUI_Command* XGUI_MainMenu::feature(const QString& theId) const
   XGUI_Command* result;
   result = myGeneralPage->feature(theId);
   if (!result) {
-    for (int aTabIdx = 0; aTabIdx < myMenuTabs->count(); ++aTabIdx) {
-      XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>(myMenuTabs->widget(aTabIdx));
+    XGUI_Workbench* aWbn;
+    foreach (aWbn, myWorkbenches)
+    {
       result = aWbn->feature(theId);
-      if (result) break;
+      if (result)
+        break;
     }
   }
   return result;
@@ -108,8 +111,9 @@ XGUI_Command* XGUI_MainMenu::feature(const QString& theId) const
 QList<XGUI_Command*> XGUI_MainMenu::features() const
 {
   QList<XGUI_Command*> aList = myGeneralPage->features();
-  for (int aTabIdx = 0; aTabIdx < myMenuTabs->count(); ++aTabIdx) {
-    XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>(myMenuTabs->widget(aTabIdx));
+  XGUI_Workbench* aWbn;
+  foreach (aWbn, myWorkbenches)
+  {
     aList.append(aWbn->features());
   }
   return aList;
@@ -117,22 +121,28 @@ QList<XGUI_Command*> XGUI_MainMenu::features() const
 
 int XGUI_MainMenu::menuItemSize() const
 {
-  //TODO(sbh, vsv): get this value from the preferences
-  static const ItemSize DEFAULT_ITEM_SIZE = Medium;
-  return (int) DEFAULT_ITEM_SIZE;
+  const int kDefaultItemSize = 25;
+  return kDefaultItemSize;
 }
 
 int XGUI_MainMenu::menuHeight() const
 {
   // Default group has no tabs above --> one extra row
   int rows = menuItemRowsCount() + 1;
-  const int kMarginsSpacings = 4;
+  const int kMarginsSpacings = 5;
   return rows * menuItemSize() + kMarginsSpacings;
 }
 
 int XGUI_MainMenu::menuItemRowsCount() const
 {
-  //TODO(sbh, vsv): get this value from the preferences
-  static const int DEFAULT_ITEM_ROWS_COUNT = 3;
-  return DEFAULT_ITEM_ROWS_COUNT;
+  static const int kDefaultRowsCount = 3;
+  int aRowsCount = XGUI_Preferences::resourceMgr()->integerValue(XGUI_Preferences::MENU_SECTION,
+                                                                 "rows_number", kDefaultRowsCount);
+  return aRowsCount;
+}
+
+void XGUI_MainMenu::updateFromResources()
+{
+  setFixedHeight(menuHeight());
+  repaint();
 }