Cache config values for fater read access
authorEnrico Zini <enrico@enricozini.org>
Thu, 7 Jan 2010 16:08:41 +0000 (16:08 +0000)
committerEnrico Zini <enrico@enricozini.org>
Thu, 7 Jan 2010 16:08:41 +0000 (16:08 +0000)
src/config.vala

index a7be513a3169b494984b2fd6a8c94f7f04c63100..e9c5cec3321e311d347590dd3f294eb1bfbaa92b 100644 (file)
@@ -30,13 +30,14 @@ public class Config
         lua.pop(1);
         return res;
     }
-    protected void set_string(string name, string? val)
+    protected string set_string(string name, string? val)
     {
         if (val == null)
             lua.push_nil();
         else
             lua.push_string(val);
         lua.set_global(name);
+        return val;
     }
     protected weak int get_int(string name)
     {
@@ -45,64 +46,94 @@ public class Config
         lua.pop(1);
         return res;
     }
-    protected void set_int(string name, int val)
+    protected int set_int(string name, int val)
     {
         lua.push_integer(val);
         lua.set_global(name);
+        return val;
     }
 
+    private string _version;
     public string version
     {
-        get { return get_string("version"); }
-        set { set_string("version", value); }
+        get { return _version; }
+        set { _version = set_string("version", value); }
     }
+
     // "phone" or "laptop"
+    private string _profile;
     public string profile
     {
-        get { return get_string("profile"); }
-        set { set_string("profile", value); }
+        get { return _profile; }
+        set { _profile = set_string("profile", value); }
     }
+
+    private string _homedir;
     public string homedir
     {
-        get { return get_string("homedir"); }
-        set { set_string("homedir", value); }
+        get { return _homedir; }
+        set { _homedir = set_string("homedir", value); }
     }
+
+    private string _icondir;
     public string icondir
     {
-        get { return get_string("icondir"); }
-        set { set_string("icondir", value); }
+        get { return _icondir; }
+        set { _icondir = set_string("icondir", value); }
     }
+
+    private int _min_button_height;
     public int min_button_height
     {
-        get { return get_int("min_button_height"); }
-        set { set_int("min_button_height", value); }
+        get { return _min_button_height; }
+        set { _min_button_height = set_int("min_button_height", value); }
     }
+
+    private string _gprs_apn;
     public string gprs_apn
     {
-        get { return get_string("gprs_apn"); }
-        set { set_string("gprs_apn", value); }
+        get { return _gprs_apn; }
+        set { _gprs_apn = set_string("gprs_apn", value); }
     }
+
+    private string _gprs_user;
     public string gprs_user
     {
-        get { return get_string("gprs_user"); }
-        set { set_string("gprs_user", value); }
+        get { return _gprs_user; }
+        set { _gprs_user = set_string("gprs_user", value); }
     }
+
+    private string _gprs_pass;
     public string gprs_pass
     {
-        get { return get_string("gprs_pass"); }
-        set { set_string("gprs_pass", value); }
+        get { return _gprs_pass; }
+        set { _gprs_pass = set_string("gprs_pass", value); }
     }
     public int backlight_max
     {
         get;
         set;
     }
+
     private string _argv0;
     public string argv0 {
         get { return _argv0; }
         set { _argv0 = value; }
     }
 
+    /// Reread config values from the Lua VM, to be run after running Lua code
+    protected void refresh_from_lua()
+    {
+        _version = get_string("version");
+        _profile = get_string("profile");
+        _homedir = get_string("homedir");
+        _icondir = get_string("icondir");
+        _min_button_height = get_int("min_button_height");
+        _gprs_apn = get_string("gprs_apn");
+        _gprs_user = get_string("gprs_user");
+        _gprs_pass = get_string("gprs_pass");
+    }
+
     public Config()
     {
         lua = new Lua.LuaVM();
@@ -126,70 +157,10 @@ public class Config
         {
             zavai.log.error("Failed to parse " + homedir + "/config: " + lua.to_string(-1));
         }
+        refresh_from_lua();
     }
-
-/*
-    def _get_homedir(self):
-        res = self.get("global", "home")
-        if res is None:
-            res = os.path.expanduser("~/.zavai")
-        if not os.path.isdir(res):
-            zavai.info("Creating directory", res)
-            os.makedirs(res)
-        return res
-*/
 }
 
-/*
-import os
-import ConfigParser, StringIO
-
-def read_config(rootDir = None, defaults = None, nick="octofuss"):
-    """
-    Read octofuss configuration, returning a ConfigParser object
-    """
-    if rootDir == None:
-        rootDir = os.environ.get(nick.upper() + "_CONFDIR", "/etc/" + nick)
-    files = []
-    def trytouse(path):
-        if os.path.exists(path):
-            files.append(path)
-
-    # Start with the main config file
-    trytouse(os.path.join(rootDir, nick + ".conf"))
-
-    # Add snippets found in rc.d style directory
-    subdir = os.path.join(rootDir, nick + ".conf.d")
-    if os.path.isdir(subdir):
-        for file in sorted(os.listdir(subdir)):
-            if file.startswith('#'): continue
-            if file.startswith('.'): continue
-            if file.endswith('~'): continue
-            if file.endswith('.bak'): continue
-            trytouse(os.path.join(subdir, file))
-
-    config = ConfigParser.ConfigParser()
-    if defaults != None:
-        infile = StringIO.StringIO(defaults)
-        config.readfp(infile, "defaults")
-    config.read(files)
-    return config
-import os.path
-import zavai
-
-class Config:
-    def __init__(self):
-        self.conf = zavai.read_config(nick="zavai")
-
-    def get(self, section, name, default=None):
-        if self.conf.has_section(section):
-            if self.conf.has_option(section, name):
-                return self.conf.get(section, name)
-        return None
-
-    homedir = property(_get_homedir)
-*/
-
 public Config config = null;
 
 }