X-Git-Url: http://git.salome-platform.org/gitweb/?a=blobdiff_plain;f=src%2FXGUI%2FXGUI_MainMenu.cpp;h=9f79a1db88b6fd44796cbd4e33577fbed8f552ee;hb=329d73a7dbce38e38063ff41186be492e3529ab5;hp=0be7579aaa9626ae08df1addc1215d4f6e5ec935;hpb=f09c9895be486d30c9aa48da040c3aeb3ccbaa74;p=modules%2Fshaper.git diff --git a/src/XGUI/XGUI_MainMenu.cpp b/src/XGUI/XGUI_MainMenu.cpp index 0be7579aa..9f79a1db8 100644 --- a/src/XGUI/XGUI_MainMenu.cpp +++ b/src/XGUI/XGUI_MainMenu.cpp @@ -1,55 +1,107 @@ -#include "XGUI_MainMenu.h" -#include "XGUI_Workbench.h" -#include "XGUI_MainWindow.h" +#include +#include +#include +#include #include #include #include #include +#include -XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent) : - QObject(parent), myDesktop(parent) +XGUI_MainMenu::XGUI_MainMenu(XGUI_MainWindow *parent) + : QObject(parent), myDesktop(parent) { - parent->setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North); + parent->setTabPosition(Qt::TopDockWidgetArea, QTabWidget::North); + myDesktop->setStyleSheet("QTabBar::tab {height: 24px;}"); + myGeneralPage = addWorkbench(tr("General")); + myGeneralPage->parentWidget()->setMaximumWidth(200); + myGeneralPage->installEventFilter(this); +// QString aStyle = myDesktop->styleSheet(); +// aStyle += " QTabBar::tab {min-height: 24px;}"; } - XGUI_MainMenu::~XGUI_MainMenu(void) { } -int XGUI_MainMenu::addWorkbench(QString theTitle) +XGUI_Workbench* XGUI_MainMenu::addWorkbench(const QString& theId, const QString& theTitle) { - QDockWidget* aDoc = new QDockWidget(myDesktop); - aDoc->setFeatures(QDockWidget::DockWidgetVerticalTitleBar); - aDoc->setAllowedAreas(Qt::TopDockWidgetArea); - aDoc->setWindowTitle(theTitle); - aDoc->setMinimumHeight(30); - aDoc->setContentsMargins(0, 0, 0, 0); + QDockWidget* aDock = new QDockWidget(myDesktop); + aDock->setFeatures(QDockWidget::DockWidgetVerticalTitleBar); + aDock->setAllowedAreas(Qt::TopDockWidgetArea); + QString aTitle = theTitle; + if (aTitle.isEmpty()) { + aTitle = tr(theId.toLatin1().constData()); + } + aDock->setWindowTitle(aTitle); + aDock->setMinimumHeight(30); + aDock->setContentsMargins(0, 0, 0, 0); - XGUI_Workbench* aPage = new XGUI_Workbench(aDoc); - aDoc->setWidget(aPage); + XGUI_Workbench* aPage = new XGUI_Workbench(aDock); + aPage->setObjectName(theId); + aDock->setWidget(aPage); - myDesktop->addDockWidget(Qt::TopDockWidgetArea, aDoc); - if (myMenuTabs.length() > 1) { - myDesktop->tabifyDockWidget(myMenuTabs.last(), aDoc); - } + myDesktop->addDockWidget(Qt::TopDockWidgetArea, aDock); + if (myMenuTabs.length() > 1) { + myDesktop->tabifyDockWidget(myMenuTabs.last(), aDock); + } + myMenuTabs.append(aDock); + return aPage; +} - myMenuTabs.append(aDoc); - return myMenuTabs.length() - 1; +/* + * Searches for already created workbench with given name. + */ +XGUI_Workbench* XGUI_MainMenu::findWorkbench(const QString& theObjName) const +{ + return myDesktop->findChild(theObjName); } -int XGUI_MainMenu::addGroup(int thePageId) +bool XGUI_MainMenu::eventFilter(QObject *theWatched, QEvent *theEvent) { - XGUI_Workbench* aPage = dynamic_cast(myMenuTabs[thePageId]->widget()); - return aPage->addGroup(); + if (theWatched == myGeneralPage) { + if (theEvent->type() == QEvent::Show) { + myGeneralPage->parentWidget()->setMaximumWidth(16777215); + myGeneralPage->removeEventFilter(this); + } + } + return QObject::eventFilter(theWatched, theEvent); } -void XGUI_MainMenu::addCommand(int thePageId, int theGroupId, XGUI_Command* theCommand) +XGUI_Command* XGUI_MainMenu::feature(const QString& theId) const { - XGUI_Workbench* aPage = dynamic_cast(myMenuTabs[thePageId]->widget()); - aPage->addCommand(theGroupId, theCommand); + QList::const_iterator aIt; + for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) { + XGUI_Workbench* aWbn = static_cast((*aIt)->widget()); + XGUI_Command* aCmd = aWbn->feature(theId); + if (aCmd) + return aCmd; + } + return 0; } +QList XGUI_MainMenu::features() const +{ + QList aList; + QList::const_iterator aIt; + for (aIt = myMenuTabs.constBegin(); aIt != myMenuTabs.constEnd(); ++aIt) { + XGUI_Workbench* aWbn = static_cast((*aIt)->widget()); + aList.append(aWbn->features()); + } + return aList; +} + +QList XGUI_MainMenu::workbenches() const +{ + QList aList; + aList.append(myGeneralPage); + foreach(QDockWidget* aDoc, myMenuTabs) { + XGUI_Workbench* aWb = dynamic_cast(aDoc->widget()); + if (aWb) + aList.append(aWb); + } + return aList; +} \ No newline at end of file