mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-18 21:20:57 +00:00
* Add Missing Includes Across src/slic3r/GUI Every GUI source and header now directly includes the headers declaring what it uses, rather than relying on the precompiled header or transitive includes. Generated with clang-tidy misc-include-cleaner, plus one hand edit making CalibrationPanel.hpp self-contained. * Drop the OS-Specific Includes Added Outside Their Platform Guards GLib, GTK, D-Bus and POSIX headers are only used inside platform #if blocks, which already include them. Added unconditionally at the top of the file they broke the Windows build. * Add the clang-tidy Configuration That Generated These Includes Only misc-include-cleaner's missing-include check, with the headers it must never suggest: per-platform, internal and OS-specific ones that would break other platforms or are not meant to be included directly. * Match Windows Paths in the clang-tidy Ignore List Header paths use backslashes on Windows, so every / in a pattern is now [/\\]. The Windows SDK headers are ignored alongside the other OS-specific ones, and the list is one pattern per line. Suggested by @raistlin7447 from a Windows clang-cl run.
70 lines
2.0 KiB
C++
70 lines
2.0 KiB
C++
#include "WebHosting.hpp"
|
|
|
|
#include "slic3r/GUI/GUI.hpp"
|
|
|
|
#include <libslic3r/Utils.hpp>
|
|
|
|
#include <boost/filesystem.hpp>
|
|
|
|
#include <wx/string.h>
|
|
#include <wx/uri.h>
|
|
|
|
namespace Slic3r { namespace GUI { namespace web_hosting {
|
|
|
|
namespace {
|
|
|
|
// Injected into the top-level page at document start (before the plugin's own
|
|
// scripts). Defines window.orca as the only host surface the page may use. It
|
|
// references window.wx lazily (at call time) so it never races the backend's
|
|
// deferred registration of the "wx" message handler. Guarded against
|
|
// double-injection so it is harmless if also prepended.
|
|
constexpr char ORCA_BRIDGE_JS[] = R"JS(
|
|
(function () {
|
|
if (window.top !== window.self) return;
|
|
if (window.orca) return;
|
|
var handlers = [];
|
|
function send(kind, data) {
|
|
try {
|
|
window.wx.postMessage(JSON.stringify({
|
|
channel: 'orca', kind: kind, data: (data === undefined ? null : data)
|
|
}));
|
|
} catch (e) { /* bridge not ready yet */ }
|
|
}
|
|
window.orca = {
|
|
postMessage: function (d) { send('message', d); },
|
|
submit: function (d) { send('submit', d); },
|
|
close: function () { send('close'); },
|
|
onMessage: function (cb) { if (typeof cb === 'function') handlers.push(cb); }
|
|
};
|
|
window.__orcaDispatch = function (payload) {
|
|
var data = payload ? payload.data : null;
|
|
for (var i = 0; i < handlers.length; i++) {
|
|
try { handlers[i](data); } catch (e) {}
|
|
}
|
|
};
|
|
})();
|
|
)JS";
|
|
|
|
} // namespace
|
|
|
|
wxString bootstrap_url()
|
|
{
|
|
return file_url_from_path(boost::filesystem::path(resources_dir()) / BOOTSTRAP_PAGE);
|
|
}
|
|
|
|
wxString content_base_url()
|
|
{
|
|
return file_url_from_path(boost::filesystem::path(resources_dir()) / "web") + "/";
|
|
}
|
|
|
|
bool is_content_url(const wxString& url)
|
|
{
|
|
// The web view reports the URL it parsed, which may escape the resources path differently
|
|
// from content_base_url().
|
|
return wxURI::Unescape(url.BeforeFirst('#')) == wxURI::Unescape(content_base_url());
|
|
}
|
|
|
|
const char* orca_bridge_script() { return ORCA_BRIDGE_JS; }
|
|
|
|
}}} // namespace Slic3r::GUI::web_hosting
|