[gDesklets] Current status of Bug #604103 "<list> prefs item doesn't save software-created items"
- From: Ronny Lorenz <raumzeit gmx net>
- To: gDesklets Mailing List <gdesklets-list gnome org>
- Subject: [gDesklets] Current status of Bug #604103 "<list> prefs item doesn't save software-created items"
- Date: Fri, 03 Feb 2012 15:46:27 +0100
Hello everyone.
I recently used the <list> tag in a desklet and managed to overcome the
lack of automagical storage of my software created items using
some scripting in the desklet. But when I restored the items list and
they are shown properly by the config dialog the problem arises that
I cant set the selection. After setting the bound variable (bound to
<list>) to a list, e.g. ['0','1'] to indicate that the first and second item
should be checked, the gtk widget does not get updated!
I traced back the problem down to "config/ConfigList.py"
ConfigList.__setp_value() method.
Here, the 'value' that gets passed together with 'key' usually is a list
of stringified indices
But the implemented code tries to find an item of type 'value' in its
item list and therefore
always fails with an error since the item list is a list of again
stringified indices and not lists
of such.
After I thought a little about that I found, especially regarding cases
where 'value' contains
elements which are not included in the items list, that one can just
throw out all such occurences.
After doing this a call of ConfigList._set_selection() with the reduced
list then redraws the selection
in the widgets.
One could also throw out duplicate entries from the list at this place...?
I implemented that behavior now and it seems to be working quite well
Maybe the developers can have a look at the changes I made or just
comment on the current status
of a fix of this issue
Greetz
Ronny
Below is the diff of 0.3x branch Rev. 186 and my hack
--- a/config/ConfigList.py 2010-09-08 15:55:54.000000000 +0200
+++ b/config/ConfigList.py 2012-02-03 15:41:01.468154337 +0100
@@ -226,14 +226,29 @@
def _setp_value(self, key, value):
- # set the value (selection) property
- try:
- index = self.__items_values.index(value)
- except:
- index = 0
+ # create a temporary list from value
+ # which contains only values from
+ # self.__items_values
+ tmplist = []
+ for v in value:
+ try:
+ index = self.__items_values.index(v)
+ tmplist.append(v)
+ except:
+ index = -1
- if index:
- self.__listview.set_cursor(index)
- self.__listview.scroll_to_cell(index)
+ # update the selection according to
+ # tmplist
+ self._set_selection(key, tmplist)
+
+# # set the value (selection) property
+# try:
+# index = self.__items_values.index(value)
+# except:
+# index = 0
+#
+# if index:
+# self.__listview.set_cursor(index)
+# self.__listview.scroll_to_cell(index)
self._set_config(value)
self._setp(key, value)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]