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),
31 myObjectBrowser(NULL),
32 myPythonConsole(NULL),
33 myPropertyPanelDock(NULL)
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);
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 //myPythonConsole = new QTextEdit(aDoc);
79 //myPythonConsole->setGeometry(0,0,200, 50);
80 //myPythonConsole->setText(">>>");
81 aDoc->setWidget(myPythonConsole);
82 //myPythonConsole->setMinimumHeight(0);
83 addDockWidget(Qt::TopDockWidgetArea, aDoc);
84 tabifyDockWidget(myMenuBar->getLastDockWindow(), aDoc);
86 myPythonConsole->parentWidget()->show();
89 //******************************************************
90 void XGUI_MainWindow::hidePythonConsole()
93 myPythonConsole->parentWidget()->hide();
96 void XGUI_MainWindow::showPropertyPanel()
98 QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
99 //<! Restore ability to close panel from the window's menu
100 aViewAct->setEnabled(true);
101 myPropertyPanelDock->show();
102 myPropertyPanelDock->raise();
105 void XGUI_MainWindow::hidePropertyPanel()
107 QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
108 //<! Do not allow to show empty property panel
109 aViewAct->setEnabled(false);
110 myPropertyPanelDock->hide();
114 * Creates dock widgets, places them in corresponding area
115 * and tabifies if necessary.
117 void XGUI_MainWindow::createDockWidgets()
119 QDockWidget* aObjDock = createObjectBrowser();
120 addDockWidget(Qt::LeftDockWidgetArea, aObjDock);
121 myPropertyPanelDock = createPropertyPanel();
122 addDockWidget(Qt::LeftDockWidgetArea, myPropertyPanelDock);
123 hidePropertyPanel(); //<! Invisible by default
125 tabifyDockWidget(aObjDock, myPropertyPanelDock);
129 QDockWidget* XGUI_MainWindow::createPropertyPanel()
131 QDockWidget* aPropPanel = new QDockWidget(this);
132 aPropPanel->setWindowTitle(tr("Property Panel"));
133 aPropPanel->setObjectName(XGUI::PROP_PANEL);
135 QWidget* aContent = new QWidget(aPropPanel);
136 QVBoxLayout* aMainLay = new QVBoxLayout(aContent);
137 aMainLay->setContentsMargins(3, 3, 3, 3);
138 aPropPanel->setWidget(aContent);
140 QWidget* aCustomWidget = new QWidget(aContent);
141 aCustomWidget->setObjectName(XGUI::PROP_PANEL_WDG);
142 aMainLay->addWidget(aCustomWidget);
143 aMainLay->addStretch(1);
145 QFrame* aFrm = new QFrame(aContent);
146 aFrm->setFrameStyle(QFrame::Sunken);
147 aFrm->setFrameShape(QFrame::Panel);
148 QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm);
149 aBtnLay->setContentsMargins(0, 0, 0, 0);
150 aMainLay->addWidget(aFrm);
152 QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm);
154 aBtnLay->addWidget(aBtn);
155 aBtnLay->addStretch(1);
156 aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm);
157 aBtn->setObjectName(XGUI::PROP_PANEL_OK);
159 aBtnLay->addWidget(aBtn);
160 aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm);
161 aBtn->setObjectName(XGUI::PROP_PANEL_CANCEL);
163 aBtnLay->addWidget(aBtn);
168 QDockWidget* XGUI_MainWindow::createObjectBrowser()
170 QDockWidget* aObjDock = new QDockWidget(this);
171 aObjDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
172 aObjDock->setWindowTitle(tr("Object browser"));
173 myObjectBrowser = new XGUI_ObjectsBrowser(aObjDock);
174 aObjDock->setWidget(myObjectBrowser);