FIX:fixed ams materials setting can not get event on mac

Change-Id: I80b9a8fc5e86df4b4e83e8ffecaa373caf856286
This commit is contained in:
tao wang 2022-08-03 11:28:16 +08:00 committed by Lane.Wei
parent e8787a4c12
commit 60e9c608a3
3 changed files with 107 additions and 144 deletions

View file

@ -11,7 +11,9 @@ static bool show_flag;
#else #else
#define COMBOBOX_FILAMENT (m_comboBox_filament) #define COMBOBOX_FILAMENT (m_comboBox_filament)
#endif #endif
AMSMaterialsSetting::AMSMaterialsSetting(wxWindow *parent, wxWindowID id) : wxPopupTransientWindow(parent, wxPU_CONTAINS_CONTROLS) { AMSMaterialsSetting::AMSMaterialsSetting(wxWindow *parent, wxWindowID id)
: DPIDialog(parent, id, _L("AMSMaterialsSetting"), wxDefaultPosition, wxDefaultSize, wxBORDER_NONE)
{
create(); create();
} }
@ -19,13 +21,15 @@ void AMSMaterialsSetting::create()
{ {
SetBackgroundColour(*wxWHITE); SetBackgroundColour(*wxWHITE);
wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sizer_main = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *m_sizer_body = new wxBoxSizer(wxVERTICAL); SetSize(wxSize(AMS_MATERIALS_SETTING_BODY_WIDTH, -1));
SetMinSize(wxSize(AMS_MATERIALS_SETTING_BODY_WIDTH, -1));
SetMaxSize(wxSize(AMS_MATERIALS_SETTING_BODY_WIDTH, -1));
m_panel_body = new wxPanel(this, wxID_ANY, wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_BODY_WIDTH, -1), wxTAB_TRAVERSAL);
m_panel_body->SetBackgroundColour(*wxWHITE);
wxBoxSizer *m_sizer_filament = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_filament = new wxBoxSizer(wxHORIZONTAL);
m_title_filament = new wxStaticText(m_panel_body, wxID_ANY, _L("Filament"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0); m_title_filament = new wxStaticText(this, wxID_ANY, _L("Filament"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
m_title_filament->SetFont(::Label::Body_13); m_title_filament->SetFont(::Label::Body_13);
m_title_filament->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800); m_title_filament->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
m_title_filament->Wrap(-1); m_title_filament->Wrap(-1);
@ -34,15 +38,15 @@ void AMSMaterialsSetting::create()
m_sizer_filament->Add(0, 0, 0, wxEXPAND, 0); m_sizer_filament->Add(0, 0, 0, wxEXPAND, 0);
#ifdef __APPLE__ #ifdef __APPLE__
m_comboBox_filament_mac = new wxComboBox(m_panel_body, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY); m_comboBox_filament_mac = new wxComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY);
#else #else
m_comboBox_filament = new ::ComboBox(m_panel_body, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY); m_comboBox_filament = new ::ComboBox(this, wxID_ANY, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_COMBOX_WIDTH, 0, nullptr, wxCB_READONLY);
#endif #endif
m_sizer_filament->Add(COMBOBOX_FILAMENT, 1, wxALIGN_CENTER, 0); m_sizer_filament->Add(COMBOBOX_FILAMENT, 1, wxALIGN_CENTER, 0);
wxBoxSizer *m_sizer_colour = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_colour = new wxBoxSizer(wxHORIZONTAL);
m_title_colour = new wxStaticText(m_panel_body, wxID_ANY, _L("Colour"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0); m_title_colour = new wxStaticText(this, wxID_ANY, _L("Colour"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
m_title_colour->SetFont(::Label::Body_13); m_title_colour->SetFont(::Label::Body_13);
m_title_colour->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800); m_title_colour->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
m_title_colour->Wrap(-1); m_title_colour->Wrap(-1);
@ -53,21 +57,18 @@ void AMSMaterialsSetting::create()
m_clrData = new wxColourData(); m_clrData = new wxColourData();
m_clrData->SetChooseFull(true); m_clrData->SetChooseFull(true);
m_clrData->SetChooseAlpha(false); m_clrData->SetChooseAlpha(false);
#ifdef __APPLE__
m_clr_picker = new wxButton(m_panel_body, wxID_ANY, "", wxDefaultPosition, wxSize(FromDIP(25), FromDIP(25)), wxBU_EXACTFIT | wxBORDER_NONE); m_clr_picker = new Button(this, "", "");
#else
m_clr_picker = new Button(m_panel_body, "", "");
m_clr_picker->SetCanFocus(false); m_clr_picker->SetCanFocus(false);
m_clr_picker->SetSize(FromDIP(80), FromDIP(20)); m_clr_picker->SetSize(FromDIP(50), FromDIP(25));
m_clr_picker->SetMinSize(wxSize(FromDIP(25), FromDIP(25))); m_clr_picker->SetMinSize(wxSize(FromDIP(50), FromDIP(25)));
m_clr_picker->SetCornerRadius(FromDIP(6)); m_clr_picker->SetCornerRadius(FromDIP(6));
m_clr_picker->SetBorderColor(wxColour(172, 172, 172)); m_clr_picker->SetBorderColor(wxColour(172, 172, 172));
#endif
m_clr_picker->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_clr_picker, this); m_clr_picker->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_clr_picker, this);
m_sizer_colour->Add(m_clr_picker, 0, 0, 0); m_sizer_colour->Add(m_clr_picker, 0, 0, 0);
wxBoxSizer *m_sizer_temperature = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_temperature = new wxBoxSizer(wxHORIZONTAL);
m_title_temperature = new wxStaticText(m_panel_body, wxID_ANY, _L("Nozzle\nTemperature"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0); m_title_temperature = new wxStaticText(this, wxID_ANY, _L("Nozzle\nTemperature"), wxDefaultPosition, wxSize(AMS_MATERIALS_SETTING_LABEL_WIDTH, -1), 0);
m_title_temperature->SetFont(::Label::Body_13); m_title_temperature->SetFont(::Label::Body_13);
m_title_temperature->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800); m_title_temperature->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
m_title_temperature->Wrap(-1); m_title_temperature->Wrap(-1);
@ -78,8 +79,8 @@ void AMSMaterialsSetting::create()
wxBoxSizer *sizer_other = new wxBoxSizer(wxVERTICAL); wxBoxSizer *sizer_other = new wxBoxSizer(wxVERTICAL);
wxBoxSizer *sizer_tempinput = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer_tempinput = new wxBoxSizer(wxHORIZONTAL);
m_input_nozzle_max = new ::TextInput(m_panel_body, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER); m_input_nozzle_max = new ::TextInput(this, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER);
m_input_nozzle_min = new ::TextInput(m_panel_body, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER); m_input_nozzle_min = new ::TextInput(this, wxEmptyString, wxEmptyString, wxEmptyString, wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE, wxTE_CENTRE | wxTE_PROCESS_ENTER);
m_input_nozzle_max->Enable(false); m_input_nozzle_max->Enable(false);
m_input_nozzle_min->Enable(false); m_input_nozzle_min->Enable(false);
@ -88,8 +89,8 @@ void AMSMaterialsSetting::create()
m_input_nozzle_min->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC)); m_input_nozzle_min->GetTextCtrl()->SetValidator(wxTextValidator(wxFILTER_NUMERIC));
m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
auto bitmap_max_degree = new wxStaticBitmap(m_panel_body, -1, create_scaled_bitmap("degree", nullptr, 16), wxDefaultPosition, wxDefaultSize); auto bitmap_max_degree = new wxStaticBitmap(this, -1, create_scaled_bitmap("degree", nullptr, 16), wxDefaultPosition, wxDefaultSize);
auto bitmap_min_degree = new wxStaticBitmap(m_panel_body, -1, create_scaled_bitmap("degree", nullptr, 16), wxDefaultPosition, wxDefaultSize); auto bitmap_min_degree = new wxStaticBitmap(this, -1, create_scaled_bitmap("degree", nullptr, 16), wxDefaultPosition, wxDefaultSize);
sizer_tempinput->Add(m_input_nozzle_max, 1, wxALIGN_CENTER, 0); sizer_tempinput->Add(m_input_nozzle_max, 1, wxALIGN_CENTER, 0);
sizer_tempinput->Add(bitmap_min_degree, 0, wxALIGN_CENTER, 0); sizer_tempinput->Add(bitmap_min_degree, 0, wxALIGN_CENTER, 0);
@ -98,10 +99,10 @@ void AMSMaterialsSetting::create()
sizer_tempinput->Add(bitmap_max_degree, 0, wxALIGN_CENTER, 0); sizer_tempinput->Add(bitmap_max_degree, 0, wxALIGN_CENTER, 0);
wxBoxSizer *sizer_temp_txt = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *sizer_temp_txt = new wxBoxSizer(wxHORIZONTAL);
auto m_title_max = new wxStaticText(m_panel_body, wxID_ANY, _L("max"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE); auto m_title_max = new wxStaticText(this, wxID_ANY, _L("max"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE);
m_title_max->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800); m_title_max->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
m_title_max->SetFont(::Label::Body_13); m_title_max->SetFont(::Label::Body_13);
auto m_title_min = new wxStaticText(m_panel_body, wxID_ANY, _L("min"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE); auto m_title_min = new wxStaticText(this, wxID_ANY, _L("min"), wxDefaultPosition, AMS_MATERIALS_SETTING_INPUT_SIZE);
m_title_min->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800); m_title_min->SetForegroundColour(AMS_MATERIALS_SETTING_GREY800);
m_title_min->SetFont(::Label::Body_13); m_title_min->SetFont(::Label::Body_13);
sizer_temp_txt->Add(m_title_max, 1, wxALIGN_CENTER, 0); sizer_temp_txt->Add(m_title_max, 1, wxALIGN_CENTER, 0);
@ -117,7 +118,7 @@ void AMSMaterialsSetting::create()
wxString warning_string = wxString::FromUTF8( wxString warning_string = wxString::FromUTF8(
(boost::format(_u8L("The input value should be greater than %1% and less than %2%")) % FILAMENT_MIN_TEMP % FILAMENT_MAX_TEMP).str()); (boost::format(_u8L("The input value should be greater than %1% and less than %2%")) % FILAMENT_MIN_TEMP % FILAMENT_MAX_TEMP).str());
warning_text = new wxStaticText(m_panel_body, wxID_ANY, warning_string, wxDefaultPosition, wxDefaultSize, 0); warning_text = new wxStaticText(this, wxID_ANY, warning_string, wxDefaultPosition, wxDefaultSize, 0);
warning_text->SetFont(::Label::Body_13); warning_text->SetFont(::Label::Body_13);
warning_text->SetForegroundColour(wxColour(255, 111, 0)); warning_text->SetForegroundColour(wxColour(255, 111, 0));
@ -155,7 +156,7 @@ void AMSMaterialsSetting::create()
e.Skip(); e.Skip();
}); });
m_panel_SN = new wxPanel(m_panel_body, wxID_ANY); m_panel_SN = new wxPanel(this, wxID_ANY);
wxBoxSizer *m_sizer_SN = new wxBoxSizer(wxVERTICAL); wxBoxSizer *m_sizer_SN = new wxBoxSizer(wxVERTICAL);
m_sizer_SN->AddSpacer(FromDIP(16)); m_sizer_SN->AddSpacer(FromDIP(16));
@ -180,42 +181,46 @@ void AMSMaterialsSetting::create()
wxBoxSizer *m_sizer_button = new wxBoxSizer(wxHORIZONTAL); wxBoxSizer *m_sizer_button = new wxBoxSizer(wxHORIZONTAL);
m_sizer_button->Add(0, 0, 1, wxEXPAND, 0); m_sizer_button->Add(0, 0, 1, wxEXPAND, 0);
m_button_confirm = new Button(m_panel_body, _L("Confirm")); m_button_confirm = new Button(this, _L("Confirm"));
m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered), m_btn_bg_green = StateColor(std::pair<wxColour, int>(wxColour(27, 136, 68), StateColor::Pressed), std::pair<wxColour, int>(wxColour(61, 203, 115), StateColor::Hovered),
std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal)); std::pair<wxColour, int>(wxColour(0, 174, 66), StateColor::Normal));
m_button_confirm->SetBackgroundColor(m_btn_bg_green); m_button_confirm->SetBackgroundColor(m_btn_bg_green);
m_button_confirm->SetBorderColor(wxColour(0, 174, 66)); m_button_confirm->SetBorderColor(wxColour(0, 174, 66));
m_button_confirm->SetTextColor(AMS_MATERIALS_SETTING_GREY200); m_button_confirm->SetTextColor(AMS_MATERIALS_SETTING_GREY200);
m_button_confirm->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE); m_button_confirm->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE);
#ifdef __APPLE__
m_button_confirm->SetCornerRadius(FromDIP(10));
#else
m_button_confirm->SetCornerRadius(FromDIP(12)); m_button_confirm->SetCornerRadius(FromDIP(12));
#endif m_button_confirm->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_select_ok, this);
m_button_confirm->Bind(wxEVT_LEFT_DOWN, &AMSMaterialsSetting::on_select_ok, this);
m_sizer_button->Add(m_button_confirm, 0, wxALIGN_CENTER, 0);
m_sizer_body->Add(m_sizer_filament, 0, wxEXPAND, 0); m_button_close = new Button(this, _L("Close"));
m_sizer_body->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(16)); m_btn_bg_gray = StateColor(std::pair<wxColour, int>(wxColour(206, 206, 206), StateColor::Pressed), std::pair<wxColour, int>(*wxWHITE, StateColor::Focused),
m_sizer_body->Add(m_sizer_colour, 0, wxEXPAND, 0); std::pair<wxColour, int>(wxColour(238, 238, 238), StateColor::Hovered),
m_sizer_body->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(16)); std::pair<wxColour, int>(*wxWHITE, StateColor::Normal));
m_sizer_body->Add(m_sizer_temperature, 0, wxEXPAND, 0); m_button_close->SetBackgroundColor(m_btn_bg_gray);
m_sizer_body->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(5)); m_button_close->SetBorderColor(AMS_MATERIALS_SETTING_GREY900);
m_sizer_body->Add(warning_text, 0, wxEXPAND, 0); m_button_close->SetTextColor(AMS_MATERIALS_SETTING_GREY900);
m_sizer_body->Add(m_panel_SN, 0, wxEXPAND, 0); m_button_close->SetMinSize(AMS_MATERIALS_SETTING_BUTTON_SIZE);
m_sizer_body->Add(0, 0, 0, wxEXPAND | wxTOP, FromDIP(24)); m_button_close->SetCornerRadius(FromDIP(12));
m_sizer_body->Add(m_sizer_button, 0, wxEXPAND, 0); m_button_close->Bind(wxEVT_BUTTON, &AMSMaterialsSetting::on_select_close, this);
m_panel_body->SetSizer(m_sizer_body); m_sizer_button->Add(m_button_confirm, 0, wxALIGN_CENTER | wxRIGHT, FromDIP(20));
m_panel_body->Layout(); m_sizer_button->Add(m_button_close, 0, wxALIGN_CENTER, 0);
m_sizer_main->Add(m_panel_body, 0, wxALL | wxEXPAND, 24);
this->SetSizer(m_sizer_main); m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
this->Layout(); m_sizer_main->Add(m_sizer_filament, 0, wxLEFT | wxRIGHT, FromDIP(20));
m_sizer_main->Fit(this); m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
m_sizer_main->Add(m_sizer_colour, 0, wxLEFT | wxRIGHT, FromDIP(20));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
m_sizer_main->Add(m_sizer_temperature, 0, wxLEFT | wxRIGHT, FromDIP(20));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(5));
m_sizer_main->Add(warning_text, 0, wxLEFT | wxRIGHT, FromDIP(20));
m_sizer_main->Add(m_panel_SN, 0, wxLEFT, FromDIP(20));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(24));
m_sizer_main->Add(m_sizer_button, 0, wxEXPAND | wxLEFT | wxRIGHT, FromDIP(20));
m_sizer_main->Add(0, 0, 0, wxTOP, FromDIP(16));
this->Centre(wxBOTH); SetSizer(m_sizer_main);
Layout();
Fit();
Bind(wxEVT_PAINT, &AMSMaterialsSetting::paintEvent, this); Bind(wxEVT_PAINT, &AMSMaterialsSetting::paintEvent, this);
COMBOBOX_FILAMENT->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this); COMBOBOX_FILAMENT->Connect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this);
@ -235,7 +240,6 @@ AMSMaterialsSetting::~AMSMaterialsSetting()
COMBOBOX_FILAMENT->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this); COMBOBOX_FILAMENT->Disconnect(wxEVT_COMMAND_COMBOBOX_SELECTED, wxCommandEventHandler(AMSMaterialsSetting::on_select_filament), NULL, this);
} }
void AMSMaterialsSetting::input_min_finish() void AMSMaterialsSetting::input_min_finish()
{ {
if (m_input_nozzle_min->GetTextCtrl()->GetValue().empty()) return; if (m_input_nozzle_min->GetTextCtrl()->GetValue().empty()) return;
@ -280,25 +284,27 @@ void AMSMaterialsSetting::update()
void AMSMaterialsSetting::enable_confirm_button(bool en) void AMSMaterialsSetting::enable_confirm_button(bool en)
{ {
if (!en) { if (m_is_third) m_button_confirm->Show(en);
if (m_button_confirm->IsEnabled()) {
m_button_confirm->Disable(); //if (!en) {
m_button_confirm->SetBackgroundColor(wxColour(0x90, 0x90, 0x90)); // if (m_button_confirm->IsEnabled()) {
m_button_confirm->SetBorderColor(wxColour(0x90, 0x90, 0x90)); // m_button_confirm->Disable();
} // m_button_confirm->SetBackgroundColor(wxColour(0x90, 0x90, 0x90));
} else { // m_button_confirm->SetBorderColor(wxColour(0x90, 0x90, 0x90));
if (!m_button_confirm->IsEnabled()) { // }
m_button_confirm->Enable(); //} else {
m_button_confirm->SetBackgroundColor(m_btn_bg_green); // if (!m_button_confirm->IsEnabled()) {
m_button_confirm->SetBorderColor(m_btn_bg_green); // m_button_confirm->Enable();
} // m_button_confirm->SetBackgroundColor(m_btn_bg_green);
} // m_button_confirm->SetBorderColor(m_btn_bg_green);
// }
//}
} }
void AMSMaterialsSetting::on_select_ok(wxMouseEvent &event) void AMSMaterialsSetting::on_select_ok(wxCommandEvent &event)
{ {
if (!m_is_third) { if (!m_is_third) {
wxPopupTransientWindow::Dismiss(); Close();
return; return;
} }
wxString nozzle_temp_min = m_input_nozzle_min->GetTextCtrl()->GetValue(); wxString nozzle_temp_min = m_input_nozzle_min->GetTextCtrl()->GetValue();
@ -330,7 +336,12 @@ void AMSMaterialsSetting::on_select_ok(wxMouseEvent &event)
obj->command_ams_filament_settings(ams_id, tray_id, ams_filament_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int); obj->command_ams_filament_settings(ams_id, tray_id, ams_filament_id, std::string(col_buf), m_filament_type, nozzle_temp_min_int, nozzle_temp_max_int);
} }
} }
wxPopupTransientWindow::Dismiss(); Close();
}
void AMSMaterialsSetting::on_select_close(wxCommandEvent &event)
{
Close();
} }
void AMSMaterialsSetting::set_color(wxColour color) void AMSMaterialsSetting::set_color(wxColour color)
@ -346,31 +357,7 @@ void AMSMaterialsSetting::on_clr_picker(wxCommandEvent & event)
show_flag = true; show_flag = true;
if (clr_dialog->ShowModal() == wxID_OK) { if (clr_dialog->ShowModal() == wxID_OK) {
m_clrData = &(clr_dialog->GetColourData()); m_clrData = &(clr_dialog->GetColourData());
#ifdef __APPLE__
m_clr_picker->SetBackgroundColour(m_clrData->GetColour());
auto style = m_clr_picker->GetWindowStyle() & ~(wxBORDER_NONE | wxBORDER_SIMPLE);
auto clr = m_clrData->GetColour();
style = clr.Red() > 224 && clr.Blue() > 224 && clr.Green() > 224 ? (style | wxBORDER_SIMPLE) : (style | wxBORDER_NONE);
m_clr_picker->SetWindowStyle(style);
m_clr_picker->SetLabel(m_clr_picker->GetLabel()); // Let setBezelStyle: be called
#else
m_clr_picker->SetBackgroundColor(m_clrData->GetColour()); m_clr_picker->SetBackgroundColor(m_clrData->GetColour());
#endif
}
}
void AMSMaterialsSetting::Dismiss()
{
if (show_flag)
{
show_flag = false;
} else
{
#ifdef __APPLE__
#else
wxPopupTransientWindow::Dismiss();
#endif
} }
} }
@ -381,37 +368,36 @@ bool AMSMaterialsSetting::Show(bool show)
m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_max->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20))); m_input_nozzle_min->GetTextCtrl()->SetSize(wxSize(-1, FromDIP(20)));
} }
return wxPopupTransientWindow::Show(show); return DPIDialog::Show(show);
} }
void AMSMaterialsSetting::Popup(bool show, wxString filament, wxString sn, wxString temp_min, wxString temp_max) void AMSMaterialsSetting::Popup(wxString filament, wxString sn, wxString temp_min, wxString temp_max)
{ {
#ifdef __APPLE__
m_clr_picker->SetBackgroundColour(m_clrData->GetColour());
#else
m_clr_picker->SetBackgroundColor(m_clrData->GetColour()); m_clr_picker->SetBackgroundColor(m_clrData->GetColour());
#endif
if (!m_is_third) { if (!m_is_third) {
m_button_confirm->Hide();
m_sn_number->SetLabel(sn); m_sn_number->SetLabel(sn);
m_panel_SN->Show(); m_panel_SN->Show();
#ifdef __APPLE__ #ifdef __APPLE__
wxArrayString filament_only; wxArrayString filament_only;
filament_only.push_back(filament); filament_only.push_back(filament);
COMBOBOX_FILAMENT->Set(filament_only); COMBOBOX_FILAMENT->Set(filament_only);
#endif #else
COMBOBOX_FILAMENT->Set(wxArrayString()); COMBOBOX_FILAMENT->Set(wxArrayString());
#endif
COMBOBOX_FILAMENT->SetValue(filament); COMBOBOX_FILAMENT->SetValue(filament);
m_input_nozzle_min->GetTextCtrl()->SetValue(temp_min); m_input_nozzle_min->GetTextCtrl()->SetValue(temp_min);
m_input_nozzle_max->GetTextCtrl()->SetValue(temp_max); m_input_nozzle_max->GetTextCtrl()->SetValue(temp_max);
wxPopupTransientWindow::Popup();
Layout(); Layout();
Fit(); Fit();
ShowModal();
return; return;
} }
m_button_confirm->Show();
m_panel_SN->Hide(); m_panel_SN->Hide();
Layout(); Layout();
Fit(); Fit();
@ -421,7 +407,6 @@ void AMSMaterialsSetting::Popup(bool show, wxString filament, wxString sn, wxStr
wxArrayString filament_items; wxArrayString filament_items;
std::set<std::string> filament_id_set; std::set<std::string> filament_id_set;
if (show) {
PresetBundle* preset_bundle = wxGetApp().preset_bundle; PresetBundle* preset_bundle = wxGetApp().preset_bundle;
if (preset_bundle) { if (preset_bundle) {
BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size(); BOOST_LOG_TRIVIAL(trace) << "system_preset_bundle filament number=" << preset_bundle->filaments.size();
@ -478,18 +463,11 @@ void AMSMaterialsSetting::Popup(bool show, wxString filament, wxString sn, wxStr
} }
} }
} }
}
COMBOBOX_FILAMENT->Set(filament_items); COMBOBOX_FILAMENT->Set(filament_items);
if (selection_idx >= 0 && selection_idx < filament_items.size()) { COMBOBOX_FILAMENT->SetSelection(selection_idx);
COMBOBOX_FILAMENT->SetSelection(selection_idx); post_select_event();
post_select_event();
}
else {
COMBOBOX_FILAMENT->SetSelection(selection_idx);
post_select_event();
}
} }
wxPopupTransientWindow::Popup(); ShowModal();
} }
void AMSMaterialsSetting::post_select_event() { void AMSMaterialsSetting::post_select_event() {
@ -546,18 +524,6 @@ void AMSMaterialsSetting::on_select_filament(wxCommandEvent &evt)
} }
} }
bool AMSMaterialsSetting::ProcessLeftDown(wxMouseEvent &evt) void AMSMaterialsSetting::on_dpi_changed(const wxRect &suggested_rect) { this->Refresh(); }
{
wxPoint mouse_pos = ClientToScreen(evt.GetPosition());
wxPoint top_left = this->ClientToScreen(wxPoint(0, 0));
wxPoint range = wxPoint(this->GetRect().width, this->GetRect().height);
wxPoint bottom_right = top_left + range;
if (mouse_pos.x > top_left.x && mouse_pos.y > top_left.y && mouse_pos.x < bottom_right.x && mouse_pos.y < bottom_right.y) {
return true;
} else {
wxPopupTransientWindow::Dismiss();
return false;
}
}
}} // namespace Slic3r::GUI }} // namespace Slic3r::GUI

View file

@ -15,11 +15,12 @@
#include "Widgets/TextInput.hpp" #include "Widgets/TextInput.hpp"
#define AMS_MATERIALS_SETTING_DEF_COLOUR wxColour(255, 255, 255) #define AMS_MATERIALS_SETTING_DEF_COLOUR wxColour(255, 255, 255)
#define AMS_MATERIALS_SETTING_GREY900 wxColour(38, 46, 48)
#define AMS_MATERIALS_SETTING_GREY800 wxColour(50, 58, 61) #define AMS_MATERIALS_SETTING_GREY800 wxColour(50, 58, 61)
#define AMS_MATERIALS_SETTING_GREY700 wxColour(107, 107, 107) #define AMS_MATERIALS_SETTING_GREY700 wxColour(107, 107, 107)
#define AMS_MATERIALS_SETTING_GREY300 wxColour(174,174,174) #define AMS_MATERIALS_SETTING_GREY300 wxColour(174,174,174)
#define AMS_MATERIALS_SETTING_GREY200 wxColour(248, 248, 248) #define AMS_MATERIALS_SETTING_GREY200 wxColour(248, 248, 248)
#define AMS_MATERIALS_SETTING_BODY_WIDTH FromDIP(350) #define AMS_MATERIALS_SETTING_BODY_WIDTH FromDIP(380)
#define AMS_MATERIALS_SETTING_LABEL_WIDTH FromDIP(80) #define AMS_MATERIALS_SETTING_LABEL_WIDTH FromDIP(80)
#define AMS_MATERIALS_SETTING_COMBOX_WIDTH wxSize(FromDIP(250), FromDIP(30)) #define AMS_MATERIALS_SETTING_COMBOX_WIDTH wxSize(FromDIP(250), FromDIP(30))
#define AMS_MATERIALS_SETTING_BUTTON_SIZE wxSize(FromDIP(90), FromDIP(24)) #define AMS_MATERIALS_SETTING_BUTTON_SIZE wxSize(FromDIP(90), FromDIP(24))
@ -27,7 +28,7 @@
namespace Slic3r { namespace GUI { namespace Slic3r { namespace GUI {
class AMSMaterialsSetting : public wxPopupTransientWindow class AMSMaterialsSetting : public DPIDialog
{ {
public: public:
AMSMaterialsSetting(wxWindow *parent, wxWindowID id); AMSMaterialsSetting(wxWindow *parent, wxWindowID id);
@ -39,17 +40,13 @@ public:
void input_max_finish(); void input_max_finish();
void update(); void update();
void enable_confirm_button(bool en); void enable_confirm_button(bool en);
void Dismiss() override;
bool Show(bool show) override; bool Show(bool show) override;
void Popup(bool show, wxString filament = wxEmptyString, wxString sn = wxEmptyString, wxString temp_min = wxEmptyString, wxString temp_max = wxEmptyString); void Popup(wxString filament = wxEmptyString, wxString sn = wxEmptyString, wxString temp_min = wxEmptyString, wxString temp_max = wxEmptyString);
void post_select_event(); void post_select_event();
void on_select_ok(wxMouseEvent &event);
void set_color(wxColour color); void set_color(wxColour color);
void on_clr_picker(wxCommandEvent &event);
MachineObject *obj{nullptr}; MachineObject *obj{nullptr};
int ams_id { 0 }; /* 0 ~ 3 */ int ams_id { 0 }; /* 0 ~ 3 */
int tray_id { 0 }; /* 0 ~ 3 */ int tray_id { 0 }; /* 0 ~ 3 */
@ -64,35 +61,35 @@ public:
std::string m_filament_type; std::string m_filament_type;
protected: protected:
//void on_dpi_changed(const wxRect &suggested_rect) override; void on_dpi_changed(const wxRect &suggested_rect) override;
void on_select_filament(wxCommandEvent& evt); void on_select_filament(wxCommandEvent& evt);
void on_select_ok(wxCommandEvent &event);
bool ProcessLeftDown(wxMouseEvent &evt); void on_select_close(wxCommandEvent &event);
void on_clr_picker(wxCommandEvent &event);
protected: protected:
StateColor m_btn_bg_green; StateColor m_btn_bg_green;
StateColor m_btn_bg_gray;
wxPanel * m_panel_SN; wxPanel * m_panel_SN;
wxStaticText * m_sn_number; wxStaticText * m_sn_number;
wxStaticText * warning_text; wxStaticText * warning_text;
wxPanel * m_panel_body; //wxPanel * m_panel_body;
wxStaticText * m_title_filament; wxStaticText * m_title_filament;
ComboBox * m_comboBox_filament;
wxStaticText * m_title_colour; wxStaticText * m_title_colour;
#ifdef __APPLE__
wxButton * m_clr_picker;
#else
Button * m_clr_picker;
#endif
wxStaticText * m_title_temperature; wxStaticText * m_title_temperature;
wxStaticText * m_label_other; wxStaticText * m_label_other;
TextInput * m_input_nozzle_min; TextInput * m_input_nozzle_min;
TextInput* m_input_nozzle_max; TextInput* m_input_nozzle_max;
Button * m_button_confirm; Button * m_button_confirm;
#ifdef __APPLE__ Button * m_button_close;
wxComboBox *m_comboBox_filament_mac; Button * m_clr_picker;
#endif
wxColourData * m_clrData; wxColourData * m_clrData;
#ifdef __APPLE__
wxComboBox *m_comboBox_filament_mac;
#else
ComboBox *m_comboBox_filament;
#endif
}; };
}} // namespace Slic3r::GUI }} // namespace Slic3r::GUI

View file

@ -1917,8 +1917,8 @@ void StatusPanel::on_filament_edit(wxCommandEvent &event)
} }
} }
} }
m_filament_setting_dlg->Popup(true, filament, sn_number, temp_min, temp_max);
m_filament_setting_dlg->SetPosition(m_ams_control->GetScreenPosition()); m_filament_setting_dlg->SetPosition(m_ams_control->GetScreenPosition());
m_filament_setting_dlg->Popup(filament, sn_number, temp_min, temp_max);
} catch (...) { } catch (...) {
; ;
} }