Prototype of the hiding according to view mode

+ Added mode icon near option's label
+ Fixed segmentation fault on Linux
This commit is contained in:
YuSanka 2018-10-19 13:55:29 +02:00
parent 5d94e6adb8
commit f47949504e
13 changed files with 242 additions and 53 deletions

View file

@ -482,7 +482,8 @@ ConfigMenuIDs GUI_App::get_view_mode()
return ConfigMenuModeSimple;
const auto mode = app_config->get("view_mode");
return mode == "expert" ? ConfigMenuModeExpert : ConfigMenuModeSimple;
return mode == "expert" ? ConfigMenuModeExpert :
mode == "simple" ? ConfigMenuModeSimple : ConfigMenuModeMiddle;
}
// Update view mode according to selected menu
@ -500,6 +501,11 @@ void GUI_App::update_mode()
sidebar().Layout();
mainframe->m_plater->Layout();
ConfigOptionMode opt_mode = mode == ConfigMenuModeSimple ? comSimple :
mode == ConfigMenuModeExpert ? comExpert : comMiddle;
for (auto tab : tabs_list)
tab->update_visibility(opt_mode);
}
void GUI_App::add_config_menu(wxMenuBar *menu)
@ -519,6 +525,7 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
local_menu->AppendSeparator();
auto mode_menu = new wxMenu();
mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeSimple, _(L("&Simple")), _(L("Simple View Mode")));
mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeMiddle, _(L("&Middle")), _(L("Middle View Mode")));
mode_menu->AppendRadioItem(config_id_base + ConfigMenuModeExpert, _(L("&Expert")), _(L("Expert View Mode")));
mode_menu->Check(config_id_base + get_view_mode(), true);
local_menu->AppendSubMenu(mode_menu, _(L("&Mode")), _(L("Slic3r View Mode")));
@ -589,8 +596,9 @@ void GUI_App::add_config_menu(wxMenuBar *menu)
}
});
mode_menu->Bind(wxEVT_MENU, [this, config_id_base](wxEvent& event) {
std::string mode = event.GetId() - config_id_base == ConfigMenuModeExpert ?
"expert" : "simple";
int id_mode = event.GetId() - config_id_base;
std::string mode = id_mode == ConfigMenuModeExpert ? "expert" :
id_mode == ConfigMenuModeSimple ? "simple" : "middle";
app_config->set("view_mode", mode);
app_config->save();
update_mode();