From d918a96f2412a8a68da7c5ff1988073ac471604c Mon Sep 17 00:00:00 2001
From: sunsets <845944018@qq.com>
Date: Mon, 26 Jun 2023 18:20:40 +0800
Subject: [PATCH] WebView
---
resources/icons/tab_monitor_active.svg | 23 ++++++++
src/slic3r/GUI/MainFrame.cpp | 76 ++++++++++++++------------
src/slic3r/GUI/MainFrame.hpp | 22 +++-----
src/slic3r/Utils/Mainsail.cpp | 13 +++--
4 files changed, 80 insertions(+), 54 deletions(-)
create mode 100644 resources/icons/tab_monitor_active.svg
diff --git a/resources/icons/tab_monitor_active.svg b/resources/icons/tab_monitor_active.svg
new file mode 100644
index 0000000..1fdb0fb
--- /dev/null
+++ b/resources/icons/tab_monitor_active.svg
@@ -0,0 +1,23 @@
+
+
+
diff --git a/src/slic3r/GUI/MainFrame.cpp b/src/slic3r/GUI/MainFrame.cpp
index fcad07e..61eab5f 100644
--- a/src/slic3r/GUI/MainFrame.cpp
+++ b/src/slic3r/GUI/MainFrame.cpp
@@ -50,9 +50,6 @@
#include "NotificationManager.hpp"
#include "Preferences.hpp"
-//B4
-//#include "WebViewDialog.hpp"
-
#ifdef _WIN32
#include
#include
@@ -773,27 +770,11 @@ void MainFrame::init_tabpanel()
else
select_tab(size_t(0)); // select Plater
});
- //B4
- //if (wxGetApp().is_editor()) {
- // m_webview = new WebViewPanel(m_tabpanel);
- // Bind(EVT_LOAD_URL, [this](wxCommandEvent &evt) {
- // wxString url = evt.GetString();
- // select_tab(MainFrame::tpHome);
- // m_webview->load_url(url);
- // });
- // m_tabpanel->AddPage(m_webview, "", "tab_home_active");
- // //m_param_panel = new ParamsPanel(m_tabpanel, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxBK_LEFT | wxTAB_TRAVERSAL);
- //}
- //m_printer_view = new PrinterWebView(m_tabpanel);
- //Bind(EVT_LOAD_PRINTER_URL, [this](wxCommandEvent &evt) {
- // wxString url = evt.GetString();
- // // select_tab(MainFrame::tpMonitor);
- // m_printer_view->load_url(url);
- //});
- //wxString url = "http://www.baidu.com";
- //m_printer_view->load_url(url);
- //m_printer_view->Hide();
- //m_tabpanel->AddPage(m_printer_view, "", "tab_home_active");
+
+
+
+
+
m_plater = new Plater(this, this);
m_plater->Hide();
@@ -814,14 +795,6 @@ void MainFrame::init_tabpanel()
}
}
}
-//B4
-//void MainFrame::load_url(wxString url)
-//{
-// BOOST_LOG_TRIVIAL(trace) << "load_url:" << url;
-// auto evt = new wxCommandEvent(EVT_LOAD_URL, this->GetId());
-// evt->SetString(url);
-// wxQueueEvent(this, evt);
-//}
#ifdef WIN32
void MainFrame::register_win32_callbacks()
@@ -887,6 +860,16 @@ void MainFrame::create_preset_tabs()
add_created_tab(new TabSLAPrint(m_tabpanel), "cog");
add_created_tab(new TabSLAMaterial(m_tabpanel), "resin");
add_created_tab(new TabPrinter(m_tabpanel), wxGetApp().preset_bundle->printers.get_edited_preset().printer_technology() == ptFFF ? "printer" : "sla_printer");
+ //B4
+ m_printer_view = new PrinterWebView(m_tabpanel);
+ m_printer_view->Hide();
+ dynamic_cast(m_tabpanel)->AddPage(m_printer_view, _L("Device"), "tab_monitor_active");
+ //B28
+ m_guide_view = new GuideWebView(m_tabpanel);
+ wxString url = wxString::Format("file://%s/web/qidi/missing_connection.html", from_u8(resources_dir()));
+ m_guide_view->load_url(url);
+ m_guide_view->Hide();
+ dynamic_cast(m_tabpanel)->AddPage(m_guide_view, _L("Guide"), "notification_preferences");
}
void MainFrame::add_created_tab(Tab* panel, const std::string& bmp_name /*= ""*/)
@@ -2064,7 +2047,7 @@ void MainFrame::select_tab(Tab* tab)
page_idx++;
select_tab(size_t(page_idx));
}
-
+//B4
void MainFrame::select_tab(size_t tab/* = size_t(-1)*/)
{
bool tabpanel_was_hidden = false;
@@ -2074,9 +2057,32 @@ void MainFrame::select_tab(size_t tab/* = size_t(-1)*/)
auto select = [this, tab](bool was_hidden) {
// when tab == -1, it means we should show the last selected tab
size_t new_selection = tab == (size_t)(-1) ? m_last_selected_tab : (m_layout == ESettingsLayout::Dlg && tab != 0) ? tab - 1 : tab;
+ //B4
+ if (m_tabpanel->GetSelection() == 4) {
+ if (const DynamicPrintConfig *cfg = wxGetApp().preset_bundle->physical_printers.get_selected_printer_config(); cfg) {
+ PresetBundle & preset_bundle = *wxGetApp().preset_bundle;
+ const PhysicalPrinter &pp = preset_bundle.physical_printers.get_selected_printer();
+ wxString host = pp.config.opt_string("print_host");
+ if (host.empty())
+ host = wxString::Format("file://%s/web/qidi/missing_connection.html", from_u8(resources_dir()));
+ else {
+ if (!host.Lower().starts_with("http"))
+ host = wxString::Format("http://%s", host);
+ if (!host.Lower().ends_with("10088"))
+ host = wxString::Format("%s:10088", host);
+ }
+ if (tem_host != host) {
+ m_printer_view->load_url(host);
+ tem_host = host;
+ }
- if (m_tabpanel->GetSelection() != (int)new_selection)
- m_tabpanel->SetSelection(new_selection);
+ } else {
+ wxString url = wxString::Format("file://%s/web/qidi/missing_connection.html", from_u8(resources_dir()));
+ m_printer_view->load_url(url);
+ }
+ }
+ // if (m_tabpanel->GetSelection() != (int)new_selection)
+ // m_tabpanel->SetSelection(new_selection);
#ifdef _MSW_DARK_MODE
if (wxGetApp().tabs_as_menu()) {
if (Tab* cur_tab = dynamic_cast(m_tabpanel->GetPage(new_selection)))
diff --git a/src/slic3r/GUI/MainFrame.hpp b/src/slic3r/GUI/MainFrame.hpp
index 16451ac..64c04f3 100644
--- a/src/slic3r/GUI/MainFrame.hpp
+++ b/src/slic3r/GUI/MainFrame.hpp
@@ -19,6 +19,8 @@
#include "UnsavedChangesDialog.hpp"
//B4
#include "PrinterWebView.hpp"
+// B28
+#include "GuideWebView.hpp"
class wxBookCtrlBase;
class wxProgressDialog;
@@ -36,7 +38,6 @@ class Plater;
class MainFrame;
class PreferencesDialog;
class GalleryDialog;
-//class WebViewPanel;
enum QuickSlice
@@ -146,16 +147,6 @@ public:
MainFrame(const int font_point_size);
~MainFrame() = default;
- enum TabPosition {
- tpHome = 0,
- tp3DEditor = 1,
- // tpSettings = 1,
- tpPreview = 2,
- tpMonitor = 3,
- tpProject = 4,
- toDebugTool = 5,
- };
-
void update_layout();
void update_mode_markers();
@@ -216,10 +207,15 @@ public:
void technology_changed();
PrintHostQueueDialog *printhost_queue_dlg() { return m_printhost_queue_dlg; }
- //B4
+
+
Plater *m_plater{nullptr};
- //WebViewPanel * m_webview{nullptr};
+
+ //B4
+ wxString tem_host;
PrinterWebView * m_printer_view{nullptr};
+ //B28
+ GuideWebView * m_guide_view{nullptr};
wxBookCtrlBase * m_tabpanel{nullptr};
SettingsDialog m_settings_dialog;
DiffPresetDialog diff_dialog;
diff --git a/src/slic3r/Utils/Mainsail.cpp b/src/slic3r/Utils/Mainsail.cpp
index 303d754..200bcfa 100644
--- a/src/slic3r/Utils/Mainsail.cpp
+++ b/src/slic3r/Utils/Mainsail.cpp
@@ -239,17 +239,18 @@ void Mainsail::set_auth(Http &http) const
if (!m_cafile.empty())
http.ca_file(m_cafile);
}
-
+//B4
std::string Mainsail::make_url(const std::string &path) const
{
- if (m_host.find("http://") == 0 || m_host.find("https://") == 0) {
- if (m_host.back() == '/') {
- return (boost::format("%1%%2%") % m_host % path).str();
+ std::string m_host_add = m_host + ":10088";
+ if (m_host_add.find("http://") == 0 || m_host_add.find("https://") == 0) {
+ if (m_host_add.back() == '/') {
+ return (boost::format("%1%%2%") % m_host_add % path).str();
} else {
- return (boost::format("%1%/%2%") % m_host % path).str();
+ return (boost::format("%1%/%2%") % m_host_add % path).str();
}
} else {
- return (boost::format("http://%1%/%2%") % m_host % path).str();
+ return (boost::format("http://%1%/%2%") % m_host_add % path).str();
}
}