import gtk
import hildon
+import gobject
from gettext import gettext as _
from meabook.ui.fremantle_ui.common import create_button
def __init__(self, fields, fields_to_select, parent):
dialog = hildon.PickerDialog(parent)
dialog.set_title(_('Fields to show'))
+ # fill fields list
selector = hildon.TouchSelector(text=True)
- # fill items list
- for field in fields.keys():
- selector.append_text(field)
+ model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ for name, internal_name in fields.items():
+ model.append((name, internal_name))
+ if selector.get_num_columns():
+ selector.remove_column(0)
+ selector.append_text_column(model, True)
+ selector.get_column(0).set_property('text-column', 0)
selector.set_column_selection_mode( \
hildon.TOUCH_SELECTOR_SELECTION_MODE_MULTIPLE)
selector.unselect_all(0)
# mark necessary fields
- model = selector.get_model(0)
for index, field in enumerate(fields.values()):
if field in fields_to_select:
selector.select_iter(0, model.get_iter(index), False)
def run(self):
if self.dialog.run() == gtk.RESPONSE_OK:
- indexes = [item[0] for item in self.selector.get_selected_rows(0)]
+ indexes_of_selected_rows = [row[0] for row in \
+ self.selector.get_selected_rows(0)]
+ model = self.selector.get_model(0)
self.dialog.destroy()
- return [self.fields.values()[index] for index in indexes]
+ return [model[index][1] for index in indexes_of_selected_rows]
self.dialog.destroy()
return None
for index, field in enumerate(ordered_fields):
button = create_button(' '.join([_('Position'), str(index)]), \
_(field))
- button.connect('clicked', self.show_fields_chooser, fields.keys(), \
+ button.connect('clicked', self.show_fields_chooser, fields, \
dialog)
+ button.set_data('field', field)
vbox.pack_start(button, expand=False)
pannable_area.add_with_viewport(vbox)
dialog.add_button(_('Done'), gtk.RESPONSE_OK)
def run(self):
if self.dialog.run() == gtk.RESPONSE_OK:
- selected_fields = [self.fields[button.get_value().decode('utf-8')] \
- for button in self.widgets_box.get_children()]
+ selected_fields = [button.get_data('field') for button in \
+ self.widgets_box.get_children()]
self.dialog.destroy()
return selected_fields
self.dialog.destroy()
dialog = hildon.PickerDialog(parent)
dialog.set_title(_('Fields'))
+ # fill fields list
selector = hildon.TouchSelector(text=True)
- dialog.set_selector(selector)
+ model = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING)
+ for name, internal_name in fields.items():
+ model.append((name, internal_name))
+ if selector.get_num_columns():
+ selector.remove_column(0)
+ selector.append_text_column(model, True)
+ selector.get_column(0).set_property('text-column', 0)
selector.set_column_selection_mode( \
hildon.TOUCH_SELECTOR_SELECTION_MODE_SINGLE)
- # fill fields list
- for field in fields:
- selector.append_text(field)
+ selector.unselect_all(0)
+ dialog.set_selector(selector)
dialog.run()
+ field = selector.get_model(0)[selector.get_active(0)][1]
widget.set_value(selector.get_current_text())
+ widget.set_data('field', field)
dialog.destroy()