mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-05-14 00:52:04 +00:00
Proper SpinInput code from yw4z
This commit is contained in:
@@ -811,57 +811,35 @@ wxBoxSizer* PreferencesDialog::create_item_draco(wxString title, wxString side_l
|
|||||||
checkbox->SetValue(app_config->get_bool("drc_lossy_switch"));
|
checkbox->SetValue(app_config->get_bool("drc_lossy_switch"));
|
||||||
checkbox->SetToolTip(tooltip);
|
checkbox->SetToolTip(tooltip);
|
||||||
|
|
||||||
checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, checkbox](wxCommandEvent& e) {
|
auto input = new ::SpinInput(m_parent, wxEmptyString, side_label, wxDefaultPosition, wxSize(FromDIP(97), -1), wxSP_ARROW_KEYS,
|
||||||
|
DRC_BITS_MIN, DRC_BITS_MAX);
|
||||||
|
input->SetValue(app_config->get("drc_bits"));
|
||||||
|
input->SetToolTip(tooltip);
|
||||||
|
input->Enable(app_config->get_bool("drc_lossy_switch"));
|
||||||
|
|
||||||
|
checkbox->Bind(wxEVT_TOGGLEBUTTON, [this, checkbox, input](wxCommandEvent& e) {
|
||||||
app_config->set_bool("drc_lossy_switch", checkbox->GetValue());
|
app_config->set_bool("drc_lossy_switch", checkbox->GetValue());
|
||||||
app_config->save();
|
app_config->save();
|
||||||
if (m_draco_bits_textinput != nullptr) {
|
input->Enable(checkbox->GetValue());
|
||||||
m_draco_bits_textinput->Enable(checkbox->GetValue());
|
|
||||||
}
|
|
||||||
e.Skip();
|
e.Skip();
|
||||||
});
|
});
|
||||||
|
|
||||||
auto input = new ::TextInput(m_parent, wxEmptyString, side_label, wxEmptyString, wxDefaultPosition, wxSize(FromDIP(97), -1), wxTE_PROCESS_ENTER);
|
input->Bind(wxEVT_SPINCTRL, [this, input](wxCommandEvent& e) {
|
||||||
StateColor input_bg(std::pair<wxColour, int>(wxColour("#F0F0F1"), StateColor::Disabled),
|
app_config->set("drc_bits", std::to_string(input->GetValue()));
|
||||||
std::pair<wxColour, int>(*wxWHITE, StateColor::Enabled));
|
app_config->save();
|
||||||
input->SetBackgroundColor(input_bg);
|
e.Skip();
|
||||||
input->GetTextCtrl()->SetValue(app_config->get("drc_bits"));
|
});
|
||||||
wxTextValidator validator(wxFILTER_DIGITS);
|
|
||||||
input->SetToolTip(tooltip);
|
input->Bind(wxEVT_KILL_FOCUS, [this](wxFocusEvent& e) {
|
||||||
input->GetTextCtrl()->SetValidator(validator);
|
e.SetId(GetId());
|
||||||
|
ProcessEventLocally(e);
|
||||||
|
e.Skip();
|
||||||
|
});
|
||||||
|
|
||||||
m_sizer_input->Add(checkbox_title, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, FromDIP(3));
|
m_sizer_input->Add(checkbox_title, 0, wxALIGN_CENTER | wxTOP | wxBOTTOM, FromDIP(3));
|
||||||
m_sizer_input->Add(checkbox, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(5));
|
m_sizer_input->Add(checkbox, 0, wxALIGN_CENTER | wxLEFT | wxRIGHT, FromDIP(5));
|
||||||
m_sizer_input->Add(input, 0, wxALIGN_CENTER_VERTICAL);
|
m_sizer_input->Add(input, 0, wxALIGN_CENTER_VERTICAL);
|
||||||
|
|
||||||
std::function<void()> set_draco_bits = [this, input]() {
|
|
||||||
long drc_bits = DRC_BITS_DEFAULT;
|
|
||||||
input->GetTextCtrl()->GetValue().ToLong(&drc_bits);
|
|
||||||
if (drc_bits > DRC_BITS_MAX) {
|
|
||||||
drc_bits = DRC_BITS_MAX;
|
|
||||||
input->GetTextCtrl()->SetValue(std::to_string(drc_bits));
|
|
||||||
} else if (drc_bits < DRC_BITS_MIN) {
|
|
||||||
drc_bits = DRC_BITS_MIN;
|
|
||||||
input->GetTextCtrl()->SetValue(std::to_string(drc_bits));
|
|
||||||
}
|
|
||||||
|
|
||||||
app_config->set("drc_bits", std::to_string(drc_bits));
|
|
||||||
app_config->save();
|
|
||||||
};
|
|
||||||
|
|
||||||
input->GetTextCtrl()->Bind(wxEVT_TEXT_ENTER, [set_draco_bits](wxCommandEvent& e) {
|
|
||||||
set_draco_bits();
|
|
||||||
e.Skip();
|
|
||||||
});
|
|
||||||
|
|
||||||
input->GetTextCtrl()->Bind(wxEVT_KILL_FOCUS, [set_draco_bits](wxFocusEvent& e) {
|
|
||||||
set_draco_bits();
|
|
||||||
e.Skip();
|
|
||||||
});
|
|
||||||
|
|
||||||
input->Enable(app_config->get("drc_lossy_switch") == "true");
|
|
||||||
input->Refresh();
|
|
||||||
|
|
||||||
m_draco_bits_textinput = input;
|
|
||||||
return m_sizer_input;
|
return m_sizer_input;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,6 @@ public:
|
|||||||
::CheckBox * m_internal_developer_mode_ckeckbox = {nullptr};
|
::CheckBox * m_internal_developer_mode_ckeckbox = {nullptr};
|
||||||
::CheckBox * m_dark_mode_ckeckbox = {nullptr};
|
::CheckBox * m_dark_mode_ckeckbox = {nullptr};
|
||||||
::TextInput *m_backup_interval_textinput = {nullptr};
|
::TextInput *m_backup_interval_textinput = {nullptr};
|
||||||
::TextInput *m_draco_bits_textinput = {nullptr};
|
|
||||||
::ComboBox * m_network_version_combo = {nullptr};
|
::ComboBox * m_network_version_combo = {nullptr};
|
||||||
wxBoxSizer * m_network_version_sizer = {nullptr};
|
wxBoxSizer * m_network_version_sizer = {nullptr};
|
||||||
std::vector<BBL::NetworkLibraryVersionInfo> m_available_versions;
|
std::vector<BBL::NetworkLibraryVersionInfo> m_available_versions;
|
||||||
|
|||||||
Reference in New Issue
Block a user