mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-07-15 15:03:49 +00:00
PluginHostApi.cpp had grown into one TU holding the module entry point plus
three unrelated domains (presets, model/mesh graph, app access), and
PluginHostSlicing.cpp mixed ownable geometry value types with the
non-owning live print graph. Reorganize the orca.host surface into
plugin/host/ with one registrar per domain:
- PluginHost.hpp/.cpp entry point (replaces PluginHostApi)
- PluginHostBindings.hpp internal per-domain registrar declarations
- PluginHostGeometry.cpp BoundingBox, Point, Polygon, ExPolygon + ndarray parsing
- PluginHostMesh.hpp/.cpp TriangleMesh snapshot (own TU ahead of planned
mesh construct/mutate APIs)
- PluginHostPresets.cpp Preset, PresetCollection, PresetBundle
- PluginHostModel.cpp scene graph: Model, ModelObject, ModelInstance, ModelVolume
- PluginHostApp.cpp Plater + plater()/model()/preset_bundle() accessors
- PluginHostSlicing.cpp live print graph only, now with a single lifetime story
- PluginHostUi.hpp/.cpp moved unchanged
PluginBindingUtils.hpp stays at plugin/ root: it is shared with pluginTypes/
and tests, not host/-specific.
No Python-visible change: same submodules, class names and docstrings.
Verified with slic3rutils and fff_print suites.
25 lines
820 B
C++
25 lines
820 B
C++
#pragma once
|
|
|
|
#include <pybind11/pybind11.h>
|
|
|
|
#include <string>
|
|
|
|
namespace Slic3r {
|
|
|
|
// Binds the `orca.host.ui` submodule: native message boxes, progress dialogs,
|
|
// and interactive HTML windows for plugins. All calls run on the main/UI thread
|
|
// (marshaled from the plugin worker thread) and the host owns every window.
|
|
class PluginHostUi
|
|
{
|
|
public:
|
|
static void RegisterBindings(pybind11::module_& host);
|
|
|
|
// Lifecycle hook: close and tear down every UI window owned by a plugin.
|
|
// Registered via PluginLoader::subscribe_on_unload_callback so UI windows
|
|
// are destroyed on plugin unload/reload and at app shutdown (before the
|
|
// Python interpreter is finalized). Matches PluginLifecycleCompleteFn.
|
|
static void close_windows_for_plugin(const std::string& plugin_key);
|
|
};
|
|
|
|
} // namespace Slic3r
|