1 #include <XGUI_MainMenu.h>
2 #include <XGUI_Workbench.h>
3 #include <XGUI_MainWindow.h>
4 #include <XGUI_Command.h>
12 XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent)
13 : QObject(parent), myDesktop(parent)
15 parent->setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North);
16 myDesktop->setStyleSheet("QTabBar::tab {height: 24px;}");
17 myGeneralPage = addWorkbench(tr("General"));
18 myGeneralPage->parentWidget()->setMaximumWidth(200);
19 myGeneralPage->installEventFilter(this);
20 // QString aStyle = myDesktop->styleSheet();
21 // aStyle += " QTabBar::tab {min-height: 24px;}";
24 XGUI_MainMenu::~XGUI_MainMenu(void)
28 XGUI_Workbench* XGUI_MainMenu::addWorkbench(const QString& theId, const QString& theTitle)
30 QDockWidget* aDock = new QDockWidget(myDesktop);
31 aDock->setFeatures(QDockWidget::DockWidgetVerticalTitleBar);
32 aDock->setAllowedAreas(Qt::TopDockWidgetArea);
33 QString aTitle = theTitle;
34 if (aTitle.isEmpty()) {
35 aTitle = tr(theId.toLatin1().constData());
37 aDock->setWindowTitle(aTitle);
38 aDock->setMinimumHeight(30);
39 aDock->setContentsMargins(0, 0, 0, 0);
41 XGUI_Workbench* aPage = new XGUI_Workbench(aDock);
42 aPage->setObjectName(theId);
43 aDock->setWidget(aPage);
45 myDesktop->addDockWidget(Qt::TopDockWidgetArea, aDock);
46 if (myMenuTabs.length() > 1) {
47 myDesktop->tabifyDockWidget(myMenuTabs.last(), aDock);
50 myMenuTabs.append(aDock);
55 * Searches for already created workbench with given name.
57 XGUI_Workbench* XGUI_MainMenu::findWorkbench(const QString& theObjName) const
59 return myDesktop->findChild<XGUI_Workbench*>(theObjName);
63 bool XGUI_MainMenu::eventFilter(QObject *theWatched, QEvent *theEvent)
65 if (theWatched == myGeneralPage) {
66 if (theEvent->type() == QEvent::Show) {
67 myGeneralPage->parentWidget()->setMaximumWidth(16777215);
68 myGeneralPage->removeEventFilter(this);
71 return QObject::eventFilter(theWatched, theEvent);
74 XGUI_Command* XGUI_MainMenu::feature(const QString& theId) const
76 QList<QDockWidget*>::const_iterator aIt;
77 for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) {
78 XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>((*aIt)->widget());
79 XGUI_Command* aCmd = aWbn->feature(theId);
86 QList<XGUI_Command*> XGUI_MainMenu::features() const
88 QList<XGUI_Command*> aList;
89 QList<QDockWidget*>::const_iterator aIt;
90 for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) {
91 XGUI_Workbench* aWbn = static_cast<XGUI_Workbench*>((*aIt)->widget());
92 aList.append(aWbn->features());
97 QList<XGUI_Workbench*> XGUI_MainMenu::workbenches() const
99 QList<XGUI_Workbench*> aList;
100 aList.append(myGeneralPage);
101 foreach(QDockWidget* aDoc, myMenuTabs) {
102 XGUI_Workbench* aWb = dynamic_cast<XGUI_Workbench*>(aDoc->widget());