Salome HOME
Merge branch 'master' of newgeom:newgeom
[modules/shaper.git] / src / XGUI / XGUI_MainMenu.cpp
index f6b7036113ed3885023f8af016a243e3719dcf4a..4c8e7dc3c6ce612b6530213ce6c974f56ae5cdda 100644 (file)
@@ -1,16 +1,21 @@
-#include "XGUI_MainMenu.h"
-#include "XGUI_Workbench.h"
-#include "XGUI_MainWindow.h"
+#include <XGUI_MainMenu.h>
+#include <XGUI_Workbench.h>
+#include <XGUI_MainWindow.h>
+#include <XGUI_Command.h>
 
 #include <QLayout>
 #include <QTabWidget>
 #include <QLabel>
 #include <QDockWidget>
+#include <QEvent>
 
 XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent)
     : QObject(parent), myDesktop(parent)
 {
   parent->setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North);
+  myGeneralPage = addWorkbench(tr("General"));
+  myGeneralPage->parentWidget()->setMaximumWidth(200);
+  myGeneralPage->installEventFilter(this);
 }
 
 XGUI_MainMenu::~XGUI_MainMenu(void)
@@ -50,3 +55,39 @@ XGUI_Workbench* XGUI_MainMenu::findWorkbench(const QString& theObjName)
 {
   return myDesktop->findChild<XGUI_Workbench*>(theObjName);
 }
+
+
+bool XGUI_MainMenu::eventFilter(QObject *theWatched, QEvent *theEvent)
+{
+  if (theWatched == myGeneralPage) {
+    if (theEvent->type() == QEvent::Show) {
+      myGeneralPage->parentWidget()->setMaximumWidth(16777215);
+      myGeneralPage->removeEventFilter(this);
+    }
+  }
+  return QObject::eventFilter(theWatched, theEvent);
+}
+
+XGUI_Command* XGUI_MainMenu::feature(const QString& theId) const
+{
+  QList<QDockWidget*>::const_iterator aIt;
+  for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) {
+    XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>((*aIt)->widget());
+    XGUI_Command* aCmd = aWbn->feature(theId);
+    if (aCmd)
+      return aCmd;
+  }
+  return 0;
+}
+
+QList<XGUI_Command*> XGUI_MainMenu::features() const
+{
+  QList<XGUI_Command*> aList;
+  QList<QDockWidget*>::const_iterator aIt;
+  for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) {
+    XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>((*aIt)->widget());
+    aList.append(aWbn->features());
+  }
+  return aList;
+}
+