mirror of
https://github.com/OrcaSlicer/OrcaSlicer.git
synced 2026-10-15 03:41:28 +00:00
init
This commit is contained in:
@@ -808,7 +808,7 @@ void OG_CustomCtrl::CtrlLine::render(wxDC& dc, wxCoord h_pos, wxCoord v_pos)
|
||||
wxCoord icon_pos = h_pos;
|
||||
if (is_multi_extruder) {
|
||||
static ScalableBitmap multi_extruder(ctrl, "multi_extruder");
|
||||
h_pos = draw_act_bmps(dc, wxPoint(h_pos, v_pos), multi_extruder.bmp(), multi_extruder.bmp(), false, 0, true).x;
|
||||
h_pos = draw_act_bmps(dc, wxPoint(h_pos - multi_extruder.bmp().GetWidth() - ctrl->m_h_gap, v_pos), multi_extruder.bmp(), multi_extruder.bmp(), false, 0, true).x + ctrl->m_h_gap;
|
||||
}
|
||||
is_url_string = !suppress_hyperlinks && !og_line.label_path.empty();
|
||||
// BBS
|
||||
|
||||
+12
-12
@@ -637,8 +637,8 @@ static void use_nozzle_row_font(ComboBox *combo)
|
||||
{
|
||||
// A read-only combo draws its value with the font of the TextInput it is built on, and its
|
||||
// dropped list carries a font of its own.
|
||||
combo->SetFont(Label::Body_10);
|
||||
combo->GetDropDown().SetFont(Label::Body_10);
|
||||
combo->SetFont(Label::Body_13);
|
||||
combo->GetDropDown().SetFont(Label::Body_13);
|
||||
|
||||
// A row is as tall as the tags of the variant switch: a line of Body_10 text plus the 3 points of
|
||||
// padding they put above and below it. TextInput::messureSize() instead sizes a combo as its
|
||||
@@ -648,7 +648,7 @@ static void use_nozzle_row_font(ComboBox *combo)
|
||||
// arithmetic landing on the small box however often it re-measures.
|
||||
const int row_height = combo->GetTextExtent("0.4 mm").y + 2 * combo->FromDIP(3);
|
||||
auto *text_ctrl = combo->GetTextCtrl();
|
||||
text_ctrl->SetFont(Label::Body_10);
|
||||
text_ctrl->SetFont(Label::Body_13);
|
||||
text_ctrl->SetInitialSize(wxSize(text_ctrl->GetBestSize().x, row_height - 8));
|
||||
|
||||
combo->SetMinSize(wxSize(combo->GetMinSize().x, row_height));
|
||||
@@ -1442,12 +1442,12 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
|
||||
ams_panel->SetBackgroundColour(*wxWHITE);
|
||||
|
||||
ams_label = new wxStaticText(ams_panel, wxID_ANY, _L("AMS"));
|
||||
ams_label->SetFont(Label::Body_14);
|
||||
ams_label->SetFont(Label::Body_13);
|
||||
ams_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636")));
|
||||
|
||||
// AMS not installed message
|
||||
ams_not_installed_msg = new wxStaticText(ams_panel, wxID_ANY, _L("Not installed"));
|
||||
ams_not_installed_msg->SetFont(Label::Body_14);
|
||||
ams_not_installed_msg->SetFont(Label::Body_13);
|
||||
ams_not_installed_msg->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#6B6B6B")));
|
||||
|
||||
if (index >= 0) {
|
||||
@@ -1537,9 +1537,9 @@ ExtruderGroup::ExtruderGroup(wxWindow * parent, int index, wxString const &title
|
||||
auto rows_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
for (wxBoxSizer *&column : row_columns) {
|
||||
column = new wxBoxSizer(wxVERTICAL);
|
||||
rows_sizer->Add(column, 1, wxEXPAND);
|
||||
rows_sizer->Add(column, 1, wxEXPAND | wxLEFT , FromDIP(5));
|
||||
}
|
||||
vsizer->Add(rows_sizer, 0, wxEXPAND);
|
||||
vsizer->Add(rows_sizer, 0, wxEXPAND | wxRIGHT, FromDIP(5));
|
||||
sizer = vsizer; // the floating filament-switch icon positions itself against this card
|
||||
SetSizer(vsizer);
|
||||
SetNozzleRowCount(1);
|
||||
@@ -1554,12 +1554,12 @@ ExtruderGroup::NozzleRow ExtruderGroup::create_nozzle_row()
|
||||
const size_t row_index = rows.size();
|
||||
NozzleRow row;
|
||||
|
||||
row.prefix = new Label(this, Label::Body_10.Bold());
|
||||
row.prefix = new Label(this, Label::Body_12.Bold());
|
||||
row.prefix->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636")));
|
||||
row.prefix->SetLabelText(wxString::Format("T%d", int(row_index) + 1));
|
||||
row.prefix->Hide();
|
||||
|
||||
row.diameter_label = new Label(this, Label::Body_10);
|
||||
row.diameter_label = new Label(this, Label::Body_12);
|
||||
row.diameter_label->SetForegroundColour(StateColor::darkModeColorFor(wxColour("#363636")));
|
||||
row.diameter_label->Hide();
|
||||
|
||||
@@ -1591,7 +1591,7 @@ ExtruderGroup::NozzleRow ExtruderGroup::create_nozzle_row()
|
||||
row_sizer->Add(row.diameter_label, 0, wxALIGN_CENTER_VERTICAL | wxRIGHT, FromDIP(5));
|
||||
row_sizer->Add(row.flow, 1);
|
||||
// Row-major: T1 T2 on the first line, T3 T4 on the second, and so on.
|
||||
row_columns[row_index % 2]->Add(row_sizer, 0, wxEXPAND | wxLEFT | wxRIGHT | wxBOTTOM, FromDIP(5));
|
||||
row_columns[row_index % 2]->Add(row_sizer, 0, wxEXPAND | wxBOTTOM, FromDIP(5));
|
||||
|
||||
return row;
|
||||
}
|
||||
@@ -1618,9 +1618,9 @@ void ExtruderGroup::SetRowDiameters(const std::vector<double> &diameters)
|
||||
{
|
||||
for (size_t i = 0; i < std::min(nozzle_row_count, diameters.size()); ++i) {
|
||||
// Spelled like the calibration dialogs spell a nozzle diameter, "0.4 mm".
|
||||
const wxString text = from_u8(get_diameter_string(diameters[i])) + " mm";
|
||||
const wxString text = from_u8(get_diameter_string(diameters[i]));
|
||||
rows[i].diameter_label->SetLabelText(text);
|
||||
rows[i].diameter_label->SetToolTip(text);
|
||||
rows[i].diameter_label->SetToolTip(text + " mm");
|
||||
}
|
||||
update_row_widths();
|
||||
Layout();
|
||||
|
||||
+48
-39
@@ -506,6 +506,7 @@ void Tab::create_preset_tab()
|
||||
|
||||
if (dynamic_cast<TabPrinter *>(this) || dynamic_cast<TabPrint *>(this)) {
|
||||
m_extruder_switch = new MultiSwitchButton(panel);
|
||||
m_extruder_switch->SetFont(Label::Body_11);
|
||||
m_extruder_switch->SetFitToOptions();
|
||||
m_extruder_switch->Bind(wxCUSTOMEVT_MULTISWITCH_SELECTION, [this](auto &evt) {
|
||||
evt.Skip();
|
||||
@@ -531,23 +532,32 @@ void Tab::create_preset_tab()
|
||||
sync_excluder();
|
||||
});
|
||||
|
||||
static ScalableBitmap multi_extruder;
|
||||
add_scaled_bitmap(panel, multi_extruder, "multi_extruder");
|
||||
auto icon = new wxStaticBitmap(panel, wxID_ANY, multi_extruder.bmp());
|
||||
icon->SetToolTip(_L("Parameters with this icon can be configurable per nozzle."));
|
||||
|
||||
auto sync_box_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
sync_box_sizer->Add(m_extruder_sync, 1, wxEXPAND);
|
||||
m_extruder_sync_box->SetSizer(sync_box_sizer);
|
||||
|
||||
m_variant_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto right_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
auto left_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
|
||||
m_variant_sizer->Add(left_sizer, 0, wxALIGN_CENTER);
|
||||
m_variant_sizer->AddStretchSpacer(1);
|
||||
// Orca: proportion 1 lets a narrow row squeeze the switch, which then scrolls its buttons.
|
||||
m_variant_sizer->Add(m_extruder_switch, 1, wxALIGN_CENTER, 0);
|
||||
m_variant_sizer->Add(right_sizer, 1, wxALIGN_CENTER);
|
||||
right_sizer->AddStretchSpacer(1);
|
||||
m_variant_sizer->AddStretchSpacer(1);
|
||||
m_variant_sizer->Add(right_sizer, 0, wxALIGN_CENTER);
|
||||
left_sizer->Add(icon , 0, wxALIGN_CENTER | wxLEFT , m_em_unit);
|
||||
right_sizer->Add(m_extruder_sync_box, 0, wxALIGN_CENTER | wxRIGHT, m_em_unit);
|
||||
|
||||
m_main_sizer->Add(m_variant_sizer, 0, wxEXPAND | wxTOP, m_em_unit);
|
||||
} else if (dynamic_cast<TabFilament *>(this)) {
|
||||
m_variant_combo = new MultiSwitchButton(panel);
|
||||
m_variant_combo->SetFont(Label::Body_11);
|
||||
m_variant_combo->Bind(wxCUSTOMEVT_MULTISWITCH_SELECTION, [this](auto &evt) {
|
||||
evt.Skip();
|
||||
switch_excluder(evt.GetInt());
|
||||
@@ -559,11 +569,17 @@ void Tab::create_preset_tab()
|
||||
m_page_view->GetParent()->Layout();
|
||||
});
|
||||
|
||||
static ScalableBitmap multi_extruder;
|
||||
add_scaled_bitmap(panel, multi_extruder, "multi_extruder");
|
||||
auto icon = new wxStaticBitmap(panel, wxID_ANY, multi_extruder.bmp());
|
||||
icon->SetToolTip(_L("Parameters with this icon can be configurable per nozzle."));
|
||||
|
||||
|
||||
wxBoxSizer *combo_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
combo_sizer->Add(m_variant_combo, 1, wxEXPAND);
|
||||
wxBoxSizer *top_sizer = new wxBoxSizer(wxHORIZONTAL);
|
||||
top_sizer->Add(combo_sizer, 1, wxEXPAND | wxLEFT, m_em_unit);
|
||||
top_sizer->Add(icon , 0, wxALIGN_CENTER);
|
||||
top_sizer->Add(combo_sizer, 1, wxEXPAND | wxLEFT, FromDIP(2));
|
||||
m_variant_sizer = new wxBoxSizer(wxVERTICAL);
|
||||
m_variant_sizer->Add(top_sizer, 0, wxLEFT, m_em_unit);
|
||||
m_main_sizer->Add(m_variant_sizer, 0, wxEXPAND | wxTOP, m_em_unit);
|
||||
@@ -762,7 +778,7 @@ wxString Tab::translate_category(const wxString& title, Preset::Type preset_type
|
||||
if (title == "Extruder 1") return _("Left Extruder");
|
||||
if (title == "Extruder 2") return _("Right Extruder");
|
||||
}
|
||||
return _("Extruder") + title.SubString(8, title.Last());
|
||||
return _("T") + title.SubString(9, title.Last()); // ORCA use T1,T2... instead "Extruder 1" .. to make printer settings usable for toolchangers
|
||||
}
|
||||
return _(title);
|
||||
}
|
||||
@@ -1172,43 +1188,30 @@ void Tab::update_extruder_switch_colors()
|
||||
}
|
||||
|
||||
auto options = generate_extruder_options();
|
||||
auto extruders = m_preset_bundle->printers.get_edited_preset().config.option<ConfigOptionEnumsGeneric>("extruder_type");
|
||||
|
||||
for (size_t switch_index = 0; switch_index < options.size(); ++switch_index) {
|
||||
int selection = m_extruder_switch ? m_extruder_switch->GetSelection() : (m_variant_combo ? m_variant_combo->GetSelection() : 0);
|
||||
if (switch_index == selection) continue;
|
||||
|
||||
bool sys_extruder = true;
|
||||
bool modified_extruder = false;
|
||||
std::vector<PageShp> pages_to_check;
|
||||
|
||||
if (m_active_page) {
|
||||
if (m_active_page->title() == "Speed" || m_active_page->title() == "Motion ability" || m_active_page->title() == "Filament" ||
|
||||
m_active_page->title() == "Setting Overrides" || m_active_page->title() == "Multimaterial") {
|
||||
for (auto page_ptr : m_pages) {
|
||||
if (page_ptr.get() == m_active_page) {
|
||||
pages_to_check.push_back(page_ptr);
|
||||
break;
|
||||
}
|
||||
std::vector<PageShp> pages_to_check;
|
||||
if (m_active_page) {
|
||||
const wxString t = m_active_page->title();
|
||||
if (t == "Speed" || t == "Motion ability" || t == "Filament" ||
|
||||
t == "Setting Overrides" || t == "Multimaterial") {
|
||||
for (auto &p : m_pages){
|
||||
if (p.get() == m_active_page) {
|
||||
pages_to_check.push_back(p);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (pages_to_check.empty()) {
|
||||
continue;
|
||||
}
|
||||
check_extruder_options_status(switch_index, sys_extruder, modified_extruder, pages_to_check);
|
||||
}
|
||||
|
||||
StateColor default_color(std::make_pair(0x6B6B6B, (int) StateColor::NotChecked), std::make_pair(0xFFFFFE, (int) StateColor::Normal));
|
||||
StateColor color = modified_extruder ? StateColor(m_modified_label_clr) : default_color;
|
||||
for (size_t switch_index = 0; switch_index < options.size(); ++switch_index) {
|
||||
bool sys_extruder = true;
|
||||
bool modified_extruder = false;
|
||||
if (!pages_to_check.empty())
|
||||
check_extruder_options_status((int) switch_index, sys_extruder, modified_extruder, pages_to_check);
|
||||
// no matching page: clear the flag so the tag doesn't keep a stale color
|
||||
|
||||
if (m_extruder_switch)
|
||||
m_extruder_switch->SetButtonTextColor(switch_index, color);
|
||||
if (m_variant_combo) {
|
||||
Button *btn = m_variant_combo->GetButton(switch_index);
|
||||
if (btn) {
|
||||
m_variant_combo->SetButtonTextColor(switch_index, color);
|
||||
}
|
||||
}
|
||||
if (m_extruder_switch) m_extruder_switch->SetModified(switch_index, modified_extruder);
|
||||
if (m_variant_combo) m_variant_combo->SetModified(switch_index, modified_extruder);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8182,6 +8185,9 @@ void Tab::update_extruder_variants(int extruder_id, bool reload)
|
||||
if (extruder_nums >= 2 && m_preset_bundle->support_different_extruders()) {
|
||||
auto options = generate_extruder_options();
|
||||
m_extruder_switch->SetOptions(options);
|
||||
int item_n = options.empty() ? 0 : options.size();
|
||||
int h_pad = item_n > 6 ? 6 : (item_n > 4 ? 8 : (item_n > 2 ? 10 : 16));
|
||||
m_extruder_switch->SetButtonPadding(FromDIP(wxSize(h_pad,3)));
|
||||
|
||||
int selection_index;
|
||||
if (extruder_id >= 0) {
|
||||
@@ -8208,6 +8214,9 @@ void Tab::update_extruder_variants(int extruder_id, bool reload)
|
||||
const int selection = m_variant_combo->GetSelection();
|
||||
auto options = generate_extruder_options();
|
||||
m_variant_combo->SetOptions(options);
|
||||
int item_n = options.empty() ? 0 : options.size();
|
||||
int h_pad = item_n > 6 ? 6 : (item_n > 4 ? 8 : (item_n > 2 ? 10 : 16));
|
||||
m_variant_combo->SetButtonPadding(FromDIP(wxSize(h_pad,3)));
|
||||
|
||||
if (!options.empty())
|
||||
m_variant_combo->SetSelection(selection < 0 || selection >= (int) options.size() ? 0 : selection);
|
||||
@@ -8285,7 +8294,7 @@ std::vector<wxString> Tab::generate_extruder_options()
|
||||
nozzle = "";
|
||||
}
|
||||
}
|
||||
options.push_back(wxString::Format(_L("%s: %s"), _L(drive), short_nozzle_volume_name(nozzle)));
|
||||
options.push_back(wxString::Format(_L("%s %s"), _L(drive), short_nozzle_volume_name(nozzle)));
|
||||
}
|
||||
return options;
|
||||
}
|
||||
@@ -8310,10 +8319,10 @@ std::vector<wxString> Tab::generate_extruder_options()
|
||||
NozzleVolumeType volume_type = NozzleVolumeType(nozzle_volumes->values[i]);
|
||||
|
||||
if (volume_type == NozzleVolumeType::nvtHybrid) {
|
||||
options.push_back(wxString::Format(_L("%s: %s"), extruder_name, short_nozzle_volume_name(get_nozzle_volume_type_string(NozzleVolumeType::nvtStandard))));
|
||||
options.push_back(wxString::Format(_L("%s: %s"), extruder_name, short_nozzle_volume_name(get_nozzle_volume_type_string(NozzleVolumeType::nvtHighFlow))));
|
||||
options.push_back(wxString::Format(_L("%s %s"), extruder_name, short_nozzle_volume_name(get_nozzle_volume_type_string(NozzleVolumeType::nvtStandard))));
|
||||
options.push_back(wxString::Format(_L("%s %s"), extruder_name, short_nozzle_volume_name(get_nozzle_volume_type_string(NozzleVolumeType::nvtHighFlow))));
|
||||
} else {
|
||||
options.push_back(wxString::Format(_L("%s: %s"), extruder_name,
|
||||
options.push_back(wxString::Format(_L("%s %s"), extruder_name,
|
||||
short_nozzle_volume_name(get_nozzle_volume_type_string(volume_type))));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -43,7 +43,7 @@ static std::map<wxColour, wxColour> gDarkColors{
|
||||
{"#2B3436", "#808080"}, // rgb(43, 52, 54) Not Used anymore // Leftover from BBS. Was used as main fill color of icons
|
||||
{"#ABABAB", "#ABABAB"},
|
||||
{"#D9D9D9", "#27272A"}, // rgb(217, 217, 217) Sidebar > Toggle button track color
|
||||
{"#FFFEFE", "#D9D9D9"}, // rgb(255, 254, 254) Sidebar > Toggle button thumb color
|
||||
{"#FFFEFE", "#D8D9D9"}, // rgb(255, 254, 254) Sidebar > Toggle button thumb color
|
||||
{"#EBF9F0", "#293F34"},
|
||||
//{"#F0F0F0", "#4C4C54"},
|
||||
// ORCA
|
||||
|
||||
@@ -616,11 +616,17 @@ bool SwitchBoard::Enable(bool enable /* = true */)
|
||||
MultiSwitchButton::MultiSwitchButton(wxWindow *parent, wxWindowID id, const wxPoint &pos, const wxSize &size, long style)
|
||||
: StaticBox(parent, id, pos, size, style)
|
||||
, m_bg_color(StateColor(
|
||||
std::make_pair(0xE8E8E8, (int) StateColor::NotChecked),
|
||||
std::make_pair(0xD9D9D9, (int) StateColor::NotChecked),
|
||||
std::make_pair(0x009688, (int) StateColor::Normal)))
|
||||
, m_text_color(StateColor(
|
||||
std::make_pair(0x6B6B6B, (int) StateColor::NotChecked),
|
||||
std::make_pair(0xFFFFFE, (int) StateColor::Normal)))
|
||||
, m_br_color_modified(StateColor(
|
||||
std::make_pair(0xD9D9D9, (int) StateColor::NotChecked),
|
||||
std::make_pair(0xF1754F, (int) StateColor::Normal)))
|
||||
, m_fg_color_modified(StateColor(
|
||||
std::make_pair(0xF1754E, (int) StateColor::NotChecked),
|
||||
std::make_pair(0xFFFFFE, (int) StateColor::Normal)))
|
||||
, m_button_radius(10.0)
|
||||
, m_button_padding(FromDIP(wxSize(11, 3)))
|
||||
{
|
||||
@@ -631,6 +637,7 @@ MultiSwitchButton::MultiSwitchButton(wxWindow *parent, wxWindowID id, const wxPo
|
||||
// tool), so they live in a scrolled area: the caller caps the switch at its natural width and
|
||||
// this scrolls horizontally instead of clipping the last buttons.
|
||||
m_scroll = new wxScrolledWindow(this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxHSCROLL | wxBORDER_NONE);
|
||||
//m_scroll->SetBackgroundColour(wxColour("#D9D9D9"));
|
||||
m_scroll->SetBackgroundColour(GetBackgroundColour());
|
||||
// The buttons are a single row, so only the horizontal bar may ever appear: a vertical one would
|
||||
// eat into the row's height.
|
||||
@@ -738,15 +745,17 @@ void MultiSwitchButton::scroll_option_into_view(Button *btn)
|
||||
int MultiSwitchButton::AppendOption(const wxString &option, void *clientData)
|
||||
{
|
||||
Button *btn = new Button();
|
||||
btn->Create(m_scroll, option, "", wxBORDER_NONE);
|
||||
btn->Create(m_scroll, option);
|
||||
btn->SetFont(GetFont());
|
||||
btn->SetBackgroundColor(m_bg_color);
|
||||
btn->SetBorderColor(m_bg_color);
|
||||
btn->SetTextColor(m_text_color);
|
||||
btn->SetCornerRadius(m_button_radius);
|
||||
btn->SetPaddingSize(m_button_padding);
|
||||
btn->SetClientData(clientData);
|
||||
|
||||
btns.push_back(btn);
|
||||
btns_modified.push_back(false);
|
||||
sizer->Add(btn, 1, wxEXPAND | wxALIGN_CENTER_VERTICAL);
|
||||
|
||||
return int(btns.size()) - 1;
|
||||
@@ -771,6 +780,7 @@ void MultiSwitchButton::DeleteAllOptions()
|
||||
btn->Destroy();
|
||||
}
|
||||
btns.clear();
|
||||
btns_modified.clear();
|
||||
if (sizer)
|
||||
sizer->Clear();
|
||||
}
|
||||
@@ -832,8 +842,8 @@ void MultiSwitchButton::update_button_styles()
|
||||
{
|
||||
for (int i = 0; i < (int) btns.size(); ++i) {
|
||||
btns[i]->SetValue(i == sel);
|
||||
btns[i]->SetBackgroundColor(m_bg_color);
|
||||
btns[i]->SetTextColor(m_text_color);
|
||||
btns[i]->SetBorderColor(btns_modified[i] ? m_br_color_modified : m_bg_color );
|
||||
btns[i]->SetTextColor( btns_modified[i] ? m_fg_color_modified : m_text_color);
|
||||
btns[i]->Refresh();
|
||||
}
|
||||
}
|
||||
@@ -870,6 +880,13 @@ void MultiSwitchButton::SetButtonPadding(const wxSize &padding)
|
||||
Refresh();
|
||||
}
|
||||
|
||||
void MultiSwitchButton::SetModified(int index, bool modified){
|
||||
if(index < 0 || index >= btns_modified.size())
|
||||
return;
|
||||
btns_modified[index] = modified;
|
||||
update_button_styles();
|
||||
}
|
||||
|
||||
void MultiSwitchButton::Rescale()
|
||||
{
|
||||
for (auto *btn : btns)
|
||||
|
||||
@@ -162,6 +162,7 @@ public:
|
||||
btns[index]->SetTextColor(color);
|
||||
btns[index]->Refresh();
|
||||
}
|
||||
void SetModified(int index, bool modified);
|
||||
void SetButtonCornerRadius(double radius);
|
||||
void SetButtonPadding(const wxSize &padding);
|
||||
|
||||
@@ -186,6 +187,7 @@ private:
|
||||
void on_size(wxSizeEvent &evt);
|
||||
|
||||
std::vector<Button *> btns;
|
||||
std::vector<bool> btns_modified;
|
||||
// The buttons are laid out inside this scrolled area so that a switch holding more options than
|
||||
// the layout has room for scrolls instead of clipping its tail.
|
||||
wxScrolledWindow *m_scroll = nullptr;
|
||||
@@ -195,6 +197,8 @@ private:
|
||||
|
||||
StateColor m_bg_color;
|
||||
StateColor m_text_color;
|
||||
StateColor m_br_color_modified;
|
||||
StateColor m_fg_color_modified;
|
||||
double m_button_radius;
|
||||
wxSize m_button_padding;
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user