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)
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, ))
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):
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)
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)
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: