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; iaddAction(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(); }