X-Git-Url: http://git.maemo.org/git/?p=gc-dialer;a=blobdiff_plain;f=src%2Fhildonize.py;h=09ee705d9115b013c0f4ee69d4421506e6d33a24;hp=74cdb41bdaa911f3390cf61efc2343adb11e5a80;hb=0320d6d2086ce89fe554d8f902531f5b00dbec94;hpb=065b40e5585ae8af48f4d1bc8197c0e53151ba6b;ds=sidebyside diff --git a/src/hildonize.py b/src/hildonize.py index 74cdb41..09ee705 100644 --- a/src/hildonize.py +++ b/src/hildonize.py @@ -92,16 +92,14 @@ except AttributeError: hildonize_window = _null_hildonize_window -def _fremantle_hildonize_menu(window, gtkMenu, buttons): +def _fremantle_hildonize_menu(window, gtkMenu): appMenu = hildon.AppMenu() - for button in buttons: - appMenu.append(button) window.set_app_menu(appMenu) gtkMenu.get_parent().remove(gtkMenu) return appMenu -def _hildon_hildonize_menu(window, gtkMenu, ignoredButtons): +def _hildon_hildonize_menu(window, gtkMenu): hildonMenu = gtk.Menu() for child in gtkMenu.get_children(): child.reparent(hildonMenu) @@ -110,7 +108,7 @@ def _hildon_hildonize_menu(window, gtkMenu, ignoredButtons): return hildonMenu -def _null_hildonize_menu(window, gtkMenu, ignoredButtons): +def _null_hildonize_menu(window, gtkMenu): return gtkMenu @@ -190,6 +188,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) @@ -365,8 +377,9 @@ def _fremantle_hildonize_scrollwindow(scrolledWindow): pannableWindow.add(child) parent = scrolledWindow.get_parent() - parent.remove(scrolledWindow) - parent.add(pannableWindow) + if parent is not None: + parent.remove(scrolledWindow) + parent.add(pannableWindow) return pannableWindow @@ -508,7 +521,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 +602,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 +638,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 +661,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 +669,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: @@ -688,12 +721,21 @@ if __name__ == "__main__": win = gtk.Window() win.add(label) win = hildonize_window(app, win) - if False: + if False and IS_FREMANTLE_SUPPORTED: + appMenu = hildon.AppMenu() + for i in xrange(5): + b = gtk.Button(str(i)) + appMenu.append(b) + win.set_app_menu(appMenu) + win.show_all() + appMenu.show_all() + gtk.main() + elif False: print touch_selector(win, "Test", ["A", "B", "C", "D"], 2) - if True: + elif False: print touch_selector_entry(win, "Test", ["A", "B", "C", "D"], "C") print touch_selector_entry(win, "Test", ["A", "B", "C", "D"], "Blah") - if False: + elif False: import pprint name, value = "", "" goodLocals = [ @@ -701,11 +743,11 @@ if __name__ == "__main__": if not name.startswith("_") ] pprint.pprint(goodLocals) - if False: + elif False: import time show_information_banner(win, "Hello World") time.sleep(5) - if False: + elif False: import time banner = show_busy_banner_start(win, "Hello World") time.sleep(5)