From 6ad38f80fb1b42050a19f05c253c7ad181727763 Mon Sep 17 00:00:00 2001 From: YuSanka Date: Tue, 20 Feb 2018 08:58:46 +0100 Subject: [PATCH] Language configuration is saved now in AppConfig instead of wxConfig. --- lib/Slic3r/GUI.pm | 8 +++++--- lib/Slic3r/GUI/MainFrame.pm | 6 +++--- xs/src/slic3r/GUI/GUI.cpp | 34 ++++++++++++++++++++-------------- xs/src/slic3r/GUI/GUI.hpp | 5 +++-- xs/xsp/GUI.xsp | 9 ++++++--- 5 files changed, 37 insertions(+), 25 deletions(-) diff --git a/lib/Slic3r/GUI.pm b/lib/Slic3r/GUI.pm index 54a27dc99..a50363131 100644 --- a/lib/Slic3r/GUI.pm +++ b/lib/Slic3r/GUI.pm @@ -84,12 +84,11 @@ sub OnInit { # Mac: "~/Library/Application Support/Slic3r" Slic3r::set_data_dir($datadir || Wx::StandardPaths::Get->GetUserDataDir); Slic3r::GUI::set_wxapp($self); - Slic3r::GUI::load_language(); - + $self->{notifier} = Slic3r::GUI::Notifier->new; $self->{app_config} = Slic3r::GUI::AppConfig->new; $self->{preset_bundle} = Slic3r::GUI::PresetBundle->new; - + # just checking for existence of Slic3r::data_dir is not enough: it may be an empty directory # supplied as argument to --datadir; in that case we should still run the wizard eval { $self->{preset_bundle}->setup_directories() }; @@ -103,6 +102,9 @@ sub OnInit { $self->{app_config}->set('version', $Slic3r::VERSION); $self->{app_config}->save; + Slic3r::GUI::set_app_config($self->{app_config}); + Slic3r::GUI::load_language(); + # Suppress the '- default -' presets. $self->{preset_bundle}->set_default_suppressed($self->{app_config}->get('no_defaults') ? 1 : 0); eval { $self->{preset_bundle}->load_presets }; diff --git a/lib/Slic3r/GUI/MainFrame.pm b/lib/Slic3r/GUI/MainFrame.pm index a3ebea0b8..2329896e1 100644 --- a/lib/Slic3r/GUI/MainFrame.pm +++ b/lib/Slic3r/GUI/MainFrame.pm @@ -48,7 +48,7 @@ sub new { $self->{no_plater} = $params{no_plater}; $self->{loaded} = 0; $self->{lang_ch_event} = $params{lang_ch_event}; - + # initialize tabpanel and menubar $self->_init_tabpanel; $self->_init_menubar; @@ -216,8 +216,8 @@ sub _init_tabpanel { $self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ; # A variable to inform C++ Tab implementation about user_agent $self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ; - Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config}, - $self->{no_controller}, $self->{is_disabled_button_browse}, + Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, $self->{no_controller}, + $self->{is_disabled_button_browse}, $self->{is_user_agent}, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT, $BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT); diff --git a/xs/src/slic3r/GUI/GUI.cpp b/xs/src/slic3r/GUI/GUI.cpp index 0d7d58e0f..3b8d34436 100644 --- a/xs/src/slic3r/GUI/GUI.cpp +++ b/xs/src/slic3r/GUI/GUI.cpp @@ -28,7 +28,6 @@ #include #include -#include #include #include #include @@ -171,6 +170,7 @@ void break_to_debugger() wxApp *g_wxApp = nullptr; wxFrame *g_wxMainFrame = nullptr; wxNotebook *g_wxTabPanel = nullptr; +AppConfig *g_AppConfig = nullptr; std::vector g_tabs_list; @@ -191,6 +191,11 @@ void set_tab_panel(wxNotebook *tab_panel) g_wxTabPanel = tab_panel; } +void set_app_config(AppConfig *app_config) +{ + g_AppConfig = app_config; +} + std::vector& get_tabs_list() { return g_tabs_list; @@ -241,13 +246,14 @@ bool select_language(wxArrayString & names, bool load_language() { - wxConfig config(g_wxApp->GetAppName()); long language; - if (!config.Read(wxT("wxTranslation_Language"), - &language, wxLANGUAGE_UNKNOWN)) - { + if (!g_AppConfig->has("translation_language")) language = wxLANGUAGE_UNKNOWN; + else { + auto str_language = g_AppConfig->get("translation_language"); + language = str_language != "" ? stol(str_language) : wxLANGUAGE_UNKNOWN; } + if (language == wxLANGUAGE_UNKNOWN) return false; wxArrayString names; @@ -269,13 +275,13 @@ bool load_language() void save_language() { - wxConfig config(g_wxApp->GetAppName()); long language = wxLANGUAGE_UNKNOWN; if (g_wxLocale) { language = g_wxLocale->GetLanguage(); } - config.Write(wxT("wxTranslation_Language"), language); - config.Flush(); + std::string str_language = std::to_string(language); + g_AppConfig->set("translation_language", str_language); + g_AppConfig->save(); } void get_installed_languages(wxArrayString & names, @@ -336,15 +342,15 @@ void add_debug_menu(wxMenuBar *menu, int event_language_change) //#endif } -void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, +void create_preset_tabs(PresetBundle *preset_bundle, bool no_controller, bool is_disabled_button_browse, bool is_user_agent, int event_value_change, int event_presets_changed, int event_button_browse, int event_button_test) { - add_created_tab(new TabPrint (g_wxTabPanel, no_controller), preset_bundle, app_config); - add_created_tab(new TabFilament (g_wxTabPanel, no_controller), preset_bundle, app_config); + add_created_tab(new TabPrint (g_wxTabPanel, no_controller), preset_bundle); + add_created_tab(new TabFilament (g_wxTabPanel, no_controller), preset_bundle); add_created_tab(new TabPrinter (g_wxTabPanel, no_controller, is_disabled_button_browse, is_user_agent), - preset_bundle, app_config); + preset_bundle); for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) { Tab *tab = dynamic_cast(g_wxTabPanel->GetPage(i)); if (! tab) @@ -455,9 +461,9 @@ void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, b } } -void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config) +void add_created_tab(Tab* panel, PresetBundle *preset_bundle) { - panel->m_show_btn_incompatible_presets = app_config->get("show_incompatible_presets").empty(); + panel->m_show_btn_incompatible_presets = g_AppConfig->get("show_incompatible_presets").empty(); panel->create_preset_tab(preset_bundle); // Load the currently selected preset into the GUI, update the preset selection box. diff --git a/xs/src/slic3r/GUI/GUI.hpp b/xs/src/slic3r/GUI/GUI.hpp index 6d296ab3a..2ffacbc28 100644 --- a/xs/src/slic3r/GUI/GUI.hpp +++ b/xs/src/slic3r/GUI/GUI.hpp @@ -64,17 +64,18 @@ void break_to_debugger(); void set_wxapp(wxApp *app); void set_main_frame(wxFrame *main_frame); void set_tab_panel(wxNotebook *tab_panel); +void set_app_config(AppConfig *app_config); void add_debug_menu(wxMenuBar *menu, int event_language_change); // Create a new preset tab (print, filament and printer), -void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, +void create_preset_tabs(PresetBundle *preset_bundle, bool no_controller, bool is_disabled_button_browse, bool is_user_agent, int event_value_change, int event_presets_changed, int event_button_browse, int event_button_test); TabIface* get_preset_tab_iface(char *name); // add it at the end of the tab panel. -void add_created_tab(Tab* panel, PresetBundle *preset_bundle, AppConfig *app_config); +void add_created_tab(Tab* panel, PresetBundle *preset_bundle); // Change option value in config void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value, int opt_index = 0); diff --git a/xs/xsp/GUI.xsp b/xs/xsp/GUI.xsp index 226d6a45c..ad4dd7550 100644 --- a/xs/xsp/GUI.xsp +++ b/xs/xsp/GUI.xsp @@ -35,11 +35,11 @@ void set_tab_panel(SV *ui) void add_debug_menu(SV *ui, int event_language_change) %code%{ Slic3r::GUI::add_debug_menu((wxMenuBar*)wxPli_sv_2_object(aTHX_ ui, "Wx::MenuBar"), event_language_change); %}; -void create_preset_tabs(PresetBundle *preset_bundle, AppConfig *app_config, - bool no_controller, bool is_disabled_button_browse, bool is_user_agent, +void create_preset_tabs(PresetBundle *preset_bundle, bool no_controller, + bool is_disabled_button_browse, bool is_user_agent, int event_value_change, int event_presets_changed, int event_button_browse, int event_button_test) - %code%{ Slic3r::GUI::create_preset_tabs(preset_bundle, app_config, no_controller, + %code%{ Slic3r::GUI::create_preset_tabs(preset_bundle, no_controller, is_disabled_button_browse, is_user_agent, event_value_change, event_presets_changed, event_button_browse, event_button_test); %}; @@ -55,3 +55,6 @@ void create_combochecklist(SV *ui, std::string text, std::string items, bool ini int combochecklist_get_flags(SV *ui) %code%{ RETVAL=Slic3r::GUI::combochecklist_get_flags((wxComboCtrl*)wxPli_sv_2_object(aTHX_ ui, "Wx::ComboCtrl")); %}; + +void set_app_config(AppConfig *app_config) + %code%{ Slic3r::GUI::set_app_config(app_config); %};