Compact Printer Selection UI (#11196)
BIN
resources/images/bed_plate_cool_smooth.png
Normal file
|
After Width: | Height: | Size: 3.2 KiB |
BIN
resources/images/bed_plate_cool_supertack.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
BIN
resources/images/bed_plate_cool_textured.png
Normal file
|
After Width: | Height: | Size: 5.2 KiB |
BIN
resources/images/bed_plate_engineering.png
Normal file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
resources/images/bed_plate_high_temp_smooth.png
Normal file
|
After Width: | Height: | Size: 2.4 KiB |
BIN
resources/images/bed_plate_pei.png
Normal file
|
After Width: | Height: | Size: 3.3 KiB |
BIN
resources/images/big_bed_plate_cool_smooth.png
Normal file
|
After Width: | Height: | Size: 11 KiB |
BIN
resources/images/big_bed_plate_cool_supertack.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
resources/images/big_bed_plate_cool_textured.png
Normal file
|
After Width: | Height: | Size: 16 KiB |
BIN
resources/images/big_bed_plate_engineering.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
BIN
resources/images/big_bed_plate_high_temp_smooth.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
resources/images/big_bed_plate_pei.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
1
resources/images/printer_sync_not.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="7.5" cy="7.5" r="4" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><line x1=".5" y1=".5" x2=".5" y2="4.5" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><line x1="14.5" y1="14.5" x2="14.5" y2="10.5" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><path d="M13.83,4.5C12.71,2.13,10.3.5,7.5.5c-2.71,0-5.17,1.56-6.33,4" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><path d="M1.27,10.69c1.16,2.26,3.51,3.81,6.23,3.81,2.71,0,5.17-1.56,6.33-4" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/></svg>
|
||||
|
After Width: | Height: | Size: 802 B |
1
resources/images/printer_sync_ok.svg
Normal file
|
|
@ -0,0 +1 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?><svg id="a" xmlns="http://www.w3.org/2000/svg" width="16" height="16" viewBox="0 0 16 16"><circle cx="7.5" cy="7.5" r="4" style="fill:#009688; stroke:#009688; stroke-linecap:round; stroke-linejoin:round;"/><line x1=".5" y1=".5" x2=".5" y2="4.5" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><line x1="14.5" y1="14.5" x2="14.5" y2="10.5" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><path d="M13.83,4.5C12.71,2.13,10.3.5,7.5.5c-2.71,0-5.17,1.56-6.33,4" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/><path d="M1.27,10.69c1.16,2.26,3.51,3.81,6.23,3.81,2.71,0,5.17-1.56,6.33-4" style="fill:none; stroke:#949494; stroke-linecap:round; stroke-linejoin:round;"/></svg>
|
||||
|
After Width: | Height: | Size: 805 B |
|
|
@ -20,23 +20,32 @@ namespace Slic3r { namespace GUI {
|
|||
ImageDPIFrame::ImageDPIFrame()
|
||||
: DPIFrame(static_cast<wxWindow *>(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
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
};
|
||||
|
|
|
|||
|
|
@ -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<BedType, std::string> 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<int> counter_sync_printer = std::make_shared<int>();
|
||||
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<wxBoxSizer *>(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, int>(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, int>(wxColour("#009688"), StateColor::Pressed),
|
||||
std::pair<wxColour, int>(wxColour("#009688"), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour("#EEEEEE"), StateColor::Normal));
|
||||
std::pair<wxColour, int>(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<wxWindow *>();
|
||||
for (wxWindow *w : std::initializer_list<wxWindow *>{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<wxWindow *>{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<wxBoxSizer *>(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<BedType>(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<ConfigOptionEnumsGenericNullable>("nozzle_type");
|
||||
if(cfg_nozzle_type != nullptr){
|
||||
std::vector<NozzleType> 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<wxBoxSizer *>(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<wxWindow*>{ 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<wxWindow*>{ 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
|
||||
}
|
||||
}
|
||||
|
|
|
|||