mirror of
https://github.com/SoftFever/OrcaSlicer.git
synced 2026-02-15 08:59:39 -07:00
ENH: new printer layout
Change-Id: I8acc59b2446a13c8f7fe3a6bdf090f39d4896b1f Jira: STUDIO-8859 (cherry picked from commit d723fa714f34d572052b5cae0847472529f2c62f)
This commit is contained in:
parent
c9ed30bc59
commit
d1f45e87b0
5 changed files with 310 additions and 161 deletions
3
resources/images/help.svg
Normal file
3
resources/images/help.svg
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
<svg width="13" height="13" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="M6.48975 2.84082C7.56719 2.84082 8.6005 3.26883 9.36237 4.0307C10.1242 4.79257 10.5522 5.82588 10.5522 6.90332C10.5522 7.98076 10.1242 9.01408 9.36237 9.77594C8.6005 10.5378 7.56719 10.9658 6.48975 10.9658C5.4123 10.9658 4.37899 10.5378 3.61712 9.77594C2.85526 9.01408 2.42725 7.98076 2.42725 6.90332C2.42725 5.82588 2.85526 4.79257 3.61712 4.0307C4.37899 3.26883 5.4123 2.84082 6.48975 2.84082ZM6.48975 11.9033C7.81583 11.9033 9.0876 11.3765 10.0253 10.4389C10.963 9.50117 11.4897 8.2294 11.4897 6.90332C11.4897 5.57724 10.963 4.30547 10.0253 3.36779C9.0876 2.4301 7.81583 1.90332 6.48975 1.90332C5.16366 1.90332 3.89189 2.4301 2.95421 3.36779C2.01653 4.30547 1.48975 5.57724 1.48975 6.90332C1.48975 8.2294 2.01653 9.50117 2.95421 10.4389C3.89189 11.3765 5.16366 11.9033 6.48975 11.9033ZM5.7085 8.46582C5.44873 8.46582 5.23975 8.6748 5.23975 8.93457C5.23975 9.19434 5.44873 9.40332 5.7085 9.40332H7.271C7.53076 9.40332 7.73975 9.19434 7.73975 8.93457C7.73975 8.6748 7.53076 8.46582 7.271 8.46582H7.11475V6.74707C7.11475 6.4873 6.90576 6.27832 6.646 6.27832H5.7085C5.44873 6.27832 5.23975 6.4873 5.23975 6.74707C5.23975 7.00684 5.44873 7.21582 5.7085 7.21582H6.17725V8.46582H5.7085ZM6.48975 5.65332C6.65551 5.65332 6.81448 5.58747 6.93169 5.47026C7.0489 5.35305 7.11475 5.19408 7.11475 5.02832C7.11475 4.86256 7.0489 4.70359 6.93169 4.58638C6.81448 4.46917 6.65551 4.40332 6.48975 4.40332C6.32399 4.40332 6.16501 4.46917 6.0478 4.58638C5.93059 4.70359 5.86475 4.86256 5.86475 5.02832C5.86475 5.19408 5.93059 5.35305 6.0478 5.47026C6.16501 5.58747 6.32399 5.65332 6.48975 5.65332Z" fill="#6B6B6B"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.7 KiB |
|
|
@ -203,6 +203,7 @@ wxDEFINE_EVENT(EVT_MODIFY_FILAMENT, SimpleEvent);
|
|||
wxDEFINE_EVENT(EVT_ADD_FILAMENT, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_DEL_FILAMENT, SimpleEvent);
|
||||
wxDEFINE_EVENT(EVT_ADD_CUSTOM_FILAMENT, ColorEvent);
|
||||
|
||||
bool Plater::has_illegal_filename_characters(const wxString& wxs_name)
|
||||
{
|
||||
std::string name = into_u8(wxs_name);
|
||||
|
|
@ -324,29 +325,63 @@ int SidebarProps::ContentMargin() { return 12; } // Use as side margins content
|
|||
int SidebarProps::IconSpacing() { return 10; } // Use on main elements
|
||||
int SidebarProps::ElementSpacing() { return 5; } // Use if elements has relation between them like edit button for combo box etc.
|
||||
|
||||
struct ExtruderGroup : StaticGroup
|
||||
{
|
||||
ExtruderGroup(wxWindow * parent, int index, wxString const &title);
|
||||
wxStaticBoxSizer *sizer = nullptr;
|
||||
ScalableButton * btn_edit = nullptr;
|
||||
ComboBox * combo_nozzle = nullptr;
|
||||
AMSPreview * ams[4] = {nullptr};
|
||||
void Rescale()
|
||||
{
|
||||
if (btn_edit)
|
||||
btn_edit->msw_rescale();
|
||||
combo_nozzle->Rescale();
|
||||
}
|
||||
};
|
||||
|
||||
struct Sidebar::priv
|
||||
{
|
||||
Plater *plater;
|
||||
|
||||
wxPanel *scrolled;
|
||||
PlaterPresetComboBox *combo_print;
|
||||
wxPanel *scrolled = nullptr;
|
||||
PlaterPresetComboBox *combo_sla_print = nullptr;
|
||||
PlaterPresetComboBox *combo_sla_material = nullptr;
|
||||
|
||||
// Printer
|
||||
wxSizer * vsizer_printer = 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;
|
||||
// Printer - bed
|
||||
StaticBox * panel_printer_bed = nullptr;
|
||||
wxStaticBitmap *image_printer_bed = nullptr;
|
||||
ComboBox * combo_printer_bed = nullptr;
|
||||
// Printer - sync
|
||||
Button *btn_sync_printer;
|
||||
// Printer - ams
|
||||
ExtruderGroup *left_extruder = nullptr;
|
||||
ExtruderGroup *right_extruder = nullptr;
|
||||
ExtruderGroup *single_extruder = nullptr;
|
||||
|
||||
int FromDIP(int n) { return plater->FromDIP(n); }
|
||||
void layout_printer(bool isBBL, bool isDual);
|
||||
|
||||
PlaterPresetComboBox *combo_print = nullptr;
|
||||
std::vector<PlaterPresetComboBox*> combos_filament;
|
||||
int editing_filament = -1;
|
||||
wxBoxSizer *sizer_filaments;
|
||||
PlaterPresetComboBox *combo_sla_print;
|
||||
PlaterPresetComboBox *combo_sla_material;
|
||||
PlaterPresetComboBox* combo_printer = nullptr;
|
||||
wxBoxSizer *sizer_params;
|
||||
wxBoxSizer *sizer_filaments = nullptr;
|
||||
|
||||
//BBS Sidebar widgets
|
||||
wxPanel* m_panel_print_title;
|
||||
wxStaticText* m_staticText_print_title;
|
||||
wxPanel* m_panel_print_content;
|
||||
wxBoxSizer *sizer_params;
|
||||
|
||||
//wxComboBox * m_comboBox_print_preset;
|
||||
ComboBox * m_bed_type_list = nullptr;
|
||||
wxStaticText * m_left_ams_count = nullptr;
|
||||
wxStaticText * m_right_ams_count = nullptr;
|
||||
wxSizer * m_dual_extruder_sizer = nullptr;
|
||||
wxStaticLine * m_staticline1;
|
||||
StaticBox* m_panel_filament_title;
|
||||
wxStaticText* m_staticText_filament_settings;
|
||||
|
|
@ -369,7 +404,6 @@ struct Sidebar::priv
|
|||
StaticBox* m_panel_printer_title = nullptr;
|
||||
ScalableButton* m_printer_icon = nullptr;
|
||||
ScalableButton* m_printer_setting = nullptr;
|
||||
Button *m_extruder_sync = nullptr;
|
||||
wxStaticText * m_text_printer_settings = nullptr;
|
||||
wxPanel* m_panel_printer_content = nullptr;
|
||||
|
||||
|
|
@ -402,6 +436,66 @@ struct Sidebar::priv
|
|||
#endif
|
||||
};
|
||||
|
||||
void Sidebar::priv::layout_printer(bool isBBL, bool isDual)
|
||||
{
|
||||
// Printer - preset
|
||||
if (auto sizer = static_cast<wxBoxSizer *>(panel_printer_preset->GetSizer());
|
||||
sizer == nullptr || isDual != (sizer->GetOrientation() == wxVERTICAL)) {
|
||||
wxBoxSizer *hsizer_printer_btn = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer_printer_btn->AddStretchSpacer(1);
|
||||
hsizer_printer_btn->Add(btn_edit_printer, 0, wxALIGN_CENTER | wxLEFT, FromDIP(4));
|
||||
hsizer_printer_btn->Add(btn_connect_printer, 0, wxALIGN_CENTER | wxLEFT, FromDIP(4));
|
||||
combo_printer->SetWindowStyle(combo_printer->GetWindowStyle() & ~wxALIGN_MASK | (isDual ? wxALIGN_CENTER_HORIZONTAL : wxALIGN_RIGHT));
|
||||
if (isDual) {
|
||||
wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
|
||||
vsizer->AddStretchSpacer(1);
|
||||
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer->AddStretchSpacer(1);
|
||||
hsizer->Add(image_printer, 0);
|
||||
hsizer->Add(hsizer_printer_btn, 1, wxRIGHT, FromDIP(12));
|
||||
vsizer->Add(hsizer, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, FromDIP(4));
|
||||
vsizer->Add(combo_printer, 0, wxEXPAND | wxALL, FromDIP(4));
|
||||
vsizer->AddStretchSpacer(1);
|
||||
panel_printer_preset->SetSizer(vsizer);
|
||||
} else {
|
||||
wxBoxSizer *hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer->Add(image_printer, 0, wxLEFT | wxALIGN_CENTER, FromDIP(4));
|
||||
wxBoxSizer *vsizer = new wxBoxSizer(wxVERTICAL);
|
||||
vsizer->AddSpacer(FromDIP(4));
|
||||
vsizer->Add(hsizer_printer_btn, 1, wxEXPAND | wxRIGHT, FromDIP(16));
|
||||
vsizer->Add(combo_printer, 0, wxEXPAND | wxLEFT, FromDIP(4));
|
||||
vsizer->AddStretchSpacer(1);
|
||||
vsizer->AddSpacer(FromDIP(4));
|
||||
hsizer->Add(vsizer, 1, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(4));
|
||||
panel_printer_preset->SetSizer(hsizer);
|
||||
}
|
||||
}
|
||||
|
||||
if (vsizer_printer->GetItemCount() == 0) {
|
||||
wxBoxSizer *hsizer_printer = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer_printer->Add(panel_printer_preset, 1, wxEXPAND);
|
||||
hsizer_printer->Add(panel_printer_bed, 0, wxLEFT | wxEXPAND, FromDIP(4));
|
||||
hsizer_printer->Add(btn_sync_printer, 0, wxLEFT | wxEXPAND, FromDIP(4));
|
||||
|
||||
// Printer - extruder
|
||||
auto hsizer_extruder = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer_extruder->Add(left_extruder->sizer, 1, wxEXPAND);
|
||||
hsizer_extruder->Add(right_extruder->sizer, 1, wxLEFT | wxEXPAND, FromDIP(4));
|
||||
|
||||
vsizer_printer->Add(hsizer_printer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, FromDIP(4));
|
||||
vsizer_printer->Add(hsizer_extruder, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, FromDIP(4));
|
||||
vsizer_printer->Add(single_extruder->sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxTOP, FromDIP(4));
|
||||
vsizer_printer->AddSpacer(FromDIP(4));
|
||||
}
|
||||
|
||||
btn_connect_printer->Show(!isBBL);
|
||||
btn_sync_printer->Show(isDual);
|
||||
panel_printer_bed->Show(isBBL);
|
||||
vsizer_printer->GetItem(1)->GetSizer()->GetItem(1)->Show(isDual);
|
||||
vsizer_printer->GetItem(1)->Show(isBBL && isDual);
|
||||
vsizer_printer->GetItem(2)->Show(isBBL && !isDual);
|
||||
}
|
||||
|
||||
Sidebar::priv::~priv()
|
||||
{
|
||||
// BBS
|
||||
|
|
@ -657,8 +751,8 @@ static DynamicFilamentList1Based dynamic_filament_list_1_based;
|
|||
class AMSCountPopupWindow : public PopupWindow
|
||||
{
|
||||
public:
|
||||
AMSCountPopupWindow(wxWindow * parent, wxStaticText *text, int index)
|
||||
: PopupWindow(parent, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS)
|
||||
AMSCountPopupWindow(ExtruderGroup *extruder, int index)
|
||||
: PopupWindow(extruder, wxBORDER_NONE | wxPU_CONTAINS_CONTROLS)
|
||||
{
|
||||
auto msg = new wxStaticText(this, wxID_ANY, _L("Please set the number of ams installed on the this extrusion head."));
|
||||
msg->SetFont(Label::Body_14);
|
||||
|
|
@ -676,9 +770,9 @@ public:
|
|||
GetAMSCount(index, ams4, ams1);
|
||||
auto val4 = new SpinInput(this, {}, {}, wxDefaultPosition, {FromDIP(60), -1}, 0, 0, 4, ams4);
|
||||
auto val1 = new SpinInput(this, {}, {}, wxDefaultPosition, {FromDIP(60), -1}, 0, 0, 8, ams1);
|
||||
auto event_handler = [index, val4, val1, text](auto &evt) {
|
||||
auto event_handler = [index, val4, val1, extruder](auto &evt) {
|
||||
SetAMSCount(index, val4->GetValue(), val1->GetValue());
|
||||
UpdateAMSCount(index, text);
|
||||
UpdateAMSCount(index, extruder);
|
||||
};
|
||||
val4->Bind(wxEVT_SPINCTRL, event_handler);
|
||||
val1->Bind(wxEVT_SPINCTRL, event_handler);
|
||||
|
|
@ -740,7 +834,7 @@ public:
|
|||
}
|
||||
}
|
||||
|
||||
static void UpdateAMSCount(int index, wxStaticText *text)
|
||||
static void UpdateAMSCount(int index, ExtruderGroup *extruder)
|
||||
{
|
||||
std::vector<std::map<int, int>> &ams_counts = wxGetApp().preset_bundle->extruder_ams_counts;
|
||||
ams_counts.resize(2);
|
||||
|
|
@ -752,10 +846,75 @@ public:
|
|||
ams_map[1] = 0;
|
||||
}
|
||||
std::string ams_info = std::to_string(ams_map[4]) + "/" + std::to_string(ams_map[1]);
|
||||
text->SetLabel(from_u8(ams_info));
|
||||
//*extruder = from_u8(ams_info);
|
||||
}
|
||||
};
|
||||
|
||||
ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title)
|
||||
: StaticGroup(parent, wxID_ANY, title)
|
||||
{
|
||||
SetFont(Label::Body_10);
|
||||
SetForegroundColour("#909090");
|
||||
ShowBadge(true);
|
||||
|
||||
// Nozzle
|
||||
wxStaticText *label_nozzle = new wxStaticText(this, wxID_ANY, _L("Nozzle"));
|
||||
label_nozzle->SetFont(Label::Body_14);
|
||||
label_nozzle->SetForegroundColour("#262E30");
|
||||
auto combo_nozzle = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
|
||||
combo_nozzle->GetDropDown().SetUseContentWidth(true);
|
||||
combo_nozzle->Bind(wxEVT_COMBOBOX, [this, index, combo_nozzle](wxCommandEvent &evt) {
|
||||
auto printer_tab = dynamic_cast<TabPrinter *>(wxGetApp().get_tab(Preset::TYPE_PRINTER));
|
||||
printer_tab->set_extruder_volume_type(index, NozzleVolumeType(intptr_t(combo_nozzle->GetClientData(evt.GetInt()))));
|
||||
});
|
||||
this->combo_nozzle = combo_nozzle;
|
||||
|
||||
// AMS
|
||||
wxStaticText *label_ams = new wxStaticText(this, wxID_ANY, _L("AMS"));
|
||||
label_ams->SetFont(Label::Body_14);
|
||||
label_ams->SetForegroundColour("#262E30");
|
||||
if (index >= 0) {
|
||||
btn_edit = new ScalableButton(this, wxID_ANY, "dot");
|
||||
btn_edit->SetBackgroundColour(*wxWHITE);
|
||||
btn_edit->Hide();
|
||||
btn_edit->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) {
|
||||
PopupWindow *window = new AMSCountPopupWindow(this, index);
|
||||
auto size = GetSize();
|
||||
auto pos = ClientToScreen({0, size.y + 12});
|
||||
size.SetWidth(size.GetWidth() + FromDIP(10));
|
||||
window->Position(pos, {0, 0});
|
||||
window->Popup();
|
||||
});
|
||||
|
||||
auto hovered = std::make_shared<wxWindow *>();
|
||||
for (wxWindow *w : std::initializer_list<wxWindow *>{this, label_nozzle, combo_nozzle, btn_edit, label_ams}) {
|
||||
w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, this](wxMouseEvent &evt) { *hovered = w; btn_edit->SetBitmap_("edit"); });
|
||||
w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, this](wxMouseEvent &evt) { if (*hovered == w) { btn_edit->SetBitmap_("dot"); *hovered = nullptr; } });
|
||||
}
|
||||
}
|
||||
|
||||
wxBoxSizer * hsizer_ams = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer_ams->Add(label_ams, 1, wxALIGN_CENTER);
|
||||
if (btn_edit)
|
||||
hsizer_ams->Add(btn_edit, 0, 0);
|
||||
hsizer_ams->AddStretchSpacer(2);
|
||||
wxBoxSizer * hsizer_nozzle = new wxBoxSizer(wxHORIZONTAL);
|
||||
hsizer_nozzle->Add(label_nozzle, 2, wxALIGN_CENTER);
|
||||
hsizer_nozzle->Add(combo_nozzle, 3, wxEXPAND);
|
||||
if (index < 0) {
|
||||
wxStaticBoxSizer *hsizer = new wxStaticBoxSizer(this, wxHORIZONTAL);
|
||||
hsizer->Add(hsizer_ams, 1, wxLEFT | wxTOP | wxBOTTOM | wxALIGN_CENTER, FromDIP(4));
|
||||
hsizer->Add(hsizer_nozzle, 1, wxALL | wxALIGN_CENTER, FromDIP(4));
|
||||
hsizer->AddSpacer(FromDIP(4));
|
||||
this->sizer = hsizer;
|
||||
} else {
|
||||
wxStaticBoxSizer *vsizer = new wxStaticBoxSizer(this, wxVERTICAL);
|
||||
vsizer->Add(hsizer_ams, 0, wxEXPAND | wxLEFT | wxTOP | wxRIGHT, FromDIP(4));
|
||||
vsizer->Add(hsizer_nozzle, 0, wxEXPAND | wxALL, FromDIP(4));
|
||||
this->sizer = vsizer;
|
||||
}
|
||||
}
|
||||
|
||||
void Sidebar::priv::sync_extruder_list()
|
||||
{
|
||||
auto printer_tab = dynamic_cast<TabPrinter *>(wxGetApp().get_tab(Preset::TYPE_PRINTER));
|
||||
|
|
@ -804,10 +963,14 @@ void Sidebar::priv::sync_extruder_list()
|
|||
int deputy_index = obj->is_main_extruder_on_left() ? 1 : 0;
|
||||
AMSCountPopupWindow::SetAMSCount(deputy_index, deputy_4, deputy_1);
|
||||
AMSCountPopupWindow::SetAMSCount(main_index, main_4, main_1);
|
||||
AMSCountPopupWindow::UpdateAMSCount(0, m_left_ams_count);
|
||||
AMSCountPopupWindow::UpdateAMSCount(1, m_right_ams_count);
|
||||
AMSCountPopupWindow::UpdateAMSCount(0, left_extruder);
|
||||
AMSCountPopupWindow::UpdateAMSCount(1, right_extruder);
|
||||
}
|
||||
|
||||
#define PRINTER_THUMBNAIL_SIZE (wxSize(FromDIP(48), FromDIP(48)))
|
||||
#define PRINTER_PANEL_SIZE_SMALL (wxSize(FromDIP(98), FromDIP(68)))
|
||||
#define PRINTER_PANEL_SIZE (wxSize(FromDIP(98), FromDIP(98)))
|
||||
|
||||
Sidebar::Sidebar(Plater *parent)
|
||||
: wxPanel(parent, wxID_ANY, wxDefaultPosition, wxSize(42 * wxGetApp().em_unit(), -1)), p(new priv(parent))
|
||||
{
|
||||
|
|
@ -882,8 +1045,6 @@ 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_extruder_sync, 0, wxALIGN_CENTER);
|
||||
h_sizer_title->AddSpacer(FromDIP(SidebarProps::TitlebarMargin()));
|
||||
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);
|
||||
|
|
@ -917,70 +1078,92 @@ Sidebar::Sidebar(Plater *parent)
|
|||
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));
|
||||
|
||||
PlaterPresetComboBox* combo_printer = new PlaterPresetComboBox(p->m_panel_printer_content, Preset::TYPE_PRINTER);
|
||||
combo_printer->SetBorderWidth(0);
|
||||
combo_printer->ShowBadge(true);
|
||||
ScalableButton* edit_btn = new ScalableButton(p->m_panel_printer_content, wxID_ANY, "edit");
|
||||
p->panel_printer_preset = new StaticBox(p->m_panel_printer_content);
|
||||
p->panel_printer_preset->SetCornerRadius(8);
|
||||
p->panel_printer_preset->SetBorderColor(wxColour("#CECECE"));
|
||||
p->panel_printer_preset->SetMinSize(PRINTER_PANEL_SIZE_SMALL);
|
||||
p->panel_printer_preset->ShowBadge(true);
|
||||
|
||||
ScalableButton *edit_btn = new ScalableButton(p->panel_printer_preset, wxID_ANY, "dot");
|
||||
edit_btn->SetToolTip(_L("Click to edit preset"));
|
||||
edit_btn->Bind(wxEVT_BUTTON, [this, combo_printer](wxCommandEvent)
|
||||
edit_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent)
|
||||
{
|
||||
p->editing_filament = -1;
|
||||
if (combo_printer->switch_to_tab())
|
||||
if (p->combo_printer->switch_to_tab())
|
||||
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);
|
||||
PlaterPresetComboBox *combo_printer = new PlaterPresetComboBox(p->panel_printer_preset, Preset::TYPE_PRINTER);
|
||||
combo_printer->SetBorderWidth(0);
|
||||
combo_printer->edit_btn = edit_btn;
|
||||
p->combo_printer = combo_printer;
|
||||
|
||||
connection_btn = new ScalableButton(p->m_panel_printer_content, wxID_ANY, "monitor_signal_strong");
|
||||
connection_btn->SetBackgroundColour(wxColour(255, 255, 255));
|
||||
connection_btn->SetToolTip(_L("Connection"));
|
||||
connection_btn->Bind(wxEVT_BUTTON, [this, combo_printer](wxCommandEvent)
|
||||
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"));
|
||||
p->btn_connect_printer->Bind(wxEVT_BUTTON, [this, combo_printer](wxCommandEvent)
|
||||
{
|
||||
PhysicalPrinterDialog dlg(this->GetParent());
|
||||
dlg.ShowModal();
|
||||
});
|
||||
|
||||
wxBoxSizer* vsizer_printer = new wxBoxSizer(wxVERTICAL);
|
||||
wxBoxSizer* hsizer_printer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
vsizer_printer->AddSpacer(FromDIP(16));
|
||||
hsizer_printer->Add(combo_printer, 1, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::ContentMargin()));
|
||||
hsizer_printer->Add(edit_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::ElementSpacing()));
|
||||
hsizer_printer->Add(connection_btn, 0, wxALIGN_CENTER_VERTICAL | wxLEFT, FromDIP(SidebarProps::IconSpacing()));
|
||||
hsizer_printer->AddSpacer(FromDIP(SidebarProps::ContentMargin()));
|
||||
vsizer_printer->Add(hsizer_printer, 0, wxEXPAND, 0);
|
||||
{
|
||||
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; } });
|
||||
}
|
||||
}
|
||||
|
||||
// Bed type selection
|
||||
wxBoxSizer* bed_type_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxStaticText* bed_type_title = new wxStaticText(p->m_panel_printer_content, wxID_ANY, _L("Bed type"));
|
||||
//bed_type_title->SetBackgroundColour();
|
||||
bed_type_title->Wrap(-1);
|
||||
bed_type_title->SetFont(Label::Body_14);
|
||||
p->m_bed_type_list = new ComboBox(p->m_panel_printer_content, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
|
||||
const ConfigOptionDef* bed_type_def = print_config_def.get("curr_bed_type");
|
||||
p->panel_printer_bed = new StaticBox(p->m_panel_printer_content);
|
||||
p->panel_printer_bed->SetCornerRadius(8);
|
||||
p->panel_printer_bed->SetBorderColor(wxColour("#CECECE"));
|
||||
p->panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE_SMALL);
|
||||
p->panel_printer_bed->ShowBadge(true);
|
||||
|
||||
ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "dot");
|
||||
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", 48);
|
||||
p->image_printer_bed = new wxStaticBitmap(p->panel_printer_bed, wxID_ANY, bitmap_bed.bmp(), wxDefaultPosition, PRINTER_THUMBNAIL_SIZE, 0);
|
||||
|
||||
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->SetBorderWidth(0);
|
||||
p->combo_printer_bed->GetDropDown().SetUseContentWidth(true);
|
||||
const ConfigOptionDef *bed_type_def = print_config_def.get("curr_bed_type");
|
||||
if (bed_type_def && bed_type_def->enum_keys_map) {
|
||||
for (auto item : bed_type_def->enum_labels) {
|
||||
p->m_bed_type_list->AppendString(_L(item));
|
||||
p->combo_printer_bed->AppendString(_L(item));
|
||||
}
|
||||
}
|
||||
|
||||
bed_type_title->Bind(wxEVT_ENTER_WINDOW, [bed_type_title, this](wxMouseEvent &e) {
|
||||
e.Skip();
|
||||
auto font = bed_type_title->GetFont();
|
||||
font.SetUnderlined(true);
|
||||
bed_type_title->SetFont(font);
|
||||
SetCursor(wxCURSOR_HAND);
|
||||
});
|
||||
bed_type_title->Bind(wxEVT_LEAVE_WINDOW, [bed_type_title, this](wxMouseEvent &e) {
|
||||
e.Skip();
|
||||
auto font = bed_type_title->GetFont();
|
||||
font.SetUnderlined(false);
|
||||
bed_type_title->SetFont(font);
|
||||
SetCursor(wxCURSOR_ARROW);
|
||||
});
|
||||
bed_type_title->Bind(wxEVT_LEFT_UP, [bed_type_title, this](wxMouseEvent &e) {
|
||||
wxLaunchDefaultBrowser("https://github.com/SoftFever/OrcaSlicer/wiki/bed-types");
|
||||
});
|
||||
{
|
||||
auto hovered = std::make_shared<wxWindow *>();
|
||||
for (wxWindow *w : std::initializer_list<wxWindow *>{p->panel_printer_bed, wiki_bed, p->image_printer_bed, p->combo_printer_bed}) {
|
||||
w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, wiki_bed](wxMouseEvent &evt) { *hovered = w; wiki_bed->SetBitmap_("help"); });
|
||||
w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, wiki_bed](wxMouseEvent &evt) { if (*hovered == w) { wiki_bed->SetBitmap_("dot"); *hovered = nullptr; } });
|
||||
}
|
||||
}
|
||||
|
||||
wxBoxSizer *bed_type_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
bed_type_sizer->AddStretchSpacer(1);
|
||||
wxBoxSizer *bed_type_hsizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxBoxSizer *bed_type_hsizer2 = new wxBoxSizer(wxHORIZONTAL);
|
||||
bed_type_hsizer2->AddStretchSpacer(1);
|
||||
bed_type_hsizer2->Add(wiki_bed, 0, wxLEFT, FromDIP(4));
|
||||
bed_type_hsizer->Add(bed_type_hsizer2, 1);
|
||||
bed_type_hsizer->Add(p->image_printer_bed, 0);
|
||||
bed_type_hsizer->AddStretchSpacer(1);
|
||||
bed_type_sizer->Add(bed_type_hsizer, 0, wxALIGN_CENTER | wxLEFT | wxTOP | wxRIGHT, FromDIP(4));
|
||||
bed_type_sizer->Add(p->combo_printer_bed, 0, wxEXPAND | wxALL, FromDIP(4));
|
||||
bed_type_sizer->AddStretchSpacer(1);
|
||||
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");
|
||||
|
|
@ -992,11 +1175,7 @@ Sidebar::Sidebar(Plater *parent)
|
|||
}
|
||||
|
||||
int bed_type_idx = bed_type_value - 1;
|
||||
p->m_bed_type_list->Select(bed_type_idx);
|
||||
bed_type_sizer->Add(bed_type_title, 1, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(SidebarProps::ContentMargin()));
|
||||
bed_type_sizer->Add(p->m_bed_type_list, 4, wxLEFT | wxEXPAND, FromDIP(SidebarProps::ElementSpacing()));
|
||||
bed_type_sizer->AddSpacer(FromDIP(SidebarProps::ContentMargin()));
|
||||
vsizer_printer->Add(bed_type_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||
p->combo_printer_bed->Select(bed_type_idx);
|
||||
|
||||
auto& project_config = wxGetApp().preset_bundle->project_config;
|
||||
/*const t_config_enum_values* keys_map = print_config_def.get("curr_bed_type")->enum_keys_map;
|
||||
|
|
@ -1008,76 +1187,35 @@ Sidebar::Sidebar(Plater *parent)
|
|||
BedType bed_type = (BedType)bed_type_value;
|
||||
project_config.set_key_value("curr_bed_type", new ConfigOptionEnum<BedType>(bed_type));
|
||||
|
||||
// Dual Extruder Types (Begin)
|
||||
p->m_dual_extruder_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
// Sync printer information
|
||||
auto btn_sync = new Button(p->m_panel_printer_content, _L("Sync printer information"), "ams_nozzle_sync");
|
||||
//btn_sync->SetFont(Label::Body_8);
|
||||
btn_sync->SetToolTip(_L("Synchronize nozzle information and the number of AMS"));
|
||||
btn_sync->SetCornerRadius(8);
|
||||
StateColor btn_sync_bg_col(
|
||||
std::pair<wxColour, int>(wxColour(0xCECECE), StateColor::Pressed),
|
||||
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Normal));
|
||||
StateColor btn_sync_bd_col(
|
||||
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed),
|
||||
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
|
||||
btn_sync->SetBackgroundColor(btn_sync_bg_col);
|
||||
btn_sync->SetBorderColor(btn_sync_bd_col);
|
||||
btn_sync->SetPaddingSize({FromDIP(6), FromDIP(12)});
|
||||
btn_sync->SetMinSize(PRINTER_PANEL_SIZE);
|
||||
btn_sync->SetMaxSize(PRINTER_PANEL_SIZE);
|
||||
btn_sync->SetVertical();
|
||||
btn_sync->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { p->sync_extruder_list(); });
|
||||
p->btn_sync_printer = btn_sync;
|
||||
|
||||
auto add_extruder = [this](int index, wxString const & title) {
|
||||
StaticGroup *static_box = new StaticGroup(p->m_panel_printer_content, wxID_ANY, title);
|
||||
static_box->SetFont(Label::Body_10);
|
||||
static_box->SetForegroundColour("#909090");
|
||||
static_box->ShowBadge(true);
|
||||
wxStaticBoxSizer *static_box_sizer = new wxStaticBoxSizer(static_box, wxVERTICAL);
|
||||
// AMS count
|
||||
wxBoxSizer * ams_count_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
wxStaticText *ams_count_title = new wxStaticText(static_box, wxID_ANY, _L("AMS"));
|
||||
ams_count_title->SetFont(Label::Body_14);
|
||||
ams_count_title->SetForegroundColour("#262E30");
|
||||
auto ams_count_text = new wxStaticText(static_box, wxID_ANY, wxString("1/1"));
|
||||
ams_count_text->SetFont(Label::Body_14);
|
||||
ams_count_text->SetForegroundColour("#262E30");
|
||||
AMSCountPopupWindow::UpdateAMSCount(index, ams_count_text);
|
||||
auto ams_count_edit = new ScalableButton(static_box, wxID_ANY, "edit");
|
||||
ams_count_edit->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index, ams_count_text](auto &evt) {
|
||||
PopupWindow *window = new AMSCountPopupWindow(ams_count_text, ams_count_text, index);
|
||||
auto pos = ams_count_text->ClientToScreen({0, 0});
|
||||
auto size = ams_count_text->GetSize();
|
||||
size.SetWidth(size.GetWidth() + FromDIP(10));
|
||||
window->Position(pos, size);
|
||||
window->Popup();
|
||||
});
|
||||
ams_count_edit->SetBackgroundColour(*wxWHITE);
|
||||
ams_count_sizer->Add(ams_count_title, 2, wxLEFT | wxALIGN_CENTER_VERTICAL, FromDIP(8));
|
||||
ams_count_sizer->Add(ams_count_text, 1, wxLEFT | wxEXPAND);
|
||||
ams_count_sizer->Add(ams_count_edit, 2, wxLEFT | wxEXPAND);
|
||||
static_box_sizer->Add(ams_count_sizer, 0, wxTOP | wxEXPAND, FromDIP(8));
|
||||
p->m_dual_extruder_sizer->Add(static_box_sizer, 1, wxEXPAND);
|
||||
return ams_count_text;
|
||||
};
|
||||
p->m_dual_extruder_sizer->Add(FromDIP(10), 0);
|
||||
auto left_extruder = add_extruder(0, _L("Left Extruder"));
|
||||
p->m_left_ams_count = left_extruder;
|
||||
p->m_dual_extruder_sizer->Add(FromDIP(2), 0);
|
||||
auto right_extruder = add_extruder(1, _L("Right Extruder"));
|
||||
p->m_right_ams_count = right_extruder;
|
||||
p->m_dual_extruder_sizer->Add(FromDIP(2), 0);
|
||||
p->left_extruder = new ExtruderGroup(p->m_panel_printer_content, 0, _L("Left"));
|
||||
p->right_extruder = new ExtruderGroup(p->m_panel_printer_content, 1, _L("Right"));
|
||||
p->single_extruder = new ExtruderGroup(p->m_panel_printer_content, -1, "");
|
||||
|
||||
auto extruder_btn = new Button(p->m_panel_printer_content, _L("Sync AMS Nozzle information"), "ams_nozzle_sync");
|
||||
extruder_btn->SetFont(Label::Body_8);
|
||||
extruder_btn->SetToolTip(_L("Synchronize nozzle information and the number of AMS"));
|
||||
extruder_btn->SetCornerRadius(0);
|
||||
StateColor extruder_btn_bg_col(std::pair<wxColour, int>(wxColour(0xCECECE), StateColor::Pressed),
|
||||
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xF8F8F8), StateColor::Normal));
|
||||
StateColor extruder_btn_bd_col(std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Pressed),
|
||||
std::pair<wxColour, int>(wxColour(0x00AE42), StateColor::Hovered),
|
||||
std::pair<wxColour, int>(wxColour(0xEEEEEE), StateColor::Normal));
|
||||
extruder_btn->SetBackgroundColor(extruder_btn_bg_col);
|
||||
extruder_btn->SetBorderColor(extruder_btn_bd_col);
|
||||
extruder_btn->SetPaddingSize({FromDIP(6), FromDIP(12)});
|
||||
extruder_btn->SetMinSize({FromDIP(48), FromDIP(68)});
|
||||
extruder_btn->SetMaxSize({FromDIP(48), FromDIP(68)});
|
||||
extruder_btn->SetVertical();
|
||||
extruder_btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent &e) { p->sync_extruder_list(); });
|
||||
p->m_extruder_sync = extruder_btn;
|
||||
p->m_dual_extruder_sizer->Add(FromDIP(2), 0);
|
||||
p->m_dual_extruder_sizer->Add(extruder_btn, 0, wxTOP | wxEXPAND, FromDIP(6));
|
||||
p->m_dual_extruder_sizer->Add(FromDIP(10), 0);
|
||||
|
||||
vsizer_printer->Add(p->m_dual_extruder_sizer, 0, wxEXPAND | wxTOP, FromDIP(5));
|
||||
// Dual Extruder Types (End)
|
||||
|
||||
vsizer_printer->AddSpacer(FromDIP(16));
|
||||
p->m_panel_printer_content->SetSizer(vsizer_printer);
|
||||
p->vsizer_printer = new wxBoxSizer(wxVERTICAL);
|
||||
p->layout_printer(true, true);
|
||||
p->m_panel_printer_content->SetSizer(p->vsizer_printer);
|
||||
p->m_panel_printer_content->Layout();
|
||||
scrolled_sizer->Add(p->m_panel_printer_content, 0, wxEXPAND, 0);
|
||||
}
|
||||
|
|
@ -1194,7 +1332,7 @@ Sidebar::Sidebar(Plater *parent)
|
|||
//bSizer39->Hide(p->m_bpButton_del_filament); // ORCA: Hide delete filament button if there is only one filament
|
||||
}
|
||||
|
||||
ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition,
|
||||
auto ams_btn = new ScalableButton(p->m_panel_filament_title, wxID_ANY, "ams_fila_sync", wxEmptyString, wxDefaultSize, wxDefaultPosition,
|
||||
wxBU_EXACTFIT | wxNO_BORDER, false, 16); // ORCA match icon size with other icons as 16x16
|
||||
ams_btn->SetToolTip(_L("Synchronize filament list from AMS"));
|
||||
ams_btn->Bind(wxEVT_BUTTON, [this, scrolled_sizer](wxCommandEvent &e) {
|
||||
|
|
@ -1457,14 +1595,14 @@ void Sidebar::update_all_preset_comboboxes()
|
|||
|
||||
if (preset_bundle.use_bbl_network()) {
|
||||
//only show connection button for not-BBL printer
|
||||
connection_btn->Hide();
|
||||
p->btn_connect_printer->Hide();
|
||||
//only show sync-ams button for BBL printer
|
||||
ams_btn->Show();
|
||||
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 {
|
||||
connection_btn->Show();
|
||||
ams_btn->Hide();
|
||||
p->btn_connect_printer->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");
|
||||
wxString apikey;
|
||||
|
|
@ -1499,7 +1637,7 @@ void Sidebar::update_all_preset_comboboxes()
|
|||
//p->m_staticText_filament_settings->Update();
|
||||
|
||||
if (is_bbl_vendor || cfg.opt_bool("support_multi_bed_types")) {
|
||||
p->m_bed_type_list->Enable();
|
||||
p->combo_printer_bed->Enable();
|
||||
// Orca: don't update bed type if loading project
|
||||
if (!p->plater->is_loading_project()) {
|
||||
auto str_bed_type = wxGetApp().app_config->get_printer_setting(wxGetApp().preset_bundle->printers.get_selected_preset_name(),
|
||||
|
|
@ -1510,17 +1648,17 @@ void Sidebar::update_all_preset_comboboxes()
|
|||
bed_type_value = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle);
|
||||
}
|
||||
|
||||
p->m_bed_type_list->SelectAndNotify(bed_type_value - 1);
|
||||
p->combo_printer_bed->SelectAndNotify(bed_type_value - 1);
|
||||
} else {
|
||||
BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle);
|
||||
p->m_bed_type_list->SelectAndNotify((int) bed_type - 1);
|
||||
p->combo_printer_bed->SelectAndNotify((int) bed_type - 1);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
// m_bed_type_list->SelectAndNotify(btPEI - 1);
|
||||
BedType bed_type = preset_bundle.printers.get_edited_preset().get_default_bed_type(&preset_bundle);
|
||||
p->m_bed_type_list->SelectAndNotify((int) bed_type - 1);
|
||||
p->m_bed_type_list->Disable();
|
||||
p->combo_printer_bed->SelectAndNotify((int) bed_type - 1);
|
||||
p->combo_printer_bed->Disable();
|
||||
}
|
||||
|
||||
// Update the print choosers to only contain the compatible presets, update the dirty flags.
|
||||
|
|
@ -1610,6 +1748,9 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
|||
}
|
||||
|
||||
Preset& printer_preset = wxGetApp().preset_bundle->printers.get_edited_preset();
|
||||
|
||||
bool isBBL = preset_bundle.is_bbl_vendor();
|
||||
|
||||
if (auto printer_structure_opt = printer_preset.config.option<ConfigOptionEnum<PrinterStructure>>("printer_structure")) {
|
||||
wxGetApp().plater()->get_current_canvas3D()->get_arrange_settings().align_to_y_axis = (printer_structure_opt->value == PrinterStructure::psI3);
|
||||
}
|
||||
|
|
@ -1618,7 +1759,11 @@ void Sidebar::update_presets(Preset::Type preset_type)
|
|||
|
||||
// Update dual extrudes
|
||||
auto* nozzle_diameter = dynamic_cast<const ConfigOptionFloats*>(printer_preset.config.option("nozzle_diameter"));
|
||||
p->m_dual_extruder_sizer->Show(preset_bundle.is_bbl_vendor() && nozzle_diameter->size() == 2);
|
||||
|
||||
bool is_dual_extruder = nozzle_diameter->size() == 2;
|
||||
p->layout_printer(isBBL, is_dual_extruder);
|
||||
|
||||
Layout();
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -1689,13 +1834,16 @@ void Sidebar::msw_rescale()
|
|||
p->m_bpButton_set_filament->msw_rescale();
|
||||
p->m_flushing_volume_btn->Rescale();
|
||||
//BBS
|
||||
p->m_bed_type_list->Rescale();
|
||||
p->m_bed_type_list->SetMinSize({-1, 3 * wxGetApp().em_unit()});
|
||||
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->m_extruder_sync->SetPaddingSize({FromDIP(6), FromDIP(12)});
|
||||
p->m_extruder_sync->SetMinSize({FromDIP(48), FromDIP(68)});
|
||||
p->m_extruder_sync->SetMaxSize({FromDIP(48), FromDIP(68)});
|
||||
p->m_extruder_sync->Rescale();
|
||||
p->btn_sync_printer->SetPaddingSize({FromDIP(6), FromDIP(12)});
|
||||
p->btn_sync_printer->SetMinSize(PRINTER_PANEL_SIZE);
|
||||
p->btn_sync_printer->SetMaxSize(PRINTER_PANEL_SIZE);
|
||||
p->btn_sync_printer->Rescale();
|
||||
#if 0
|
||||
if (p->mode_sizer)
|
||||
p->mode_sizer->msw_rescale();
|
||||
|
|
@ -2000,7 +2148,7 @@ void Sidebar::on_bed_type_change(BedType bed_type)
|
|||
{
|
||||
// btDefault option is not included in global bed type setting
|
||||
int sel_idx = (int)bed_type - 1;
|
||||
if (p->m_bed_type_list != nullptr) p->m_bed_type_list->SetSelection(sel_idx);
|
||||
if (p->combo_printer_bed != nullptr) p->combo_printer_bed->SetSelection(sel_idx);
|
||||
}
|
||||
|
||||
std::map<int, DynamicPrintConfig> Sidebar::build_filament_ams_list(MachineObject* obj)
|
||||
|
|
|
|||
|
|
@ -215,8 +215,6 @@ private:
|
|||
std::unique_ptr<priv> p;
|
||||
|
||||
wxBoxSizer* m_scrolled_sizer = nullptr;
|
||||
ScalableButton* connection_btn = nullptr;
|
||||
ScalableButton* ams_btn = nullptr;
|
||||
};
|
||||
|
||||
class Plater: public wxPanel
|
||||
|
|
|
|||
|
|
@ -72,7 +72,7 @@ namespace GUI {
|
|||
**/
|
||||
|
||||
PresetComboBox::PresetComboBox(wxWindow* parent, Preset::Type preset_type, const wxSize& size, PresetBundle* preset_bundle/* = nullptr*/) :
|
||||
::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, size, 0, nullptr, wxCB_READONLY),
|
||||
::ComboBox(parent, wxID_ANY, wxEmptyString, wxDefaultPosition, size, 0, nullptr, preset_type == Preset::TYPE_PRINTER ? (wxCB_READONLY | wxALIGN_CENTER_HORIZONTAL) : wxCB_READONLY),
|
||||
m_type(preset_type),
|
||||
m_last_selected(wxNOT_FOUND),
|
||||
m_em_unit(em_unit(this)),
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ ComboBox::ComboBox(wxWindow *parent,
|
|||
: drop(items)
|
||||
{
|
||||
if ((style & wxALIGN_MASK) == 0 && (style & wxCB_READONLY))
|
||||
style |= wxALIGN_CENTER_HORIZONTAL;
|
||||
style |= wxALIGN_RIGHT;
|
||||
text_off = style & CB_NO_TEXT;
|
||||
TextInput::Create(parent, "", value, (style & CB_NO_DROP_ICON) ? "" : "drop_down", pos, size,
|
||||
style | wxTE_PROCESS_ENTER);
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue