Add "Revert" buttons for text colors Settings
This commit is contained in:
parent
120be3a76d
commit
a3f995ac45
5 changed files with 70 additions and 69 deletions
|
@ -12,6 +12,46 @@
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
|
||||||
|
void ButtonsDescription::FillSizerWithTextColorDescriptions(wxSizer* sizer, wxWindow* parent, wxColourPickerCtrl** sys_colour, wxColourPickerCtrl** mod_colour)
|
||||||
|
{
|
||||||
|
wxFlexGridSizer* grid_sizer = new wxFlexGridSizer(3, 5, 5);
|
||||||
|
sizer->Add(grid_sizer, 0, wxEXPAND);
|
||||||
|
|
||||||
|
ScalableBitmap bmp_delete = ScalableBitmap(parent, "cross");
|
||||||
|
ScalableBitmap bmp_delete_focus = ScalableBitmap(parent, "cross_focus");
|
||||||
|
|
||||||
|
auto add_color = [grid_sizer, parent](wxColourPickerCtrl** color_picker, const wxColour& color, const wxColour& def_color, wxString label_text) {
|
||||||
|
//
|
||||||
|
auto sys_label = new wxStaticText(parent, wxID_ANY, label_text);
|
||||||
|
sys_label->SetForegroundColour(color);
|
||||||
|
|
||||||
|
*color_picker = new wxColourPickerCtrl(parent, wxID_ANY, color);
|
||||||
|
wxGetApp().UpdateDarkUI((*color_picker)->GetPickerCtrl(), true);
|
||||||
|
(*color_picker)->Bind(wxEVT_COLOURPICKER_CHANGED, [color_picker, sys_label](wxCommandEvent&) {
|
||||||
|
sys_label->SetForegroundColour((*color_picker)->GetColour());
|
||||||
|
sys_label->Refresh();
|
||||||
|
});
|
||||||
|
|
||||||
|
auto btn = new ScalableButton(parent, wxID_ANY, "undo");
|
||||||
|
btn->SetToolTip(_L("Revert color to default"));
|
||||||
|
btn->Bind(wxEVT_BUTTON, [sys_label, color_picker, def_color](wxEvent& event) {
|
||||||
|
(*color_picker)->SetColour(def_color);
|
||||||
|
sys_label->SetForegroundColour(def_color);
|
||||||
|
sys_label->Refresh();
|
||||||
|
});
|
||||||
|
parent->Bind(wxEVT_UPDATE_UI, [color_picker, def_color](wxUpdateUIEvent& evt) {
|
||||||
|
evt.Enable((*color_picker)->GetColour() != def_color);
|
||||||
|
}, btn->GetId());
|
||||||
|
|
||||||
|
grid_sizer->Add(*color_picker, 0, wxALIGN_CENTRE_VERTICAL);
|
||||||
|
grid_sizer->Add(btn, 0, wxALIGN_CENTRE_VERTICAL);
|
||||||
|
grid_sizer->Add(sys_label, 0, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
||||||
|
};
|
||||||
|
|
||||||
|
add_color(sys_colour, wxGetApp().get_label_clr_sys(), wxGetApp().get_label_default_clr_system(), _L("Value is the same as the system value"));
|
||||||
|
add_color(mod_colour, wxGetApp().get_label_clr_modified(),wxGetApp().get_label_default_clr_modified(), _L("Value was changed and is not equal to the system value or the last saved preset"));
|
||||||
|
}
|
||||||
|
|
||||||
ButtonsDescription::ButtonsDescription(wxWindow* parent, const std::vector<Entry> &entries) :
|
ButtonsDescription::ButtonsDescription(wxWindow* parent, const std::vector<Entry> &entries) :
|
||||||
wxDialog(parent, wxID_ANY, _(L("Buttons And Text Colors Description")), wxDefaultPosition, wxDefaultSize),
|
wxDialog(parent, wxID_ANY, _(L("Buttons And Text Colors Description")), wxDefaultPosition, wxDefaultSize),
|
||||||
m_entries(entries)
|
m_entries(entries)
|
||||||
|
@ -35,50 +75,23 @@ ButtonsDescription::ButtonsDescription(wxWindow* parent, const std::vector<Entry
|
||||||
}
|
}
|
||||||
|
|
||||||
// Text color description
|
// Text color description
|
||||||
auto sys_label = new wxStaticText(this, wxID_ANY, _(L("Value is the same as the system value")));
|
wxSizer* sizer = new wxBoxSizer(wxVERTICAL);
|
||||||
sys_label->SetForegroundColour(wxGetApp().get_label_clr_sys());
|
FillSizerWithTextColorDescriptions(sizer, this, &sys_colour, &mod_colour);
|
||||||
auto sys_colour = new wxColourPickerCtrl(this, wxID_ANY, wxGetApp().get_label_clr_sys());
|
main_sizer->Add(sizer, 0, wxEXPAND | wxALL, 20);
|
||||||
wxGetApp().UpdateDarkUI(sys_colour->GetPickerCtrl(), true);
|
|
||||||
sys_colour->Bind(wxEVT_COLOURPICKER_CHANGED, ([sys_colour, sys_label](wxCommandEvent e)
|
|
||||||
{
|
|
||||||
sys_label->SetForegroundColour(sys_colour->GetColour());
|
|
||||||
sys_label->Refresh();
|
|
||||||
}));
|
|
||||||
size_t t= 0;
|
|
||||||
while (t < 3) {
|
|
||||||
grid_sizer->Add(new wxStaticText(this, wxID_ANY, ""), -1, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
|
||||||
++t;
|
|
||||||
}
|
|
||||||
grid_sizer->Add(0, -1, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(sys_colour, -1, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(sys_label, -1, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
|
||||||
|
|
||||||
auto mod_label = new wxStaticText(this, wxID_ANY, _(L("Value was changed and is not equal to the system value or the last saved preset")));
|
|
||||||
mod_label->SetForegroundColour(wxGetApp().get_label_clr_modified());
|
|
||||||
auto mod_colour = new wxColourPickerCtrl(this, wxID_ANY, wxGetApp().get_label_clr_modified());
|
|
||||||
wxGetApp().UpdateDarkUI(mod_colour->GetPickerCtrl(), true);
|
|
||||||
mod_colour->Bind(wxEVT_COLOURPICKER_CHANGED, ([mod_colour, mod_label](wxCommandEvent e)
|
|
||||||
{
|
|
||||||
mod_label->SetForegroundColour(mod_colour->GetColour());
|
|
||||||
mod_label->Refresh();
|
|
||||||
}));
|
|
||||||
grid_sizer->Add(0, -1, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(mod_colour, -1, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(mod_label, -1, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
|
||||||
|
|
||||||
|
|
||||||
auto buttons = CreateStdDialogButtonSizer(wxOK|wxCANCEL);
|
auto buttons = CreateStdDialogButtonSizer(wxOK|wxCANCEL);
|
||||||
main_sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10);
|
main_sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM, 10);
|
||||||
|
|
||||||
wxGetApp().UpdateDlgDarkUI(this, true);
|
|
||||||
|
|
||||||
wxButton* btn = static_cast<wxButton*>(FindWindowById(wxID_OK, this));
|
wxButton* btn = static_cast<wxButton*>(FindWindowById(wxID_OK, this));
|
||||||
btn->Bind(wxEVT_BUTTON, [sys_colour, mod_colour, this](wxCommandEvent&) {
|
btn->Bind(wxEVT_BUTTON, [this](wxCommandEvent&) {
|
||||||
wxGetApp().set_label_clr_sys(sys_colour->GetColour());
|
wxGetApp().set_label_clr_sys(sys_colour->GetColour());
|
||||||
wxGetApp().set_label_clr_modified(mod_colour->GetColour());
|
wxGetApp().set_label_clr_modified(mod_colour->GetColour());
|
||||||
EndModal(wxID_OK);
|
EndModal(wxID_OK);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
wxGetApp().UpdateDarkUI(btn);
|
||||||
|
wxGetApp().UpdateDarkUI(static_cast<wxButton*>(FindWindowById(wxID_CANCEL, this)));
|
||||||
|
|
||||||
SetSizer(main_sizer);
|
SetSizer(main_sizer);
|
||||||
main_sizer->SetSizeHints(this);
|
main_sizer->SetSizeHints(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -11,6 +11,8 @@ namespace GUI {
|
||||||
|
|
||||||
class ButtonsDescription : public wxDialog
|
class ButtonsDescription : public wxDialog
|
||||||
{
|
{
|
||||||
|
wxColourPickerCtrl* sys_colour{ nullptr };
|
||||||
|
wxColourPickerCtrl* mod_colour{ nullptr };
|
||||||
public:
|
public:
|
||||||
struct Entry {
|
struct Entry {
|
||||||
Entry(ScalableBitmap *bitmap, const std::string &symbol, const std::string &explanation) : bitmap(bitmap), symbol(symbol), explanation(explanation) {}
|
Entry(ScalableBitmap *bitmap, const std::string &symbol, const std::string &explanation) : bitmap(bitmap), symbol(symbol), explanation(explanation) {}
|
||||||
|
@ -23,6 +25,8 @@ public:
|
||||||
ButtonsDescription(wxWindow* parent, const std::vector<Entry> &entries);
|
ButtonsDescription(wxWindow* parent, const std::vector<Entry> &entries);
|
||||||
~ButtonsDescription() {}
|
~ButtonsDescription() {}
|
||||||
|
|
||||||
|
static void FillSizerWithTextColorDescriptions(wxSizer* sizer, wxWindow* parent, wxColourPickerCtrl** sys_colour, wxColourPickerCtrl** mod_colour);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<Entry> m_entries;
|
std::vector<Entry> m_entries;
|
||||||
};
|
};
|
||||||
|
|
|
@ -1030,17 +1030,22 @@ bool GUI_App::dark_mode()
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const wxColour GUI_App::get_label_default_clr_system()
|
||||||
|
{
|
||||||
|
return dark_mode() ? wxColour(115, 220, 103) : wxColour(26, 132, 57);
|
||||||
|
}
|
||||||
|
|
||||||
|
const wxColour GUI_App::get_label_default_clr_modified()
|
||||||
|
{
|
||||||
|
return dark_mode() ? wxColour(253, 111, 40) : wxColour(252, 77, 1);
|
||||||
|
}
|
||||||
|
|
||||||
void GUI_App::init_label_colours()
|
void GUI_App::init_label_colours()
|
||||||
{
|
{
|
||||||
|
m_color_label_modified = get_label_default_clr_modified();
|
||||||
|
m_color_label_sys = get_label_default_clr_system();
|
||||||
|
|
||||||
bool is_dark_mode = dark_mode();
|
bool is_dark_mode = dark_mode();
|
||||||
if (is_dark_mode) {
|
|
||||||
m_color_label_modified = wxColour(253, 111, 40);
|
|
||||||
m_color_label_sys = wxColour(115, 220, 103);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
m_color_label_modified = wxColour(252, 77, 1);
|
|
||||||
m_color_label_sys = wxColour(26, 132, 57);
|
|
||||||
}
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
m_color_label_default = is_dark_mode ? wxColour(250, 250, 250): wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
m_color_label_default = is_dark_mode ? wxColour(250, 250, 250): wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOWTEXT);
|
||||||
m_color_highlight_label_default = is_dark_mode ? wxColour(230, 230, 230): wxSystemSettings::GetColour(/*wxSYS_COLOUR_HIGHLIGHTTEXT*/wxSYS_COLOUR_WINDOWTEXT);
|
m_color_highlight_label_default = is_dark_mode ? wxColour(230, 230, 230): wxSystemSettings::GetColour(/*wxSYS_COLOUR_HIGHLIGHTTEXT*/wxSYS_COLOUR_WINDOWTEXT);
|
||||||
|
|
|
@ -179,6 +179,8 @@ public:
|
||||||
|
|
||||||
static unsigned get_colour_approx_luma(const wxColour &colour);
|
static unsigned get_colour_approx_luma(const wxColour &colour);
|
||||||
static bool dark_mode();
|
static bool dark_mode();
|
||||||
|
const wxColour get_label_default_clr_system();
|
||||||
|
const wxColour get_label_default_clr_modified();
|
||||||
void init_label_colours();
|
void init_label_colours();
|
||||||
void update_label_colours_from_appconfig();
|
void update_label_colours_from_appconfig();
|
||||||
void update_label_colours();
|
void update_label_colours();
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
#include "libslic3r/AppConfig.hpp"
|
#include "libslic3r/AppConfig.hpp"
|
||||||
#include <wx/notebook.h>
|
#include <wx/notebook.h>
|
||||||
#include "Notebook.hpp"
|
#include "Notebook.hpp"
|
||||||
|
#include "ButtonsDescription.hpp"
|
||||||
|
|
||||||
namespace Slic3r {
|
namespace Slic3r {
|
||||||
namespace GUI {
|
namespace GUI {
|
||||||
|
@ -395,7 +396,8 @@ void PreferencesDialog::build(size_t selected_tab)
|
||||||
auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL);
|
auto buttons = CreateStdDialogButtonSizer(wxOK | wxCANCEL);
|
||||||
this->Bind(wxEVT_BUTTON, &PreferencesDialog::accept, this, wxID_OK);
|
this->Bind(wxEVT_BUTTON, &PreferencesDialog::accept, this, wxID_OK);
|
||||||
|
|
||||||
wxGetApp().UpdateDlgDarkUI(this, true);
|
for (int id : {wxID_OK, wxID_CANCEL})
|
||||||
|
wxGetApp().UpdateDarkUI(static_cast<wxButton*>(FindWindowById(id, this)));
|
||||||
|
|
||||||
sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM | wxTOP, 10);
|
sizer->Add(buttons, 0, wxALIGN_CENTER_HORIZONTAL | wxBOTTOM | wxTOP, 10);
|
||||||
|
|
||||||
|
@ -638,32 +640,7 @@ void PreferencesDialog::create_settings_text_color_widget()
|
||||||
if (!wxOSX) stb->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
if (!wxOSX) stb->SetBackgroundStyle(wxBG_STYLE_PAINT);
|
||||||
|
|
||||||
wxSizer* sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
|
wxSizer* sizer = new wxStaticBoxSizer(stb, wxVERTICAL);
|
||||||
wxFlexGridSizer* grid_sizer = new wxFlexGridSizer(2, 5, 5);
|
ButtonsDescription::FillSizerWithTextColorDescriptions(sizer, parent, &m_sys_colour, &m_mod_colour);
|
||||||
sizer->Add(grid_sizer, 0, wxEXPAND);
|
|
||||||
|
|
||||||
auto sys_label = new wxStaticText(parent, wxID_ANY, _L("Value is the same as the system value"));
|
|
||||||
sys_label->SetForegroundColour(wxGetApp().get_label_clr_sys());
|
|
||||||
m_sys_colour = new wxColourPickerCtrl(parent, wxID_ANY, wxGetApp().get_label_clr_sys());
|
|
||||||
wxGetApp().UpdateDarkUI(m_sys_colour->GetPickerCtrl(), true);
|
|
||||||
m_sys_colour->Bind(wxEVT_COLOURPICKER_CHANGED, [this, sys_label](wxCommandEvent&) {
|
|
||||||
sys_label->SetForegroundColour(m_sys_colour->GetColour());
|
|
||||||
sys_label->Refresh();
|
|
||||||
});
|
|
||||||
|
|
||||||
grid_sizer->Add(m_sys_colour, 0, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(sys_label, 0, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
|
||||||
|
|
||||||
auto mod_label = new wxStaticText(parent, wxID_ANY, _L("Value was changed and is not equal to the system value or the last saved preset"));
|
|
||||||
mod_label->SetForegroundColour(wxGetApp().get_label_clr_modified());
|
|
||||||
m_mod_colour = new wxColourPickerCtrl(parent, wxID_ANY, wxGetApp().get_label_clr_modified());
|
|
||||||
wxGetApp().UpdateDarkUI(m_mod_colour->GetPickerCtrl(), true);
|
|
||||||
m_mod_colour->Bind(wxEVT_COLOURPICKER_CHANGED, [this, mod_label](wxCommandEvent&) {
|
|
||||||
mod_label->SetForegroundColour(m_mod_colour->GetColour());
|
|
||||||
mod_label->Refresh();
|
|
||||||
});
|
|
||||||
|
|
||||||
grid_sizer->Add(m_mod_colour, 0, wxALIGN_CENTRE_VERTICAL);
|
|
||||||
grid_sizer->Add(mod_label, 0, wxALIGN_CENTRE_VERTICAL | wxEXPAND);
|
|
||||||
|
|
||||||
m_optgroup_gui->sizer->Add(sizer, 0, wxEXPAND | wxTOP, em_unit());
|
m_optgroup_gui->sizer->Add(sizer, 0, wxEXPAND | wxTOP, em_unit());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue