summaryrefslogtreecommitdiffstats
path: root/frontend/frontend_gtk.py
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/frontend_gtk.py')
-rw-r--r--frontend/frontend_gtk.py29
1 files changed, 23 insertions, 6 deletions
diff --git a/frontend/frontend_gtk.py b/frontend/frontend_gtk.py
index 0eab401..665f830 100644
--- a/frontend/frontend_gtk.py
+++ b/frontend/frontend_gtk.py
@@ -25,6 +25,7 @@ import gobject #we need gobject.idle_add
import copy
import logging
from pyfirstaidkit import reporting
+from pyfirstaidkit.returns import *
import pprint
import os.path
import thread
@@ -317,12 +318,14 @@ class CallbacksFlagList(object):
return True
class ListDialog(object):
- def __init__(self, title, description, items, dir="", mode = 0):
+ def __init__(self, title, description, items, dir="", options = {}):
gtkb = gtk.Builder()
gtkb.add_from_file(os.path.join(dir, "gtk-list.xml"))
self._dialog = gtkb.get_object("listdialog")
self._dialog.set_title(title)
+ mode = options.get("mode", 0)
+
# text
if mode == 0:
self._store = gtk.ListStore(gobject.TYPE_STRING,
@@ -339,7 +342,7 @@ class ListDialog(object):
# checkboxes
- elif mode == 1:
+ elif mode == 1 or mode == 3:
self._store = gtk.ListStore(gobject.TYPE_STRING,
gobject.TYPE_STRING,
gobject.TYPE_BOOLEAN,
@@ -349,6 +352,7 @@ class ListDialog(object):
gobject.TYPE_NONE)
rend_text_check = gtk.CellRendererToggle()
+ rend_text_check.set_radio(mode == 3)
rend_text_check.connect('toggled', self.toggled_cb, self._store)
rend_text_check.set_property('activatable', True)
@@ -397,7 +401,7 @@ class ListDialog(object):
# value column
if mode == 0:
col_1 = gtk.TreeViewColumn('Value', rend_text_edit, text = 2)
- elif mode == 1:
+ elif mode == 1 or mode == 3:
col_1 = gtk.TreeViewColumn('Value', rend_text_check)
col_1.add_attribute(rend_text_check, "active", 2)
elif mode == 2:
@@ -430,7 +434,14 @@ class ListDialog(object):
err.destroy()
def toggled_cb(self, cell, path, store):
- store[path][2] = not store[path][2]
+ new = not store[path][2]
+ if cell.get_radio():
+ i = store.get_iter_first()
+ while i:
+ store[i][2] = False
+ i = store.iter_next(i)
+
+ store[path][2] = new
def changed_cb(self, combo, path, new, store):
store[path][2] = store[path][6][new]
@@ -788,7 +799,7 @@ class MainWindow(object):
vbox = glade.get_widget("choice_question_vbox")
radio_map = {}
group = None
- for (value, name) in question.options:
+ for (value, name) in question.choices:
r = gtk.RadioButton(group, name, False)
radio_map[r] = value
r.show()
@@ -864,7 +875,7 @@ class MainWindow(object):
description = question.description,
items = question.items,
dir = os.path.dirname(self._glade.relative_file(".")),
- mode = question.mode
+ options = question.options
)
res = dlg.run()
@@ -873,6 +884,12 @@ class MainWindow(object):
question.send_answer(message, dlg.items(), origin = self)
elif res==gtk.RESPONSE_CANCEL:
question.send_answer(message, [], origin = self)
+ elif res==gtk.RESPONSE_DELETE_EVENT:
+ question.send_answer(message, [], origin = self)
+ elif res==2:
+ question.send_answer(message, ReturnBack, origin = self)
+ elif res==1:
+ question.send_answer(message, ReturnAbort, origin = self)
else:
raise Exception("Unknown value %s" % (res,))