Salome HOME
Merge branch 'master' of newgeom:newgeom.git
[modules/shaper.git] / src / XGUI / XGUI_MainWindow.cpp
index 40a0d26cfae25c68f665bc88c03f02287c5f8586..b675c5fd7d59639c83e5075dec96d6d27092df76 100644 (file)
@@ -1,7 +1,9 @@
 #include "XGUI_MainWindow.h"
+#include "XGUI_Constants.h"
 #include "XGUI_MainMenu.h"
 #include "XGUI_ViewWindow.h"
 #include "XGUI_Viewer.h"
+#include "XGUI_ObjectsBrowser.h"
 
 #include <PyConsole_Console.h>
 #include <PyConsole_EnhInterp.h>
 #include <QPushButton>
 #include <QScrollArea>
 #include <QComboBox>
-
+#include <QAction>
 
 XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
     : QMainWindow(parent), 
-    myObjectBrowser(0), 
-    myPythonConsole(0)
+    myObjectBrowser(0),
+    myPythonConsole(0),
+    myPropertyPanelDock(0)
 {
-  setWindowTitle(tr("WINDOW_TITLE"));
+  setWindowTitle(tr("New Geom"));
   myMenuBar = new XGUI_MainMenu(this);
 
   QMdiArea* aMdiArea = new QMdiArea(this);
@@ -37,7 +40,7 @@ XGUI_MainWindow::XGUI_MainWindow(QWidget* parent)
 
   myViewer = new XGUI_Viewer(this);
 
-  createDockWidgets();
+  //createDockWidgets();
 }
 
 XGUI_MainWindow::~XGUI_MainWindow(void)
@@ -72,11 +75,7 @@ void XGUI_MainWindow::showPythonConsole()
     aDoc->setMinimumHeight(0);
     aDoc->setWindowTitle("Console");
     myPythonConsole = new PyConsole_EnhConsole( aDoc, new PyConsole_EnhInterp());
-    //myPythonConsole = new QTextEdit(aDoc);
-    //myPythonConsole->setGeometry(0,0,200, 50);
-    //myPythonConsole->setText(">>>");
     aDoc->setWidget(myPythonConsole);
-    //myPythonConsole->setMinimumHeight(0);
     addDockWidget(Qt::TopDockWidgetArea, aDoc);
     tabifyDockWidget(myMenuBar->getLastDockWindow(), aDoc);
   }
@@ -90,6 +89,23 @@ void XGUI_MainWindow::hidePythonConsole()
     myPythonConsole->parentWidget()->hide();
 }
 
+void XGUI_MainWindow::showPropertyPanel()
+{
+  QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
+  //<! Restore ability to close panel from the window's menu
+  aViewAct->setEnabled(true);
+  myPropertyPanelDock->show();
+  myPropertyPanelDock->raise();
+}
+
+void XGUI_MainWindow::hidePropertyPanel()
+{
+  QAction* aViewAct = myPropertyPanelDock->toggleViewAction();
+  //<! Do not allow to show empty property panel
+  aViewAct->setEnabled(false);
+  myPropertyPanelDock->hide();
+}
+
 /*
  * Creates dock widgets, places them in corresponding area
  * and tabifies if necessary.
@@ -98,10 +114,16 @@ void XGUI_MainWindow::createDockWidgets()
 {
   QDockWidget* aObjDock = createObjectBrowser();
   addDockWidget(Qt::LeftDockWidgetArea, aObjDock);
-  QDockWidget* aPropPanelDock = createPropertyPanel();
-  addDockWidget(Qt::LeftDockWidgetArea, aPropPanelDock);
+  myPropertyPanelDock = createPropertyPanel();
+  addDockWidget(Qt::LeftDockWidgetArea, myPropertyPanelDock);
+  hidePropertyPanel(); //<! Invisible by default
+  hideObjectBrowser();
+  tabifyDockWidget(aObjDock, myPropertyPanelDock);
+}
 
-  tabifyDockWidget(aPropPanelDock, aObjDock);
+void XGUI_MainWindow::setPropertyPannelTitle(const QString& theTitle)
+{
+  myPropertyPanelDock->setWindowTitle(theTitle);
 }
 
 
@@ -109,17 +131,14 @@ QDockWidget* XGUI_MainWindow::createPropertyPanel()
 {
   QDockWidget* aPropPanel = new QDockWidget(this);
   aPropPanel->setWindowTitle(tr("Property Panel"));
+  QAction* aViewAct = aPropPanel->toggleViewAction();
+  aPropPanel->setObjectName(XGUI::PROP_PANEL);
 
   QWidget* aContent = new QWidget(aPropPanel);
   QVBoxLayout* aMainLay = new QVBoxLayout(aContent);
   aMainLay->setContentsMargins(3, 3, 3, 3);
   aPropPanel->setWidget(aContent);
 
-  QWidget* aCustomWidget = new QWidget(aContent);
-  aCustomWidget->setObjectName("PropertyPanelWidget");
-  aMainLay->addWidget(aCustomWidget);
-  aMainLay->addStretch(1);
-
   QFrame* aFrm = new QFrame(aContent);
   aFrm->setFrameStyle(QFrame::Sunken);
   aFrm->setFrameShape(QFrame::Panel);
@@ -129,15 +148,25 @@ QDockWidget* XGUI_MainWindow::createPropertyPanel()
 
   QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm);
   aBtn->setFlat(true);
+  //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyHelpPressed()));
   aBtnLay->addWidget(aBtn);
   aBtnLay->addStretch(1);
   aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm);
+  aBtn->setObjectName(XGUI::PROP_PANEL_OK);
   aBtn->setFlat(true);
+  //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyOkPressed()));
   aBtnLay->addWidget(aBtn);
   aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm);
+  aBtn->setObjectName(XGUI::PROP_PANEL_CANCEL);
   aBtn->setFlat(true);
+  //connect(aBtn, SIGNAL(clicked()), this, SIGNAL(propertyClosePressed()));
   aBtnLay->addWidget(aBtn);
 
+  QWidget* aCustomWidget = new QWidget(aContent);
+  aCustomWidget->setObjectName(XGUI::PROP_PANEL_WDG);
+  aMainLay->addWidget(aCustomWidget);
+  aMainLay->addStretch(1);
+
   return aPropPanel;
 }
 
@@ -145,62 +174,8 @@ QDockWidget* XGUI_MainWindow::createObjectBrowser()
 {
   QDockWidget* aObjDock = new QDockWidget(this);
   aObjDock->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
-  aObjDock->setWindowTitle(tr("OBJECT_BROWSER_TITLE"));
-  myObjectBrowser = new QTreeWidget(aObjDock);
-  myObjectBrowser->setColumnCount(1);
-  myObjectBrowser->setHeaderHidden(true);
+  aObjDock->setWindowTitle(tr("Object browser"));
+  myObjectBrowser = new XGUI_ObjectsBrowser(aObjDock);
   aObjDock->setWidget(myObjectBrowser);
-//  fillObjectBrowser();
   return aObjDock;
 }
-
-//******************************************************
-
-// TEST FUNCTIONS
-
-//******************************************************
-void XGUI_MainWindow::fillObjectBrowser()
-{
-  QStringList aNames;
-  aNames << "Parameters" << "Constructions";
-  aNames << "Part 1" << "Part 2" << "Part 3";
-  aNames << "Properties";
-
-  QStringList aIcons;
-  aIcons << ":pictures/params_folder.png";
-  aIcons << ":pictures/constr_folder.png";
-  aIcons << ":pictures/part_ico.png";
-  aIcons << ":pictures/part_ico.png";
-  aIcons << ":pictures/part_ico.png";
-  aIcons << ":pictures/properties.png";
-
-  QList<QTreeWidgetItem*> aItems;
-  foreach(QString aName, aNames)
-  {
-    QTreeWidgetItem* aItem = new QTreeWidgetItem(myObjectBrowser);
-    aItem->setText(0, aName);
-    aItems.append(aItem);
-  }
-  for(int i = 0; i < aItems.length(); i++) {
-    aItems[i]->setIcon(0, QIcon(aIcons[i]));
-  }
-  myObjectBrowser->addTopLevelItems(aItems);
-
-  for(int i = 2; i < 5; i++) {
-    QTreeWidgetItem* aItem = new QTreeWidgetItem(aItems[i]);
-    aItem->setText(0, "Parameters");
-    aItem->setIcon(0, QIcon(":pictures/params_folder.png"));
-
-    aItem = new QTreeWidgetItem(aItems[i]);
-    aItem->setText(0, "Construction");
-    aItem->setIcon(0, QIcon(":pictures/constr_folder.png"));
-
-    aItem = new QTreeWidgetItem(aItems[i]);
-    aItem->setText(0, "Bodies");
-    aItem->setIcon(0, QIcon(":pictures/part_ico.png"));
-
-    aItem = new QTreeWidgetItem(aItems[i]);
-    aItem->setText(0, "Features");
-    aItem->setIcon(0, QIcon(":pictures/features.png"));
-  }
-}