diff --git a/resources/icons/connect_status.svg b/resources/icons/connect_status.svg new file mode 100644 index 0000000000..e3bbf7b858 --- /dev/null +++ b/resources/icons/connect_status.svg @@ -0,0 +1,8 @@ + + + + + + + diff --git a/resources/icons/printer_available.svg b/resources/icons/printer_available.svg index 12e295098b..e383ed878f 100644 --- a/resources/icons/printer_available.svg +++ b/resources/icons/printer_available.svg @@ -1,16 +1,15 @@ - - + - - - - - - - - - - + + + + + + + + + diff --git a/resources/icons/printer_busy.svg b/resources/icons/printer_busy.svg index 32c8149174..1284851948 100644 --- a/resources/icons/printer_busy.svg +++ b/resources/icons/printer_busy.svg @@ -1,16 +1,15 @@ - - + - - - - - - - - - - + + + + + + + + + diff --git a/resources/icons/printer_offline.svg b/resources/icons/printer_offline.svg index c56326470f..e1ffd448b9 100644 --- a/resources/icons/printer_offline.svg +++ b/resources/icons/printer_offline.svg @@ -1,16 +1,15 @@ - - + - - - - - - - - - - + + + + + + + + + diff --git a/resources/icons/sla_printer_available.svg b/resources/icons/sla_printer_available.svg index 47db35e290..8dfa58742d 100644 --- a/resources/icons/sla_printer_available.svg +++ b/resources/icons/sla_printer_available.svg @@ -1,16 +1,8 @@ - - + - - - - - - - - - - - + + + diff --git a/resources/icons/sla_printer_busy.svg b/resources/icons/sla_printer_busy.svg index fc4dcf3bc6..293ddd1d23 100644 --- a/resources/icons/sla_printer_busy.svg +++ b/resources/icons/sla_printer_busy.svg @@ -1,16 +1,8 @@ - - + - - - - - - - - - - - + + + diff --git a/resources/icons/sla_printer_offline.svg b/resources/icons/sla_printer_offline.svg index eb91f6fe5c..0c0b772e54 100644 --- a/resources/icons/sla_printer_offline.svg +++ b/resources/icons/sla_printer_offline.svg @@ -1,16 +1,8 @@ - - + - - - - - - - - - - - + + + diff --git a/src/slic3r/GUI/PresetComboBoxes.cpp b/src/slic3r/GUI/PresetComboBoxes.cpp index 9d42a80a65..5fcbcdab21 100644 --- a/src/slic3r/GUI/PresetComboBoxes.cpp +++ b/src/slic3r/GUI/PresetComboBoxes.cpp @@ -670,12 +670,6 @@ bool PresetComboBox::selection_is_changed_according_to_physical_printers() // *** PlaterPresetComboBox *** // --------------------------------- -static bool is_active_connect() -{ - auto user_account = wxGetApp().plater()->get_user_account(); - return user_account && user_account->is_logged(); -} - PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset_type) : PresetComboBox(parent, preset_type, wxSize(15 * wxGetApp().em_unit(), -1)) { @@ -716,8 +710,47 @@ PlaterPresetComboBox::PlaterPresetComboBox(wxWindow *parent, Preset::Type preset switch_to_tab(); }); - if (m_type == Preset::TYPE_PRINTER) - connect_info = new wxGenericStaticText(parent, wxID_ANY, /*"Info about Connect for printer preset"*/ ""); + if (m_type == Preset::TYPE_PRINTER) { + +#ifdef _WIN32 + connect_info_sizer = new wxBoxSizer(wxHORIZONTAL); + + connect_available_info = new wxGenericStaticText(parent, wxID_ANY, /*"Info about Connect for printer preset"*/ ""); + connect_offline_info = new wxGenericStaticText(parent, wxID_ANY, /*"Info about Connect for printer preset"*/ ""); + connect_printing_info = new wxGenericStaticText(parent, wxID_ANY, /*"Info about Connect for printer preset"*/ ""); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#5CD800")), 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(connect_available_info, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#FB3636")), 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(connect_offline_info, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#2E9BFF")), 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(connect_printing_info, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); +#else + connect_info_sizer = new wxFlexGridSizer(9, 10, 0); + connect_info_sizer->SetFlexibleDirection(wxBOTH); + + connect_available_info = new wxStaticText(parent, wxID_ANY, "0"); + connect_offline_info = new wxStaticText(parent, wxID_ANY, "0"); + connect_printing_info = new wxStaticText(parent, wxID_ANY, "0"); + connect_available_info->SetFont(wxGetApp().bold_font()); + connect_offline_info ->SetFont(wxGetApp().bold_font()); + connect_printing_info ->SetFont(wxGetApp().bold_font()); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#5CD800")), 0, wxALIGN_CENTER_VERTICAL | wxTOP, 1); + connect_info_sizer->Add(connect_available_info, 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(new wxStaticText(parent, wxID_ANY, _L("available")), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#FB3636")), 0, wxALIGN_CENTER_VERTICAL | wxTOP, 1); + connect_info_sizer->Add(connect_offline_info, 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(new wxStaticText(parent, wxID_ANY, _L("offline")), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); + + connect_info_sizer->Add(new wxStaticBitmap(parent, wxID_ANY, *get_bmp_bundle("connect_status", 14, 14, "#2E9BFF")), 0, wxALIGN_CENTER_VERTICAL | wxTOP, 1); + connect_info_sizer->Add(connect_printing_info, 0, wxALIGN_CENTER_VERTICAL); + connect_info_sizer->Add(new wxStaticText(parent, wxID_ANY, _L("printing")), 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, 10); +#endif + } } PlaterPresetComboBox::~PlaterPresetComboBox() @@ -951,7 +984,16 @@ static std::string get_connect_state_suffix_for_printer(const Preset& printer_pr return ""; } -static wxString get_connect_info_line(const Preset& printer_preset) +static bool fill_data_to_connect_info_line( const Preset& printer_preset, +#ifdef _WIN32 + wxGenericStaticText* connect_available_info, + wxGenericStaticText* connect_offline_info, + wxGenericStaticText* connect_printing_info) +#else + wxStaticText* connect_available_info, + wxStaticText* connect_offline_info, + wxStaticText* connect_printing_info) +#endif { if (auto printer_state_map = wxGetApp().plater()->get_user_account()->get_printer_state_map(); !printer_state_map.empty()) { @@ -962,14 +1004,20 @@ static wxString get_connect_info_line(const Preset& printer_preset) { PrinterStatesCount states_cnt = get_printe_states_count(states); - return format_wxstr(_L("Available: %1%, Offline: %2%, Busy: %3%"), - format("%1%" , states_cnt.available_cnt), - format("%1%" , states_cnt.offline_cnt), - format("%1%", states_cnt.busy_cnt)); +#ifdef _WIN32 + connect_available_info->SetLabelMarkup(format_wxstr("%1% %2%", format("%1%", states_cnt.available_cnt), _L("available"))); + connect_offline_info ->SetLabelMarkup(format_wxstr("%1% %2%", format("%1%", states_cnt.offline_cnt), _L("offline"))); + connect_printing_info ->SetLabelMarkup(format_wxstr("%1% %2%", format("%1%", states_cnt.busy_cnt), _L("printing"))); +#else + connect_available_info->SetLabel(format_wxstr("%1% ", states_cnt.available_cnt)); + connect_offline_info ->SetLabel(format_wxstr("%1% ", states_cnt.offline_cnt)); + connect_printing_info ->SetLabel(format_wxstr("%1% ", states_cnt.busy_cnt)); +#endif + return true; } } } - return " "; // to correct update of strinh height don't use empty string + return false; } // Only the compatible presets are shown. @@ -1047,7 +1095,7 @@ void PlaterPresetComboBox::update() if (m_type == Preset::TYPE_PRINTER) { bitmap_type_name = bitmap_key += get_connect_state_suffix_for_printer(preset); if (is_selected) - connect_info->SetLabelMarkup(get_connect_info_line(preset)); + connect_info_sizer->Show(fill_data_to_connect_info_line(preset, connect_available_info, connect_offline_info, connect_printing_info)); } bool single_bar = false; @@ -1165,7 +1213,7 @@ void PlaterPresetComboBox::update() } } if (is_selected_some_ph_printer) - connect_info->SetLabel(wxEmptyString); + connect_info_sizer->Show(false); std::sort(preset_data.begin(), preset_data.end(), [](const PhysicalPrinterPresetData& a, const PhysicalPrinterPresetData& b) { return a.lower_name < b.lower_name; }); @@ -1184,8 +1232,6 @@ void PlaterPresetComboBox::update() validate_selection(data.selected); } } - - connect_info->Show(is_active_connect()); } if (m_type == Preset::TYPE_PRINTER || m_type == Preset::TYPE_FILAMENT || m_type == Preset::TYPE_SLA_MATERIAL) { @@ -1239,8 +1285,12 @@ void PlaterPresetComboBox::sys_color_changed() { PresetComboBox::sys_color_changed(); edit_btn->sys_color_changed(); - if (connect_info) - wxGetApp().UpdateDarkUI(connect_info); + + if (connect_info_sizer) { + wxGetApp().UpdateDarkUI(connect_available_info); + wxGetApp().UpdateDarkUI(connect_printing_info); + wxGetApp().UpdateDarkUI(connect_offline_info); + } } // --------------------------------- diff --git a/src/slic3r/GUI/PresetComboBoxes.hpp b/src/slic3r/GUI/PresetComboBoxes.hpp index fd40a18ab9..ebb820681e 100644 --- a/src/slic3r/GUI/PresetComboBoxes.hpp +++ b/src/slic3r/GUI/PresetComboBoxes.hpp @@ -163,7 +163,18 @@ public: ~PlaterPresetComboBox(); ScalableButton* edit_btn { nullptr }; - wxGenericStaticText* connect_info { nullptr }; + +#ifdef _WIN32 + wxBoxSizer* connect_info_sizer { nullptr }; + wxGenericStaticText* connect_available_info { nullptr }; + wxGenericStaticText* connect_printing_info { nullptr }; + wxGenericStaticText* connect_offline_info { nullptr }; +#else + wxFlexGridSizer* connect_info_sizer { nullptr }; + wxStaticText* connect_available_info { nullptr }; + wxStaticText* connect_printing_info { nullptr }; + wxStaticText* connect_offline_info { nullptr }; +#endif void switch_to_tab(); void change_extruder_color(); diff --git a/src/slic3r/GUI/Sidebar.cpp b/src/slic3r/GUI/Sidebar.cpp index 846f666432..0340319bfb 100644 --- a/src/slic3r/GUI/Sidebar.cpp +++ b/src/slic3r/GUI/Sidebar.cpp @@ -379,9 +379,11 @@ Sidebar::Sidebar(Plater *parent) wxBOTTOM, 1); (void)margin_5; // supress unused capture warning #endif // __WXGTK3__ - if ((*combo)->connect_info) - sizer_presets->Add((*combo)->connect_info, 0, wxALIGN_CENTER_VERTICAL | wxLEFT | wxRIGHT | wxBOTTOM, - int(0.3 * wxGetApp().em_unit())); + if ((*combo)->connect_info_sizer) { + auto tmp_h_sizer = new wxBoxSizer(wxHORIZONTAL); + tmp_h_sizer->Add((*combo)->connect_info_sizer, 1, wxEXPAND); + sizer_presets->Add(tmp_h_sizer, 0, wxBOTTOM, int(0.3 * wxGetApp().em_unit())); + } } else { sizer_filaments->Add(combo_and_btn_sizer, 0, wxEXPAND | #ifdef __WXGTK3__