Salome HOME
Updates for stability of application
[modules/shaper.git] / src / XGUI / XGUI_Workbench.cpp
index b3a1aee2b98d5db5c01e5ada92be46433ad7ec30..468d8d0ce1f1fdfa4732aedf1243355e605bcca2 100644 (file)
@@ -50,6 +50,7 @@ XGUI_Workbench::XGUI_Workbench(QWidget *theParent)
 
   myCommandsArea = new CommandsArea(this);
   aMainLayout->addWidget(myCommandsArea);
+  myCommandsArea->viewport()->installEventFilter(this);
 
   myChildWidget = new QWidget(myCommandsArea);
   myCommandsArea->setWidget(myChildWidget);
@@ -159,3 +160,34 @@ bool XGUI_Workbench::isExceedsRight()
   int aWgtWidth = myChildWidget->childrenRect().width();
   return ((aVPWidth - aPos.x()) < aWgtWidth);
 }
+
+bool XGUI_Workbench::eventFilter(QObject *theObj, QEvent *theEvent)
+{
+  if (theObj == myCommandsArea->viewport()) {
+    if (theEvent->type() == QEvent::Resize) {
+      myLeftButton->setVisible(isExceedsLeft());
+      myRightButton->setVisible(isExceedsRight());
+    }
+  }
+  return QWidget::eventFilter(theObj, theEvent);
+}
+
+XGUI_Command* XGUI_Workbench::feature(const QString& theId) const
+{
+  QList<XGUI_MenuGroupPanel*>::const_iterator aIt;
+  for (aIt = myGroups.constBegin(); aIt != myGroups.constEnd(); ++aIt) {
+    XGUI_Command* aCmd = (*aIt)->feature(theId);
+    if (aCmd)
+      return aCmd;
+  }
+  return 0;
+}
+
+QList<XGUI_Command*> XGUI_Workbench::features() const
+{
+  QList<XGUI_Command*> aList;
+  QList<XGUI_MenuGroupPanel*>::const_iterator aIt;
+  for (aIt = myGroups.constBegin(); aIt != myGroups.constEnd(); ++aIt) 
+    aList.append((*aIt)->features());
+  return aList;
+}
\ No newline at end of file