From 0c76e1f1e16880b42874d7e4f26498813b00a1ed Mon Sep 17 00:00:00 2001 From: balazs-bamer Date: Wed, 14 Jan 2015 12:59:02 +0100 Subject: [PATCH] One step towards the dialog Problem registering the own ViewProvider --- src/Mod/Surface/App/FeatureBSurf.h | 5 ++ src/Mod/Surface/Gui/AppSurfaceGui.cpp | 3 +- src/Mod/Surface/Gui/BSurf.cpp | 87 +++++++-------------------- src/Mod/Surface/Gui/BSurf.h | 11 +++- src/Mod/Surface/Gui/CMakeLists.txt | 1 + 5 files changed, 40 insertions(+), 67 deletions(-) diff --git a/src/Mod/Surface/App/FeatureBSurf.h b/src/Mod/Surface/App/FeatureBSurf.h index 6b2cec7300..fe3daf5601 100644 --- a/src/Mod/Surface/App/FeatureBSurf.h +++ b/src/Mod/Surface/App/FeatureBSurf.h @@ -45,6 +45,11 @@ public: short mustExecute() const; + /// returns the type name of the view provider + const char* getViewProviderName(void) const { + return "SurfaceGui::ViewProviderBSurf"; + } + protected: GeomFill_FillingStyle getFillingStyle(); void getWire(TopoDS_Wire& aWire); diff --git a/src/Mod/Surface/Gui/AppSurfaceGui.cpp b/src/Mod/Surface/Gui/AppSurfaceGui.cpp index e0da6de29b..bb1ad80330 100644 --- a/src/Mod/Surface/Gui/AppSurfaceGui.cpp +++ b/src/Mod/Surface/Gui/AppSurfaceGui.cpp @@ -32,7 +32,7 @@ #include #include "Workbench.h" -//#include "ViewProviderCut.h" +#include "BSurf.h" // use a different name to CreateCommand() void CreateSurfaceCommands(void); @@ -55,6 +55,7 @@ void SurfaceGuiExport initSurfaceGui() } SurfaceGui::Workbench::init(); + SurfaceGui::ViewProviderBSurf::init(); // instanciating the commands CreateSurfaceCommands(); diff --git a/src/Mod/Surface/Gui/BSurf.cpp b/src/Mod/Surface/Gui/BSurf.cpp index 5d2aa20e3b..84702de368 100644 --- a/src/Mod/Surface/Gui/BSurf.cpp +++ b/src/Mod/Surface/Gui/BSurf.cpp @@ -41,79 +41,36 @@ #include #include + using namespace SurfaceGui; //#undef CS_FUTURE // multi-threading causes some problems namespace SurfaceGui { -class ViewProviderBSurf : public Gui::ViewProvider +bool ViewProviderBSurf::setEdit(int ModNum) { -public: - ViewProviderBSurf() - { - /* coords = new SoCoordinate3(); - coords->ref(); - planes = new SoLineSet(); - planes->ref(); - SoBaseColor* color = new SoBaseColor(); - color->rgb.setValue(1.0f, 0.447059f, 0.337255f); - SoDrawStyle* style = new SoDrawStyle(); - style->lineWidth.setValue(2.0f); - this->pcRoot->addChild(color); - this->pcRoot->addChild(style); - this->pcRoot->addChild(coords); - this->pcRoot->addChild(planes);*/ - } - - ~ViewProviderBSurf() - { - } - - void updateData(const App::Property*) - { - } - - const char* getDefaultDisplayMode() const - { - return ""; - } - - std::vector getDisplayModes(void) const - { - return std::vector(); - } - - virtual bool setEdit(int ModNum) - { - // When double-clicking on the item for this sketch the - // object unsets and sets its edit mode without closing - // the task panel - Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog(); - TaskBSurf* tDlg = qobject_cast(dlg); - // start the edit dialog - if(dlg) - Gui::Control().showDialog(tDlg); - else - Gui::Control().showDialog(new TaskBSurf(this)); +// When double-clicking on the item for this sketch the +// object unsets and sets its edit mode without closing +// the task panel + Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog(); + TaskBSurf* tDlg = qobject_cast(dlg); +// start the edit dialog + if(dlg) + Gui::Control().showDialog(tDlg); + else + Gui::Control().showDialog(new TaskBSurf(this)); // draw(); - return true; - } + return true; +} - virtual void unsetEdit(int ModNum) - { - /*if(!Gui::Selection().isSelected(pcObject) || !Visibility.getValue()) { - internal_vp.switch_node(false); - pcModeSwitch->whichChild = -1; - m_selected = false; - } */ - } - -/* void setCoords(const std::vector& v) - { - }*/ - -private: -}; +void ViewProviderBSurf::unsetEdit(int ModNum) +{ +/*if(!Gui::Selection().isSelected(pcObject) || !Visibility.getValue()) { + internal_vp.switch_node(false); + pcModeSwitch->whichChild = -1; + m_selected = false; + } */ +} BSurf::BSurf(ViewProviderBSurf* vp) //: QDialog(parent, fl), bbox(bb) diff --git a/src/Mod/Surface/Gui/BSurf.h b/src/Mod/Surface/Gui/BSurf.h index 6c79c51137..fdaf6c41a8 100644 --- a/src/Mod/Surface/Gui/BSurf.h +++ b/src/Mod/Surface/Gui/BSurf.h @@ -25,17 +25,26 @@ #ifndef SURFACE_GUI_BSURF_H #define SURFACE_GUI_BSURF_H +#include "PreCompiled.h" + #include #include #include #include #include #include "../FillType.h" +#include #include "ui_BSurf.h" namespace SurfaceGui { - class ViewProviderBSurf; + + class SurfaceGuiExport ViewProviderBSurf : public PartGui::ViewProviderPart + { + public: + virtual bool setEdit(int ModNum); + virtual void unsetEdit(int ModNum); + }; class BSurf : public QDialog { diff --git a/src/Mod/Surface/Gui/CMakeLists.txt b/src/Mod/Surface/Gui/CMakeLists.txt index d97fe8dc55..c39e801678 100644 --- a/src/Mod/Surface/Gui/CMakeLists.txt +++ b/src/Mod/Surface/Gui/CMakeLists.txt @@ -21,6 +21,7 @@ include_directories( set(SurfaceGui_LIBS Surface + PartGui FreeCADGui )