Finishing up the hildonization of the number editor
[gc-dialer] / src / hildonize.py
index 28dd4cb..0db6905 100644 (file)
@@ -101,3 +101,58 @@ if IS_HILDON:
 else:
        def set_thumb_scrollbar(scrolledWindow):
                pass
+
+
+if IS_HILDON:
+       def request_number(parent, title, range, default):
+               spinner = hildon.NumberEditor(*range)
+               spinner.set_value(default)
+
+               dialog = gtk.Dialog(
+                       title,
+                       parent,
+                       gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
+                       (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL),
+               )
+               dialog.set_default_response(gtk.RESPONSE_CANCEL)
+               dialog.get_child().add(spinner)
+
+               try:
+                       dialog.show_all()
+                       response = dialog.run()
+               finally:
+                       dialog.hide()
+
+               if response == gtk.RESPONSE_OK:
+                       return spinner.get_value()
+               elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
+                       raise RuntimeError("User cancelled request")
+               else:
+                       raise RuntimeError("Unrecognized response %r", response)
+else:
+       def request_number(parent, title, range, default):
+               adjustment = gtk.Adjustment(default, range[0], range[1], 1, 5, 0)
+               spinner = gtk.SpinButton(adjustment, 0, 0)
+               spinner.set_wrap(False)
+
+               dialog = gtk.Dialog(
+                       title,
+                       parent,
+                       gtk.DIALOG_MODAL|gtk.DIALOG_DESTROY_WITH_PARENT,
+                       (gtk.STOCK_OK, gtk.RESPONSE_OK, gtk.STOCK_CANCEL, gtk.RESPONSE_CANCEL),
+               )
+               dialog.set_default_response(gtk.RESPONSE_CANCEL)
+               dialog.get_child().add(spinner)
+
+               try:
+                       dialog.show_all()
+                       response = dialog.run()
+               finally:
+                       dialog.hide()
+
+               if response == gtk.RESPONSE_OK:
+                       return spinner.get_value_as_int()
+               elif response == gtk.RESPONSE_CANCEL or response == gtk.RESPONSE_DELETE_EVENT:
+                       raise RuntimeError("User cancelled request")
+               else:
+                       raise RuntimeError("Unrecognized response %r", response)