OrcaSlicer latest
OrcaSlicer
Loading...
Searching...
No Matches
Slic3r::PyPagesPluginCapabilityTrampoline Class Reference

#include </home/runner/work/OrcaSlicer/OrcaSlicer/src/slic3r/plugin/pluginTypes/pages/PagesPluginCapabilityTrampoline.hpp>

Inheritance diagram for Slic3r::PyPagesPluginCapabilityTrampoline:
Collaboration diagram for Slic3r::PyPagesPluginCapabilityTrampoline:

Public Member Functions

std::string get_icon () override
std::string get_ui () override
void on_message (std::string message) override
std::string get_name () const override
bool has_config_ui () const override
std::string get_config_ui () const override
nlohmann::json get_default_config () const override
void on_load () override
void on_unload () override
void on_cancelled () override
void on_lifecycle_event (LifecycleEvent event, const LifecycleEventContext &ctx) override
PluginCapabilityType get_type () const override
void post_message (std::string message)
void set_message_sender (std::function< void(const std::string &)> sender)
void clear_message_sender ()
const std::string & name () const
PluginCapabilityType type () const
PluginCapabilityId identity () const
void set_resolved_identity (std::string name, PluginCapabilityType type)
bool is_enabled () const
void set_enabled (bool enabled)
bool config_ui_available () const
void set_config_ui_available (bool available)
void set_audit_plugin_key (std::string key)
const std::string & audit_plugin_key () const
void increment () const
void decrement () const
int ref_count () const

Static Public Member Functions

static void RegisterBindings (pybind11::module_ &module)

Private Attributes

std::mutex m_message_mutex
std::function< void(const std::string &)> m_message_sender
std::string m_name
PluginCapabilityType m_type = PluginCapabilityType::Unknown
std::atomic< bool > m_enabled {true}
bool m_config_ui_available = false
std::string m_audit_plugin_key
std::atomic< int > m_refs {0}

Detailed Description

Member Function Documentation

◆ audit_plugin_key()

const std::string & Slic3r::PluginCapabilityInterface::audit_plugin_key ( ) const
inlineinherited
211{ return m_audit_plugin_key; }
std::string m_audit_plugin_key
Definition PythonPluginInterface.hpp:222

References m_audit_plugin_key.

Referenced by Slic3r::PyPrinterAgentPluginCapabilityTrampoline::log_failure().

Here is the caller graph for this function:

◆ clear_message_sender()

void Slic3r::PagesPluginCapability::clear_message_sender ( )
inherited
62{
63 std::lock_guard<std::mutex> lock(m_message_mutex);
64 m_message_sender = nullptr;
65}
std::function< void(const std::string &)> m_message_sender
Definition PagesPluginCapability.hpp:29
std::mutex m_message_mutex
Definition PagesPluginCapability.hpp:28
@ lock
Definition GLGizmoEmboss.cpp:209

References m_message_mutex, and m_message_sender.

◆ config_ui_available()

bool Slic3r::PluginCapabilityInterface::config_ui_available ( ) const
inlineinherited
205{ return m_config_ui_available; }
bool m_config_ui_available
Definition PythonPluginInterface.hpp:221

References m_config_ui_available.

◆ decrement()

void Slic3r::PluginCapabilityInterface::decrement ( ) const
inlineinherited
214{ m_refs.fetch_sub(1, std::memory_order_acq_rel); }
std::atomic< int > m_refs
Definition PythonPluginInterface.hpp:224

References m_refs.

◆ get_config_ui()

std::string Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::get_config_ui ( ) const
inlineoverridevirtualinherited

Reimplemented from Slic3r::PluginCapabilityInterface.

163 {
165 [] {},
168 Base,
170 }
#define ORCA_PY_OVERRIDE_AUDITED(audit_setup, override_macro, ret, base, name,...)
Definition PyPluginTrampoline.hpp:55
Definition PyPluginTrampoline.hpp:141

◆ get_default_config()

nlohmann::json Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::get_default_config ( ) const
inlineoverridevirtualinherited

Reimplemented from Slic3r::PluginCapabilityInterface.

180 {
183 try {
184 pybind11::function override = pybind11::get_override(static_cast<const Base*>(this), "get_default_config");
185 if (!override)
187
189 if (!config.is_object()) {
191 << "Plugin capability '" << this->name() << "' of plugin '" << this->audit_plugin_key()
192 << "': get_default_config() returned " << config.type_name() << ", not an object; restoring an empty config";
194 }
195 return config;
198 throw;
199 }
200 }
#define ORCA_PY_AUDIT_SCOPE()
Definition PyPluginTrampoline.hpp:50
const std::string & audit_plugin_key() const
Definition PythonPluginInterface.hpp:211
const std::string & name() const
Definition PythonPluginInterface.hpp:187
void log_python_exception_keep(pybind11::error_already_set &err)
Definition PythonInterpreter.cpp:96
nlohmann::json py_to_json(const pybind11::handle &o, int depth=0)
Definition PluginFsUtils.hpp:64

◆ get_icon()

std::string Slic3r::PyPagesPluginCapabilityTrampoline::get_icon ( )
inlineoverridevirtual

Reimplemented from Slic3r::PagesPluginCapability.

23 {
25 [] {},
26 PYBIND11_OVERRIDE,
27 std::string,
28 PagesPluginCapability,
29 get_icon);
30 }
std::string get_icon() override
Definition PagesPluginCapabilityTrampoline.hpp:22

References get_icon(), and ORCA_PY_OVERRIDE_AUDITED.

Referenced by get_icon().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ get_name()

std::string Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::get_name ( ) const
inlineoverridevirtualinherited

◆ get_type()

PluginCapabilityType Slic3r::PagesPluginCapability::get_type ( ) const
inlineoverridevirtualinherited

Reimplemented from Slic3r::PluginCapabilityInterface.

@ Pages
Definition PythonPluginInterface.hpp:17

References Slic3r::Pages.

Referenced by RegisterBindings().

Here is the caller graph for this function:

◆ get_ui()

std::string Slic3r::PyPagesPluginCapabilityTrampoline::get_ui ( )
inlineoverridevirtual

Implements Slic3r::PagesPluginCapability.

33 {
35 [] {},
36 PYBIND11_OVERRIDE_PURE,
37 std::string,
38 PagesPluginCapability,
39 get_ui);
40 }
std::string get_ui() override
Definition PagesPluginCapabilityTrampoline.hpp:32

References get_ui(), and ORCA_PY_OVERRIDE_AUDITED.

Referenced by get_ui().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ has_config_ui()

bool Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::has_config_ui ( ) const
inlineoverridevirtualinherited

Reimplemented from Slic3r::PluginCapabilityInterface.

153 {
155 [] {},
157 bool,
158 Base,
160 }

◆ identity()

PluginCapabilityId Slic3r::PluginCapabilityInterface::identity ( ) const
inlineinherited
189{ return {m_type, m_name, m_audit_plugin_key}; }
std::string m_name
Definition PythonPluginInterface.hpp:218
PluginCapabilityType m_type
Definition PythonPluginInterface.hpp:219

References m_audit_plugin_key, m_name, and m_type.

Referenced by Slic3r::anonymous_namespace{PluginConfig.cpp}::capability_identity().

Here is the caller graph for this function:

◆ increment()

void Slic3r::PluginCapabilityInterface::increment ( ) const
inlineinherited
213{ m_refs.fetch_add(1, std::memory_order_acq_rel); }

References m_refs.

◆ is_enabled()

bool Slic3r::PluginCapabilityInterface::is_enabled ( ) const
inlineinherited
199{ return m_enabled.load(std::memory_order_acquire); }
std::atomic< bool > m_enabled
Definition PythonPluginInterface.hpp:220

References m_enabled.

◆ name()

const std::string & Slic3r::PluginCapabilityInterface::name ( ) const
inlineinherited
187{ return m_name; }

References m_name.

Referenced by Slic3r::PrinterAgentPluginCapability::RegisterBindings(), and set_resolved_identity().

Here is the caller graph for this function:

◆ on_cancelled()

void Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::on_cancelled ( )
inlineoverridevirtualinherited

◆ on_lifecycle_event()

void Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::on_lifecycle_event ( LifecycleEvent event,
const LifecycleEventContext & ctx )
inlineoverridevirtualinherited

◆ on_load()

void Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::on_load ( )
inlineoverridevirtualinherited

◆ on_message()

void Slic3r::PyPagesPluginCapabilityTrampoline::on_message ( std::string message)
inlineoverridevirtual

Reimplemented from Slic3r::PagesPluginCapability.

43 {
44 PluginCapabilityInterface::RefCounter ref_counter(*this);
45 PythonGILState gil;
46 if (!gil)
47 throw std::runtime_error("Python interpreter is shutting down");
48
50
51 pybind11::function override = pybind11::get_override(static_cast<PagesPluginCapability*>(this), "on_message");
52 if (!override)
53 return;
54
55 nlohmann::json data = nlohmann::json::parse(message, nullptr, false);
56 if (data.is_discarded())
57 data = message;
58
60 }
#define ORCA_PY_LOGGED_OVERRIDE_BODY(override_call)
Definition PyPluginTrampoline.hpp:34
pybind11::object json_to_py(const nlohmann::json &j, int depth=0)
Definition PluginFsUtils.hpp:33

References Slic3r::json_to_py(), ORCA_PY_AUDIT_SCOPE, and ORCA_PY_LOGGED_OVERRIDE_BODY.

Here is the call graph for this function:

◆ on_unload()

void Slic3r::PyPluginCommonTrampoline< PagesPluginCapability >::on_unload ( )
inlineoverridevirtualinherited

◆ post_message()

void Slic3r::PagesPluginCapability::post_message ( std::string message)
inherited
44{
45 std::function<void(const std::string&)> sender;
46 {
47 std::lock_guard<std::mutex> lock(m_message_mutex);
48 sender = m_message_sender;
49 }
50
51 if (sender)
52 sender(message);
53}

References m_message_mutex, and m_message_sender.

Referenced by RegisterBindings().

Here is the caller graph for this function:

◆ ref_count()

int Slic3r::PluginCapabilityInterface::ref_count ( ) const
inlineinherited
215{ return m_refs.load(std::memory_order_acquire); }

References m_refs.

◆ RegisterBindings()

void Slic3r::PagesPluginCapability::RegisterBindings ( pybind11::module_ & module)
staticinherited
23{
24 BOOST_LOG_TRIVIAL(debug) << "Registering orca.pages bindings";
25
26 auto pages = module.def_submodule("pages", "Plugin page API");
27
28 py::class_<PagesPluginCapability, PluginCapabilityInterface, PyPagesPluginCapabilityTrampoline,
29 std::shared_ptr<PagesPluginCapability>>(pages, "PagesPluginCapabilityBase")
30 .def(py::init<>())
31 .def("get_type", &PagesPluginCapability::get_type)
32 .def("get_ui", &PagesPluginCapability::get_ui)
33 .def("get_icon", &PagesPluginCapability::get_icon)
34 .def("on_message", &PagesPluginCapability::on_message)
35 .def(
36 "post_message",
37 [](PagesPluginCapability& capability, py::object data) {
38 capability.post_message(py_to_json(data).dump());
39 },
40 py::arg("data"), "Send a JSON-compatible value to the page's window.orca.onMessage handlers.");
41}
virtual std::string get_ui()=0
PluginCapabilityType get_type() const override
Definition PagesPluginCapability.hpp:17
virtual std::string get_icon()
Definition PagesPluginCapability.hpp:21
virtual void on_message(std::string message)
Definition PagesPluginCapability.hpp:20
size_t dump(const PresetBundle &bundle, const Sections &sections, std::ostream &out)
Definition profile_include_dump.cpp:96

References get_icon(), get_type(), get_ui(), Slic3r::module(), on_message(), post_message(), and Slic3r::py_to_json().

Referenced by Slic3r::bind_python_api().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ set_audit_plugin_key()

void Slic3r::PluginCapabilityInterface::set_audit_plugin_key ( std::string key)
inlineinherited
210{ m_audit_plugin_key = std::move(key); }

References m_audit_plugin_key.

◆ set_config_ui_available()

void Slic3r::PluginCapabilityInterface::set_config_ui_available ( bool available)
inlineinherited
206{ m_config_ui_available = available; }

References m_config_ui_available.

◆ set_enabled()

void Slic3r::PluginCapabilityInterface::set_enabled ( bool enabled)
inlineinherited
200{ m_enabled.store(enabled, std::memory_order_release); }

References m_enabled.

◆ set_message_sender()

void Slic3r::PagesPluginCapability::set_message_sender ( std::function< void(const std::string &)> sender)
inherited
56{
57 std::lock_guard<std::mutex> lock(m_message_mutex);
58 m_message_sender = std::move(sender);
59}

References m_message_mutex, and m_message_sender.

◆ set_resolved_identity()

void Slic3r::PluginCapabilityInterface::set_resolved_identity ( std::string name,
PluginCapabilityType type )
inlineinherited
191 {
192 m_name = std::move(name);
193 m_type = type;
194 }
PluginCapabilityType type() const
Definition PythonPluginInterface.hpp:188

References m_name, m_type, name(), and type().

Here is the call graph for this function:

◆ type()

PluginCapabilityType Slic3r::PluginCapabilityInterface::type ( ) const
inlineinherited
188{ return m_type; }

References m_type.

Referenced by set_resolved_identity().

Here is the caller graph for this function:

Member Data Documentation

◆ m_audit_plugin_key

std::string Slic3r::PluginCapabilityInterface::m_audit_plugin_key
privateinherited

◆ m_config_ui_available

bool Slic3r::PluginCapabilityInterface::m_config_ui_available = false
privateinherited

◆ m_enabled

std::atomic<bool> Slic3r::PluginCapabilityInterface::m_enabled {true}
privateinherited
220{true};

Referenced by is_enabled(), and set_enabled().

◆ m_message_mutex

std::mutex Slic3r::PagesPluginCapability::m_message_mutex
mutableprivateinherited

◆ m_message_sender

std::function<void(const std::string&)> Slic3r::PagesPluginCapability::m_message_sender
privateinherited

◆ m_name

std::string Slic3r::PluginCapabilityInterface::m_name
privateinherited

◆ m_refs

std::atomic<int> Slic3r::PluginCapabilityInterface::m_refs {0}
mutableprivateinherited
224{0};

Referenced by decrement(), increment(), and ref_count().

◆ m_type

PluginCapabilityType Slic3r::PluginCapabilityInterface::m_type = PluginCapabilityType::Unknown
privateinherited

The documentation for this class was generated from the following file: