From: Max Usachev Date: Thu, 24 Jun 2010 12:59:01 +0000 (+0300) Subject: fixed bugs with configuration dialogs (removed localization dependency) X-Git-Url: http://git.maemo.org/git/?p=meabook;a=commitdiff_plain;h=13dda03da9e097650d33b253c5d102d5ba1cdb8d fixed bugs with configuration dialogs (removed localization dependency) --- diff --git a/ui/fremantle_ui/configuration.py b/ui/fremantle_ui/configuration.py index 84f6924..27012bc 100644 --- a/ui/fremantle_ui/configuration.py +++ b/ui/fremantle_ui/configuration.py @@ -4,6 +4,7 @@ Configuration dialogs import gtk import hildon +import gobject from gettext import gettext as _ from meabook.ui.fremantle_ui.common import create_button @@ -63,15 +64,19 @@ class FieldsConfigurationDialog(): 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) @@ -83,9 +88,11 @@ class FieldsConfigurationDialog(): 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 @@ -103,8 +110,9 @@ class FieldsOrderConfigurationDialog(): 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) @@ -117,8 +125,8 @@ class FieldsOrderConfigurationDialog(): 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() @@ -129,14 +137,22 @@ class FieldsOrderConfigurationDialog(): 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()