Re: [Diffuse-users] Preferences update error?
Status: Beta
Brought to you by:
dtmoser
From: Derrick M. <der...@ya...> - 2014-05-13 17:22:14
|
Eizan, The preference value should never be None. I suspect the version of PyGTK on your system is returning None instead of a blank string from text widgets. Does the following patch fix the problem? Cheers, Derrick --- diffuse (revision 409) +++ diffuse (working copy) @@ -991,7 +991,7 @@ for k in self.int_prefs.keys(): self.int_prefs[k] = widgets[k].get_value_as_int() for k in self.string_prefs.keys(): - self.string_prefs[k] = widgets[k].get_text() + self.string_prefs[k] = nullToEmpty(widgets[k].get_text()) try: ss = [] for k, v in self.bool_prefs.items(): ________________________________ From: Eizan Miyamoto <eiz...@gm...> To: dif...@li... Sent: Tuesday, 13 May 2014, 13:04 Subject: [Diffuse-users] Preferences update error? Hi everyone, I've recently come across a possible(?) bug in the most recent Diffuse release (0.4.7). Basically, when I try to update a particular preference item, the change won't take and I get some errors spit out to my console. I don't see anything related to this on the bug tracker. More specifically, when I tick Preferences->Display->ignore end of line differences, the following error is emitted: Traceback (most recent call last): File "/usr/bin/diffuse", line 8098, in preferences_cb if self.prefs.runDialog(self.get_toplevel()): File "/usr/bin/diffuse", line 1003, in runDialog ss.append('%s "%s"\n' % (k, v.replace('\\', '\\\\').replace('"', '\\"'))) AttributeError: 'NoneType' object has no attribute 'replace' When I apply the following patch, the issue goes away, but it's a pretty messy hack: @@ -995,13 +995,13 @@ class Preferences: try: ss = [] for k, v in self.bool_prefs.items(): - if v != self.default_bool_prefs[k]: + if v is not None and v != self.default_bool_prefs[k]: ss.append('%s %s\n' % (k, v)) for k, v in self.int_prefs.items(): - if v != self.default_int_prefs[k]: + if v is not None and v != self.default_int_prefs[k]: ss.append('%s %s\n' % (k, v)) for k, v in self.string_prefs.items(): - if v != self.default_string_prefs[k]: + if v is not None and v != self.default_string_prefs[k]: ss.append('%s "%s"\n' % (k, v.replace('\\', '\\\\').replace('"', '\\"'))) ss.sort() f = open(self.path, 'w') Or, do I perhaps have Diffuse installed incorrectly? I installed it with: $ install.py --prefix=$HOME/opt --destdir=$HOME/opt note: $ uname -a Linux debian 3.2.0-4-486 #1 Debian 3.2.54-2 i686 GNU/Linux $ python --version Python 2.7.3 Thanks! Eizan ------------------------------------------------------------------------------ "Accelerate Dev Cycles with Automated Cross-Browser Testing - For FREE Instantly run your Selenium tests across 300+ browser/OS combos. Get unparalleled scalability from the best Selenium testing platform available Simple to use. Nothing to install. Get started now for free." http://p.sf.net/sfu/SauceLabs _______________________________________________ Diffuse-users mailing list Dif...@li... https://lists.sourceforge.net/lists/listinfo/diffuse-users |