From 2af0a78ca612a60f2a54f1269cea3344d823b400 Mon Sep 17 00:00:00 2001 From: sbh Date: Mon, 5 May 2014 12:51:33 +0400 Subject: [PATCH] Updating property pannel from the model. Preleminary integration. --- src/Config/Config_FeatureMessage.h | 3 + src/Config/Config_FeatureReader.cpp | 2 +- src/Config/Config_FeatureReader.h | 2 +- src/ModuleBase/CMakeLists.txt | 3 + src/ModuleBase/ModuleBase_IModelWidget.h | 32 ++++++ src/ModuleBase/ModuleBase_MetaWidget.cpp | 41 +++++++ src/ModuleBase/ModuleBase_MetaWidget.h | 42 +++++++ src/ModuleBase/ModuleBase_WidgetCustom.h | 1 + src/ModuleBase/ModuleBase_WidgetFactory.cpp | 9 +- src/ModuleBase/ModuleBase_WidgetFactory.h | 10 +- src/XGUI/CMakeLists.txt | 2 + src/XGUI/XGUI_Constants.h | 1 - src/XGUI/XGUI_OperationMgr.cpp | 5 +- src/XGUI/XGUI_PropertyPanel.cpp | 79 ++++++++++++++ src/XGUI/XGUI_PropertyPanel.h | 35 ++++++ src/XGUI/XGUI_Workshop.cpp | 115 +++++--------------- src/XGUI/XGUI_Workshop.h | 4 +- 17 files changed, 290 insertions(+), 96 deletions(-) create mode 100644 src/ModuleBase/ModuleBase_IModelWidget.h create mode 100644 src/ModuleBase/ModuleBase_MetaWidget.cpp create mode 100644 src/ModuleBase/ModuleBase_MetaWidget.h create mode 100644 src/XGUI/XGUI_PropertyPanel.cpp create mode 100644 src/XGUI/XGUI_PropertyPanel.h diff --git a/src/Config/Config_FeatureMessage.h b/src/Config/Config_FeatureMessage.h index bcf674cee..99116d707 100644 --- a/src/Config/Config_FeatureMessage.h +++ b/src/Config/Config_FeatureMessage.h @@ -6,6 +6,9 @@ #include +/// Event ID that feature is loaded (comes with Config_FeatureMessage) +static const char * EVENT_FEATURE_LOADED = "FeatureLoaded"; + /* * Class to pass a feature entry extracted from xml file. * Example of the feature entry: diff --git a/src/Config/Config_FeatureReader.cpp b/src/Config/Config_FeatureReader.cpp index a3b7b56f2..78e485e91 100644 --- a/src/Config/Config_FeatureReader.cpp +++ b/src/Config/Config_FeatureReader.cpp @@ -28,7 +28,7 @@ Config_FeatureReader::Config_FeatureReader(const std::string& theXmlFile, const char* theEventGenerated) : Config_XMLReader(theXmlFile), myLibraryName(theLibraryName), - myEventGenerated(theEventGenerated ? theEventGenerated : "FeatureEvent") + myEventGenerated(theEventGenerated ? theEventGenerated : EVENT_FEATURE_LOADED) { } diff --git a/src/Config/Config_FeatureReader.h b/src/Config/Config_FeatureReader.h index 12517a5df..e4e7c63db 100644 --- a/src/Config/Config_FeatureReader.h +++ b/src/Config/Config_FeatureReader.h @@ -38,7 +38,7 @@ private: std::string myLibraryName; std::list myFeatures; - /// event generated on feature data sending, by default it is "FeatureEvent" + /// event generated on feature data sending, by default it is EVENT_FEATURE_LOADED const char* myEventGenerated; }; diff --git a/src/ModuleBase/CMakeLists.txt b/src/ModuleBase/CMakeLists.txt index 116353000..1669689c0 100644 --- a/src/ModuleBase/CMakeLists.txt +++ b/src/ModuleBase/CMakeLists.txt @@ -9,6 +9,8 @@ SET(PROJECT_HEADERS ModuleBase_WidgetFactory.h ModuleBase_WidgetPoint2D.h ModuleBase_WidgetSwitch.h + ModuleBase_IModelWidget.h + ModuleBase_MetaWidget.h ) SET(PROJECT_SOURCES @@ -17,6 +19,7 @@ SET(PROJECT_SOURCES ModuleBase_WidgetFactory.cpp ModuleBase_WidgetPoint2D.cpp ModuleBase_WidgetSwitch.cpp + ModuleBase_MetaWidget.cpp ) SET(PROJECT_LIBRARIES diff --git a/src/ModuleBase/ModuleBase_IModelWidget.h b/src/ModuleBase/ModuleBase_IModelWidget.h new file mode 100644 index 000000000..e128dc690 --- /dev/null +++ b/src/ModuleBase/ModuleBase_IModelWidget.h @@ -0,0 +1,32 @@ +/* + * ModuleBase_IModelWidget.h + * + * Created on: Apr 30, 2014 + * Author: sbh + */ + +#ifndef MODULEBASE_IMODELWIDGET_H_ +#define MODULEBASE_IMODELWIDGET_H_ + +#include +#include +#include + +/* + * Common interface for widgets in the property panel. + * Every widget are able to save/restore data from the + * model and/or to contain other widgets. + * + * Also, there are some methods to simplify and accelerate + * searching of children. + */ +class ModuleBase_IModelWidget +{ +public: + //! Interface for saving widget's data into the data model + MODULEBASE_EXPORT virtual bool storeValue() = 0; + //! Interface for loading widget's data from the data model + MODULEBASE_EXPORT virtual bool restoreValue() = 0; +}; + +#endif /* MODULEBASE_IMODELWIDGET_H_ */ diff --git a/src/ModuleBase/ModuleBase_MetaWidget.cpp b/src/ModuleBase/ModuleBase_MetaWidget.cpp new file mode 100644 index 000000000..442be7dae --- /dev/null +++ b/src/ModuleBase/ModuleBase_MetaWidget.cpp @@ -0,0 +1,41 @@ +/* + * + */ + +#include +#include + +#ifdef _DEBUG +#include +#endif + +ModuleBase_MetaWidget::ModuleBase_MetaWidget(const QString& theId, + QWidget* theWrapped, + boost::shared_ptr theFeature) + : myId(theId), myWrappedWidget(theWrapped), myFeature(theFeature) +{ + +} + +ModuleBase_MetaWidget::~ModuleBase_MetaWidget() +{ + +} + +bool ModuleBase_MetaWidget::storeValue() +{ + #ifdef _DEBUG + std::cout << "ModuleBase_MetaWidget::storeValue" + << myWrappedWidget->metaObject()->className() << std::endl; + #endif + return true; +} + +bool ModuleBase_MetaWidget::restoreValue() +{ + #ifdef _DEBUG + std::cout << "ModuleBase_MetaWidget::restoreValue" + << myWrappedWidget->metaObject()->className() << std::endl; + #endif + return true; +} diff --git a/src/ModuleBase/ModuleBase_MetaWidget.h b/src/ModuleBase/ModuleBase_MetaWidget.h new file mode 100644 index 000000000..c81efee13 --- /dev/null +++ b/src/ModuleBase/ModuleBase_MetaWidget.h @@ -0,0 +1,42 @@ +/* + * ModuleBase_IModelWidget.h + * + * Created on: Apr 30, 2014 + * Author: sbh + */ + +#ifndef MODULEBASE_METAWIDGET_H_ +#define MODULEBASE_METAWIDGET_H_ + +#include +#include + +#include + +#include +#include + +#include + +/* + * + */ +class ModuleBase_MetaWidget : public ModuleBase_IModelWidget +{ +public: + MODULEBASE_EXPORT ModuleBase_MetaWidget(const QString& theId, + QWidget* theWrapped, + boost::shared_ptr); + virtual ~ModuleBase_MetaWidget(); + //! Interface for saving widget's data into the data model + MODULEBASE_EXPORT virtual bool storeValue(); + //! Interface for loading widget's data from the data model + MODULEBASE_EXPORT virtual bool restoreValue(); + +private: + QString myId; + QWidget* myWrappedWidget; + boost::shared_ptr myFeature; +}; + +#endif /* MODULEBASE_METAWIDGET_H_ */ diff --git a/src/ModuleBase/ModuleBase_WidgetCustom.h b/src/ModuleBase/ModuleBase_WidgetCustom.h index 471d3f5ca..37716f31d 100644 --- a/src/ModuleBase/ModuleBase_WidgetCustom.h +++ b/src/ModuleBase/ModuleBase_WidgetCustom.h @@ -6,6 +6,7 @@ #define ModuleBase_WidgetCustom_H #include +#include #include diff --git a/src/ModuleBase/ModuleBase_WidgetFactory.cpp b/src/ModuleBase/ModuleBase_WidgetFactory.cpp index d902d0eef..2fcce7cbe 100644 --- a/src/ModuleBase/ModuleBase_WidgetFactory.cpp +++ b/src/ModuleBase/ModuleBase_WidgetFactory.cpp @@ -6,11 +6,11 @@ */ #include - -#include - +#include #include #include +#include + #include #include @@ -182,6 +182,9 @@ QWidget* ModuleBase_WidgetFactory::doubleSpinBoxControl() aControlLay->setStretch(1, 1); result->setLayout(aControlLay); connectWidget(aBox, WDG_DOUBLEVALUE); + ModuleBase_MetaWidget* aWrappedWdg = + new ModuleBase_MetaWidget(anObjName, aBox, myOperation->feature()); + myWidgets.append(aWrappedWdg); return result; } diff --git a/src/ModuleBase/ModuleBase_WidgetFactory.h b/src/ModuleBase/ModuleBase_WidgetFactory.h index 404bcc057..5193be3db 100644 --- a/src/ModuleBase/ModuleBase_WidgetFactory.h +++ b/src/ModuleBase/ModuleBase_WidgetFactory.h @@ -9,7 +9,10 @@ #define ModuleBase_WidgetFactory_H_ #include +#include + #include +#include class QObject; class QWidget; @@ -24,6 +27,11 @@ public: void createWidget(QWidget* theParent); + QList getWrappedWidgets() const + { + return myWidgets; + } + protected: //Widgets QWidget* createWidgetByType(const std::string& theType, QWidget* theParent = NULL); @@ -39,7 +47,7 @@ private: Config_WidgetAPI* myWidgetApi; ModuleBase_PropPanelOperation* myOperation; - + QList myWidgets; }; #endif /* ModuleBase_WidgetFactory_H_ */ diff --git a/src/XGUI/CMakeLists.txt b/src/XGUI/CMakeLists.txt index d8de8a441..407752997 100644 --- a/src/XGUI/CMakeLists.txt +++ b/src/XGUI/CMakeLists.txt @@ -28,6 +28,7 @@ SET(PROJECT_HEADERS XGUI_SalomeConnector.h XGUI_ActionsMgr.h XGUI_ErrorDialog.h + XGUI_PropertyPanel.h ) SET(PROJECT_AUTOMOC @@ -55,6 +56,7 @@ SET(PROJECT_SOURCES XGUI_SelectionMgr.cpp XGUI_ActionsMgr.cpp XGUI_ErrorDialog.cpp + XGUI_PropertyPanel.cpp ) SET(PROJECT_RESOURCES diff --git a/src/XGUI/XGUI_Constants.h b/src/XGUI/XGUI_Constants.h index f228e092e..9255b5239 100644 --- a/src/XGUI/XGUI_Constants.h +++ b/src/XGUI/XGUI_Constants.h @@ -84,7 +84,6 @@ enum TextureMode const static char* PROP_PANEL = "property_panel_dock"; const static char* PROP_PANEL_OK = "property_panel_ok"; const static char* PROP_PANEL_CANCEL = "property_panel_cancel"; -const static char* PROP_PANEL_WDG = "property_panel_widget"; }; diff --git a/src/XGUI/XGUI_OperationMgr.cpp b/src/XGUI/XGUI_OperationMgr.cpp index aeb0ed3c0..be3aa5819 100644 --- a/src/XGUI/XGUI_OperationMgr.cpp +++ b/src/XGUI/XGUI_OperationMgr.cpp @@ -45,10 +45,11 @@ bool XGUI_OperationMgr::canStartOperation(ModuleBase_Operation* theOperation) int anAnswer = QMessageBox::question(0, tr("Operation launch"), tr("Previous operation is not finished and will be aborted"), QMessageBox::Ok, QMessageBox::Cancel); - if (anAnswer == QMessageBox::Ok) + if (anAnswer == QMessageBox::Ok) { aCurrentOp->abort(); - else + } else { aCanStart = false; + } } return aCanStart; } diff --git a/src/XGUI/XGUI_PropertyPanel.cpp b/src/XGUI/XGUI_PropertyPanel.cpp new file mode 100644 index 000000000..202be90fc --- /dev/null +++ b/src/XGUI/XGUI_PropertyPanel.cpp @@ -0,0 +1,79 @@ +/* + * XGUI_PropertyPanel.cpp + * + * Created on: Apr 29, 2014 + * Author: sbh + */ + +#include +#include + +#include + +#include +#include +#include +#include +#include +#include + +#ifdef _DEBUG +#include +#endif + +XGUI_PropertyPanel::XGUI_PropertyPanel(QWidget* theParent) +{ + this->setWindowTitle(tr("Property Panel")); + QAction* aViewAct = this->toggleViewAction(); + this->setObjectName(XGUI::PROP_PANEL); + + QWidget* aContent = new QWidget(this); + QVBoxLayout* aMainLay = new QVBoxLayout(aContent); + aMainLay->setContentsMargins(3, 3, 3, 3); + this->setWidget(aContent); + + QFrame* aFrm = new QFrame(aContent); + aFrm->setFrameStyle(QFrame::Sunken); + aFrm->setFrameShape(QFrame::Panel); + QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm); + aBtnLay->setContentsMargins(0, 0, 0, 0); + aMainLay->addWidget(aFrm); + + QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm); + aBtn->setFlat(true); + aBtnLay->addWidget(aBtn); + aBtnLay->addStretch(1); + aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm); + aBtn->setObjectName(XGUI::PROP_PANEL_OK); + aBtn->setFlat(true); + aBtnLay->addWidget(aBtn); + aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm); + aBtn->setObjectName(XGUI::PROP_PANEL_CANCEL); + aBtn->setFlat(true); + aBtnLay->addWidget(aBtn); + + myCustomWidget = new QWidget(aContent); + aMainLay->addWidget(myCustomWidget); + aMainLay->addStretch(1); +} + +XGUI_PropertyPanel::~XGUI_PropertyPanel() +{ +} + +void XGUI_PropertyPanel::setModelWidgets(const QList& theWidgets) +{ + myWidgets = theWidgets; +} + +QWidget* XGUI_PropertyPanel::contentWidget() +{ + return myCustomWidget; +} + +void XGUI_PropertyPanel::updateContentWidget() +{ + foreach(ModuleBase_IModelWidget* eachWidget, myWidgets) { + eachWidget->restoreValue(); + } +} diff --git a/src/XGUI/XGUI_PropertyPanel.h b/src/XGUI/XGUI_PropertyPanel.h new file mode 100644 index 000000000..92de955c1 --- /dev/null +++ b/src/XGUI/XGUI_PropertyPanel.h @@ -0,0 +1,35 @@ +/* + * XGUI_PropertyPanel.h + * + * Created on: Apr 29, 2014 + * Author: sbh + */ + +#ifndef XGUI_PROPERTYPANEL_H_ +#define XGUI_PROPERTYPANEL_H_ + +#include + +#include +#include + +class XGUI_PropertyPanel: public QDockWidget +{ + Q_OBJECT +public: + XGUI_PropertyPanel(QWidget* theParent); + virtual ~XGUI_PropertyPanel(); + + QWidget* contentWidget(); + void setModelWidgets(const QList& theWidgets); + +public slots: + void updateContentWidget(); + +private: + QWidget* myCustomWidget; + + QList myWidgets; +}; + +#endif /* XGUI_PROPERTYPANEL_H_ */ diff --git a/src/XGUI/XGUI_Workshop.cpp b/src/XGUI/XGUI_Workshop.cpp index 60bad111d..c14efc4ee 100644 --- a/src/XGUI/XGUI_Workshop.cpp +++ b/src/XGUI/XGUI_Workshop.cpp @@ -16,7 +16,9 @@ #include "XGUI_SalomeConnector.h" #include "XGUI_ActionsMgr.h" #include "XGUI_ErrorDialog.h" +#include "XGUI_PropertyPanel.h" +#include #include #include #include @@ -52,7 +54,7 @@ XGUI_Workshop::XGUI_Workshop(XGUI_SalomeConnector* theConnector) myCurrentFile(QString()), myPartSetModule(NULL), mySalomeConnector(theConnector), - myPropertyPanelDock(0), + myPropertyPanel(0), myObjectBrowser(0), myDisplayer(0) { @@ -87,27 +89,18 @@ void XGUI_Workshop::startApplication() Events_Loop* aLoop = Events_Loop::loop(); aLoop->registerListener(this, Events_Error::errorID()); //!< Listening application errors. //TODO(sbh): Implement static method to extract event id [SEID] - Events_ID aFeatureId = aLoop->eventByName("FeatureEvent"); + Events_ID aFeatureId = aLoop->eventByName(EVENT_FEATURE_LOADED); aLoop->registerListener(this, aFeatureId); Events_ID aPartSetId = aLoop->eventByName("PartSetModuleEvent"); aLoop->registerListener(this, aPartSetId); + Events_ID aFeatureUpdatedId = aLoop->eventByName(EVENT_FEATURE_UPDATED); + aLoop->registerListener(this, aFeatureUpdatedId); activateModule(); if (myMainWindow) { myMainWindow->show(); updateCommandStatus(); } onNew(); - // Testing of document creation - //boost::shared_ptr aMgr = ModelAPI_PluginManager::get(); - //boost::shared_ptr aPoint1 = aMgr->rootDocument()->addFeature("Point"); - //boost::shared_ptr aPart = aMgr->rootDocument()->addFeature("Part"); - //aPart->execute(); - //aMgr->setCurrentDocument(aPart->data()->docRef("PartDocument")->value()); - //boost::shared_ptr aPoint2 = aMgr->rootDocument()->addFeature("Point"); - //aPoint2 = aMgr->rootDocument()->addFeature("Point"); - - //aPart = aMgr->rootDocument()->addFeature("Part"); - //aPart->execute(); } //****************************************************** @@ -180,12 +173,17 @@ XGUI_Workbench* XGUI_Workshop::addWorkbench(const QString& theName) //****************************************************** void XGUI_Workshop::processEvent(const Events_Message* theMessage) { - static Events_ID aFeatureId = Events_Loop::loop()->eventByName("FeatureEvent"); - if (theMessage->eventID() == aFeatureId) { + static Events_ID aFeatureLoadedId = Events_Loop::loop()->eventByName(EVENT_FEATURE_LOADED); + if (theMessage->eventID() == aFeatureLoadedId) { const Config_FeatureMessage* aFeatureMsg = dynamic_cast(theMessage); addFeature(aFeatureMsg); return; } + static Events_ID aFeatureUpdatedId = Events_Loop::loop()->eventByName(EVENT_FEATURE_UPDATED); + if (theMessage->eventID() == aFeatureUpdatedId) + { + myPropertyPanel->updateContentWidget(); + } const Config_PointerMessage* aPartSetMsg = dynamic_cast(theMessage); if (aPartSetMsg) { ModuleBase_PropPanelOperation* anOperation = @@ -201,17 +199,12 @@ void XGUI_Workshop::processEvent(const Events_Message* theMessage) } const Events_Error* anAppError = dynamic_cast(theMessage); if (anAppError) { - emit errorOccurred(QString::fromLatin1(anAppError->description())); - myErrorDlg->show(); - myErrorDlg->raise(); - myErrorDlg->activateWindow(); + emit errorOccurred(QString::fromLatin1(anAppError->description())); + myErrorDlg->show(); + myErrorDlg->raise(); + myErrorDlg->activateWindow(); } -#ifdef _DEBUG - qDebug() << "XGUI_Workshop::ProcessEvent: " - << "Catch message, but it can not be processed."; -#endif - } //****************************************************** @@ -222,14 +215,13 @@ void XGUI_Workshop::onOperationStarted() if(!aOperation->xmlRepresentation().isEmpty()) { //!< No need for property panel connectWithOperation(aOperation); - QWidget* aPropWidget = myPropertyPanelDock->findChild(XGUI::PROP_PANEL_WDG); - qDeleteAll(aPropWidget->children()); showPropertyPanel(); ModuleBase_WidgetFactory aFactory = ModuleBase_WidgetFactory(aOperation); - aFactory.createWidget(aPropWidget); - setPropertyPannelTitle(aOperation->description()); + aFactory.createWidget(myPropertyPanel->contentWidget()); + myPropertyPanel->setModelWidgets(aFactory.getWrappedWidgets()); + myPropertyPanel->setWindowTitle(aOperation->description()); } } @@ -305,9 +297,9 @@ void XGUI_Workshop::addFeature(const Config_FeatureMessage* theMessage) */ void XGUI_Workshop::connectWithOperation(ModuleBase_Operation* theOperation) { - QPushButton* aOkBtn = myPropertyPanelDock->findChild(XGUI::PROP_PANEL_OK); + QPushButton* aOkBtn = myPropertyPanel->findChild(XGUI::PROP_PANEL_OK); connect(aOkBtn, SIGNAL(clicked()), theOperation, SLOT(commit())); - QPushButton* aCancelBtn = myPropertyPanelDock->findChild(XGUI::PROP_PANEL_CANCEL); + QPushButton* aCancelBtn = myPropertyPanel->findChild(XGUI::PROP_PANEL_CANCEL); connect(aCancelBtn, SIGNAL(clicked()), theOperation, SLOT(abort())); QAction* aCommand = 0; @@ -573,53 +565,6 @@ QDockWidget* XGUI_Workshop::createObjectBrowser(QWidget* theParent) return aObjDock; } -//****************************************************** -QDockWidget* XGUI_Workshop::createPropertyPanel(QWidget* theParent) -{ - QDockWidget* aPropPanel = new QDockWidget(theParent); - 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); - - QFrame* aFrm = new QFrame(aContent); - aFrm->setFrameStyle(QFrame::Sunken); - aFrm->setFrameShape(QFrame::Panel); - QHBoxLayout* aBtnLay = new QHBoxLayout(aFrm); - aBtnLay->setContentsMargins(0, 0, 0, 0); - aMainLay->addWidget(aFrm); - - QPushButton* aBtn = new QPushButton(QIcon(":pictures/button_help.png"), "", aFrm); - aBtn->setFlat(true); - aBtnLay->addWidget(aBtn); - aBtnLay->addStretch(1); - aBtn = new QPushButton(QIcon(":pictures/button_ok.png"), "", aFrm); - aBtn->setObjectName(XGUI::PROP_PANEL_OK); - aBtn->setFlat(true); - aBtnLay->addWidget(aBtn); - aBtn = new QPushButton(QIcon(":pictures/button_cancel.png"), "", aFrm); - aBtn->setObjectName(XGUI::PROP_PANEL_CANCEL); - aBtn->setFlat(true); - aBtnLay->addWidget(aBtn); - - QWidget* aCustomWidget = new QWidget(aContent); - aCustomWidget->setObjectName(XGUI::PROP_PANEL_WDG); - aMainLay->addWidget(aCustomWidget); - aMainLay->addStretch(1); - - return aPropPanel; -} - -//****************************************************** -void XGUI_Workshop::setPropertyPannelTitle(const QString& theTitle) -{ - myPropertyPanelDock->setWindowTitle(theTitle); -} - //****************************************************** /* * Creates dock widgets, places them in corresponding area @@ -631,30 +576,30 @@ void XGUI_Workshop::createDockWidgets() myMainWindow; QDockWidget* aObjDock = createObjectBrowser(aDesktop); aDesktop->addDockWidget(Qt::LeftDockWidgetArea, aObjDock); - myPropertyPanelDock = createPropertyPanel(aDesktop); - aDesktop->addDockWidget(Qt::LeftDockWidgetArea, myPropertyPanelDock); + myPropertyPanel = new XGUI_PropertyPanel(aDesktop); + aDesktop->addDockWidget(Qt::LeftDockWidgetArea, myPropertyPanel); hidePropertyPanel(); //tabifyDockWidget(aObjDock, myPropertyPanelDock); + aDesktop->tabifyDockWidget(aObjDock, myPropertyPanel); } //****************************************************** void XGUI_Workshop::showPropertyPanel() { - QAction* aViewAct = myPropertyPanelDock->toggleViewAction(); + QAction* aViewAct = myPropertyPanel->toggleViewAction(); //setEnabled(true); - myPropertyPanelDock->show(); - myPropertyPanelDock->raise(); + myPropertyPanel->show(); + myPropertyPanel->raise(); } //****************************************************** void XGUI_Workshop::hidePropertyPanel() { - QAction* aViewAct = myPropertyPanelDock->toggleViewAction(); + QAction* aViewAct = myPropertyPanel->toggleViewAction(); //setEnabled(false); - myPropertyPanelDock->hide(); + myPropertyPanel->hide(); } //****************************************************** diff --git a/src/XGUI/XGUI_Workshop.h b/src/XGUI/XGUI_Workshop.h index 3f857ff12..7daa43ea1 100644 --- a/src/XGUI/XGUI_Workshop.h +++ b/src/XGUI/XGUI_Workshop.h @@ -20,6 +20,7 @@ class XGUI_SalomeConnector; class XGUI_ObjectsBrowser; class XGUI_ActionsMgr; class XGUI_ErrorDialog; +class XGUI_PropertyPanel; class ModuleBase_Operation; class ModuleBase_PropPanelOperation; @@ -126,13 +127,12 @@ private: // Creates Dock widgets: Object browser and Property panel void createDockWidgets(); - void setPropertyPannelTitle(const QString& theTitle); QString myCurrentFile; XGUI_MainWindow* myMainWindow; XGUI_Module* myPartSetModule; XGUI_ObjectsBrowser* myObjectBrowser; - QDockWidget* myPropertyPanelDock; + XGUI_PropertyPanel* myPropertyPanel; XGUI_SelectionMgr* mySelector; XGUI_Displayer* myDisplayer; XGUI_OperationMgr* myOperationMgr; ///< manager to manipulate through the operations -- 2.39.2