diff --git a/src/core/Core.vala b/src/core/Core.vala index f97298c..797e9ef 100644 --- a/src/core/Core.vala +++ b/src/core/Core.vala @@ -11,36 +11,26 @@ namespace LAview.Core { * --- I N T E R F A C E --- * */ /**/ - public string lyx_path { - get { return _lyx_path; } - set { - if (settings != null) settings.set_string ("lyx-path", value); - _lyx_path = value; - } - default = "lyx"; - } - - public string latexmk_pl_path { - get { return _latexmk_pl_path; } - set { - if (settings != null) settings.set_string ("latexmk-pl-path", value); - _latexmk_pl_path = value; - } - default = "latexmk"; - } - - public string perl_path { - get { return _perl_path; } - set { - if (settings != null) settings.set_string ("perl-path", value); - _perl_path = value; - } - default = "perl"; - } + AppSettings settings; public Gee.HashMap data_plugins = new Gee.HashMap(); public Gee.HashMap object_plugins = new Gee.HashMap(); + public string lyx_path { + get { return settings.lyx_path; } + set { settings.lyx_path = value; } + } + + public string latexmk_pl_path { + get { return settings.latexmk_pl_path; } + set { settings.latexmk_pl_path = value; } + } + + public string perl_path { + get { return settings.perl_path; } + set { settings.perl_path = value; } + } + /** * Load Data Modules. */ @@ -87,20 +77,8 @@ namespace LAview.Core { AppDirs.init (); load_data_modules (AppDirs.data_plugins_dir); load_object_modules (AppDirs.object_plugins_dir); - settings_init (); + settings = new AppSettings(); load_templates_list (); - _lyx_path = settings.get_string("lyx-path"); - settings.changed["lyx-path"].connect (() => { - _lyx_path = settings.get_string("lyx-path"); - }); - _latexmk_pl_path = settings.get_string("latexmk-pl-path"); - settings.changed["latexmk-pl-path"].connect (() => { - _latexmk_pl_path = settings.get_string("latexmk-pl-path"); - }); - _perl_path = settings.get_string("perl-path"); - settings.changed["perl-path"].connect (() => { - _perl_path = settings.get_string("perl-path"); - }); clear_cache (); } @@ -151,7 +129,7 @@ namespace LAview.Core { objects_list = { }; composed_objects = { }; - var converter = new Conv.Converter.new_with_paths (_lyx_path, _latexmk_pl_path, _perl_path); + var converter = new Conv.Converter.new_with_paths (settings.lyx_path, settings.latexmk_pl_path, settings.perl_path); var t_path = Path.build_path (Path.DIR_SEPARATOR_S, AppDirs.cache_dir, "template.tex"); var lyx_file_path = templates[template_index].get_path(); try { @@ -210,7 +188,7 @@ namespace LAview.Core { if (c == false) throw new IOError.FAILED (_("Prepare document first.")); generate_document_tex (); - var converter = new Conv.Converter.new_with_paths (_lyx_path, _latexmk_pl_path, _perl_path); + var converter = new Conv.Converter.new_with_paths (settings.lyx_path, settings.latexmk_pl_path, settings.perl_path); return converter.tex2pdf (doc_tex_path(), doc_pdf_path()); } @@ -236,12 +214,8 @@ namespace LAview.Core { * --- I M P L E M E N T A T I O N --- * */ /**/ - string _lyx_path; - string _latexmk_pl_path; - string _perl_path; Gee.HashMap data_plugins2 = new Gee.HashMap(); Gee.HashMap object_plugins2 = new Gee.HashMap(); - Settings settings; TemplateList templates = new TemplateList (); static Gee.ArrayList data_modules = new Gee.ArrayList(); static Gee.ArrayList object_modules = new Gee.ArrayList(); @@ -252,21 +226,8 @@ namespace LAview.Core { bool[] composed_objects = {}; int last_template_index = -1; - void settings_init () throws Error { - string schema_file = AppDirs.settings_dir+"/gschemas.compiled"; - if (!File.new_for_path (schema_file).query_exists ()) - throw new IOError.NOT_FOUND ("File "+schema_file+" not found"); - SettingsSchemaSource sss = new SettingsSchemaSource.from_directory (AppDirs.settings_dir, null, false); - string schema_name = "ws.backbone.laview.core-"+Config.VERSION_MAJOR.to_string(); - SettingsSchema schema = sss.lookup (schema_name, false); - if (schema == null) { - throw new IOError.NOT_FOUND ("Schema "+schema_name+" not found in "+schema_file); - } - settings = new Settings.full (schema, null, null); - } - void load_templates_list () { - var templates_strv = settings.get_strv("templates"); + var templates_strv = settings.templates; templates.clear (); foreach (var ts in templates_strv) add_template (ts); @@ -277,7 +238,7 @@ namespace LAview.Core { foreach (var t in templates) { templates_strv += (t.get_path ()); } - settings.set_strv("templates", templates_strv); + settings.templates = templates_strv; } ~Core () { @@ -772,7 +733,7 @@ namespace LAview.Core { } string generate_document_lyx () throws Error { generate_document_tex (); - var converter = new Conv.Converter.new_with_paths (_lyx_path, _latexmk_pl_path, _perl_path); + var converter = new Conv.Converter.new_with_paths (settings.lyx_path, settings.latexmk_pl_path, settings.perl_path); var sp = converter.tex2lyx (doc_tex_path(), doc_lyx_path()); if (sp.wait_check() == false) throw new IOError.FAILED(_("Error running tex2lyx subprocess.")); if (!File.new_for_path(doc_lyx_path()).query_exists()) diff --git a/src/core/Settings.vala b/src/core/Settings.vala new file mode 100644 index 0000000..0a5f7c6 --- /dev/null +++ b/src/core/Settings.vala @@ -0,0 +1,73 @@ +namespace LAview.Core { + + public class AppSettings { + Settings settings; + + string _lyx_path; + string _latexmk_pl_path; + string _perl_path; + string[] _templates_strv; + + public string lyx_path { + get { return _lyx_path; } + set { + if (settings != null) settings.set_string ("lyx-path", value); + _lyx_path = value; + } + default = "lyx"; + } + + public string latexmk_pl_path { + get { return _latexmk_pl_path; } + set { + if (settings != null) settings.set_string ("latexmk-pl-path", value); + _latexmk_pl_path = value; + } + default = "latexmk"; + } + + public string perl_path { + get { return _perl_path; } + set { + if (settings != null) settings.set_string ("perl-path", value); + _perl_path = value; + } + default = "perl"; + } + + public string[] templates { + get { return _templates_strv; } + set { + if (settings != null) settings.set_strv("templates", _templates_strv); + _templates_strv = value; + } + } + + public AppSettings () throws Error { + string schema_file = AppDirs.settings_dir+"/gschemas.compiled"; + if (!File.new_for_path (schema_file).query_exists ()) + throw new IOError.NOT_FOUND ("File "+schema_file+" not found"); + SettingsSchemaSource sss = new SettingsSchemaSource.from_directory (AppDirs.settings_dir, null, false); + string schema_name = "ws.backbone.laview.core-"+Config.VERSION_MAJOR.to_string(); + SettingsSchema schema = sss.lookup (schema_name, false); + if (schema == null) { + throw new IOError.NOT_FOUND ("Schema "+schema_name+" not found in "+schema_file); + } + settings = new Settings.full (schema, null, null); + + _lyx_path = settings.get_string("lyx-path"); + settings.changed["lyx-path"].connect (() => { + _lyx_path = settings.get_string("lyx-path"); + }); + _latexmk_pl_path = settings.get_string("latexmk-pl-path"); + settings.changed["latexmk-pl-path"].connect (() => { + _latexmk_pl_path = settings.get_string("latexmk-pl-path"); + }); + _perl_path = settings.get_string("perl-path"); + settings.changed["perl-path"].connect (() => { + _perl_path = settings.get_string("perl-path"); + }); + + } + } +}