From b7181847f9dc8b68ff70edc63e11960db72cd0f9 Mon Sep 17 00:00:00 2001 From: epage Date: Sun, 20 Sep 2009 03:30:26 +0000 Subject: [PATCH] Lots of fremantle works git-svn-id: file:///svnroot/gc-dialer/trunk@452 c39d3808-3fe2-4d86-a59f-b7f623ee9f21 --- src/dc_glade.py | 33 +++-- src/dialcentral.glade | 202 +++++++++++++------------- src/gtk_toolbox.py | 7 +- src/gv_views.py | 12 +- src/hildonize.py | 378 +++++++++++++++++++++++++++++++------------------ support/builddeb.py | 1 + 6 files changed, 369 insertions(+), 264 deletions(-) diff --git a/src/dc_glade.py b/src/dc_glade.py index 56c3df2..c976cdb 100755 --- a/src/dc_glade.py +++ b/src/dc_glade.py @@ -117,29 +117,31 @@ class Dialcentral(object): 'recent_scrolledwindow', 'message_scrolledwindow', 'contacts_scrolledwindow', + ): + hildonize.hildonize_scrollwindow(self._widgetTree.get_widget(scrollingWidget)) + for scrollingWidget in ( "phoneSelectionMessage_scrolledwindow", "phonetypes_scrolledwindow", "smsMessage_scrolledwindow", "smsMessage_scrolledEntry", ): - hildonize.set_thumb_scrollbar(self._widgetTree.get_widget(scrollingWidget)) + hildonize.hildonize_scrollwindow_with_viewport(self._widgetTree.get_widget(scrollingWidget)) - hildonize.hildonize_menu(self._window, self._widgetTree.get_widget("dialpad_menubar")) + replacementButtons = [gtk.Button("Test")] + menu = hildonize.hildonize_menu( + self._window, + self._widgetTree.get_widget("dialpad_menubar"), + replacementButtons + ) - if hildonize.IS_HILDON: + if hildonize.IS_HILDON_SUPPORTED: self._window.connect("key-press-event", self._on_key_press) self._window.connect("window-state-event", self._on_window_state_change) else: logging.warning("No hildonization support") - hildonize.set_application_title(self._window, "%s" % constants.__pretty_app_name__) - callbackMapping = { - "on_dialpad_quit": self._on_close, - } - self._widgetTree.signal_autoconnect(callbackMapping) - self._window.connect("destroy", self._on_close) self._window.set_default_size(800, 300) self._window.show_all() @@ -205,7 +207,7 @@ class Dialcentral(object): self._errorDisplay.push_exception() alarm_handler = None logging.warning("No notification support") - if hildonize.IS_HILDON: + if hildonize.IS_HILDON_SUPPORTED: try: import led_handler self._ledHandler = led_handler.LedHandler() @@ -295,10 +297,12 @@ class Dialcentral(object): "on_refresh": self._on_menu_refresh, "on_rotate": self._on_menu_rotate, "on_clearcookies_clicked": self._on_clearcookies_clicked, - "on_notebook_switch_page": self._on_notebook_switch_page, "on_about_activate": self._on_about_activate, } - self._widgetTree.signal_autoconnect(callbackMapping) + if hildonize.GTK_MENU_USED: + self._widgetTree.signal_autoconnect(callbackMapping) + self._notebook.connect("switch-page", self._on_notebook_switch_page) + self._widgetTree.get_widget("clearcookies").connect("clicked", self._on_clearcookies_clicked) with gtk_toolbox.gtk_lock(): self._originalCurrentLabels = [ @@ -792,7 +796,8 @@ class Dialcentral(object): def _on_paste(self, *args): try: contents = self._clipboard.wait_for_text() - self._dialpads[self._selectedBackendId].set_number(contents) + if contents is not None: + self._dialpads[self._selectedBackendId].set_number(contents) except Exception, e: self._errorDisplay.push_exception() @@ -827,7 +832,7 @@ def run_dialpad(): #with gtk_toolbox.flock(_lock_file, 0): gtk.gdk.threads_init() - if hildonize.IS_HILDON: + if hildonize.IS_HILDON_SUPPORTED: gtk.set_application_name(constants.__pretty_app_name__) handle = Dialcentral() gtk.main() diff --git a/src/dialcentral.glade b/src/dialcentral.glade index 3311eb4..d910edd 100644 --- a/src/dialcentral.glade +++ b/src/dialcentral.glade @@ -35,20 +35,6 @@ - - - True - - - - - gtk-quit - True - True - True - - - @@ -70,21 +56,6 @@ - - - Clear Number - True - Clear Number - False - - - - True - gtk-delete - - - - @@ -108,8 +79,8 @@ - _Rotate True + _Rotate True @@ -185,7 +156,6 @@ left False True - True @@ -498,7 +468,6 @@ True False False - @@ -540,7 +509,6 @@ True True True - @@ -599,19 +567,27 @@ - + True - True - never + vertical - + True True - True - horizontal - True - + never + + + True + True + True + horizontal + True + + + + 0 + @@ -634,19 +610,28 @@ - + True - True - never - automatic + vertical - + True True - True - horizontal - True + never + automatic + + + True + True + True + horizontal + True + + + + 0 + @@ -666,16 +651,16 @@ - + True - 2 + vertical True - - GTK_FILL + False + 0 @@ -692,20 +677,16 @@ True horizontal True - - 1 - 2 + 1 3 - True - False @@ -870,7 +851,6 @@ True True False - 1 @@ -1028,7 +1008,6 @@ True True True - False @@ -1044,7 +1023,6 @@ True True True - False @@ -1079,23 +1057,32 @@ True 2 - + True - True - never - automatic + vertical - + True - queue + True + never + automatic - + True - True - True + queue + + + True + True + True + + + + 0 + @@ -1103,19 +1090,28 @@ - + True - True - never - automatic + vertical - + True True - True - False - + never + automatic + + + True + True + True + False + + + + False + 0 + @@ -1160,7 +1156,6 @@ True True True - False @@ -1175,7 +1170,6 @@ True True True - False @@ -1211,23 +1205,32 @@ vertical 2 - + True - True - never - automatic + vertical - + True - queue + True + never + automatic - + True - True - True + queue + + + True + True + True + + + + 0 + @@ -1235,17 +1238,26 @@ - + True - True - never - automatic + vertical - + True True - word + never + automatic + + + True + True + word + + + + 0 + diff --git a/src/gtk_toolbox.py b/src/gtk_toolbox.py index a56ed3b..39ca4ff 100644 --- a/src/gtk_toolbox.py +++ b/src/gtk_toolbox.py @@ -299,11 +299,8 @@ class LoginWindow(object): self._serviceCombo.add_attribute(cell, 'text', 1) self._serviceCombo.set_active(0) - callbackMapping = { - "on_loginbutton_clicked": self._on_loginbutton_clicked, - "on_loginclose_clicked": self._on_loginclose_clicked, - } - widgetTree.signal_autoconnect(callbackMapping) + widgetTree.get_widget("loginbutton").connect("clicked", self._on_loginbutton_clicked) + widgetTree.get_widget("logins_close_button").connect("clicked", self._on_loginclose_clicked) def request_credentials(self, parentWindow = None, diff --git a/src/gv_views.py b/src/gv_views.py index 1760922..df7b403 100644 --- a/src/gv_views.py +++ b/src/gv_views.py @@ -472,18 +472,18 @@ class Dialpad(object): self._smsDialog = SmsEntryDialog(widgetTree) self._numberdisplay = widgetTree.get_widget("numberdisplay") + self._smsButton = widgetTree.get_widget("sms") self._dialButton = widgetTree.get_widget("dial") self._backButton = widgetTree.get_widget("back") self._phonenumber = "" self._prettynumber = "" callbackMapping = { - "on_dial_clicked": self._on_dial_clicked, - "on_sms_clicked": self._on_sms_clicked, "on_digit_clicked": self._on_digit_clicked, - "on_clear_number": self._on_clear_number, } widgetTree.signal_autoconnect(callbackMapping) + self._dialButton.connect("clicked", self._on_dial_clicked) + self._smsButton.connect("clicked", self._on_sms_clicked) self._originalLabel = self._backButton.get_label() self._backTapHandler = gtk_toolbox.TapOrHold(self._backButton) @@ -563,12 +563,6 @@ class Dialpad(object): except Exception, e: self._errorDisplay.push_exception() - def _on_clear_number(self, *args): - try: - self.clear() - except Exception, e: - self._errorDisplay.push_exception() - def _on_digit_clicked(self, widget): try: self.set_number(self._phonenumber + widget.get_name()[-1]) diff --git a/src/hildonize.py b/src/hildonize.py index 0ad4d14..bc4c07c 100644 --- a/src/hildonize.py +++ b/src/hildonize.py @@ -10,103 +10,170 @@ class FakeHildonModule(object): try: - import hildon + import hildon as _hildon + hildon = _hildon # Dumb but gets around pyflakiness except (ImportError, OSError): hildon = FakeHildonModule -IS_HILDON = hildon is not FakeHildonModule +IS_HILDON_SUPPORTED = hildon is not FakeHildonModule class FakeHildonProgram(object): pass -if IS_HILDON: - def get_app_class(): - return hildon.Program -else: - def get_app_class(): - return FakeHildonProgram +def _hildon_get_app_class(): + return hildon.Program + + +def _null_get_app_class(): + return FakeHildonProgram -if IS_HILDON: - def set_application_title(window, title): - pass +if IS_HILDON_SUPPORTED: + get_app_class = _hildon_get_app_class else: - def set_application_title(window, title): - window.set_title(title) + get_app_class = _null_get_app_class + + +def _hildon_set_application_title(window, title): + pass -if IS_HILDON: - def hildonize_window(app, window): - oldWindow = window - newWindow = hildon.Window() - oldWindow.get_child().reparent(newWindow) - app.add_window(newWindow) - return newWindow +def _null_set_application_title(window, title): + window.set_title(title) + + +if IS_HILDON_SUPPORTED: + set_application_title = _hildon_set_application_title else: - def hildonize_window(app, window): - return window - - -if IS_HILDON: - def hildonize_menu(window, gtkMenu): - hildonMenu = gtk.Menu() - for child in gtkMenu.get_children(): - child.reparent(hildonMenu) - window.set_menu(hildonMenu) - gtkMenu.destroy() - return hildonMenu + set_application_title = _null_set_application_title + + +def _hildon_hildonize_window(app, window): + oldWindow = window + newWindow = hildon.Window() + oldWindow.get_child().reparent(newWindow) + app.add_window(newWindow) + return newWindow + + +def _null_hildonize_window(app, window): + return window + + +if IS_HILDON_SUPPORTED: + hildonize_window = _hildon_hildonize_window else: - def hildonize_menu(window, gtkMenu): - return gtkMenu + hildonize_window = _null_hildonize_window + + +def _fremantle_hildonize_menu(window, gtkMenu, buttons): + 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): + hildonMenu = gtk.Menu() + for child in gtkMenu.get_children(): + child.reparent(hildonMenu) + window.set_menu(hildonMenu) + gtkMenu.destroy() + return hildonMenu -if IS_HILDON: - def set_cell_thumb_selectable(renderer): - renderer.set_property("scale", 1.5) + +def _null_hildonize_menu(window, gtkMenu, ignoredButtons): + return gtkMenu + + +try: + hildon.AppMenu + GTK_MENU_USED = False + hildonize_menu = _fremantle_hildonize_menu +except AttributeError: + GTK_MENU_USED = True + if IS_HILDON_SUPPORTED: + hildonize_menu = _hildon_hildonize_menu + else: + hildonize_menu = _null_hildonize_menu + + +def _hildon_set_cell_thumb_selectable(renderer): + renderer.set_property("scale", 1.5) + + +def _null_set_cell_thumb_selectable(renderer): + pass + + +if IS_HILDON_SUPPORTED: + set_cell_thumb_selectable = _hildon_set_cell_thumb_selectable else: - def set_cell_thumb_selectable(renderer): - pass + set_cell_thumb_selectable = _null_set_cell_thumb_selectable + +def _hildon_hildonize_text_entry(textEntry): + textEntry.set_property('hildon-input-mode', 7) -if IS_HILDON: - def hildonize_text_entry(textEntry): - textEntry.set_property('hildon-input-mode', 7) + +def _null_hildonize_text_entry(textEntry): + pass + + +if IS_HILDON_SUPPORTED: + hildonize_text_entry = _hildon_hildonize_text_entry else: - def hildonize_text_entry(textEntry): - pass + hildonize_text_entry = _null_hildonize_text_entry + + +def _hildon_mark_window_rotatable(window): + # gtk documentation is unclear whether this does a "=" or a "|=" + window.set_flags(hildon.HILDON_PORTRAIT_MODE_SUPPORT) + + +def _null_mark_window_rotatable(window): + pass try: hildon.HILDON_PORTRAIT_MODE_SUPPORT - - def mark_window_rotatable(window): - # gtk documentation is unclear whether this does a "=" or a "|=" - window.set_flags(hildon.HILDON_PORTRAIT_MODE_SUPPORT) + mark_window_rotatable = _hildon_mark_window_rotatable except AttributeError: - def mark_window_rotatable(window): - pass + mark_window_rotatable = _null_mark_window_rotatable + + +def _hildon_window_to_portrait(window): + # gtk documentation is unclear whether this does a "=" or a "|=" + window.set_flags(hildon.HILDON_PORTRAIT_MODE_SUPPORT) + + +def _hildon_window_to_landscape(window): + # gtk documentation is unclear whether this does a "=" or a "&= ~" + window.unset_flags(hildon.HILDON_PORTRAIT_MODE_REQUEST) + + +def _null_window_to_portrait(window): + pass + + +def _null_window_to_landscape(window): + pass try: hildon.HILDON_PORTRAIT_MODE_SUPPORT hildon.HILDON_PORTRAIT_MODE_REQUEST - def window_to_portrait(window): - # gtk documentation is unclear whether this does a "=" or a "|=" - window.set_flags(hildon.HILDON_PORTRAIT_MODE_SUPPORT) - - def window_to_landscape(window): - # gtk documentation is unclear whether this does a "=" or a "&= ~" - window.unset_flags(hildon.HILDON_PORTRAIT_MODE_REQUEST) + window_to_portrait = _hildon_window_to_portrait + window_to_landscape = _hildon_window_to_landscape except AttributeError: - def window_to_portrait(window): - pass - - def window_to_landscape(window): - pass + window_to_portrait = _null_window_to_portrait + window_to_landscape = _null_window_to_landscape def get_device_orientation(): @@ -128,99 +195,128 @@ def get_device_orientation(): raise RuntimeError("Unknown orientation: %s" % orientation) -if IS_HILDON: - def hildonize_password_entry(textEntry): - textEntry.set_property('hildon-input-mode', 7 | (1 << 29)) +def _hildon_hildonize_password_entry(textEntry): + textEntry.set_property('hildon-input-mode', 7 | (1 << 29)) + + +def _null_hildonize_password_entry(textEntry): + pass + + +if IS_HILDON_SUPPORTED: + hildonize_password_entry = _hildon_hildonize_password_entry else: - def hildonize_password_entry(textEntry): - pass + hildonize_password_entry = _null_hildonize_password_entry + +def _hildon_hildonize_combo_entry(comboEntry): + comboEntry.set_property('hildon-input-mode', 1 << 4) -if IS_HILDON: - def hildonize_combo_entry(comboEntry): - comboEntry.set_property('hildon-input-mode', 1 << 4) + +def _null_hildonize_combo_entry(textEntry): + pass + + +if IS_HILDON_SUPPORTED: + hildonize_combo_entry = _hildon_hildonize_combo_entry else: - def hildonize_combo_entry(textEntry): - pass + hildonize_combo_entry = _null_hildonize_combo_entry -try: - hildon.PannableArea - None.TODO - def set_thumb_scrollbar(scrolledWindow): - pannableWindow = hildon.PannableArea() +def _fremantle_hildonize_scrollwindow(scrolledWindow): + pannableWindow = hildon.PannableArea() + + child = scrolledWindow.get_child() + scrolledWindow.remove(child) + pannableWindow.add(child) + + parent = scrolledWindow.get_parent() + parent.remove(scrolledWindow) + parent.add(pannableWindow) + + return pannableWindow + + +def _hildon_hildonize_scrollwindow(scrolledWindow): + hildon.hildon_helper_set_thumb_scrollbar(scrolledWindow, True) + return scrolledWindow - child = scrolledWindow.get_child() - scrolledWindow.remove(child) - pannableWindow.add(child) - parent = scrolledWindow.get_parent() - parent.remove(scrolledWindow) - parent.add(pannableWindow) +def _null_hildonize_scrollwindow(scrolledWindow): + return scrolledWindow - return pannableWindow + +try: + hildon.PannableArea + hildonize_scrollwindow = _fremantle_hildonize_scrollwindow + hildonize_scrollwindow_with_viewport = _hildon_hildonize_scrollwindow except AttributeError: try: - hildon.hildon_helper_set_thumb_scrollbar - def set_thumb_scrollbar(scrolledWindow): - hildon.hildon_helper_set_thumb_scrollbar(scrolledWindow, True) - return scrolledWindow + hildon.hildon_helper_hildonize_scrollwindow + hildonize_scrollwindow = _hildon_hildonize_scrollwindow + hildonize_scrollwindow_with_viewport = _hildon_hildonize_scrollwindow except AttributeError: - def set_thumb_scrollbar(scrolledWindow): - return scrolledWindow + hildonize_scrollwindow = _null_hildonize_scrollwindow + hildonize_scrollwindow_with_viewport = _null_hildonize_scrollwindow + + +def _hildon_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) + + +def _null_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) try: hildon.NumberEditor # TODO deprecated in fremantle - 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) + request_number = _hildon_request_number except AttributeError: - 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) + request_number = _null_request_number diff --git a/support/builddeb.py b/support/builddeb.py index 121a651..964f944 100755 --- a/support/builddeb.py +++ b/support/builddeb.py @@ -26,6 +26,7 @@ __changelog__ = """ * Tweaked sizes of stuff on recent tab * Starting some work on rotation support for fremantle * Made startup more error resistant +* Fremantle: Making various areas pannable * Bug Fix: some dependencies for Diablo * Bug Fix: Error on refreshing tabs when not logged in * Bug Fix: #4471 Notification Checkbox Won't Stay Checked (hour roll over error) -- 1.7.9.5