clicompanion-devs team mailing list archive
-
clicompanion-devs team
-
Mailing list archive
-
Message #00197
[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