← Back to team overview

clicompanion-devs team mailing list archive

[Merge] lp:~dcaro/clicompanion/fix-801906 into lp:clicompanion

 

David Caro has proposed merging lp:~dcaro/clicompanion/fix-801906 into lp:clicompanion.

Requested reviews:
  CLI Companion Development Team (clicompanion-devs)
Related bugs:
  Bug #801906 in CLI Companion: "clicompanion crashes on start with ValueError in _get()"
  https://bugs.launchpad.net/clicompanion/+bug/801906

For more details, see:
https://code.launchpad.net/~dcaro/clicompanion/fix-801906/+merge/87167
-- 
https://code.launchpad.net/~dcaro/clicompanion/fix-801906/+merge/87167
Your team CLI Companion Development Team is requested to review the proposed merge of lp:~dcaro/clicompanion/fix-801906 into lp:clicompanion.
=== modified file 'clicompanion' (properties changed: -x to +x)
=== modified file 'clicompanionlib/config.py'
--- clicompanionlib/config.py	2011-03-12 16:08:24 +0000
+++ clicompanionlib/config.py	2011-12-30 20:42:24 +0000
@@ -23,30 +23,40 @@
 
 CONFIGDIR = os.path.expanduser("~/.config/clicompanion/")
 CONFIGFILE = os.path.expanduser("~/.config/clicompanion/config")
-
-class Config(object):
-
-    ''' 
-    create configuration file
-    '''
-
-    def create_config(self):
-    
-        if not os.path.exists(CONFIGFILE):
-            os.makedirs(CONFIGDIR)
-            config = ConfigParser.ConfigParser()
-            # set a number of parameters
-            config.add_section("terminal")
-            config.set("terminal", "scrollb", 500)
-            config.set("terminal", "colorf", '#FFFFFF')
-            config.set("terminal", "colorb", '#000000')
-            config.set("terminal", "encoding", 'utf-8')
-            # Writing our configuration file
-            with open(CONFIGFILE, 'wb') as f:
-                config.write(f)
-            
-        else:
-            pass
+DEFAULTS = { "scrollb": '500',
+             "colorf": '#FFFFFF',
+             "colorb": '#000000',
+             "encoding": 'UTF-8'}
+
+def create_config(conffile=CONFIGFILE):
+    configdir = conffile.rsplit(os.sep,1)[0]
+    if not os.path.exists(configdir):
+        try:
+            os.makedirs(configdir)
+        except Exception, e:
+            print 'Unable to create config at dir %s (%s)'%(configdir,e)
+            return False
+     # set a number of parameters
+    config = ConfigParser.SafeConfigParser()
+    config.add_section("terminal")
+    for option, value in DEFAULTS.items():
+        config.set("terminal", option, value)
+    # Writing our configuration file
+    with open(CONFIGFILE, 'wb') as f:
+       config.write(f)
+    print "INFO: Created config file at %s."%conffile
+    return config
+        
+
+def get_config(conffile=CONFIGFILE, confdir=CONFIGDIR):
+    config = None
+    if not os.path.isfile(conffile):
+        config = create_config(conffile)
+    if not config:
+        config = ConfigParser.SafeConfigParser(DEFAULTS)
+        config.add_section("terminal")
+        config.read([conffile])
+    return config
 
 
 

=== modified file 'clicompanionlib/tabs.py'
--- clicompanionlib/tabs.py	2011-03-29 17:31:11 +0000
+++ clicompanionlib/tabs.py	2011-12-30 20:42:24 +0000
@@ -22,14 +22,12 @@
 pygtk.require('2.0')
 import gtk
 import vte
-import ConfigParser
+import clicompanionlib.config as cc_config
 
 from clicompanionlib.utils import get_user_shell
 import clicompanionlib.controller
 import view
 
-CONFIGFILE = os.path.expanduser("~/.config/clicompanion/config")
-
 
 #definition gcp - how many pages is visible
 gcp=0;
@@ -116,11 +114,17 @@
         
     def update_term_config(self, _vte):
         ##read config file
-        config = ConfigParser.RawConfigParser()
-        config.read(CONFIGFILE)
+        config = cc_config.get_config()
 
         ##set terminal preferences from conig file data
-        config_scrollback = config.getint('terminal', 'scrollb')
+        try:
+            config_scrollback = config.getint('terminal', 'scrollb')
+        except ValueError:
+            print "WARNING: Invalid value for property 'terminal', int expected:"
+            print "    got '%s', using default '%s'"%(
+                        config.get('terminal', 'scrollb'),
+                        config.get('DEFAULT', 'scrollb'))
+            config_scrollback = config.getint('DEFAULT', 'scrollb')
         _vte.set_scrollback_lines(config_scrollback)
         
         color = '#2e3436:#cc0000:#4e9a06:#c4a000:#3465a4:#75507b:#06989a:#d3d7cf:#555753:#ef2929:#8ae234:#fce94f:#729fcf:#ad7fa8:#34e2e2:#eeeeec'
@@ -130,14 +134,29 @@
             if color:
                 palette.append(gtk.gdk.color_parse(color))
         
-        config_color_fore = gtk.gdk.color_parse(config.get('terminal', 'colorf'))
-        #_vte.set_color_foreground(config_color_fore)
-        
-        config_color_back = gtk.gdk.color_parse(config.get('terminal', 'colorb'))
-        #_vte.set_color_background( config_color_back)
-        
+        try:
+            config_color_fore = gtk.gdk.color_parse(config.get('terminal', 'colorf'))
+        except ValueError, e:
+            print "WARNING: Invalid value for property 'colorf':"
+            print "    got '%s', using default '%s'."%(
+                        config.get('terminal', 'colorf'),
+                        config.get('DEFAULT', 'colorf'))
+            config_color_fore = gtk.gdk.color_parse(config.get('DEFAULT', 'colorf'))
+        try:
+            config_color_back = gtk.gdk.color_parse(config.get('terminal', 'colorb'))
+        except ValueError, e:
+            print "WARNING: Invalid value for property 'colorb':"
+            print "    got '%s', using default '%s'."%(
+                        config.get('terminal', 'colorb'),
+                        config.get('DEFAULT', 'colorb'))
+            config_color_back = gtk.gdk.color_parse(config.get('DEFAULT', 'colorb'))
         _vte.set_colors(config_color_fore, config_color_back, palette)
         
         config_encoding = config.get('terminal', 'encoding')
+        if not config_encoding:
+            print "WARNING: Invalid value for property 'encoding':"
+            print "    got '', using default '%s'"%config.get('DEFAULT', 'encoding')
+            config_encoding = config.get('DEFAULT', 'encoding')
         _vte.set_encoding(config_encoding)
+
         

=== modified file 'clicompanionlib/view.py'
--- clicompanionlib/view.py	2011-11-20 16:51:59 +0000
+++ clicompanionlib/view.py	2011-12-30 20:42:24 +0000
@@ -22,7 +22,6 @@
 import pygtk
 pygtk.require('2.0')
 import os
-import ConfigParser
 
 # import vte and gtk or print error
 try:
@@ -45,7 +44,7 @@
 import clicompanionlib.controller
 from clicompanionlib.utils import get_user_shell , Borg
 import clicompanionlib.tabs
-from clicompanionlib.config import Config
+import clicompanionlib.config as cc_config
 
 
 CONFIGFILE = os.path.expanduser("~/.config/clicompanion/config")
@@ -235,9 +234,7 @@
         self.setup()
 
         ##create the config file
-        conf_mod = Config()
-        conf_mod.create_config()
-        
+        cc_config.create_config()
         
         ## style to reduce padding around tabs
         ## TODO: Find a better place for this? 


Follow ups