1 #include "XGUI_MainWindow.h"
2 #include "XGUI_MainMenu.h"
3 #include "XGUI_ViewWindow.h"
4 #include "XGUI_Viewer.h"
6 #include <PyConsole_Console.h>
7 #include <PyConsole_EnhInterp.h>
10 #include <QTreeWidget>
11 #include <QDockWidget>
15 #include <QToolButton>
16 #include <QTreeWidgetItem>
20 #include <QFormLayout>
21 #include <QDoubleSpinBox>
22 #include <QPushButton>
23 #include <QScrollArea>
27 XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
28 : QMainWindow(parent),
32 setWindowTitle(tr("WINDOW_TITLE"));
33 myMenuBar = new XGUI_MainMenu(this);
35 QMdiArea* aMdiArea = new QMdiArea(this);
36 setCentralWidget(aMdiArea);
38 myViewer = new XGUI_Viewer(this);
43 XGUI_MainWindow::~XGUI_MainWindow(void)
47 //******************************************************
48 QMdiArea* XGUI_MainWindow::mdiArea() const
50 return static_cast<QMdiArea*>(centralWidget());
53 //******************************************************
54 void XGUI_MainWindow::showObjectBrowser()
56 myObjectBrowser->parentWidget()->show();
59 //******************************************************
60 void XGUI_MainWindow::hideObjectBrowser()
62 myObjectBrowser->parentWidget()->hide();
65 //******************************************************
66 void XGUI_MainWindow::showPythonConsole()
68 if (!myPythonConsole) {
70 QDockWidget* aDoc = new QDockWidget(this);
71 aDoc->setFeatures(QDockWidget::AllDockWidgetFeatures | QDockWidget::DockWidgetVerticalTitleBar);
72 aDoc->setMinimumHeight(0);
73 aDoc->setWindowTitle("Console");
74 myPythonConsole = new PyConsole_EnhConsole( aDoc, new PyConsole_EnhInterp());
75 //myPythonConsole = new QTextEdit(aDoc);
76 //myPythonConsole->setGeometry(0,0,200, 50);
77 //myPythonConsole->setText(">>>");
78 aDoc->setWidget(myPythonConsole);
79 //myPythonConsole->setMinimumHeight(0);
80 addDockWidget(Qt::TopDockWidgetArea, aDoc);
81 tabifyDockWidget(myMenuBar->getLastDockWindow(), aDoc);
83 myPythonConsole->parentWidget()->show();
86 //******************************************************
87 void XGUI_MainWindow::hidePythonConsole()
90 myPythonConsole->parentWidget()->hide();
94 * Creates dock widgets, places them in corresponding area
95 * and tabifies if necessary.
97 void XGUI_MainWindow::createDockWidgets()
99 QDockWidget* aObjDock = createObjectBrowser();
100 addDockWidget(Qt::LeftDockWidgetArea, aObjDock);
101 QDockWidget* aPropPanelDock = createPropertyPanel();
102 addDockWidget(Qt::LeftDockWidgetArea, aPropPanelDock);
104 tabifyDockWidget(aPropPanelDock, aObjDock);
108 QDockWidget* XGUI_MainWindow::createPropertyPanel()
110 QDockWidget* aPropPanel = new QDockWidget(this);
111 aPropPanel->setWindowTitle(tr("Property Panel"));
113 QWidget* aContent = new QWidget(aPropPanel);
114 QVBoxLayout* aMainLay = new QVBoxLayout(aContent);
115 aMainLay->setContentsMargins(3, 3, 3, 3);
116 aPropPanel->setWidget(aContent);
118 QWidget* aCustomWidget = new QWidget(aContent);
119 aCustomWidget->setObjectName("PropertyPanelWidget");
120 aMainLay->addWidget(aCustomWidget);
121 aMainLay->addStretch(1);
123 QFrame* aFrm = new QFrame(aContent);
124 aFrm->setFrameStyle(QFrame::Sunken);
125 aFrm->setFrameShape(QFrame::Panel);
126 QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm);
127 aBtnLay->setContentsMargins(0, 0, 0, 0);
128 aMainLay->addWidget(aFrm);
130 QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm);
132 aBtnLay->addWidget(aBtn);
133 aBtnLay->addStretch(1);
134 aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm);
136 aBtnLay->addWidget(aBtn);
137 aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm);
139 aBtnLay->addWidget(aBtn);
144 QDockWidget* XGUI_MainWindow::createObjectBrowser()
146 QDockWidget* aObjDock = new QDockWidget(this);
147 aObjDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
148 aObjDock->setWindowTitle(tr("OBJECT_BROWSER_TITLE"));
149 myObjectBrowser = new QTreeWidget(aObjDock);
150 myObjectBrowser->setColumnCount(1);
151 myObjectBrowser->setHeaderHidden(true);
152 aObjDock->setWidget(myObjectBrowser);
153 // fillObjectBrowser();
157 //******************************************************
161 //******************************************************
162 void XGUI_MainWindow::fillObjectBrowser()
165 aNames << "Parameters" << "Constructions";
166 aNames << "Part 1" << "Part 2" << "Part 3";
167 aNames << "Properties";
170 aIcons << ":pictures/params_folder.png";
171 aIcons << ":pictures/constr_folder.png";
172 aIcons << ":pictures/part_ico.png";
173 aIcons << ":pictures/part_ico.png";
174 aIcons << ":pictures/part_ico.png";
175 aIcons << ":pictures/properties.png";
177 QList<QTreeWidgetItem*> aItems;
178 foreach(QString aName, aNames)
180 QTreeWidgetItem* aItem = new QTreeWidgetItem(myObjectBrowser);
181 aItem->setText(0, aName);
182 aItems.append(aItem);
184 for(int i = 0; i < aItems.length(); i++) {
185 aItems[i]->setIcon(0, QIcon(aIcons[i]));
187 myObjectBrowser->addTopLevelItems(aItems);
189 for(int i = 2; i < 5; i++) {
190 QTreeWidgetItem* aItem = new QTreeWidgetItem(aItems[i]);
191 aItem->setText(0, "Parameters");
192 aItem->setIcon(0, QIcon(":pictures/params_folder.png"));
194 aItem = new QTreeWidgetItem(aItems[i]);
195 aItem->setText(0, "Construction");
196 aItem->setIcon(0, QIcon(":pictures/constr_folder.png"));
198 aItem = new QTreeWidgetItem(aItems[i]);
199 aItem->setText(0, "Bodies");
200 aItem->setIcon(0, QIcon(":pictures/part_ico.png"));
202 aItem = new QTreeWidgetItem(aItems[i]);
203 aItem->setText(0, "Features");
204 aItem->setIcon(0, QIcon(":pictures/features.png"));