X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fhildonize.py;h=6c50017f5e2a80ce673b0bdd192629fbdb1aa04e;hb=15b7c992b85a342c95fc1d0e4312887b8d3a2cf4;hp=74cdb41bdaa911f3390cf61efc2343adb11e5a80;hpb=065b40e5585ae8af48f4d1bc8197c0e53151ba6b;p=gc-dialer diff --git a/src/hildonize.py b/src/hildonize.py index 74cdb41..6c50017 100644 --- a/src/hildonize.py +++ b/src/hildonize.py @@ -190,6 +190,20 @@ else: set_cell_thumb_selectable = _null_set_cell_thumb_selectable +def _hildon_set_pix_cell_thumb_selectable(renderer): + renderer.set_property("stock-size", 48) + + +def _null_set_pix_cell_thumb_selectable(renderer): + pass + + +if IS_HILDON_SUPPORTED: + set_pix_cell_thumb_selectable = _hildon_set_pix_cell_thumb_selectable +else: + set_pix_cell_thumb_selectable = _null_set_pix_cell_thumb_selectable + + def _fremantle_show_information_banner(parent, message): hildon.hildon_banner_show_information(parent, "", message) @@ -508,7 +522,7 @@ def _null_touch_selector(parent, title, items, defaultIndex = -1): treeView.set_model(model) treeView.append_column(column) selection = treeView.get_selection() - selection.set_mode(gtk.SELECTION_NONE) + selection.set_mode(gtk.SELECTION_SINGLE) if 0 < defaultIndex: selection.select_path((defaultIndex, )) @@ -589,17 +603,27 @@ def _hildon_touch_selector_entry(parent, title, items, defaultItem): raise RuntimeError("Unrecognized response %r", response) -def _on_null_touch_selector_entry_entry_activated(entry, dialog, customEntry, result): +def _on_null_touch_selector_entry_entry_changed(entry, result, selection, defaultIndex): + custom = entry.get_text().strip() + if custom: + result[0] = custom + selection.unselect_all() + else: + result[0] = None + selection.select_path((defaultIndex, )) + + +def _on_null_touch_selector_entry_entry_activated(customEntry, dialog, result): dialog.response(gtk.RESPONSE_OK) - result.append(customEntry.get_text()) + result[0] = customEntry.get_text() -def _on_null_touch_selector_entry_tree_activated(treeView, path, column, dialog, selection, result): +def _on_null_touch_selector_entry_tree_activated(treeView, path, column, dialog, result): dialog.response(gtk.RESPONSE_OK) model = treeView.get_model() itr = model.get_iter(path) if itr is not None: - result.append(model.get_value(itr, 0)) + result[0] = model.get_value(itr, 0) def _null_touch_selector_entry(parent, title, items, defaultItem): @@ -615,14 +639,14 @@ def _null_touch_selector_entry(parent, title, items, defaultItem): cell = gtk.CellRendererText() set_cell_thumb_selectable(cell) column = gtk.TreeViewColumn(title) - column .pack_start(cell, expand=True) + column.pack_start(cell, expand=True) column.add_attribute(cell, "text", 0) treeView = gtk.TreeView() treeView.set_model(model) treeView.append_column(column) selection = treeView.get_selection() - selection.set_mode(gtk.SELECTION_NONE) + selection.set_mode(gtk.SELECTION_SINGLE) scrolledWin = gtk.ScrolledWindow() scrolledWin.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC) @@ -638,7 +662,7 @@ def _null_touch_selector_entry(parent, title, items, defaultItem): title, parent, gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT, - (gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), + (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL), ) dialog.set_default_response(gtk.RESPONSE_CANCEL) dialog.get_child().add(layout) @@ -646,23 +670,33 @@ def _null_touch_selector_entry(parent, title, items, defaultItem): scrolledWin = hildonize_scrollwindow(scrolledWin) + result = [None] if 0 < defaultIndex: selection.select_path((defaultIndex, )) + result[0] = defaultItem else: customEntry.set_text(defaultItem) - result = [] - customEntry.connect("activate", _on_null_touch_selector_entry_entry_activated, dialog, customEntry, result) - treeView.connect("row-activated", _on_null_touch_selector_entry_tree_activated, dialog, selection, result) + + customEntry.connect("activate", _on_null_touch_selector_entry_entry_activated, dialog, result) + customEntry.connect("changed", _on_null_touch_selector_entry_entry_changed, result, selection, defaultIndex) + treeView.connect("row-activated", _on_null_touch_selector_entry_tree_activated, dialog, result) try: dialog.show_all() response = dialog.run() if response == gtk.RESPONSE_OK: - if len(result) != 1: - raise RuntimeError("No selection made") + _, itr = selection.get_selected() + if itr is not None: + return model.get_value(itr, 0) else: - return result[0] + enteredText = customEntry.get_text().strip() + if enteredText: + return enteredText + elif result[0] is not None: + return result[0] + else: + raise RuntimeError("No selection made") elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT: raise RuntimeError("User cancelled request") else: