mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-24 11:22:07 +00:00
Compare commits
4 Commits
feat/plugi
...
nightly-bu
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
43725128d3 | ||
|
|
51612b504a | ||
|
|
1ce21c98ac | ||
|
|
5b32213d44 |
@@ -853,7 +853,6 @@ foreach(po_file ${BBL_L10N_PO_FILES})
|
|||||||
add_custom_command(
|
add_custom_command(
|
||||||
TARGET gettext_merge_po_with_pot PRE_BUILD
|
TARGET gettext_merge_po_with_pot PRE_BUILD
|
||||||
COMMAND msgmerge -N -o ${po_file} ${po_file} "${BBL_L18N_DIR}/OrcaSlicer.pot"
|
COMMAND msgmerge -N -o ${po_file} ${po_file} "${BBL_L18N_DIR}/OrcaSlicer.pot"
|
||||||
DEPENDS ${po_file}
|
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
add_custom_target(gettext_po_to_mo
|
add_custom_target(gettext_po_to_mo
|
||||||
@@ -869,7 +868,6 @@ foreach(po_file ${BBL_L10N_PO_FILES})
|
|||||||
TARGET gettext_po_to_mo PRE_BUILD
|
TARGET gettext_po_to_mo PRE_BUILD
|
||||||
COMMAND msgfmt ARGS --check-format -o ${mo_file} ${po_file}
|
COMMAND msgfmt ARGS --check-format -o ${mo_file} ${po_file}
|
||||||
#COMMAND msgfmt ARGS --check-compatibility -o ${mo_file} ${po_file}
|
#COMMAND msgfmt ARGS --check-compatibility -o ${mo_file} ${po_file}
|
||||||
DEPENDS ${po_file}
|
|
||||||
)
|
)
|
||||||
endforeach()
|
endforeach()
|
||||||
|
|
||||||
|
|||||||
@@ -128,6 +128,10 @@ cmake_minimum_required(VERSION 3.13)
|
|||||||
if(POLICY CMP0074)
|
if(POLICY CMP0074)
|
||||||
cmake_policy(SET CMP0074 NEW)
|
cmake_policy(SET CMP0074 NEW)
|
||||||
endif()
|
endif()
|
||||||
|
# Re-set after cmake_minimum_required above cleared it; use BoostConfig, not the removed FindBoost.
|
||||||
|
if(POLICY CMP0167)
|
||||||
|
cmake_policy(SET CMP0167 NEW)
|
||||||
|
endif()
|
||||||
|
|
||||||
if(OpenVDB_FIND_QUIETLY)
|
if(OpenVDB_FIND_QUIETLY)
|
||||||
set (_quiet "QUIET")
|
set (_quiet "QUIET")
|
||||||
|
|||||||
@@ -283,10 +283,6 @@ else ()
|
|||||||
COMMAND ln -sf OrcaSlicer orca-slicer
|
COMMAND ln -sf OrcaSlicer orca-slicer
|
||||||
WORKING_DIRECTORY "$<TARGET_FILE_DIR:OrcaSlicer>"
|
WORKING_DIRECTORY "$<TARGET_FILE_DIR:OrcaSlicer>"
|
||||||
VERBATIM)
|
VERBATIM)
|
||||||
else ()
|
|
||||||
add_custom_command(TARGET OrcaSlicer POST_BUILD
|
|
||||||
WORKING_DIRECTORY "$<TARGET_FILE_DIR:OrcaSlicer>"
|
|
||||||
VERBATIM)
|
|
||||||
endif ()
|
endif ()
|
||||||
if (XCODE)
|
if (XCODE)
|
||||||
# Because of Debug/Release/etc. configurations (similar to MSVC) the slic3r binary is located in an extra level
|
# Because of Debug/Release/etc. configurations (similar to MSVC) the slic3r binary is located in an extra level
|
||||||
|
|||||||
@@ -19,6 +19,7 @@ if (TARGET OpenVDB::openvdb)
|
|||||||
endif()
|
endif()
|
||||||
|
|
||||||
option(BUILD_SHARED_LIBS "Build shared libs" OFF)
|
option(BUILD_SHARED_LIBS "Build shared libs" OFF)
|
||||||
|
option(USE_SLIC3R_CONSOLE_LOG "Enable console logging in RelWithDebInfo builds" OFF)
|
||||||
|
|
||||||
set(lisbslic3r_sources
|
set(lisbslic3r_sources
|
||||||
AABBMesh.cpp
|
AABBMesh.cpp
|
||||||
@@ -497,8 +498,12 @@ set(CGAL_DO_NOT_WARN_ABOUT_CMAKE_BUILD_TYPE ON CACHE BOOL "" FORCE)
|
|||||||
|
|
||||||
cmake_policy(PUSH)
|
cmake_policy(PUSH)
|
||||||
cmake_policy(SET CMP0011 NEW)
|
cmake_policy(SET CMP0011 NEW)
|
||||||
|
# CGAL's config resets policies (cmake_minimum_required ...3.23), so a plain SET
|
||||||
|
# can't reach it; the default opts its Boost lookup into BoostConfig (CMP0167).
|
||||||
|
set(CMAKE_POLICY_DEFAULT_CMP0167 NEW)
|
||||||
find_package(CGAL REQUIRED)
|
find_package(CGAL REQUIRED)
|
||||||
find_package(OpenCV REQUIRED core)
|
find_package(OpenCV REQUIRED core)
|
||||||
|
unset(CMAKE_POLICY_DEFAULT_CMP0167)
|
||||||
cmake_policy(POP)
|
cmake_policy(POP)
|
||||||
|
|
||||||
add_library(libslic3r_cgal STATIC
|
add_library(libslic3r_cgal STATIC
|
||||||
@@ -535,7 +540,9 @@ endif ()
|
|||||||
encoding_check(libslic3r)
|
encoding_check(libslic3r)
|
||||||
|
|
||||||
target_compile_definitions(libslic3r PUBLIC -DUSE_TBB -DTBB_USE_CAPTURED_EXCEPTION=0)
|
target_compile_definitions(libslic3r PUBLIC -DUSE_TBB -DTBB_USE_CAPTURED_EXCEPTION=0)
|
||||||
|
if (USE_SLIC3R_CONSOLE_LOG)
|
||||||
target_compile_definitions(libslic3r PRIVATE $<$<CONFIG:RelWithDebInfo>:SLIC3R_CONSOLE_LOG>)
|
target_compile_definitions(libslic3r PRIVATE $<$<CONFIG:RelWithDebInfo>:SLIC3R_CONSOLE_LOG>)
|
||||||
|
endif()
|
||||||
target_include_directories(libslic3r PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
target_include_directories(libslic3r PRIVATE ${CMAKE_CURRENT_SOURCE_DIR} PUBLIC ${CMAKE_CURRENT_BINARY_DIR})
|
||||||
target_include_directories(libslic3r SYSTEM PUBLIC ${EXPAT_INCLUDE_DIRS})
|
target_include_directories(libslic3r SYSTEM PUBLIC ${EXPAT_INCLUDE_DIRS})
|
||||||
|
|
||||||
@@ -545,7 +552,7 @@ find_package(OpenCASCADE REQUIRED)
|
|||||||
target_include_directories(libslic3r SYSTEM PUBLIC ${OpenCASCADE_INCLUDE_DIR})
|
target_include_directories(libslic3r SYSTEM PUBLIC ${OpenCASCADE_INCLUDE_DIR})
|
||||||
|
|
||||||
find_package(JPEG REQUIRED)
|
find_package(JPEG REQUIRED)
|
||||||
find_package(draco REQUIRED)
|
find_package(Draco REQUIRED)
|
||||||
|
|
||||||
set(OCCT_LIBS
|
set(OCCT_LIBS
|
||||||
TKXDESTEP
|
TKXDESTEP
|
||||||
|
|||||||
@@ -632,7 +632,7 @@ void parse_metadata_rfc822(const std::string& content,
|
|||||||
bool is_ignored_plugin_directory(const boost::filesystem::path& path)
|
bool is_ignored_plugin_directory(const boost::filesystem::path& path)
|
||||||
{
|
{
|
||||||
const std::string name = path.filename().string();
|
const std::string name = path.filename().string();
|
||||||
return name.empty() || name[0] == '.' || name.rfind("__", 0) == 0 || name == PLUGIN_SUBSCRIBED_DIR || name == PLUGIN_DATA_DIR;
|
return name.empty() || name[0] == '.' || name.rfind("__", 0) == 0 || name == PLUGIN_SUBSCRIBED_DIR;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_safe_relative_path(const boost::filesystem::path& path)
|
bool is_safe_relative_path(const boost::filesystem::path& path)
|
||||||
|
|||||||
@@ -12,7 +12,6 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
#define PLUGIN_SUBSCRIBED_DIR "_subscribed"
|
#define PLUGIN_SUBSCRIBED_DIR "_subscribed"
|
||||||
#define PLUGIN_DATA_DIR "plugin_data"
|
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
|
|||||||
@@ -486,38 +486,6 @@ bool PluginManager::try_get_plugin_descriptor_for_capability(const std::string&
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string PluginManager::get_storage_dir(const std::string& plugin_key) const
|
|
||||||
{
|
|
||||||
namespace fs = boost::filesystem;
|
|
||||||
|
|
||||||
PluginDescriptor descriptor;
|
|
||||||
if (!try_get_plugin_descriptor(plugin_key, descriptor))
|
|
||||||
throw std::runtime_error("The current plugin is not registered");
|
|
||||||
|
|
||||||
const fs::path base_storage_dir = fs::path(get_orca_plugins_dir()) / PLUGIN_DATA_DIR;
|
|
||||||
|
|
||||||
if (!descriptor.is_cloud_plugin()) {
|
|
||||||
const fs::path local_storage_dir = base_storage_dir / plugin_key;
|
|
||||||
fs::create_directories(local_storage_dir);
|
|
||||||
return local_storage_dir.string();
|
|
||||||
}
|
|
||||||
|
|
||||||
auto agent = m_cloud_service.get_cloud_agent();
|
|
||||||
if (!agent)
|
|
||||||
throw std::runtime_error("Cloud plugin storage is unavailable before networking is initialized");
|
|
||||||
|
|
||||||
const std::string user_id = agent->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");
|
|
||||||
|
|
||||||
const fs::path cloud_storage_dir = base_storage_dir / PLUGIN_SUBSCRIBED_DIR / user_id / plugin_key;
|
|
||||||
fs::create_directories(cloud_storage_dir);
|
|
||||||
return cloud_storage_dir.string();
|
|
||||||
}
|
|
||||||
|
|
||||||
// ── Capability instances ────────────────────────────────────────────────────────────────────
|
// ── Capability instances ────────────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
std::vector<std::shared_ptr<PluginCapabilityInterface>> PluginManager::get_plugin_capabilities(const std::string& plugin_key,
|
std::vector<std::shared_ptr<PluginCapabilityInterface>> PluginManager::get_plugin_capabilities(const std::string& plugin_key,
|
||||||
|
|||||||
@@ -138,10 +138,6 @@ public:
|
|||||||
bool try_get_plugin_descriptor_for_capability(const std::string& capability_name,
|
bool try_get_plugin_descriptor_for_capability(const std::string& capability_name,
|
||||||
PluginCapabilityType type,
|
PluginCapabilityType type,
|
||||||
PluginDescriptor& out) const;
|
PluginDescriptor& out) const;
|
||||||
// Per-plugin storage directory under orca_plugins/plugin_data, created if missing. Throws
|
|
||||||
// std::runtime_error if the plugin is unregistered, the key is invalid, or (cloud plugins)
|
|
||||||
// no user is logged in yet.
|
|
||||||
std::string get_storage_dir(const std::string& plugin_key) const;
|
|
||||||
|
|
||||||
std::vector<std::shared_ptr<PluginCapabilityInterface>> get_plugin_capabilities(
|
std::vector<std::shared_ptr<PluginCapabilityInterface>> get_plugin_capabilities(
|
||||||
const std::string& plugin_key = "", // "" => all plugins
|
const std::string& plugin_key = "", // "" => all plugins
|
||||||
|
|||||||
@@ -1,31 +1,9 @@
|
|||||||
#include "PluginHost.hpp"
|
#include "PluginHost.hpp"
|
||||||
#include "PluginHostBindings.hpp"
|
#include "PluginHostBindings.hpp"
|
||||||
#include "PluginHostUi.hpp"
|
#include "PluginHostUi.hpp"
|
||||||
#include <slic3r/plugin/PluginAuditManager.hpp>
|
|
||||||
#include <slic3r/plugin/PluginManager.hpp>
|
|
||||||
|
|
||||||
#include <stdexcept>
|
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
|
|
||||||
namespace host_bindings {
|
|
||||||
void register_plugin(pybind11::module_& host)
|
|
||||||
{
|
|
||||||
auto plugin_host = host.def_submodule("plugin", "Plugin host API");
|
|
||||||
|
|
||||||
plugin_host.def(
|
|
||||||
"storage",
|
|
||||||
[]() -> std::string {
|
|
||||||
const std::string plugin_key = PluginAuditManager::instance().current_plugin();
|
|
||||||
if (plugin_key.empty())
|
|
||||||
throw std::runtime_error("plugin.storage() must be called from a plugin callback");
|
|
||||||
|
|
||||||
return PluginManager::instance().get_storage_dir(plugin_key);
|
|
||||||
},
|
|
||||||
"Return the installed folder of the current plugin.");
|
|
||||||
}
|
|
||||||
} // namespace host_bindings
|
|
||||||
|
|
||||||
void PluginHost::RegisterBindings(pybind11::module_& module)
|
void PluginHost::RegisterBindings(pybind11::module_& module)
|
||||||
{
|
{
|
||||||
auto host = module.def_submodule("host", "Host application API");
|
auto host = module.def_submodule("host", "Host application API");
|
||||||
@@ -37,7 +15,6 @@ void PluginHost::RegisterBindings(pybind11::module_& module)
|
|||||||
host_bindings::register_presets(host);
|
host_bindings::register_presets(host);
|
||||||
host_bindings::register_model(host);
|
host_bindings::register_model(host);
|
||||||
host_bindings::register_app(host);
|
host_bindings::register_app(host);
|
||||||
host_bindings::register_plugin(host);
|
|
||||||
|
|
||||||
// UI: native dialogs and interactive HTML windows for plugins.
|
// UI: native dialogs and interactive HTML windows for plugins.
|
||||||
PluginHostUi::RegisterBindings(host);
|
PluginHostUi::RegisterBindings(host);
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ void register_presets(pybind11::module_& host); // PluginHostPresets.cpp
|
|||||||
void register_model(pybind11::module_& host); // PluginHostModel.cpp
|
void register_model(pybind11::module_& host); // PluginHostModel.cpp
|
||||||
void register_app(pybind11::module_& host); // PluginHostApp.cpp
|
void register_app(pybind11::module_& host); // PluginHostApp.cpp
|
||||||
void register_slicing(pybind11::module_& host); // PluginHostSlicing.cpp
|
void register_slicing(pybind11::module_& host); // PluginHostSlicing.cpp
|
||||||
void register_plugin(pybind11::module_& host); // PluginHost.cpp
|
|
||||||
} // namespace Slic3r::host_bindings
|
} // namespace Slic3r::host_bindings
|
||||||
|
|||||||
Reference in New Issue
Block a user