From 44cf71390bd79b3b9c57b837aadfa67ab17f65ff Mon Sep 17 00:00:00 2001 From: David Kocik Date: Mon, 6 May 2024 16:07:14 +0200 Subject: [PATCH] Passing uuid from connect webview to connect printerpick TODO: More sofisticated logic to pass or not pass uuid --- src/slic3r/GUI/GUI_App.cpp | 2 ++ src/slic3r/GUI/UserAccount.hpp | 4 ++++ src/slic3r/GUI/WebViewDialog.cpp | 9 ++++++--- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/src/slic3r/GUI/GUI_App.cpp b/src/slic3r/GUI/GUI_App.cpp index a72bfc5a8f..185f3d81c2 100644 --- a/src/slic3r/GUI/GUI_App.cpp +++ b/src/slic3r/GUI/GUI_App.cpp @@ -3681,6 +3681,7 @@ bool GUI_App::select_printer_from_connect(const std::string& msg) { // parse message std::string model_name = plater()->get_user_account()->get_keyword_from_json(msg, "printer_model"); + std::string uuid = plater()->get_user_account()->get_keyword_from_json(msg, "uuid"); if (model_name.empty()) { std::vector compatible_printers; plater()->get_user_account()->fill_supported_printer_models_from_json(msg, compatible_printers); @@ -3707,6 +3708,7 @@ bool GUI_App::select_printer_from_connect(const std::string& msg) NotificationType::SelectPrinterFromConnect , printer_preset ? NotificationManager::NotificationLevel::ImportantNotificationLevel : NotificationManager::NotificationLevel::WarningNotificationLevel , out); + plater()->get_user_account()->set_current_printer_uuid_from_connect(uuid); return printer_preset; } diff --git a/src/slic3r/GUI/UserAccount.hpp b/src/slic3r/GUI/UserAccount.hpp index 9d597acf1c..a31c70ca63 100644 --- a/src/slic3r/GUI/UserAccount.hpp +++ b/src/slic3r/GUI/UserAccount.hpp @@ -72,6 +72,8 @@ public: const std::map& get_printer_state_table() const { return printer_state_table; } + void set_current_printer_uuid_from_connect(const std::string& uuid) { m_current_printer_uuid_from_connect = uuid; } + std::string get_current_printer_uuid_from_connect() const { return m_current_printer_uuid_from_connect; } private: void set_username(const std::string& username); @@ -86,6 +88,8 @@ private: size_t m_fail_counter { 0 }; std::string m_avatar_extension; + std::string m_current_printer_uuid_from_connect; + const std::map printer_state_table = { {"OFFLINE" , ConnectPrinterState::CONNECT_PRINTER_OFFLINE}, {"PRINTING" , ConnectPrinterState::CONNECT_PRINTER_PRINTING}, diff --git a/src/slic3r/GUI/WebViewDialog.cpp b/src/slic3r/GUI/WebViewDialog.cpp index d149f33744..1b0859a68d 100644 --- a/src/slic3r/GUI/WebViewDialog.cpp +++ b/src/slic3r/GUI/WebViewDialog.cpp @@ -1089,14 +1089,15 @@ void PrinterPickWebViewDialog::request_compatible_printers_FFF() // Sending only first filament type for now. This should change to array of values const std::string filament_type_serialized = selected_filament.config.option("filament_type")->serialize(); const std::string printer_model_serialized = selected_printer.config.option("printer_model")->serialize(); - + const std::string uuid = wxGetApp().plater()->get_user_account()->get_current_printer_uuid_from_connect(); const std::string request = GUI::format( "{" + "\"printerUuid\": \"%4%\", " "\"printerModel\": \"%3%\", " "\"nozzleDiameter\": %2%, " "\"material\": \"%1%\" " - "}", filament_type_serialized, nozzle_diameter_serialized, printer_model_serialized); + "}", filament_type_serialized, nozzle_diameter_serialized, printer_model_serialized, uuid); wxString script = GUI::format_wxstr("window._prusaConnect_v1.requestCompatiblePrinter(%1%)", request); run_script(script); @@ -1107,11 +1108,13 @@ void PrinterPickWebViewDialog::request_compatible_printers_SLA() const std::string printer_model_serialized = selected_printer.config.option("printer_model")->serialize(); const Preset& selected_material = wxGetApp().preset_bundle->sla_materials.get_selected_preset(); const std::string material_type_serialized = selected_material.config.option("material_type")->serialize(); + const std::string uuid = wxGetApp().plater()->get_user_account()->get_current_printer_uuid_from_connect(); const std::string request = GUI::format( "{" + "\"printerUuid\": \"%3%\", " "\"material\": \"%1%\", " "\"printerModel\": \"%2%\" " - "}", material_type_serialized, printer_model_serialized); + "}", material_type_serialized, printer_model_serialized, uuid); wxString script = GUI::format_wxstr("window._prusaConnect_v1.requestCompatiblePrinter(%1%)", request); run_script(script);