creating one window with toolbar presentation
[findit] / src / config.py
index b2dab48..72da5e2 100644 (file)
@@ -3,16 +3,22 @@
 # vim: sw=4 ts=4 expandtab ai
 
 import gtk
+from configobj import ConfigObj
+from validate import Validator
 
 class Config_Control(object):
-    def __init__(self):
-        config = Config_Abstraction('findit.cfg')
-        conf_ui = Config_Presentation()
 
+    def __init__(self):
+        self.config = Config_Abstraction('findit.ini', 'config_spec.ini')
+        #conf_ui = Config_Presentation()
+    
+    def get(self, param):
+        return self.config.get_val(param)
 
 class Config_Abstraction(object):
-    def __init__(self, config_file):
-        self.load_config(config_file)
+
+    def __init__(self, config_file, config_spec_file):
+        self.load_config(config_file, config_spec_file)
 
     def get_val(self, param):
         return self.conf[param]
@@ -20,16 +26,17 @@ class Config_Abstraction(object):
     def set_val(self, param, value):
         self.conf[param] = value
 
-    def load_config(self, config_file):
-        # Здесь планируется загрузка конфига из файла - пока так присваивается
-        self.conf = {}
-        self.conf['default_start_dir'] = '/home/'
-        self.conf['default_count'] = 10
-        self.conf['ignore_dir_list'] = ['/dev', '/proc', '/sys', '/mnt']
-
-    def save_config(self, config_file):
-        pass
+    def load_config(self, config_file, config_spec_file):
+        self.conf = ConfigObj(config_file, configspec=config_spec_file)
+        val = Validator()
+        test = self.conf.validate(val)
+        if not test:
+            print 'Failed Load Config File'
 
+    def save_config(self, config_file=None):
+        if config_file:
+            self.conf.filename = config_file
+        self.conf.write()
 
 class Config_Presentation(gtk.Window):
     def __init__(self):
@@ -40,3 +47,12 @@ class Config_Presentation(gtk.Window):
     def run(self):
         self.show_all()
         gtk.main()
+
+
+if __name__ == '__main__':
+    cfg = Config_Control()
+    #cfg.config.set_val('default_pkg_count',15)
+    print cfg.config.conf
+    print cfg.get('window_width'), type(cfg.get('window_width'))
+    print cfg.get('ignore_dir_list'), type(cfg.get('ignore_dir_list'))
+    cfg.config.save_config()