diff --git a/resources/images/bed_plate_cool_smooth.png b/resources/images/bed_plate_cool_smooth.png
new file mode 100644
index 0000000000..625ebd6325
Binary files /dev/null and b/resources/images/bed_plate_cool_smooth.png differ
diff --git a/resources/images/bed_plate_cool_supertack.png b/resources/images/bed_plate_cool_supertack.png
new file mode 100644
index 0000000000..1c13570943
Binary files /dev/null and b/resources/images/bed_plate_cool_supertack.png differ
diff --git a/resources/images/bed_plate_cool_textured.png b/resources/images/bed_plate_cool_textured.png
new file mode 100644
index 0000000000..0514ec1f50
Binary files /dev/null and b/resources/images/bed_plate_cool_textured.png differ
diff --git a/resources/images/bed_plate_engineering.png b/resources/images/bed_plate_engineering.png
new file mode 100644
index 0000000000..62a3ad9093
Binary files /dev/null and b/resources/images/bed_plate_engineering.png differ
diff --git a/resources/images/bed_plate_high_temp_smooth.png b/resources/images/bed_plate_high_temp_smooth.png
new file mode 100644
index 0000000000..d7f80aee92
Binary files /dev/null and b/resources/images/bed_plate_high_temp_smooth.png differ
diff --git a/resources/images/bed_plate_pei.png b/resources/images/bed_plate_pei.png
new file mode 100644
index 0000000000..c942905304
Binary files /dev/null and b/resources/images/bed_plate_pei.png differ
diff --git a/resources/images/big_bed_plate_cool_smooth.png b/resources/images/big_bed_plate_cool_smooth.png
new file mode 100644
index 0000000000..66ea212bc3
Binary files /dev/null and b/resources/images/big_bed_plate_cool_smooth.png differ
diff --git a/resources/images/big_bed_plate_cool_supertack.png b/resources/images/big_bed_plate_cool_supertack.png
new file mode 100644
index 0000000000..bbd607e7a8
Binary files /dev/null and b/resources/images/big_bed_plate_cool_supertack.png differ
diff --git a/resources/images/big_bed_plate_cool_textured.png b/resources/images/big_bed_plate_cool_textured.png
new file mode 100644
index 0000000000..5aee15fc99
Binary files /dev/null and b/resources/images/big_bed_plate_cool_textured.png differ
diff --git a/resources/images/big_bed_plate_engineering.png b/resources/images/big_bed_plate_engineering.png
new file mode 100644
index 0000000000..2cd6e7fe08
Binary files /dev/null and b/resources/images/big_bed_plate_engineering.png differ
diff --git a/resources/images/big_bed_plate_high_temp_smooth.png b/resources/images/big_bed_plate_high_temp_smooth.png
new file mode 100644
index 0000000000..7b3bc41569
Binary files /dev/null and b/resources/images/big_bed_plate_high_temp_smooth.png differ
diff --git a/resources/images/big_bed_plate_pei.png b/resources/images/big_bed_plate_pei.png
new file mode 100644
index 0000000000..d76c16f13c
Binary files /dev/null and b/resources/images/big_bed_plate_pei.png differ
diff --git a/resources/images/printer_sync_not.svg b/resources/images/printer_sync_not.svg
new file mode 100644
index 0000000000..225b67a5fc
--- /dev/null
+++ b/resources/images/printer_sync_not.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/resources/images/printer_sync_ok.svg b/resources/images/printer_sync_ok.svg
new file mode 100644
index 0000000000..4312185601
--- /dev/null
+++ b/resources/images/printer_sync_ok.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/src/slic3r/GUI/ImageDPIFrame.cpp b/src/slic3r/GUI/ImageDPIFrame.cpp
index b72a50f603..a893293553 100644
--- a/src/slic3r/GUI/ImageDPIFrame.cpp
+++ b/src/slic3r/GUI/ImageDPIFrame.cpp
@@ -20,23 +20,32 @@ namespace Slic3r { namespace GUI {
ImageDPIFrame::ImageDPIFrame()
: DPIFrame(static_cast(wxGetApp().mainframe), wxID_ANY, "", wxDefaultPosition, wxDefaultSize, !wxCAPTION | !wxCLOSE_BOX | wxBORDER_NONE)
{
- m_image_px = 280;
+ m_image_px = 240;
int width = 270;
//SetTransparent(0);
SetMinSize(wxSize(FromDIP(width), -1));
SetMaxSize(wxSize(FromDIP(width), -1));
- SetBackgroundColour(wxColour(242, 242, 242, 255));
+ SetBackgroundColour(wxColour(255, 255, 255, 255));
#ifdef __APPLE__
SetWindowStyleFlag(GetWindowStyleFlag() | wxSTAY_ON_TOP);
#endif
-
+
m_sizer_main = new wxBoxSizer(wxVERTICAL);
+
+ m_title = new wxStaticText(this, wxID_ANY, "", wxDefaultPosition, wxDefaultSize, wxST_ELLIPSIZE_END);
+ m_title->SetFont(Label::Head_14);
+ m_title->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30")));
+ m_title->SetMaxSize(wxSize(FromDIP(width), -1));
+
auto image_sizer = new wxBoxSizer(wxVERTICAL);
auto imgsize = FromDIP(width);
- m_bitmap = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("printer_preview_C13", this, m_image_px), wxDefaultPosition, wxSize(imgsize, imgsize * 0.94), 0);
- image_sizer->Add(m_bitmap, 0, wxALIGN_CENTER | wxALL, FromDIP(0));
+ m_bitmap = new wxStaticBitmap(this, wxID_ANY, create_scaled_bitmap("printer_preview_C13", this, m_image_px), wxDefaultPosition, FromDIP(wxSize(m_image_px, m_image_px)), 0);
+ image_sizer->Add(m_bitmap, 0, wxALIGN_CENTER | wxALL, FromDIP(10));
+ m_sizer_main->Add(m_title, 0, wxALIGN_CENTER | wxTOP | wxLEFT | wxRIGHT, FromDIP(10));
m_sizer_main->Add(image_sizer, FromDIP(0), wxALIGN_CENTER, FromDIP(0));
+ wxGetApp().UpdateDarkUI(this); // ORCA fix white bg on dark mode
+
Bind(wxEVT_CLOSE_WINDOW, [this](auto &e) {
on_hide();
});
@@ -60,12 +69,24 @@ void ImageDPIFrame::set_bitmap(const wxBitmap &bit_map) {
m_bitmap->SetBitmap(bit_map);
}
+void ImageDPIFrame::set_title(const wxString& title) {
+ m_title->Show(!title.empty());
+ if(!title.empty())
+ m_title->SetLabel(title);
+ Layout();
+}
+
void ImageDPIFrame::on_dpi_changed(const wxRect &suggested_rect)
{
// m_image->Rescale();
//m_bitmap->Rescale();
}
+void ImageDPIFrame::sys_color_changed()
+{
+ wxGetApp().UpdateDarkUI(this);
+}
+
void ImageDPIFrame::init_timer()
{
m_refresh_timer = new wxTimer();
@@ -76,7 +97,7 @@ void ImageDPIFrame::init_timer()
void ImageDPIFrame::on_timer(wxTimerEvent &event)
{
if (!IsShown()) {//after 1s to show Frame
- if (m_timer_count >= 50) {
+ if (m_timer_count >= 20) { // ORCA show frame faster to maatch time with tooltips
Show();
Raise();
}
@@ -123,6 +144,7 @@ void ImageDPIFrame::on_hide()
wxGetApp().mainframe->Raise();
}
}
+ set_title(""); // reset title on hide
}
} // namespace GUI
diff --git a/src/slic3r/GUI/ImageDPIFrame.hpp b/src/slic3r/GUI/ImageDPIFrame.hpp
index 02ebb33bf8..817ef6be18 100644
--- a/src/slic3r/GUI/ImageDPIFrame.hpp
+++ b/src/slic3r/GUI/ImageDPIFrame.hpp
@@ -12,12 +12,14 @@ public:
ImageDPIFrame();
~ImageDPIFrame() override;
void on_dpi_changed(const wxRect &suggested_rect) override;
+ void sys_color_changed();
void on_show();
void on_hide();
bool Show(bool show = true) override;
void set_bitmap(const wxBitmap& bit_map);
int get_image_px() { return m_image_px; }
+ void set_title(const wxString& title);
private:
void init_timer();
@@ -27,6 +29,8 @@ private:
wxStaticBitmap *m_bitmap = nullptr;
wxBoxSizer *m_sizer_main{nullptr};
int m_image_px;
+ wxString m_title_str;
+ wxStaticText* m_title;
wxTimer * m_refresh_timer{nullptr};
float m_timer_count = 0;
};
diff --git a/src/slic3r/GUI/Plater.cpp b/src/slic3r/GUI/Plater.cpp
index 76b42641c1..937c0e6fdf 100644
--- a/src/slic3r/GUI/Plater.cpp
+++ b/src/slic3r/GUI/Plater.cpp
@@ -212,8 +212,8 @@ wxDEFINE_EVENT(EVT_DEL_FILAMENT, SimpleEvent);
wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent);
wxDEFINE_EVENT(EVT_NOTICE_CHILDE_SIZE_CHANGED, SimpleEvent);
wxDEFINE_EVENT(EVT_NOTICE_FULL_SCREEN_CHANGED, IntEvent);
-#define PRINTER_THUMBNAIL_SIZE (wxSize(FromDIP(48), FromDIP(48)))
-#define PRINTER_PANEL_SIZE (wxSize(FromDIP(96), FromDIP(98)))
+#define PRINTER_THUMBNAIL_SIZE (wxSize(40, 40)) // ORCA
+#define PRINTER_PANEL_SIZE ( wxSize(70, 60)) // ORCA
#define BTN_SYNC_SIZE (wxSize(FromDIP(96), FromDIP(98)))
static string get_diameter_string(float diameter)
@@ -245,12 +245,12 @@ void Plater::show_illegal_characters_warning(wxWindow* parent)
}
static std::map bed_type_thumbnails = {
- {BedType::btPC, "bed_cool"},
- {BedType::btEP, "bed_engineering"},
- {BedType::btPEI, "bed_high_templ"},
- {BedType::btPTE, "bed_pei"},
- {BedType::btPCT, "bed_pei"}, // TODO: Orca hack
- {BedType::btSuperTack, "bed_cool_supertack"}
+ {BedType::btPC, "bed_plate_cool_smooth" }, //"bed_cool"},
+ {BedType::btEP, "bed_plate_engineering" }, //"bed_engineering"},
+ {BedType::btPEI, "bed_plate_high_temp_smooth"}, //"bed_high_templ"},
+ {BedType::btPTE, "bed_plate_pei" }, //"bed_pei"},
+ {BedType::btPCT, "bed_plate_cool_textured" }, //"bed_pei"}, // TODO: Orca hack
+ {BedType::btSuperTack, "bed_plate_cool_supertack" } //"bed_cool_supertack"}
};
// print_model_id
@@ -425,12 +425,21 @@ struct Sidebar::priv
// Printer
wxSizer * vsizer_printer = nullptr;
+ wxBoxSizer * extruder_dual_sizer = nullptr;
+ wxBoxSizer * extruder_single_sizer = nullptr;
// Printer - preset
StaticBox * panel_printer_preset = nullptr;
wxStaticBitmap * image_printer = nullptr;
PlaterPresetComboBox *combo_printer = nullptr;
ScalableButton * btn_edit_printer = nullptr;
ScalableButton * btn_connect_printer = nullptr;
+
+ // Nozzle diameter
+ StaticBox * panel_nozzle_dia = nullptr;
+ Label * label_nozzle_title= nullptr;
+ ComboBox * combo_nozzle_dia = nullptr;
+ Label * label_nozzle_type = nullptr;
+
// Printer - bed
StaticBox * panel_printer_bed = nullptr;
wxStaticBitmap *image_printer_bed = nullptr;
@@ -438,7 +447,7 @@ struct Sidebar::priv
ImageDPIFrame *big_bed_image_popup = nullptr;
// Printer - sync
- Button *btn_sync_printer;
+ //Button *btn_sync_printer;
std::shared_ptr counter_sync_printer = std::make_shared();
wxTimer * timer_sync_printer = new wxTimer();
// Printer - ams
@@ -484,6 +493,8 @@ struct Sidebar::priv
// BBS printer config
StaticBox* m_panel_printer_title = nullptr;
ScalableButton* m_printer_icon = nullptr;
+ ScalableButton* m_printer_connect = nullptr;
+ ScalableButton* m_printer_bbl_sync = nullptr;
ScalableButton* m_printer_setting = nullptr;
wxStaticText * m_text_printer_settings = nullptr;
wxPanel* m_panel_printer_content = nullptr;
@@ -525,22 +536,15 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
// Printer - preset
if (auto sizer = static_cast(panel_printer_preset->GetSizer());
sizer == nullptr /*|| isBBL != (sizer->GetOrientation() == wxVERTICAL)*/) {
- wxBoxSizer *hsizer_printer_btn = new wxBoxSizer(wxHORIZONTAL);
- hsizer_printer_btn->AddStretchSpacer(1);
- hsizer_printer_btn->Add(btn_edit_printer, 0);
- hsizer_printer_btn->Add(btn_connect_printer, 0, wxALIGN_CENTER | wxLEFT, FromDIP(4));
- combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | wxALIGN_CENTER_HORIZONTAL);
+
//if (isBBL) {
- wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
- hsizer->AddStretchSpacer(1);
- hsizer->Add(image_printer, 0, wxEXPAND | wxTOP, FromDIP(8));
- hsizer->Add(hsizer_printer_btn, 1, wxEXPAND, 0);
- hsizer->AddSpacer(FromDIP(6));
- vsizer->AddSpacer(FromDIP(4));
- vsizer->Add(hsizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(8));
- vsizer->Add(combo_printer, 0, wxEXPAND | wxALL, FromDIP(4));
- panel_printer_preset->SetSizer(vsizer);
+ hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(10));
+ hsizer->Add(combo_printer, 1, wxEXPAND | wxALL | wxALIGN_LEFT | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ hsizer->AddSpacer(FromDIP(2));
+ hsizer->Add(btn_edit_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
+ //hsizer->Add(btn_connect_printer, 0, wxRIGHT | wxALIGN_RIGHT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::IconSpacing()));
+ panel_printer_preset->SetSizer(hsizer);
//} else {
// wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
// hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_CENTER, FromDIP(4));
@@ -554,31 +558,45 @@ void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
if (vsizer_printer->GetItemCount() == 0) {
wxBoxSizer *hsizer_printer = new wxBoxSizer(wxHORIZONTAL);
hsizer_printer->Add(panel_printer_preset, 1, wxEXPAND, 0);
- hsizer_printer->Add(panel_printer_bed, 0, wxLEFT | wxEXPAND, FromDIP(4));
- hsizer_printer->Add(btn_sync_printer, 0, wxLEFT | wxEXPAND, FromDIP(4));
- vsizer_printer->Add(hsizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, FromDIP(4));
- vsizer_printer->AddSpacer(FromDIP(4));
+ hsizer_printer->Add(panel_nozzle_dia , 0, wxLEFT, FromDIP(4));
+ hsizer_printer->Add(panel_printer_bed, 0, wxLEFT, FromDIP(4));
+ //hsizer_printer->Add(btn_sync_printer , 0, wxLEFT, FromDIP(4));
+ vsizer_printer->AddSpacer(FromDIP(8));
+ vsizer_printer->Add(hsizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin()));
+ vsizer_printer->AddSpacer(FromDIP(8));
// Printer - extruder
// double
- auto hsizer_extruder = new wxBoxSizer(wxHORIZONTAL);
- hsizer_extruder->Add(left_extruder->sizer, 1, wxEXPAND, 0);
- hsizer_extruder->AddSpacer(FromDIP(4));
- hsizer_extruder->Add(right_extruder->sizer, 1, wxEXPAND, 0);
+ extruder_dual_sizer = new wxBoxSizer(wxHORIZONTAL);
+ extruder_dual_sizer->Add(left_extruder->sizer, 1, wxEXPAND, 0);
+ extruder_dual_sizer->AddSpacer(FromDIP(4));
+ extruder_dual_sizer->Add(right_extruder->sizer, 1, wxEXPAND, 0);
// single
- vsizer_printer->Add(hsizer_extruder, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(4));
- vsizer_printer->Add(single_extruder->sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(4));
+ extruder_single_sizer = single_extruder->sizer;
+ wxBoxSizer * extruder_sizer = new wxBoxSizer(wxVERTICAL);
+ extruder_sizer->Add(extruder_dual_sizer , 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin()));
+ extruder_sizer->Add(extruder_single_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(SidebarProps::ContentMargin()));
- vsizer_printer->AddSpacer(FromDIP(4));
+ vsizer_printer->Add(extruder_sizer, 1, wxEXPAND | wxBOTTOM, FromDIP(8));
}
- btn_connect_printer->Show(!isBBL);
- btn_sync_printer->Show(isBBL);
- panel_printer_bed->Show(true); // Orca: always show bed type selector
- vsizer_printer->GetItem(2)->GetSizer()->GetItem(1)->Show(isDual);
- vsizer_printer->GetItem(2)->Show(isDual); // Orca: always show diameter selection
- vsizer_printer->GetItem(3)->Show(!isDual);
+ //btn_connect_printer->Show(!isBBL);
+ m_printer_connect->Show(!isBBL);
+ //btn_sync_printer->Show(isBBL);
+ m_printer_bbl_sync->Show(isBBL);
+
+ // ORCA show plate type combo box only when its supported
+ PresetBundle &preset_bundle = *wxGetApp().preset_bundle;
+ auto cfg = preset_bundle.printers.get_edited_preset().config;
+ panel_printer_bed->Show(isBBL || cfg.opt_bool("support_multi_bed_types"));
+
+ extruder_dual_sizer->Show(isDual);
+
+ // NEEDFIX requires AMS check or any type of ???
+ // Single nozzle & non ams
+ panel_nozzle_dia->Show(!isDual);
+ extruder_single_sizer->Show(false);
}
void Sidebar::priv::flush_printer_sync(bool restart)
@@ -587,7 +605,8 @@ void Sidebar::priv::flush_printer_sync(bool restart)
*counter_sync_printer = 6;
timer_sync_printer->Start(500);
}
- btn_sync_printer->SetBackgroundColorNormal((*counter_sync_printer & 1) ? "#F8F8F8" :"#009688");
+ //btn_sync_printer->SetBackgroundColorNormal((*counter_sync_printer & 1) ? "#F8F8F8" :"#009688");
+ m_printer_bbl_sync->SetBitmap_((*counter_sync_printer & 1) ? "printer_sync_not" : "printer_sync_ok");
if (--*counter_sync_printer <= 0)
timer_sync_printer->Stop();
}
@@ -996,13 +1015,13 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
// Nozzle
wxStaticText *label_diameter = new wxStaticText(this, wxID_ANY, _L("Diameter"));
label_diameter->SetFont(Label::Body_14);
- label_diameter->SetForegroundColour("#262E30");
+ label_diameter->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30")));
if (index >= 0) label_diameter->SetMinSize({FromDIP(80), -1});
auto combo_diameter = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
this->combo_diameter = combo_diameter;
wxStaticText *label_flow = new wxStaticText(this, wxID_ANY, _L("Flow"));
label_flow->SetFont(Label::Body_14);
- label_flow->SetForegroundColour("#262E30");
+ label_flow->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30")));
if (index >= 0) label_flow->SetMinSize({FromDIP(80), -1});
auto combo_flow = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
combo_flow->GetDropDown().SetUseContentWidth(true);
@@ -1017,7 +1036,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
// AMS
wxStaticText *label_ams = new wxStaticText(this, wxID_ANY, _L("AMS"));
label_ams->SetFont(Label::Body_14);
- label_ams->SetForegroundColour("#262E30");
+ label_ams->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30")));
//label_ams->SetMinSize({FromDIP(70), -1});
if (index >= 0) {
btn_edit = new ScalableButton(this, wxID_ANY, "dot");
@@ -1046,7 +1065,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
// AMS not installed message
ams_not_installed_msg = new wxStaticText(this, wxID_ANY, _L("Not installed"));
ams_not_installed_msg->SetFont(Label::Body_14);
- ams_not_installed_msg->SetForegroundColour("#262E30");
+ ams_not_installed_msg->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#262E30")));
// AMS group
for (size_t i = 0; i < 4; ++i) {
@@ -1365,8 +1384,9 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
right_extruder->sync_ams(nullptr, {}, {});
single_extruder->ShowBadge(false);
single_extruder->sync_ams(nullptr, {}, {});
- btn_sync_printer->SetBorderColor(not_synced_colour);
- btn_sync_printer->SetIcon("printer_sync");
+ //btn_sync_printer->SetBorderColor(not_synced_colour);
+ //btn_sync_printer->SetIcon("printer_sync");
+ m_printer_bbl_sync->SetBitmap_("printer_sync_not");
};
if (!obj || !obj->is_info_ready()) {
@@ -1518,12 +1538,14 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
StateColor synced_colour(std::pair(wxColour("#CECECE"), StateColor::Normal));
bool all_extruder_synced = std::all_of(extruder_synced.begin(), extruder_synced.end(), [](bool value) { return value; });
if (printer_synced && all_extruder_synced) {
- btn_sync_printer->SetBorderColor(synced_colour);
- btn_sync_printer->SetIcon("ams_nozzle_sync");
+ // btn_sync_printer->SetBorderColor(synced_colour);
+ // btn_sync_printer->SetIcon("ams_nozzle_sync");
+ m_printer_bbl_sync->SetBitmap_("printer_sync_ok");
}
else {
- btn_sync_printer->SetBorderColor(not_synced_colour);
- btn_sync_printer->SetIcon("printer_sync");
+ // btn_sync_printer->SetBorderColor(not_synced_colour);
+ // btn_sync_printer->SetIcon("printer_sync");
+ m_printer_bbl_sync->SetBitmap_("printer_sync_not");
}
}
@@ -1531,7 +1553,8 @@ void Sidebar::update_sync_ams_btn_enable(wxUpdateUIEvent &e)
{
if (m_last_slice_state != p->plater->is_background_process_slicing()) {
m_last_slice_state = p->plater->is_background_process_slicing();
- btn_sync->Enable(!m_last_slice_state);
+ //btn_sync->Enable(!m_last_slice_state);
+ p->m_printer_bbl_sync->Enable(!m_last_slice_state);
ams_btn->Enable(!m_last_slice_state);
Refresh();
}
@@ -1597,6 +1620,20 @@ Sidebar::Sidebar(Plater *parent)
//wizard_t->run(ConfigWizard::RR_USER, ConfigWizard::SP_CUSTOM);
});
+ // ORCA use connect button on titlebar
+ p->m_printer_connect = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "monitor_signal_strong");
+ p->m_printer_connect->SetToolTip(_L("Connection"));
+ p->m_printer_connect->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
+ PhysicalPrinterDialog dlg(this->GetParent());
+ dlg.ShowModal();
+ });
+
+ // ORCA use sync button on titlebar
+ p->m_printer_bbl_sync = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "printer_sync_not");
+ p->m_printer_bbl_sync->SetToolTip(_L("Synchronize nozzle information and the number of AMS"));
+ p->m_printer_bbl_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
+ deal_btn_sync();
+ });
p->m_printer_setting = new ScalableButton(p->m_panel_printer_title, wxID_ANY, "settings");
p->m_printer_setting->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
@@ -1611,6 +1648,8 @@ Sidebar::Sidebar(Plater *parent)
h_sizer_title->AddSpacer(FromDIP(SidebarProps::ElementSpacing()));
h_sizer_title->Add(p->m_text_printer_settings, 0, wxALIGN_CENTER);
h_sizer_title->AddStretchSpacer();
+ h_sizer_title->Add(p->m_printer_connect , 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20)); // used larger margin to prevent accidental clicks
+ h_sizer_title->Add(p->m_printer_bbl_sync, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20)); // used larger margin to prevent accidental clicks
h_sizer_title->Add(p->m_printer_setting, 0, wxALIGN_CENTER);
h_sizer_title->AddSpacer(FromDIP(SidebarProps::TitlebarMargin()));
h_sizer_title->SetMinSize(-1, 3 * em);
@@ -1641,22 +1680,33 @@ Sidebar::Sidebar(Plater *parent)
/*************************** 2. add printer content ************************/
+
p->m_panel_printer_content = new wxPanel(p->scrolled, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL);
p->m_panel_printer_content->SetBackgroundColour(wxColour(255, 255, 255));
StateColor panel_bd_col(std::pair(wxColour("#009688"), StateColor::Pressed),
std::pair(wxColour("#009688"), StateColor::Hovered),
- std::pair(wxColour("#EEEEEE"), StateColor::Normal));
+ std::pair(wxColour("#DBDBDB"), StateColor::Normal));
p->panel_printer_preset = new StaticBox(p->m_panel_printer_content);
- p->panel_printer_preset->SetCornerRadius(8);
+ p->panel_printer_preset->SetCornerRadius(FromDIP(8));
p->panel_printer_preset->SetBorderColor(panel_bd_col);
- p->panel_printer_preset->SetMinSize(PRINTER_PANEL_SIZE);
+ p->panel_printer_preset->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
p->panel_printer_preset->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) {
p->combo_printer->wxEvtHandler::ProcessEvent(evt);
});
+ // ORCA Hide Cover automatically if there is not enough space
+ p->panel_printer_preset->Bind(wxEVT_SIZE, [this](auto & e) {
+ bool is_narrow = e.GetSize().GetWidth() < p->scrolled->FromDIP(235);
+ if(is_narrow && p->image_printer->IsShown())
+ p->image_printer->Hide();
+ else if(!is_narrow && !p->image_printer->IsShown())
+ p->image_printer->Show();
+ e.Skip();
+ });
- ScalableButton *edit_btn = new ScalableButton(p->panel_printer_preset, wxID_ANY, "dot");
+ ScalableButton *edit_btn = new ScalableButton(p->panel_printer_preset, wxID_ANY, "edit");
edit_btn->SetToolTip(_L("Click to edit preset"));
+ edit_btn->Hide(); // hide for first launch
edit_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent)
{
p->editing_filament = -1;
@@ -1664,17 +1714,33 @@ Sidebar::Sidebar(Plater *parent)
p->editing_filament = 0;
});
p->btn_edit_printer = edit_btn;
- ScalableBitmap bitmap_printer(p->panel_printer_preset, "printer_placeholder", 48);
- p->image_printer = new wxStaticBitmap(p->panel_printer_preset, wxID_ANY, bitmap_printer.bmp(), wxDefaultPosition, PRINTER_THUMBNAIL_SIZE, 0);
+ ScalableBitmap bitmap_printer(p->panel_printer_preset, "printer_placeholder", PRINTER_THUMBNAIL_SIZE.GetHeight());
+ p->image_printer = new wxStaticBitmap(p->panel_printer_preset, wxID_ANY, bitmap_printer.bmp(), wxDefaultPosition, FromDIP(PRINTER_THUMBNAIL_SIZE), 0);
p->image_printer->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) {
p->combo_printer->wxEvtHandler::ProcessEvent(evt);
});
PlaterPresetComboBox *combo_printer = new PlaterPresetComboBox(p->panel_printer_preset, Preset::TYPE_PRINTER);
- combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | wxALIGN_CENTER_HORIZONTAL);
+ //combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | wxALIGN_CENTER_HORIZONTAL);
combo_printer->SetBorderWidth(0);
p->combo_printer = combo_printer;
+ // ORCA paint whole combobox on focus
+ auto printer_focus_bg = [this, panel_bd_col](bool focused){
+ auto bg_color = StateColor::darkModeColorFor(wxColour(focused ? "#E5F0EE" : "#FFFFFF"));
+ auto panel = p->panel_printer_preset;
+ panel->SetBackgroundColor(bg_color);
+ if(focused)
+ panel->SetBorderColor(wxColour("#009688"));
+ else
+ panel->SetBorderColor(panel_bd_col);
+ p->btn_edit_printer->SetBackgroundColour(bg_color);
+ p->image_printer->SetBackgroundColour(bg_color);
+ p->combo_printer->SetBackgroundColour(bg_color); // paints margins instead combo background
+ };
+ combo_printer->Bind(wxEVT_SET_FOCUS, [this, printer_focus_bg](auto& e) {printer_focus_bg(true ); e.Skip();});
+ combo_printer->Bind(wxEVT_KILL_FOCUS, [this, printer_focus_bg](auto& e) {printer_focus_bg(false); e.Skip();});
+ /* ORCA This part moved to titlebar
p->btn_connect_printer = new ScalableButton(p->panel_printer_preset, wxID_ANY, "monitor_signal_strong");
p->btn_connect_printer->SetBackgroundColour(wxColour(255, 255, 255));
p->btn_connect_printer->SetToolTip(_L("Connection"));
@@ -1683,30 +1749,107 @@ Sidebar::Sidebar(Plater *parent)
PhysicalPrinterDialog dlg(this->GetParent());
dlg.ShowModal();
});
-
+ */
{
- auto hovered = std::make_shared();
- for (wxWindow *w : std::initializer_list{p->panel_printer_preset, edit_btn, p->image_printer, combo_printer}) {
- w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, edit_btn](wxMouseEvent &evt) { *hovered = w; edit_btn->SetBitmap_("edit"); });
- w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, edit_btn](wxMouseEvent &evt) { if (*hovered == w) { edit_btn->SetBitmap_("dot"); *hovered = nullptr; } });
+ // ORCA use Show/Hide to gain text area instead using blank icon
+ for (wxWindow *w : std::initializer_list{p->panel_printer_preset, p->btn_edit_printer, p->image_printer, p->combo_printer}) {
+ w->Bind(wxEVT_ENTER_WINDOW, [this](wxMouseEvent &e) {
+ if(!p->combo_printer->HasFocus())
+ p->panel_printer_preset->SetBorderColor(wxColour("#009688"));
+ if(!p->btn_edit_printer->IsShown()){
+ p->btn_edit_printer->Show();
+ p->panel_printer_preset->Layout();
+ }
+ e.Skip();
+ });
+ w->Bind(wxEVT_LEAVE_WINDOW, [this, panel_bd_col](wxMouseEvent &e) {
+ wxWindow* next_w = wxFindWindowAtPoint(wxGetMousePosition());
+ if (!next_w || (next_w != p->panel_printer_preset && next_w != p->btn_edit_printer && next_w != p->image_printer && next_w != p->combo_printer)){
+ if(!p->combo_printer->HasFocus())
+ p->panel_printer_preset->SetBorderColor(panel_bd_col);
+ p->btn_edit_printer->Hide();
+ p->panel_printer_preset->Layout();
+ }
+ e.Skip();
+ });
}
}
+ // ORCA unified Nozzle diameter selection
+ p->panel_nozzle_dia = new StaticBox(p->m_panel_printer_content);
+ p->panel_nozzle_dia->SetCornerRadius(FromDIP(8));
+ p->panel_nozzle_dia->SetBorderColor(panel_bd_col);
+ p->panel_nozzle_dia->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
+ p->panel_nozzle_dia->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) {
+ p->combo_nozzle_dia->wxEvtHandler::ProcessEvent(evt);
+ });
+
+ p->label_nozzle_title = new Label(p->panel_nozzle_dia, _L("Nozzle"));
+ p->label_nozzle_title->SetFont(Label::Body_10);
+ p->label_nozzle_title->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) {
+ p->combo_nozzle_dia->wxEvtHandler::ProcessEvent(evt);
+ });
+
+ p->combo_nozzle_dia = new ComboBox(p->panel_nozzle_dia, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
+ p->combo_nozzle_dia->SetBorderWidth(0);
+ p->combo_nozzle_dia->GetDropDown().SetUseContentWidth(true);
+ p->combo_nozzle_dia->SetMinSize(FromDIP(wxSize(PRINTER_PANEL_SIZE.GetWidth() - 4, 26))); // requires a static value in here
+ p->combo_nozzle_dia->SetMaxSize(FromDIP(wxSize(PRINTER_PANEL_SIZE.GetWidth() - 4, 26))); // using -1 with wxEXPAND has issues
+ p->combo_nozzle_dia->Bind(wxEVT_COMBOBOX, [this](auto &e) {
+ auto evt_combo = (*p->single_extruder).combo_diameter;
+ evt_combo->SetSelection(e.GetSelection());
+ wxCommandEvent evt(wxEVT_COMBOBOX, evt_combo->GetId());
+ evt.SetEventObject(evt_combo);
+ evt.SetInt(e.GetSelection());
+ wxPostEvent(evt_combo, evt);
+ e.Skip();
+ });
+ // ORCA paint whole combobox on focus
+ auto nozzle_focus_bg = [this, panel_bd_col](bool focused){
+ auto bg_color = StateColor::darkModeColorFor(wxColour(focused ? "#E5F0EE" : "#FFFFFF"));
+ auto panel = p->panel_nozzle_dia;
+ panel->SetBackgroundColor(bg_color);
+ if(focused)
+ panel->SetBorderColor(wxColour("#009688"));
+ else
+ panel->SetBorderColor(panel_bd_col);
+ p->label_nozzle_title->SetBackgroundColour(bg_color);
+ p->label_nozzle_type->SetBackgroundColour(bg_color);
+ p->combo_nozzle_dia->SetBackgroundColour(bg_color); // paints margins instead combo background
+ };
+ p->combo_nozzle_dia->Bind(wxEVT_SET_FOCUS, [this, nozzle_focus_bg](auto& e) {nozzle_focus_bg(true ); e.Skip();});
+ p->combo_nozzle_dia->Bind(wxEVT_KILL_FOCUS, [this, nozzle_focus_bg](auto& e) {nozzle_focus_bg(false); e.Skip();});
+
+ p->label_nozzle_type = new Label(p->panel_nozzle_dia, "Brass", wxST_ELLIPSIZE_END | wxALIGN_CENTRE_HORIZONTAL);
+ p->label_nozzle_type->SetFont(Label::Body_10);
+ p->label_nozzle_type->SetMinSize(FromDIP(wxSize(56, -1)));
+ p->label_nozzle_type->SetMaxSize(FromDIP(wxSize(56, -1)));
+ p->label_nozzle_type->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) {
+ p->combo_nozzle_dia->wxEvtHandler::ProcessEvent(evt);
+ });
+
+ wxGridSizer *nozzle_dia_sizer = new wxGridSizer(3, 1, FromDIP(2), 0);
+ nozzle_dia_sizer->Add(p->label_nozzle_title, 0, wxALIGN_CENTER | wxTOP, FromDIP(4));
+ nozzle_dia_sizer->Add(p->combo_nozzle_dia , 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, FromDIP(2));
+ nozzle_dia_sizer->Add(p->label_nozzle_type , 0, wxALIGN_CENTER);
+
+ p->panel_nozzle_dia->SetSizer(nozzle_dia_sizer);
+
// Bed type selection
p->panel_printer_bed = new StaticBox(p->m_panel_printer_content);
- p->panel_printer_bed->SetCornerRadius(8);
+ p->panel_printer_bed->SetCornerRadius(FromDIP(8));
p->panel_printer_bed->SetBorderColor(panel_bd_col);
- p->panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE);
+ p->panel_printer_bed->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
p->panel_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) {
p->combo_printer_bed->wxEvtHandler::ProcessEvent(evt);
});
- ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "help");
- wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) {
- wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/x1/manual/compatibility-and-parameter-settings-of-filaments");
- });
+ //ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "help");
+ //wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) {
+ // wxLaunchDefaultBrowser("https://wiki.bambulab.com/en/x1/manual/compatibility-and-parameter-settings-of-filaments");
+ //});
- ScalableBitmap bitmap_bed(p->panel_printer_bed, "printer_placeholder", 32);
+ ScalableBitmap bitmap_bed(p->panel_printer_bed, "printer_placeholder", PRINTER_THUMBNAIL_SIZE.GetHeight());
p->image_printer_bed = new wxStaticBitmap(p->panel_printer_bed, wxID_ANY, bitmap_bed.bmp(), wxDefaultPosition, wxDefaultSize, 0);
p->image_printer_bed->Bind(wxEVT_LEFT_DOWN, [this](auto &evt) {
p->image_printer_bed->Unbind(wxEVT_LEAVE_WINDOW, &Sidebar::on_leave_image_printer_bed, this);
@@ -1716,17 +1859,20 @@ Sidebar::Sidebar(Plater *parent)
p->combo_printer_bed->wxEvtHandler::ProcessEvent(evt);
});
- p->combo_printer_bed = new ComboBox(p->panel_printer_bed, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY | wxALIGN_CENTER_HORIZONTAL);
+ p->combo_printer_bed = new ComboBox(p->panel_printer_bed, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
p->combo_printer_bed->SetBorderWidth(0);
p->combo_printer_bed->GetDropDown().SetUseContentWidth(true);
+ p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow
+ p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow
reset_bed_type_combox_choices(true);
p->combo_printer_bed->Bind(wxEVT_COMBOBOX, [this](auto &e) {
bool isDual = static_cast(p->panel_printer_preset->GetSizer())->GetOrientation() == wxVERTICAL;
auto image_path = get_cur_select_bed_image();
- p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, 48));
+ p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
if (p->big_bed_image_popup) {
p->big_bed_image_popup->set_bitmap(create_scaled_bitmap("big_" + image_path, p->big_bed_image_popup, p->big_bed_image_popup->get_image_px()));
+ p->big_bed_image_popup->set_title(p->combo_printer_bed->GetString(p->combo_printer_bed->GetSelection()));
}
e.Skip(); // fix bug:Event spreads to sidebar
});
@@ -1737,17 +1883,26 @@ Sidebar::Sidebar(Plater *parent)
});
p->image_printer_bed->Bind(wxEVT_ENTER_WINDOW, &Sidebar::on_enter_image_printer_bed, this);
- wxBoxSizer *bed_type_vsizer = new wxBoxSizer(wxVERTICAL);
- bed_type_vsizer->AddStretchSpacer(1);
- wxBoxSizer *bed_type_hsizer = new wxBoxSizer(wxHORIZONTAL);
- bed_type_hsizer->AddStretchSpacer(1);
- bed_type_hsizer->Add(p->image_printer_bed, 1, wxEXPAND | wxTOP, FromDIP(8));
- bed_type_hsizer->Add(wiki_bed, 1, wxTOP, FromDIP(2));
- bed_type_vsizer->Add(bed_type_hsizer, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(8));
- bed_type_vsizer->Add(p->combo_printer_bed, 0, wxEXPAND | wxALL, FromDIP(2));
- bed_type_vsizer->AddStretchSpacer(1);
+ // ORCA paint whole combobox on focus
+ auto bed_focus_bg = [this, panel_bd_col](bool focused){
+ auto bg_color = StateColor::darkModeColorFor(wxColour(focused ? "#E5F0EE" : "#FFFFFF"));
+ auto panel = p->panel_printer_bed;
+ panel->SetBackgroundColor(bg_color);
+ if(focused)
+ panel->SetBorderColor(wxColour("#009688"));
+ else
+ panel->SetBorderColor(panel_bd_col);
+ p->image_printer_bed->SetBackgroundColour(bg_color);
+ p->combo_printer_bed->SetBackgroundColour(bg_color); // paints margins instead combo background
+ };
+ p->combo_printer_bed->Bind(wxEVT_SET_FOCUS, [this, bed_focus_bg](auto& e) {bed_focus_bg(true ); e.Skip();});
+ p->combo_printer_bed->Bind(wxEVT_KILL_FOCUS, [this, bed_focus_bg](auto& e) {bed_focus_bg(false); e.Skip();});
- p->panel_printer_bed->SetSizer(bed_type_vsizer);
+ wxBoxSizer *bed_type_sizer = new wxBoxSizer(wxHORIZONTAL);
+ bed_type_sizer->Add(p->combo_printer_bed, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+ bed_type_sizer->Add(p->image_printer_bed, 0, wxALL | wxALIGN_CENTER_VERTICAL, FromDIP(2));
+
+ p->panel_printer_bed->SetSizer(bed_type_sizer);
AppConfig *app_config = wxGetApp().app_config;
std::string str_bed_type = app_config->get("curr_bed_type");
@@ -1771,6 +1926,7 @@ Sidebar::Sidebar(Plater *parent)
BedType bed_type = (BedType)bed_type_value;
project_config.set_key_value("curr_bed_type", new ConfigOptionEnum(bed_type));
+ /* ORCA THIS PART MOVED TO TITLEBAR
// Sync printer information
btn_sync = new Button(p->m_panel_printer_content, _L("Sync info"), "printer_sync", 0, 32);
//btn_sync->SetFont(Label::Body_8);
@@ -1795,10 +1951,12 @@ Sidebar::Sidebar(Plater *parent)
btn_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) {
deal_btn_sync();
});
+ p->btn_sync_printer = btn_sync;
+ */
p->timer_sync_printer->Bind(wxEVT_TIMER, [this] (wxTimerEvent & e) {
p->flush_printer_sync();
});
- p->btn_sync_printer = btn_sync;
+
p->left_extruder = new ExtruderGroup(p->m_panel_printer_content, 0, _L("Left Nozzle"));
p->right_extruder = new ExtruderGroup(p->m_panel_printer_content, 1, _L("Right Nozzle"));
@@ -2094,6 +2252,7 @@ void Sidebar::on_enter_image_printer_bed(wxMouseEvent &evt) {
auto image_path = get_cur_select_bed_image();
p->big_bed_image_popup->set_bitmap(create_scaled_bitmap("big_" + image_path, p->big_bed_image_popup, p->big_bed_image_popup->get_image_px()));
}
+ p->big_bed_image_popup->set_title(p->combo_printer_bed->GetString(p->combo_printer_bed->GetSelection()));
p->big_bed_image_popup->SetCanFocus(false);
p->big_bed_image_popup->SetPosition(temp_pos);
p->big_bed_image_popup->on_show();
@@ -2231,13 +2390,15 @@ void Sidebar::update_all_preset_comboboxes()
if (preset_bundle.use_bbl_network()) {
//only show connection button for not-BBL printer
- p->btn_connect_printer->Hide();
+ //p->btn_connect_printer->Hide();
+ p->m_printer_connect->Hide();
//only show sync-ams button for BBL printer
p->m_bpButton_ams_filament->Show();
//update print button default value for bbl or third-party printer
p_mainframe->set_print_button_to_default(MainFrame::PrintSelectType::ePrintPlate);
} else {
- p->btn_connect_printer->Show();
+ //p->btn_connect_printer->Show();
+ p->m_printer_connect->Show();
p->m_bpButton_ams_filament->Hide();
auto print_btn_type = MainFrame::PrintSelectType::eExportGcode;
wxString url = cfg.opt_string("print_host_webui").empty() ? cfg.opt_string("print_host") : cfg.opt_string("print_host_webui");
@@ -2303,6 +2464,9 @@ void Sidebar::update_all_preset_comboboxes()
p->combo_printer_bed->Disable();
}
+ // ORCA Hide plate selector if not supported by printer
+ p->panel_printer_bed->Show(is_bbl_vendor || cfg.opt_bool("support_multi_bed_types"));
+
// Update the print choosers to only contain the compatible presets, update the dirty flags.
//BBS
@@ -2427,12 +2591,38 @@ void Sidebar::update_presets(Preset::Type preset_type)
update_extruder_diameter(*p->left_extruder);
update_extruder_diameter(*p->right_extruder);
//}
- p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, 48));
+ p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
} else {
AMSCountPopupWindow::UpdateAMSCount(0, p->single_extruder);
//if (!p->is_switching_diameter)
update_extruder_diameter(*p->single_extruder);
- p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, 48));
+
+ // ORCA sync unified nozzle combo box
+ p->combo_nozzle_dia->Clear();
+ for (size_t i = 0; i < diameters.size(); ++i)
+ p->combo_nozzle_dia->Append(diameters[i], {});
+ p->combo_nozzle_dia->SetSelection((*p->single_extruder).combo_diameter->GetSelection());
+
+ // ORCA update nozzle type
+ const auto& full_config = wxGetApp().preset_bundle->full_config();
+ wxString nozzle_type = "-";
+ const ConfigOptionEnumsGenericNullable* cfg_nozzle_type = full_config.option("nozzle_type");
+ if(cfg_nozzle_type != nullptr){
+ std::vector nozzle_types(cfg_nozzle_type->size());
+ for (size_t idx = 0; idx < cfg_nozzle_type->size(); ++idx)
+ nozzle_types[idx] = NozzleType(cfg_nozzle_type->values[idx]);
+ nozzle_type = _L( // NEEDFIX this part can be replaced with shorter names
+ nozzle_types[0] == ntHardenedSteel ? "Hardened Steel" :
+ nozzle_types[0] == ntStainlessSteel ? "Stainless Steel" :
+ nozzle_types[0] == ntTungstenCarbide ? "Tungsten Carbide" :
+ nozzle_types[0] == ntBrass ? "Brass"
+ : "-" // Undefined
+ );
+ }
+ p->label_nozzle_type->SetLabel(nozzle_type);
+ p->label_nozzle_type->SetToolTip(nozzle_type == "-" ? "" : nozzle_type);
+
+ p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
}
if (GUI::wxGetApp().plater())
@@ -2496,8 +2686,8 @@ BedType Sidebar::get_cur_select_bed_type() {
std::string Sidebar::get_cur_select_bed_image()
{
auto select_bed_type = get_cur_select_bed_type();
- auto series_suffix_str = m_cur_image_bed_type.empty() ? "" : ("_" + m_cur_image_bed_type);
- auto image_path = bed_type_thumbnails[select_bed_type] + series_suffix_str;
+ //auto series_suffix_str = m_cur_image_bed_type.empty() ? "" : ("_" + m_cur_image_bed_type);
+ auto image_path = bed_type_thumbnails[select_bed_type];// + series_suffix_str;
return image_path;
}
@@ -2576,12 +2766,36 @@ void Sidebar::msw_rescale()
p->m_panel_filament_title->GetSizer()
->SetMinSize(-1, 3 * wxGetApp().em_unit());
p->m_printer_icon->msw_rescale();
+ p->m_printer_connect->msw_rescale();
+ p->m_printer_bbl_sync->msw_rescale();
+ p->m_printer_icon->msw_rescale();
p->m_printer_setting->msw_rescale();
+
+ p->panel_printer_preset->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
+ p->panel_printer_preset->SetCornerRadius(FromDIP(8));
+ p->image_printer->SetSize(FromDIP(PRINTER_THUMBNAIL_SIZE));
+ update_printer_thumbnail();
+ p->combo_printer->Rescale();
p->btn_edit_printer->msw_rescale();
- p->image_printer->SetSize(PRINTER_THUMBNAIL_SIZE);
+
+ p->panel_nozzle_dia->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
+ p->panel_nozzle_dia->SetCornerRadius(FromDIP(8));
+ p->combo_nozzle_dia->Rescale();
+
+ p->panel_printer_bed->SetMinSize(FromDIP(PRINTER_PANEL_SIZE));
+ p->panel_printer_bed->SetCornerRadius(FromDIP(8));
+ p->combo_printer_bed->Rescale();
+ p->combo_printer_bed->SetMinSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow
+ p->combo_printer_bed->SetMaxSize(FromDIP(wxSize(18,-1))); // ORCA show only arrow
bool isDual = static_cast(p->panel_printer_preset->GetSizer())->GetOrientation() == wxVERTICAL;
auto image_path = get_cur_select_bed_image();
- p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, 48));
+ p->image_printer_bed->SetBitmap(create_scaled_bitmap(image_path, this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
+ if (p->big_bed_image_popup){ // ORCA force rebuild frame. current wxwidget version not supports wxBITMAP_SCALE_FILL flag on wxStaticBitmap
+ // also wxImage scaledImage = bit_map.ConvertToImage(); scaledImage.Rescale(FromDIP(m_image_px), FromDIP(m_image_px), wxIMAGE_QUALITY_HIGH);
+ // didnt worked as expected and it requires use on set_bitmap. so that will try to scale everytime
+ p->big_bed_image_popup->Destroy();
+ p->big_bed_image_popup = nullptr;
+ }
p->m_filament_icon->msw_rescale();
p->m_bpButton_add_filament->msw_rescale();
@@ -2590,16 +2804,13 @@ void Sidebar::msw_rescale()
p->m_bpButton_set_filament->msw_rescale();
p->m_flushing_volume_btn->Rescale();
//BBS
- p->combo_printer_bed->Rescale();
- p->combo_printer_bed->SetMinSize({-1, 3 * wxGetApp().em_unit()});
p->left_extruder->Rescale();
p->right_extruder->Rescale();
p->single_extruder->Rescale();
- p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)});
- p->btn_sync_printer->SetMinSize(BTN_SYNC_SIZE);
- p->panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE);
- p->btn_sync_printer->Rescale();
+ //p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)});
+ //p->btn_sync_printer->SetMinSize(BTN_SYNC_SIZE);
+ //p->btn_sync_printer->Rescale();
#if 0
if (p->mode_sizer)
p->mode_sizer->msw_rescale();
@@ -2611,7 +2822,7 @@ void Sidebar::msw_rescale()
// //p->combo_printer
// } )
// combo->msw_rescale();
- p->combo_printer->msw_rescale();
+
for (PlaterPresetComboBox* combo : p->combos_filament)
combo->msw_rescale();
@@ -2658,7 +2869,9 @@ void Sidebar::sys_color_changed()
for (wxWindow* win : std::vector{ p->scrolled, p->presets_panel })
wxGetApp().UpdateAllStaticTextDarkUI(win);
#endif
- p->btn_sync_printer->SetIcon("printer_sync");
+ //p->btn_sync_printer->SetIcon("printer_sync");
+ p->m_printer_bbl_sync->msw_rescale();
+ p->m_printer_connect->msw_rescale();
// for (wxWindow* btn : std::vector{ p->btn_reslice, p->btn_export_gcode })
// wxGetApp().UpdateDarkUI(btn, true);
p->m_printer_icon->msw_rescale();
@@ -2691,6 +2904,13 @@ void Sidebar::sys_color_changed()
for (PlaterPresetComboBox* combo : p->combos_filament)
combo->sys_color_changed();
+ if (p->big_bed_image_popup) // ORCA
+ p->big_bed_image_popup->sys_color_changed();
+
+ p->btn_edit_printer->msw_rescale();
+ p->image_printer->SetSize(FromDIP(PRINTER_THUMBNAIL_SIZE));
+ p->image_printer_bed->SetSize(FromDIP(PRINTER_THUMBNAIL_SIZE));
+
// BBS
obj_list()->sys_color_changed();
obj_layers()->sys_color_changed();
@@ -3603,7 +3823,7 @@ void Sidebar::update_printer_thumbnail()
Preset & selected_preset = preset_bundle->printers.get_edited_preset();
std::string printer_type = selected_preset.get_current_printer_type(preset_bundle);
if (printer_thumbnails.find(printer_type) != printer_thumbnails.end())
- p->image_printer->SetBitmap(create_scaled_bitmap(printer_thumbnails[printer_type], this, 48));
+ p->image_printer->SetBitmap(create_scaled_bitmap(printer_thumbnails[printer_type], this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
else {
// Orca: try to use the printer model cover as the thumbnail
const auto model_name = selected_preset.config.opt_string("printer_model");
@@ -3617,7 +3837,7 @@ void Sidebar::update_printer_thumbnail()
.make_preferred();
if (boost::filesystem::exists(cover_path)) {
try {
- p->image_printer->SetBitmap(create_scaled_bitmap(cover_path.string(), this, 48));
+ p->image_printer->SetBitmap(create_scaled_bitmap(cover_path.string(), this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
printer_thumbnails[printer_type] = cover_path.string(); // Cache the path so we don't look up again
return;
} catch (...) {}
@@ -3625,7 +3845,7 @@ void Sidebar::update_printer_thumbnail()
}
}
}
- p->image_printer->SetBitmap(create_scaled_bitmap("printer_placeholder", this, 48));
+ p->image_printer->SetBitmap(create_scaled_bitmap("printer_placeholder", this, PRINTER_THUMBNAIL_SIZE.GetHeight()));
printer_thumbnails[printer_type] = "printer_placeholder"; // Avoid unnecessary try
}
}