FIX: something

Change-Id: I2923786337f97f4297b0444522c620891aa2ad90
Jira: STUDIO-9725 filament menu delete icon
Jira: STUDIO-9785 StaticGroup border color
Jira: STUDIO-9716 update badge icon
Jira: STUDIO-9815 click printer/bed panel for combobox
Jira: STUDIO-9867 label with for single noozle
Jira: STUDIO-9739 ams page up/down
(cherry picked from commit 1cde0b844a97f3420db4999927f05a833b92b0fb)
This commit is contained in:
chunmao.guo
2025-01-15 15:40:27 +08:00
committed by Noisyfox
parent 5c2281bb07
commit d626c38ae7
12 changed files with 113 additions and 37 deletions

View File

@@ -1,4 +1,4 @@
<svg width="19" height="18" viewBox="0 0 19 18" fill="none" xmlns="http://www.w3.org/2000/svg"> <svg width="18" height="18" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M0.410156 0H18.4102V18L9.09255 8.93403L0.410156 0Z" fill="#00AE42"/> <path d="M0 0H14C16.2091 0 18 1.79086 18 4V18L8.2784 8.45085L0 0Z" fill="#ACACAC"/>
<path d="M16.7686 3.1416C16.9574 3.3304 16.9574 3.63568 16.7686 3.82247L11.4662 9.12687C11.2774 9.31567 10.9721 9.31567 10.7853 9.12687L8.05175 6.39534C7.86296 6.20654 7.86296 5.90125 8.05175 5.71446C8.24055 5.52767 8.54584 5.52566 8.73263 5.71446L11.1227 8.10455L16.0857 3.1416C16.2745 2.9528 16.5798 2.9528 16.7666 3.1416H16.7686Z" fill="white"/> <path d="M16.3579 3.1416C16.5467 3.3304 16.5467 3.63568 16.3579 3.82247L11.0555 9.12687C10.8667 9.31567 10.5614 9.31567 10.3747 9.12687L7.64111 6.39534C7.45231 6.20654 7.45231 5.90125 7.64111 5.71446C7.82991 5.52767 8.1352 5.52566 8.32198 5.71446L10.7121 8.10455L15.675 3.1416C15.8638 2.9528 16.1691 2.9528 16.3559 3.1416H16.3579Z" fill="white"/>
</svg> </svg>

Before

Width:  |  Height:  |  Size: 530 B

After

Width:  |  Height:  |  Size: 534 B

View File

@@ -0,0 +1,3 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.99984 11.7394C5.74282 11.7394 4.53729 11.2401 3.64845 10.3512C2.7596 9.46238 2.26025 8.25685 2.26025 6.99984C2.26025 5.74282 2.7596 4.53729 3.64845 3.64845C4.53729 2.7596 5.74282 2.26025 6.99984 2.26025C8.25685 2.26025 9.46238 2.7596 10.3512 3.64845C11.2401 4.53729 11.7394 5.74282 11.7394 6.99984C11.7394 8.25685 11.2401 9.46238 10.3512 10.3512C9.46238 11.2401 8.25685 11.7394 6.99984 11.7394ZM6.99984 1.1665C5.45274 1.1665 3.96901 1.78109 2.87505 2.87505C1.78109 3.96901 1.1665 5.45274 1.1665 6.99984C1.1665 8.54693 1.78109 10.0307 2.87505 11.1246C3.96901 12.2186 5.45274 12.8332 6.99984 12.8332C8.54693 12.8332 10.0307 12.2186 11.1246 11.1246C12.2186 10.0307 12.8332 8.54693 12.8332 6.99984C12.8332 5.45274 12.2186 3.96901 11.1246 2.87505C10.0307 1.78109 8.54693 1.1665 6.99984 1.1665ZM4.24268 6.65804L6.61247 9.02783C6.82666 9.24202 7.17301 9.24202 7.38493 9.02783L9.757 6.65804C9.97119 6.44385 9.97119 6.09749 9.757 5.88558C9.54281 5.67367 9.19645 5.67139 8.98454 5.88558L7.00212 7.868L5.01969 5.88558C4.8055 5.67139 4.45915 5.67139 4.24723 5.88558C4.03532 6.09977 4.03304 6.44613 4.24723 6.65804H4.24268Z" fill="#6B6B6B"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,3 @@
<svg width="14" height="14" viewBox="0 0 14 14" fill="none" xmlns="http://www.w3.org/2000/svg">
<path d="M6.99984 2.26025C8.25685 2.26025 9.46238 2.7596 10.3512 3.64845C11.2401 4.53729 11.7394 5.74282 11.7394 6.99984C11.7394 8.25685 11.2401 9.46238 10.3512 10.3512C9.46238 11.2401 8.25685 11.7394 6.99984 11.7394C5.74282 11.7394 4.53729 11.2401 3.64845 10.3512C2.7596 9.46238 2.26025 8.25685 2.26025 6.99984C2.26025 5.74282 2.7596 4.53729 3.64845 3.64845C4.53729 2.7596 5.74282 2.26025 6.99984 2.26025ZM6.99984 12.8332C8.54693 12.8332 10.0307 12.2186 11.1246 11.1246C12.2186 10.0307 12.8332 8.54693 12.8332 6.99984C12.8332 5.45274 12.2186 3.96901 11.1246 2.87505C10.0307 1.78109 8.54693 1.1665 6.99984 1.1665C5.45274 1.1665 3.96901 1.78109 2.87505 2.87505C1.78109 3.96901 1.1665 5.45274 1.1665 6.99984C1.1665 8.54693 1.78109 10.0307 2.87505 11.1246C3.96901 12.2186 5.45274 12.8332 6.99984 12.8332ZM9.757 7.34163L7.38721 4.97184C7.17301 4.75765 6.82666 4.75765 6.61475 4.97184L4.24268 7.34163C4.02848 7.55583 4.02848 7.90218 4.24268 8.11409C4.45687 8.32601 4.80322 8.32829 5.01514 8.11409L6.99756 6.13167L8.97998 8.11409C9.19417 8.32829 9.54053 8.32829 9.75244 8.11409C9.96436 7.8999 9.96663 7.55355 9.75244 7.34163H9.757Z" fill="#6B6B6B"/>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -765,9 +765,9 @@ static void generic_exception_handle()
std::terminate(); std::terminate();
//throw; //throw;
} catch (const std::exception& ex) { } catch (const std::exception& ex) {
wxLogError(format_wxstr(_L("OrcaSlicer got an unhandled exception: %1%"), ex.what()));
BOOST_LOG_TRIVIAL(error) << boost::format("Uncaught exception: %1%") % ex.what(); BOOST_LOG_TRIVIAL(error) << boost::format("Uncaught exception: %1%") % ex.what();
flush_logs(); flush_logs();
wxLogError(format_wxstr(_L("OrcaSlicer got an unhandled exception: %1%"), ex.what()));
throw; throw;
} }
//#endif //#endif

View File

@@ -1481,7 +1481,7 @@ void MenuFactory::create_filament_action_menu(bool init, int active_filament_men
if (init) { if (init) {
append_menu_item( append_menu_item(
menu, wxID_ANY, _L("Delete"), _L("Delete this filament"), [](wxCommandEvent&) { menu, wxID_ANY, _L("Delete"), _L("Delete this filament"), [](wxCommandEvent&) {
plater()->sidebar().delete_filament(-2); }, "menu_delete", nullptr, plater()->sidebar().delete_filament(-2); }, "", nullptr,
[]() { return plater()->sidebar().combos_filament().size() > 1; }, m_parent); []() { return plater()->sidebar().combos_filament().size() > 1; }, m_parent);
} }

View File

@@ -237,7 +237,7 @@ void MediaFilePanel::SetMachineObject(MachineObject* obj)
m_remote_proto = 0; m_remote_proto = 0;
m_model_download_support = false; m_model_download_support = false;
} }
Enable(obj && obj->is_connected() && obj->m_push_count > 0); Enable(obj && obj->is_info_ready() && obj->m_push_count > 0);
if (machine == m_machine) { if (machine == m_machine) {
if ((m_waiting_enable && IsEnabled()) || (m_waiting_support && (m_local_proto || m_remote_proto))) { if ((m_waiting_enable && IsEnabled()) || (m_waiting_support && (m_local_proto || m_remote_proto))) {
auto fs = m_image_grid->GetFileSystem(); auto fs = m_image_grid->GetFileSystem();

View File

@@ -171,7 +171,7 @@ void MediaPlayCtrl::SetMachineObject(MachineObject* obj)
m_remote_proto = 0; m_remote_proto = 0;
m_device_busy = false; m_device_busy = false;
} }
Enable(obj && obj->is_connected() && obj->m_push_count > 0); Enable(obj && obj->is_info_ready() && obj->m_push_count > 0);
if (machine == m_machine) { if (machine == m_machine) {
if (m_last_state == MEDIASTATE_IDLE && IsEnabled()) if (m_last_state == MEDIASTATE_IDLE && IsEnabled())
Play(); Play();

View File

@@ -352,12 +352,14 @@ struct ExtruderGroup : StaticGroup
ExtruderGroup(wxWindow * parent, int index, wxString const &title); ExtruderGroup(wxWindow * parent, int index, wxString const &title);
wxStaticBoxSizer *sizer = nullptr; wxStaticBoxSizer *sizer = nullptr;
ScalableButton * btn_edit = nullptr; ScalableButton * btn_edit = nullptr;
ComboBox * combo_nozzle = nullptr; ComboBox * combo_flow = nullptr;
AMSPreview * ams[4] = {nullptr}; AMSPreview * ams[4] = {nullptr};
wxStaticText *ams_not_installed_msg{nullptr}; wxStaticText *ams_not_installed_msg{nullptr};
ScalableButton *up_down_btn{nullptr}; ScalableButton * btn_up{nullptr};
ScalableButton * btn_down{nullptr};
wxBoxSizer *hsizer_ams { nullptr }; wxBoxSizer *hsizer_ams { nullptr };
bool is_upward{false}; int page_cur{0};
int page_num{3};
int ams_n4 = 0; int ams_n4 = 0;
int ams_n1 = 0; int ams_n1 = 0;
@@ -375,7 +377,9 @@ struct ExtruderGroup : StaticGroup
{ {
if (btn_edit) if (btn_edit)
btn_edit->msw_rescale(); btn_edit->msw_rescale();
combo_nozzle->Rescale(); btn_up->msw_rescale();
btn_down->msw_rescale();
combo_flow->Rescale();
} }
}; };
@@ -911,22 +915,22 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
: StaticGroup(parent, wxID_ANY, title) : StaticGroup(parent, wxID_ANY, title)
{ {
SetFont(Label::Body_10); SetFont(Label::Body_10);
SetForegroundColour("#909090");
ShowBadge(true); ShowBadge(true);
// Nozzle // Nozzle
wxStaticText *label_nozzle = new wxStaticText(this, wxID_ANY, _L("Flow")); wxStaticText *label_flow = new wxStaticText(this, wxID_ANY, _L("Flow"));
label_nozzle->SetFont(Label::Body_14); label_flow->SetFont(Label::Body_14);
label_nozzle->SetForegroundColour("#262E30"); label_flow->SetForegroundColour("#262E30");
auto combo_nozzle = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY); if (index >= 0) label_flow->SetMinSize({FromDIP(80), -1});
combo_nozzle->GetDropDown().SetUseContentWidth(true); auto combo_flow = new ComboBox(this, wxID_ANY, wxString(""), wxDefaultPosition, wxDefaultSize, 0, nullptr, wxCB_READONLY);
combo_nozzle->Bind(wxEVT_COMBOBOX, [this, index, combo_nozzle](wxCommandEvent &evt) { combo_flow->GetDropDown().SetUseContentWidth(true);
combo_flow->Bind(wxEVT_COMBOBOX, [this, index, combo_flow](wxCommandEvent &evt) {
auto printer_tab = dynamic_cast<TabPrinter *>(wxGetApp().get_tab(Preset::TYPE_PRINTER)); 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())))); printer_tab->set_extruder_volume_type(index, NozzleVolumeType(intptr_t(combo_flow->GetClientData(evt.GetInt()))));
if (GUI::wxGetApp().plater()) if (GUI::wxGetApp().plater())
GUI::wxGetApp().plater()->update_machine_sync_status(); GUI::wxGetApp().plater()->update_machine_sync_status();
}); });
this->combo_nozzle = combo_nozzle; this->combo_flow = combo_flow;
// AMS // AMS
wxStaticText *label_ams = new wxStaticText(this, wxID_ANY, _L("AMS")); wxStaticText *label_ams = new wxStaticText(this, wxID_ANY, _L("AMS"));
@@ -946,7 +950,7 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
}); });
auto hovered = std::make_shared<wxWindow *>(); auto hovered = std::make_shared<wxWindow *>();
for (wxWindow *w : std::initializer_list<wxWindow *>{this, label_nozzle, combo_nozzle, btn_edit, label_ams}) { for (wxWindow *w : std::initializer_list<wxWindow *>{this, label_flow, combo_flow, btn_edit, label_ams}) {
w->Bind(wxEVT_ENTER_WINDOW, [w, hovered, this](wxMouseEvent &evt) { *hovered = w; btn_edit->SetBitmap_("edit"); }); 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; } }); w->Bind(wxEVT_LEAVE_WINDOW, [w, hovered, this](wxMouseEvent &evt) { if (*hovered == w) { btn_edit->SetBitmap_("dot"); *hovered = nullptr; } });
} }
@@ -969,15 +973,25 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
if (btn_edit) if (btn_edit)
hsizer_ams->Add(btn_edit, 0, wxLEFT | wxALIGN_CENTER, FromDIP(2)); hsizer_ams->Add(btn_edit, 0, wxLEFT | wxALIGN_CENTER, FromDIP(2));
up_down_btn = new ScalableButton(this, wxID_ANY, "dot"); btn_up = new ScalableButton(this, wxID_ANY, "page_up", "", {-1, FromDIP(14)});
up_down_btn->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) { btn_up->SetBackgroundColour(*wxWHITE);
is_upward = !is_upward; btn_up->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) {
if (page_cur > 0)
--page_cur;
update_ams();
});
btn_down = new ScalableButton(this, wxID_ANY, "page_down", "", {-1, FromDIP(14)});
btn_down->SetBackgroundColour(*wxWHITE);
btn_down->Bind(wxEVT_COMMAND_BUTTON_CLICKED, [this, index](auto &evt) {
if (page_cur + 1 < page_num)
++page_cur;
update_ams(); update_ams();
}); });
wxBoxSizer * hsizer_nozzle = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer * hsizer_nozzle = new wxBoxSizer(wxHORIZONTAL);
hsizer_nozzle->Add(label_nozzle, 2, wxALIGN_CENTER); hsizer_nozzle->Add(label_flow, 2, wxALIGN_CENTER);
hsizer_nozzle->Add(combo_nozzle, 3, wxEXPAND); hsizer_nozzle->Add(combo_flow, 3, wxEXPAND);
if (index < 0) { if (index < 0) {
label_ams->Hide(); label_ams->Hide();
ams_not_installed_msg->Hide(); ams_not_installed_msg->Hide();
@@ -999,8 +1013,8 @@ void ExtruderGroup::update_ams()
{ {
int display_capacity = 8; int display_capacity = 8;
if (ams_n4 * 4 + ams_n1 * 2 <= 8) //if (ams_n4 * 4 + ams_n1 * 2 <= 8)
is_upward = false; // is_upward = false;
std::vector<wxColour> colors = { std::vector<wxColour> colors = {
wxColour(255, 110, 100), wxColour(255, 110, 100),
@@ -1009,7 +1023,7 @@ void ExtruderGroup::update_ams()
wxColour(170, 111, 252) wxColour(170, 111, 252)
}; };
bool display_front_ams = !is_upward; bool display_front_ams = false; //!is_upward;
size_t i = 0; size_t i = 0;
for (; i < ams_n4 && i < 4; ++i) { for (; i < ams_n4 && i < 4; ++i) {
display_capacity -= 4; display_capacity -= 4;
@@ -1051,7 +1065,7 @@ void ExtruderGroup::update_ams()
if (i == 0) { if (i == 0) {
ams_not_installed_msg->Show(); ams_not_installed_msg->Show();
up_down_btn->Hide(); btn_up->Hide();
for (AMSPreview *a : ams) { for (AMSPreview *a : ams) {
a->Close(); a->Close();
} }
@@ -1059,12 +1073,15 @@ void ExtruderGroup::update_ams()
ams_not_installed_msg->Hide(); ams_not_installed_msg->Hide();
for (; i < 4; ++i) { ams[i]->Close(); } for (; i < 4; ++i) { ams[i]->Close(); }
if (display_capacity < 0) { if (display_capacity < 0) {
up_down_btn->Show(); btn_up->Show();
} else { } else {
up_down_btn->Hide(); btn_up->Hide();
} }
} }
btn_up->Show(page_cur > 0);
btn_down->Show(page_cur + 1 < page_num);
while (hsizer_ams->GetItemCount() > 2) while (hsizer_ams->GetItemCount() > 2)
hsizer_ams->Remove(2); hsizer_ams->Remove(2);
if (ams_not_installed_msg->IsShown()) { if (ams_not_installed_msg->IsShown()) {
@@ -1076,9 +1093,19 @@ void ExtruderGroup::update_ams()
if (ams[i]->IsShown()) if (ams[i]->IsShown())
hsizer_ams->Add(this->ams[i], 0, wxLEFT, FromDIP(4)); hsizer_ams->Add(this->ams[i], 0, wxLEFT, FromDIP(4));
} }
if (up_down_btn->IsShown()) { if (btn_up->IsShown() || btn_down->IsShown()) {
hsizer_ams->AddStretchSpacer(1); hsizer_ams->AddStretchSpacer(1);
hsizer_ams->Add(up_down_btn, 0, wxALIGN_CENTER); if (btn_up->IsShown() && btn_down->IsShown()) {
auto vsizer_btn = new wxBoxSizer(wxVERTICAL);
auto size = btn_up->GetSize();
vsizer_btn->Add(btn_up, 0);
vsizer_btn->Add(btn_down, 0);
hsizer_ams->Add(vsizer_btn, 0, wxALIGN_CENTER | wxLEFT, FromDIP(2));
} else if (btn_up->IsShown()) {
hsizer_ams->Add(btn_up, 0, wxALIGN_CENTER | wxLEFT, FromDIP(2));
} else {
hsizer_ams->Add(btn_down, 0, wxALIGN_CENTER | wxLEFT, FromDIP(2));
}
} }
sizer->Layout(); sizer->Layout();
@@ -1160,7 +1187,7 @@ void Sidebar::priv::update_sync_status(const MachineObject *obj)
auto clear_all_sync_status = [this]() { auto clear_all_sync_status = [this]() {
panel_printer_preset->ShowBadge(false); panel_printer_preset->ShowBadge(false);
panel_printer_bed->ShowBadge(false); panel_printer_bed->ShowBadge(false);
left_extruder->ShowBadge(false); //left_extruder->ShowBadge(false);
right_extruder->ShowBadge(false); right_extruder->ShowBadge(false);
single_extruder->ShowBadge(false); single_extruder->ShowBadge(false);
}; };
@@ -1413,6 +1440,9 @@ Sidebar::Sidebar(Plater *parent)
p->panel_printer_preset->SetCornerRadius(8); p->panel_printer_preset->SetCornerRadius(8);
p->panel_printer_preset->SetBorderColor(wxColour("#CECECE")); p->panel_printer_preset->SetBorderColor(wxColour("#CECECE"));
p->panel_printer_preset->SetMinSize(PRINTER_PANEL_SIZE_SMALL); p->panel_printer_preset->SetMinSize(PRINTER_PANEL_SIZE_SMALL);
p->panel_printer_preset->Bind(wxEVT_LEFT_DOWN, [this](auto & evt) {
p->combo_printer->wxEvtHandler::ProcessEvent(evt);
});
ScalableButton *edit_btn = new ScalableButton(p->panel_printer_preset, wxID_ANY, "dot"); ScalableButton *edit_btn = new ScalableButton(p->panel_printer_preset, wxID_ANY, "dot");
edit_btn->SetToolTip(_L("Click to edit preset")); edit_btn->SetToolTip(_L("Click to edit preset"));
@@ -1426,6 +1456,10 @@ Sidebar::Sidebar(Plater *parent)
ScalableBitmap bitmap_printer(p->panel_printer_preset, "printer_placeholder", 48); 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); p->image_printer = new wxStaticBitmap(p->panel_printer_preset, wxID_ANY, bitmap_printer.bmp(), wxDefaultPosition, 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); 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); combo_printer->SetBorderWidth(0);
@@ -1453,6 +1487,9 @@ Sidebar::Sidebar(Plater *parent)
p->panel_printer_bed->SetCornerRadius(8); p->panel_printer_bed->SetCornerRadius(8);
p->panel_printer_bed->SetBorderColor(wxColour("#CECECE")); p->panel_printer_bed->SetBorderColor(wxColour("#CECECE"));
p->panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE_SMALL); p->panel_printer_bed->SetMinSize(PRINTER_PANEL_SIZE_SMALL);
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, "dot"); ScalableButton *wiki_bed = new ScalableButton(p->panel_printer_bed, wxID_ANY, "dot");
wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) { wiki_bed->Bind(wxEVT_BUTTON, [](wxCommandEvent) {
@@ -1461,6 +1498,9 @@ Sidebar::Sidebar(Plater *parent)
ScalableBitmap bitmap_bed(p->panel_printer_bed, "printer_placeholder", 32); ScalableBitmap bitmap_bed(p->panel_printer_bed, "printer_placeholder", 32);
p->image_printer_bed = new wxStaticBitmap(p->panel_printer_bed, wxID_ANY, bitmap_bed.bmp(), wxDefaultPosition, wxDefaultSize, 0); 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->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 | wxALIGN_CENTER_HORIZONTAL);
p->combo_printer_bed->SetBorderWidth(0); p->combo_printer_bed->SetBorderWidth(0);

View File

@@ -192,7 +192,9 @@ void PresetComboBox::update_selection()
* there is no presets added to the list. * there is no presets added to the list.
* So, select last combobox item ("Add/Remove preset") * So, select last combobox item ("Add/Remove preset")
*/ */
validate_selection(); //validate_selection();
if (m_last_selected == INT_MAX)
m_last_selected == 1;
SetSelection(m_last_selected); SetSelection(m_last_selected);
#ifdef __WXMSW__ #ifdef __WXMSW__

View File

@@ -23,7 +23,7 @@ StaticBox::StaticBox()
{ {
border_color = StateColor( border_color = StateColor(
std::make_pair(0xF0F0F1, (int) StateColor::Disabled), std::make_pair(0xF0F0F1, (int) StateColor::Disabled),
std::make_pair(0x303A3C, (int) StateColor::Normal)); std::make_pair(0xCECECE, (int) StateColor::Normal));
} }
StaticBox::StaticBox(wxWindow* parent, StaticBox::StaticBox(wxWindow* parent,

View File

@@ -3,6 +3,8 @@
StaticGroup::StaticGroup(wxWindow *parent, wxWindowID id, const wxString &label) StaticGroup::StaticGroup(wxWindow *parent, wxWindowID id, const wxString &label)
: wxStaticBox(parent, id, label) : wxStaticBox(parent, id, label)
{ {
SetBackgroundColour(*wxWHITE);
SetForegroundColour("#CECECE");
#ifdef __WXMSW__ #ifdef __WXMSW__
Bind(wxEVT_PAINT, &StaticGroup::OnPaint, this); Bind(wxEVT_PAINT, &StaticGroup::OnPaint, this);
#else #else
@@ -30,4 +32,29 @@ void StaticGroup::OnPaint(wxPaintEvent &evt)
} }
} }
void StaticGroup::PaintForeground(wxDC &dc, const struct tagRECT &rc)
{
wxStaticBox::PaintForeground(dc, rc);
auto mdc = dynamic_cast<wxMemoryDC *>(&dc);
auto image = mdc->GetSelectedBitmap().ConvertToImage();
// Found border coords
int top = 0;
int left = 0;
int right = rc.right - 1;
int bottom = rc.bottom - 1;
auto blue = GetBackgroundColour().Blue();
while (image.GetBlue(0, top) == blue) ++top;
while (image.GetBlue(left, top) != blue) ++left; // --left; // fix start
while (image.GetBlue(right, top) != blue) --right; ++right;
while (image.GetBlue(0, bottom) == blue) --bottom;
// Draw border with foreground color
wxPoint polygon[] = { {left, top}, {0, top}, {0, bottom}, {rc.right - 1, bottom}, {rc.right - 1, top}, {right, top} };
dc.SetPen(wxPen(GetForegroundColour(), 1));
for (int i = 1; i < 6; ++i) {
if (i == 4) // fix bottom right corner
++polygon[i - 1].y;
dc.DrawLine(polygon[i - 1], polygon[i]);
}
}
#endif #endif

View File

@@ -16,6 +16,7 @@ public:
private: private:
#ifdef __WXMSW__ #ifdef __WXMSW__
void OnPaint(wxPaintEvent &evt); void OnPaint(wxPaintEvent &evt);
void PaintForeground(wxDC &dc, const struct tagRECT &rc) override;
#endif #endif
private: private: