mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-17 04:41:21 +00:00
move the storage directory outside the actual plugin code folder
This commit is contained in:
@@ -2,10 +2,7 @@
|
||||
#include "PluginHostBindings.hpp"
|
||||
#include "PluginHostUi.hpp"
|
||||
#include <slic3r/plugin/PluginAuditManager.hpp>
|
||||
#include <slic3r/plugin/PluginDescriptor.hpp>
|
||||
#include <slic3r/plugin/PluginFsUtils.hpp>
|
||||
#include <slic3r/plugin/PluginManager.hpp>
|
||||
#include <slic3r/GUI/GUI_App.hpp>
|
||||
|
||||
#include <stdexcept>
|
||||
|
||||
@@ -23,32 +20,7 @@ void register_plugin(pybind11::module_& host)
|
||||
if (plugin_key.empty())
|
||||
throw std::runtime_error("plugin.storage() must be called from a plugin callback");
|
||||
|
||||
PluginDescriptor descriptor;
|
||||
if (!PluginManager::instance().try_get_plugin_descriptor(plugin_key, descriptor))
|
||||
throw std::runtime_error("The current plugin is not registered");
|
||||
|
||||
// plugin_root is populated for installed packages. If it is unavailable, the entry
|
||||
// path still identifies the same package directory. This is important for local
|
||||
// plugins: their directory is based on the source filename (including its extension),
|
||||
// while plugin_key is based on the filename stem.
|
||||
const boost::filesystem::path plugin_root = resolve_plugin_root_from_descriptor(descriptor);
|
||||
if (!plugin_root.empty())
|
||||
return plugin_root.string();
|
||||
|
||||
if (!descriptor.is_cloud_plugin())
|
||||
throw std::runtime_error("The current local plugin folder is unavailable");
|
||||
|
||||
if (wxTheApp == nullptr || GUI::wxGetApp().getAgent() == nullptr)
|
||||
throw std::runtime_error("Cloud plugin storage is unavailable before networking is initialized");
|
||||
|
||||
const std::string user_id = GUI::wxGetApp().getAgent()->get_user_id();
|
||||
if (user_id.empty())
|
||||
throw std::runtime_error("Cloud plugin storage is unavailable without a logged-in user");
|
||||
|
||||
if (!is_valid_plugin_id(plugin_key))
|
||||
throw std::runtime_error("The current cloud plugin key is not a valid folder name");
|
||||
|
||||
return (boost::filesystem::path(get_cloud_plugin_dir(user_id)) / plugin_key).string();
|
||||
return PluginManager::instance().get_storage_dir(plugin_key);
|
||||
},
|
||||
"Return the installed folder of the current plugin.");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user