Language configuration is saved now in AppConfig instead of wxConfig.

This commit is contained in:
YuSanka 2018-02-20 08:58:46 +01:00
parent f5ae470e5e
commit 6ad38f80fb
5 changed files with 37 additions and 25 deletions

View File

@ -84,12 +84,11 @@ sub OnInit {
# Mac: "~/Library/Application Support/Slic3r" # Mac: "~/Library/Application Support/Slic3r"
Slic3r::set_data_dir($datadir || Wx::StandardPaths::Get->GetUserDataDir); Slic3r::set_data_dir($datadir || Wx::StandardPaths::Get->GetUserDataDir);
Slic3r::GUI::set_wxapp($self); Slic3r::GUI::set_wxapp($self);
Slic3r::GUI::load_language();
$self->{notifier} = Slic3r::GUI::Notifier->new; $self->{notifier} = Slic3r::GUI::Notifier->new;
$self->{app_config} = Slic3r::GUI::AppConfig->new; $self->{app_config} = Slic3r::GUI::AppConfig->new;
$self->{preset_bundle} = Slic3r::GUI::PresetBundle->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 # 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 # supplied as argument to --datadir; in that case we should still run the wizard
eval { $self->{preset_bundle}->setup_directories() }; eval { $self->{preset_bundle}->setup_directories() };
@ -103,6 +102,9 @@ sub OnInit {
$self->{app_config}->set('version', $Slic3r::VERSION); $self->{app_config}->set('version', $Slic3r::VERSION);
$self->{app_config}->save; $self->{app_config}->save;
Slic3r::GUI::set_app_config($self->{app_config});
Slic3r::GUI::load_language();
# Suppress the '- default -' presets. # Suppress the '- default -' presets.
$self->{preset_bundle}->set_default_suppressed($self->{app_config}->get('no_defaults') ? 1 : 0); $self->{preset_bundle}->set_default_suppressed($self->{app_config}->get('no_defaults') ? 1 : 0);
eval { $self->{preset_bundle}->load_presets }; eval { $self->{preset_bundle}->load_presets };

View File

@ -48,7 +48,7 @@ sub new {
$self->{no_plater} = $params{no_plater}; $self->{no_plater} = $params{no_plater};
$self->{loaded} = 0; $self->{loaded} = 0;
$self->{lang_ch_event} = $params{lang_ch_event}; $self->{lang_ch_event} = $params{lang_ch_event};
# initialize tabpanel and menubar # initialize tabpanel and menubar
$self->_init_tabpanel; $self->_init_tabpanel;
$self->_init_menubar; $self->_init_menubar;
@ -216,8 +216,8 @@ sub _init_tabpanel {
$self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ; $self->{is_disabled_button_browse} = (!eval "use Net::Bonjour; 1") ? 1 : 0 ;
# A variable to inform C++ Tab implementation about user_agent # A variable to inform C++ Tab implementation about user_agent
$self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ; $self->{is_user_agent} = (eval "use LWP::UserAgent; 1") ? 1 : 0 ;
Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, wxTheApp->{app_config}, Slic3r::GUI::create_preset_tabs(wxTheApp->{preset_bundle}, $self->{no_controller},
$self->{no_controller}, $self->{is_disabled_button_browse}, $self->{is_disabled_button_browse},
$self->{is_user_agent}, $self->{is_user_agent},
$VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT, $VALUE_CHANGE_EVENT, $PRESETS_CHANGED_EVENT,
$BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT); $BUTTON_BROWSE_EVENT, $BUTTON_TEST_EVENT);

View File

@ -28,7 +28,6 @@
#include <wx/app.h> #include <wx/app.h>
#include <wx/button.h> #include <wx/button.h>
#include <wx/config.h>
#include <wx/dir.h> #include <wx/dir.h>
#include <wx/filename.h> #include <wx/filename.h>
#include <wx/frame.h> #include <wx/frame.h>
@ -171,6 +170,7 @@ void break_to_debugger()
wxApp *g_wxApp = nullptr; wxApp *g_wxApp = nullptr;
wxFrame *g_wxMainFrame = nullptr; wxFrame *g_wxMainFrame = nullptr;
wxNotebook *g_wxTabPanel = nullptr; wxNotebook *g_wxTabPanel = nullptr;
AppConfig *g_AppConfig = nullptr;
std::vector<Tab *> g_tabs_list; std::vector<Tab *> g_tabs_list;
@ -191,6 +191,11 @@ void set_tab_panel(wxNotebook *tab_panel)
g_wxTabPanel = tab_panel; g_wxTabPanel = tab_panel;
} }
void set_app_config(AppConfig *app_config)
{
g_AppConfig = app_config;
}
std::vector<Tab *>& get_tabs_list() std::vector<Tab *>& get_tabs_list()
{ {
return g_tabs_list; return g_tabs_list;
@ -241,13 +246,14 @@ bool select_language(wxArrayString & names,
bool load_language() bool load_language()
{ {
wxConfig config(g_wxApp->GetAppName());
long language; long language;
if (!config.Read(wxT("wxTranslation_Language"), if (!g_AppConfig->has("translation_language"))
&language, wxLANGUAGE_UNKNOWN))
{
language = wxLANGUAGE_UNKNOWN; language = wxLANGUAGE_UNKNOWN;
else {
auto str_language = g_AppConfig->get("translation_language");
language = str_language != "" ? stol(str_language) : wxLANGUAGE_UNKNOWN;
} }
if (language == wxLANGUAGE_UNKNOWN) if (language == wxLANGUAGE_UNKNOWN)
return false; return false;
wxArrayString names; wxArrayString names;
@ -269,13 +275,13 @@ bool load_language()
void save_language() void save_language()
{ {
wxConfig config(g_wxApp->GetAppName());
long language = wxLANGUAGE_UNKNOWN; long language = wxLANGUAGE_UNKNOWN;
if (g_wxLocale) { if (g_wxLocale) {
language = g_wxLocale->GetLanguage(); language = g_wxLocale->GetLanguage();
} }
config.Write(wxT("wxTranslation_Language"), language); std::string str_language = std::to_string(language);
config.Flush(); g_AppConfig->set("translation_language", str_language);
g_AppConfig->save();
} }
void get_installed_languages(wxArrayString & names, void get_installed_languages(wxArrayString & names,
@ -336,15 +342,15 @@ void add_debug_menu(wxMenuBar *menu, int event_language_change)
//#endif //#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, bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
int event_value_change, int event_presets_changed, int event_value_change, int event_presets_changed,
int event_button_browse, int event_button_test) 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 TabPrint (g_wxTabPanel, no_controller), preset_bundle);
add_created_tab(new TabFilament (g_wxTabPanel, no_controller), preset_bundle, app_config); 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), 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) { for (size_t i = 0; i < g_wxTabPanel->GetPageCount(); ++ i) {
Tab *tab = dynamic_cast<Tab*>(g_wxTabPanel->GetPage(i)); Tab *tab = dynamic_cast<Tab*>(g_wxTabPanel->GetPage(i));
if (! tab) 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); panel->create_preset_tab(preset_bundle);
// Load the currently selected preset into the GUI, update the preset selection box. // Load the currently selected preset into the GUI, update the preset selection box.

View File

@ -64,17 +64,18 @@ void break_to_debugger();
void set_wxapp(wxApp *app); void set_wxapp(wxApp *app);
void set_main_frame(wxFrame *main_frame); void set_main_frame(wxFrame *main_frame);
void set_tab_panel(wxNotebook *tab_panel); void set_tab_panel(wxNotebook *tab_panel);
void set_app_config(AppConfig *app_config);
void add_debug_menu(wxMenuBar *menu, int event_language_change); void add_debug_menu(wxMenuBar *menu, int event_language_change);
// Create a new preset tab (print, filament and printer), // 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, bool no_controller, bool is_disabled_button_browse, bool is_user_agent,
int event_value_change, int event_presets_changed, int event_value_change, int event_presets_changed,
int event_button_browse, int event_button_test); int event_button_browse, int event_button_test);
TabIface* get_preset_tab_iface(char *name); TabIface* get_preset_tab_iface(char *name);
// add it at the end of the tab panel. // 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 // Change option value in config
void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value, int opt_index = 0); void change_opt_value(DynamicPrintConfig& config, t_config_option_key opt_key, boost::any value, int opt_index = 0);

View File

@ -35,11 +35,11 @@ void set_tab_panel(SV *ui)
void add_debug_menu(SV *ui, int event_language_change) 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); %}; %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, void create_preset_tabs(PresetBundle *preset_bundle, bool no_controller,
bool no_controller, bool is_disabled_button_browse, bool is_user_agent, bool is_disabled_button_browse, bool is_user_agent,
int event_value_change, int event_presets_changed, int event_value_change, int event_presets_changed,
int event_button_browse, int event_button_test) 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, is_disabled_button_browse, is_user_agent,
event_value_change, event_presets_changed, event_value_change, event_presets_changed,
event_button_browse, event_button_test); %}; 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) int combochecklist_get_flags(SV *ui)
%code%{ RETVAL=Slic3r::GUI::combochecklist_get_flags((wxComboCtrl*)wxPli_sv_2_object(aTHX_ ui, "Wx::ComboCtrl")); %}; %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); %};