LAview.Core/src/core/Settings.vala

100 lines
2.9 KiB
Vala

namespace LAview.Core {
public class AppSettings {
Settings settings;
string _lyx_path = "lyx";
string _latexmk_pl_path = "latexmk";
string _perl_path = "perl";
string[] _templates_strv;
string _data_path = "data";
string _object_path = "object";
public string lyx_path {
get { return _lyx_path; }
set {
if (settings != null) settings.set_string ("lyx-path", value);
_lyx_path = value;
}
}
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;
}
}
public string perl_path {
get { return _perl_path; }
set {
if (settings != null) settings.set_string ("perl-path", value);
_perl_path = value;
}
}
public string[] templates {
get { return _templates_strv; }
set {
_templates_strv = value;
if (settings != null) settings.set_strv("templates", _templates_strv);
}
}
public string data_path {
get { return _data_path; }
set {
if (settings != null) settings.set_string ("data-path", value);
_data_path = value;
}
}
public string object_path {
get { return _object_path; }
set {
if (settings != null) settings.set_string ("object-path", value);
_object_path = 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");
});
_templates_strv = settings.get_strv("templates");
settings.changed["templates"].connect (() => {
_templates_strv = settings.get_strv("templates");
});
_data_path = settings.get_string("data-path");
settings.changed["data-path"].connect (() => {
_data_path = settings.get_string("data-path");
});
_object_path = settings.get_string("object-path");
settings.changed["object-path"].connect (() => {
_object_path = settings.get_string("object-path");
});
}
}
}