1 #include "XGUI_MainWindow.h"
2 #include "XGUI_Constants.h"
3 #include "XGUI_MainMenu.h"
4 #include "XGUI_ViewWindow.h"
5 #include "XGUI_Viewer.h"
6 #include "XGUI_ObjectsBrowser.h"
8 #include <PyConsole_Console.h>
9 #include <PyConsole_EnhInterp.h>
12 #include <QTreeWidget>
13 #include <QDockWidget>
17 #include <QToolButton>
18 #include <QTreeWidgetItem>
22 #include <QFormLayout>
23 #include <QDoubleSpinBox>
24 #include <QPushButton>
25 #include <QScrollArea>
29 XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
30 : QMainWindow(parent),
33 myPropertyPanelDock(0)
35 setWindowTitle(tr("New Geom"));
36 myMenuBar = new XGUI_MainMenu(this);
38 QMdiArea* aMdiArea = new QMdiArea(this);
39 setCentralWidget(aMdiArea);
41 myViewer = new XGUI_Viewer(this);
43 //createDockWidgets();
46 XGUI_MainWindow::~XGUI_MainWindow(void)
50 //******************************************************
51 QMdiArea* XGUI_MainWindow::mdiArea() const
53 return static_cast<QMdiArea*>(centralWidget());
56 //******************************************************
57 void XGUI_MainWindow::showObjectBrowser()
59 myObjectBrowser->parentWidget()->show();
62 //******************************************************
63 void XGUI_MainWindow::hideObjectBrowser()
65 myObjectBrowser->parentWidget()->hide();
68 //******************************************************
69 void XGUI_MainWindow::showPythonConsole()
71 if (!myPythonConsole) {
73 QDockWidget* aDoc = new QDockWidget(this);
74 aDoc->setFeatures(QDockWidget::AllDockWidgetFeatures | QDockWidget::DockWidgetVerticalTitleBar);
75 aDoc->setMinimumHeight(0);
76 aDoc->setWindowTitle("Console");
77 myPythonConsole = new PyConsole_EnhConsole( aDoc, new PyConsole_EnhInterp());
78 aDoc->setWidget(myPythonConsole);
79 addDockWidget(Qt::TopDockWidgetArea, aDoc);
80 tabifyDockWidget(myMenuBar->getLastDockWindow(), aDoc);
82 myPythonConsole->parentWidget()->show();
85 //******************************************************
86 void XGUI_MainWindow::hidePythonConsole()
89 myPythonConsole->parentWidget()->hide();
92 void XGUI_MainWindow::showPropertyPanel()
94 QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
95 //<! Restore ability to close panel from the window's menu
96 aViewAct->setEnabled(true);
97 myPropertyPanelDock->show();
98 myPropertyPanelDock->raise();
101 void XGUI_MainWindow::hidePropertyPanel()
103 QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
104 //<! Do not allow to show empty property panel
105 aViewAct->setEnabled(false);
106 myPropertyPanelDock->hide();
110 * Creates dock widgets, places them in corresponding area
111 * and tabifies if necessary.
113 void XGUI_MainWindow::createDockWidgets()
115 QDockWidget* aObjDock = createObjectBrowser();
116 addDockWidget(Qt::LeftDockWidgetArea, aObjDock);
117 myPropertyPanelDock = createPropertyPanel();
118 addDockWidget(Qt::LeftDockWidgetArea, myPropertyPanelDock);
119 hidePropertyPanel(); //<! Invisible by default
121 tabifyDockWidget(aObjDock, myPropertyPanelDock);
124 void XGUI_MainWindow::setPropertyPannelTitle(const QString& theTitle)
126 myPropertyPanelDock->setWindowTitle(theTitle);
130 QDockWidget* XGUI_MainWindow::createPropertyPanel()
132 QDockWidget* aPropPanel = new QDockWidget(this);
133 aPropPanel->setWindowTitle(tr("Property Panel"));
134 QAction* aViewAct = aPropPanel->toggleViewAction();
135 aPropPanel->setObjectName(XGUI::PROP_PANEL);
137 QWidget* aContent = new QWidget(aPropPanel);
138 QVBoxLayout* aMainLay = new QVBoxLayout(aContent);
139 aMainLay->setContentsMargins(3, 3, 3, 3);
140 aPropPanel->setWidget(aContent);
142 QFrame* aFrm = new QFrame(aContent);
143 aFrm->setFrameStyle(QFrame::Sunken);
144 aFrm->setFrameShape(QFrame::Panel);
145 QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm);
146 aBtnLay->setContentsMargins(0, 0, 0, 0);
147 aMainLay->addWidget(aFrm);
149 QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm);
151 //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyHelpPressed()));
152 aBtnLay->addWidget(aBtn);
153 aBtnLay->addStretch(1);
154 aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm);
155 aBtn->setObjectName(XGUI::PROP_PANEL_OK);
157 //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyOkPressed()));
158 aBtnLay->addWidget(aBtn);
159 aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm);
160 aBtn->setObjectName(XGUI::PROP_PANEL_CANCEL);
162 //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyClosePressed()));
163 aBtnLay->addWidget(aBtn);
165 QWidget* aCustomWidget = new QWidget(aContent);
166 aCustomWidget->setObjectName(XGUI::PROP_PANEL_WDG);
167 aMainLay->addWidget(aCustomWidget);
168 aMainLay->addStretch(1);
173 QDockWidget* XGUI_MainWindow::createObjectBrowser()
175 QDockWidget* aObjDock = new QDockWidget(this);
176 aObjDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
177 aObjDock->setWindowTitle(tr("Object browser"));
178 myObjectBrowser = new XGUI_ObjectsBrowser(aObjDock);
179 aObjDock->setWidget(myObjectBrowser);