diff --git a/src/Mod/Raytracing/App/LuxProject.cpp b/src/Mod/Raytracing/App/LuxProject.cpp
index bcc2275460..62ac8c353f 100644
--- a/src/Mod/Raytracing/App/LuxProject.cpp
+++ b/src/Mod/Raytracing/App/LuxProject.cpp
@@ -60,7 +60,7 @@ void LuxProject::onDocumentRestored()
fi.setFile(PageResult.getValue());
std::string path = App::Application::getResourceDir() + "Mod/Raytracing/Templates/" + fi.fileName();
// try to find the template in user dir/Templates first
- Base::FileInfo tempfi(App::Application::getUserAppDataDir() + "Templates/" + fi.fileName());
+ Base::FileInfo tempfi(App::Application::getUserAppDataDir() + "data/Mod/Raytracing/Templates/" + fi.fileName());
if (tempfi.exists())
path = tempfi.filePath();
Template.setValue(path);
diff --git a/src/Mod/Raytracing/App/RayProject.cpp b/src/Mod/Raytracing/App/RayProject.cpp
index bdcebf3671..302d4e1939 100644
--- a/src/Mod/Raytracing/App/RayProject.cpp
+++ b/src/Mod/Raytracing/App/RayProject.cpp
@@ -59,7 +59,7 @@ void RayProject::onDocumentRestored()
fi.setFile(PageResult.getValue());
std::string path = App::Application::getResourceDir() + "Mod/Raytracing/Templates/" + fi.fileName();
// try to find the template in user dir/Templates first
- Base::FileInfo tempfi(App::Application::getUserAppDataDir() + "Templates/" + fi.fileName());
+ Base::FileInfo tempfi(App::Application::getUserAppDataDir() + "data/Mod/Raytracing/Templates/" + fi.fileName());
if (tempfi.exists())
path = tempfi.filePath();
Template.setValue(path);
diff --git a/src/Mod/Raytracing/Gui/Command.cpp b/src/Mod/Raytracing/Gui/Command.cpp
index 16b9e3df0c..afba18bdf2 100644
--- a/src/Mod/Raytracing/Gui/Command.cpp
+++ b/src/Mod/Raytracing/Gui/Command.cpp
@@ -376,16 +376,24 @@ Gui::Action * CmdRaytracingNewPovrayProject::createAction(void)
pcAction->setDropDownMenu(true);
applyCommandData(this->className(), pcAction);
+ auto addTemplates = [pcAction](const std::string& path) {
+ QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.pov"));
+ for (unsigned int i=0; i
addAction(fi.baseName());
+ a->setIcon(Gui::BitmapFactory().pixmap("Raytrace_New"));
+
+ a->setProperty("Template", dir.absoluteFilePath(dir[i]));
+ }
+ };
+
std::string path = App::Application::getResourceDir();
path += "Mod/Raytracing/Templates/";
- QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.pov"));
- for (unsigned int i=0; iaddAction(fi.baseName());
- a->setIcon(Gui::BitmapFactory().pixmap("Raytrace_New"));
+ addTemplates(path);
- a->setProperty("Template", dir.absoluteFilePath(dir[i]));
- }
+ path = App::Application::getUserAppDataDir();
+ path += "data/Mod/Raytracing/Templates/";
+ addTemplates(path);
_pcAction = pcAction;
languageChange();
@@ -794,16 +802,24 @@ Gui::Action * CmdRaytracingNewLuxProject::createAction(void)
pcAction->setDropDownMenu(true);
applyCommandData(this->className(), pcAction);
+ auto addTemplates = [pcAction](const std::string& path) {
+ QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.lxs"));
+ for (unsigned int i=0; iaddAction(fi.baseName());
+ a->setIcon(Gui::BitmapFactory().pixmap("Raytrace_Lux"));
+
+ a->setProperty("Template", dir.absoluteFilePath(dir[i]));
+ }
+ };
+
std::string path = App::Application::getResourceDir();
path += "Mod/Raytracing/Templates/";
- QDir dir(QString::fromUtf8(path.c_str()), QString::fromLatin1("*.lxs"));
- for (unsigned int i=0; iaddAction(fi.baseName());
- a->setIcon(Gui::BitmapFactory().pixmap("Raytrace_Lux"));
+ addTemplates(path);
- a->setProperty("Template", dir.absoluteFilePath(dir[i]));
- }
+ path = App::Application::getUserAppDataDir();
+ path += "data/Mod/Raytracing/Templates/";
+ addTemplates(path);
_pcAction = pcAction;
languageChange();
diff --git a/src/Mod/Raytracing/Gui/ViewProvider.cpp b/src/Mod/Raytracing/Gui/ViewProvider.cpp
index 960e01d631..81a8023efa 100644
--- a/src/Mod/Raytracing/Gui/ViewProvider.cpp
+++ b/src/Mod/Raytracing/Gui/ViewProvider.cpp
@@ -73,28 +73,34 @@ void ViewProviderLux::setupContextMenu(QMenu* menu, QObject* receiver, const cha
bool ViewProviderLux::setEdit(int ModNum)
{
if (ModNum == ViewProvider::Default ) {
+ QStringList items;
+ auto addTemplates = [&items](const std::string& path) {
+ QString dataDir = QString::fromUtf8(path.c_str());
+ QDir dir(dataDir);
+ QFileInfoList files = dir.entryInfoList(QStringList() << QString::fromLatin1("*.lxs"));
+ for (int i=0; i(getObject())->Template.getValue()));
- for (unsigned int i=0; igetDocument();
doc->openTransaction("Edit LuxRender project");
- QString fn = QString::fromLatin1("%1%2.lxs").arg(dataDir).arg(file);
- static_cast(getObject())->Template.setValue((const char*)fn.toUtf8());
+ static_cast(getObject())->Template.setValue((const char*)file.toUtf8());
doc->commitTransaction();
doc->recompute();
}
@@ -145,28 +151,34 @@ void ViewProviderPovray::setupContextMenu(QMenu* menu, QObject* receiver, const
bool ViewProviderPovray::setEdit(int ModNum)
{
if (ModNum == ViewProvider::Default ) {
+ QStringList items;
+ auto addTemplates = [&items](const std::string& path) {
+ QString dataDir = QString::fromUtf8(path.c_str());
+ QDir dir(dataDir);
+ QFileInfoList files = dir.entryInfoList(QStringList() << QString::fromLatin1("*.pov"));
+ for (int i=0; i(getObject())->Template.getValue()));
- for (unsigned int i=0; igetDocument();
doc->openTransaction("Edit Povray project");
- QString fn = QString::fromLatin1("%1%2.pov").arg(dataDir).arg(file);
- static_cast(getObject())->Template.setValue((const char*)fn.toUtf8());
+ static_cast(getObject())->Template.setValue((const char*)file.toUtf8());
doc->commitTransaction();
doc->recompute();
}