diff --git a/src/Mod/Drawing/App/FeaturePage.cpp b/src/Mod/Drawing/App/FeaturePage.cpp index 28959032d..3d5efa956 100644 --- a/src/Mod/Drawing/App/FeaturePage.cpp +++ b/src/Mod/Drawing/App/FeaturePage.cpp @@ -57,7 +57,7 @@ FeaturePage::FeaturePage(void) : numChildren(0) static const char *group = "Drawing view"; ADD_PROPERTY_TYPE(PageResult ,(0),group,App::Prop_Output,"Resulting SVG document of that page"); - ADD_PROPERTY_TYPE(Template ,(""),group,App::Prop_None ,"Template for the page"); + ADD_PROPERTY_TYPE(Template ,(""),group,App::Prop_Transient ,"Template for the page"); ADD_PROPERTY_TYPE(EditableTexts,(""),group,App::Prop_None,"Substitution values for the editable strings in the template"); } @@ -104,6 +104,12 @@ void FeaturePage::onChanged(const App::Property* prop) App::DocumentObjectGroup::onChanged(prop); } +void FeaturePage::onDocumentRestored() +{ + Base::FileInfo fi(PageResult.getValue()); + Template.setValue(App::Application::getResourceDir() + "Mod/Drawing/Templates/" + fi.fileName()); +} + App::DocumentObjectExecReturn *FeaturePage::execute(void) { std::string temp = Template.getValue(); diff --git a/src/Mod/Drawing/App/FeaturePage.h b/src/Mod/Drawing/App/FeaturePage.h index 96e96e569..dd5af8739 100644 --- a/src/Mod/Drawing/App/FeaturePage.h +++ b/src/Mod/Drawing/App/FeaturePage.h @@ -64,6 +64,8 @@ public: protected: void onBeforeChange(const App::Property* prop); void onChanged(const App::Property* prop); + /// get called after a document has been fully restored + virtual void onDocumentRestored(); private: int numChildren; diff --git a/src/Mod/Raytracing/App/LuxProject.cpp b/src/Mod/Raytracing/App/LuxProject.cpp index c293dbbad..a983fa841 100644 --- a/src/Mod/Raytracing/App/LuxProject.cpp +++ b/src/Mod/Raytracing/App/LuxProject.cpp @@ -30,6 +30,7 @@ #include #include +#include #include "LuxProject.h" #include "LuxFeature.h" #include "LuxTools.h" @@ -46,10 +47,16 @@ PROPERTY_SOURCE(Raytracing::LuxProject, App::DocumentObjectGroup) LuxProject::LuxProject(void) { ADD_PROPERTY_TYPE(PageResult ,(0),0,App::Prop_Output,"Resulting Luxrender Scene file"); - ADD_PROPERTY_TYPE(Template ,(""),0,App::Prop_None ,"Template for the Luxrender project"); + ADD_PROPERTY_TYPE(Template ,(""),0,App::Prop_Transient ,"Template for the Luxrender project"); ADD_PROPERTY_TYPE(Camera ,(""),0,App::Prop_None ,"Camera settings"); } +void LuxProject::onDocumentRestored() +{ + Base::FileInfo fi(PageResult.getValue()); + Template.setValue(App::Application::getResourceDir() + "Mod/Drawing/Templates/" + fi.fileName()); +} + App::DocumentObjectExecReturn *LuxProject::execute(void) { if (std::string(PageResult.getValue()) == "") diff --git a/src/Mod/Raytracing/App/LuxProject.h b/src/Mod/Raytracing/App/LuxProject.h index 00b363360..6b0024290 100644 --- a/src/Mod/Raytracing/App/LuxProject.h +++ b/src/Mod/Raytracing/App/LuxProject.h @@ -59,6 +59,8 @@ public: const char* getViewProviderName(void) const { return "RaytracingGui::ViewProviderLux"; } + /// get called after a document has been fully restored + virtual void onDocumentRestored(); //@} diff --git a/src/Mod/Raytracing/App/RayProject.cpp b/src/Mod/Raytracing/App/RayProject.cpp index c9401efdd..dc07230a4 100644 --- a/src/Mod/Raytracing/App/RayProject.cpp +++ b/src/Mod/Raytracing/App/RayProject.cpp @@ -30,6 +30,7 @@ #include #include +#include #include "RayProject.h" #include "RayFeature.h" @@ -45,10 +46,16 @@ PROPERTY_SOURCE(Raytracing::RayProject, App::DocumentObjectGroup) RayProject::RayProject(void) { ADD_PROPERTY_TYPE(PageResult ,(0),0,App::Prop_Output,"Resulting povray Project file"); - ADD_PROPERTY_TYPE(Template ,(""),0,App::Prop_None ,"Template for the Povray project"); + ADD_PROPERTY_TYPE(Template ,(""),0,App::Prop_Transient ,"Template for the Povray project"); ADD_PROPERTY_TYPE(Camera ,(""),0,App::Prop_None ,"Camera settings"); } +void RayProject::onDocumentRestored() +{ + Base::FileInfo fi(PageResult.getValue()); + Template.setValue(App::Application::getResourceDir() + "Mod/Drawing/Templates/" + fi.fileName()); +} + App::DocumentObjectExecReturn *RayProject::execute(void) { if (std::string(PageResult.getValue()) == "") diff --git a/src/Mod/Raytracing/App/RayProject.h b/src/Mod/Raytracing/App/RayProject.h index 002c37e1e..c21d2fc16 100644 --- a/src/Mod/Raytracing/App/RayProject.h +++ b/src/Mod/Raytracing/App/RayProject.h @@ -59,6 +59,8 @@ public: const char* getViewProviderName(void) const { return "RaytracingGui::ViewProviderPovray"; } + /// get called after a document has been fully restored + virtual void onDocumentRestored(); //@}