import gtk
import gtk.glade
-try:
- import hildon
-except ImportError:
- hildon = None
-
import constants
+import hildonize
import gtk_toolbox
self._errorDisplay = gtk_toolbox.ErrorDisplay(self._widgetTree)
self._credentialsDialog = gtk_toolbox.LoginWindow(self._widgetTree)
- self._app = None
self._isFullScreen = False
- if hildon is not None:
- self._app = hildon.Program()
- oldWindow = self._window
- self._window = hildon.Window()
- oldWindow.get_child().reparent(self._window)
- self._app.add_window(self._window)
+ self._app = hildonize.get_app_class()()
+ self._window = hildonize.hildonize_window(self._app, self._window)
+ hildonize.hildonize_text_entry(self._widgetTree.get_widget("usernameentry"))
+ hildonize.hildonize_password_entry(self._widgetTree.get_widget("passwordentry"))
+ hildonize.hildonize_combo_entry(self._widgetTree.get_widget("callbackcombo").get_child())
+
+ for scrollingWidget in (
+ 'recent_scrolledwindow',
+ 'message_scrolledwindow',
+ 'contacts_scrolledwindow',
+ "phoneSelectionMessage_scrolledwindow",
+ "phonetypes_scrolledwindow",
+ "smsMessage_scrolledwindow",
+ "smsMessage_scrolledEntry",
+ ):
+ hildonize.set_thumb_scrollbar(self._widgetTree.get_widget(scrollingWidget))
- try:
- self._widgetTree.get_widget("usernameentry").set_property('hildon-input-mode', 7)
- self._widgetTree.get_widget("passwordentry").set_property('hildon-input-mode', 7|(1 << 29))
- self._widgetTree.get_widget("callbackcombo").get_child().set_property('hildon-input-mode', (1 << 4))
- except TypeError, e:
- warnings.warn(e.message)
- for scrollingWidget in (
- 'recent_scrolledwindow',
- 'message_scrolledwindow',
- 'contacts_scrolledwindow',
- "phoneSelectionMessage_scrolledwindow",
- "phonetypes_scrolledwindow",
- "smsMessage_scrolledwindow",
- "smsMessage_scrolledEntry",
- ):
- hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget(scrollingWidget), True)
-
- gtkMenu = self._widgetTree.get_widget("dialpad_menubar")
- menu = gtk.Menu()
- for child in gtkMenu.get_children():
- child.reparent(menu)
- self._window.set_menu(menu)
- gtkMenu.destroy()
+ hildonize.hildonize_menu(self._window, self._widgetTree.get_widget("dialpad_menubar"))
+ if hildonize.IS_HILDON:
self._window.connect("key-press-event", self._on_key_press)
self._window.connect("window-state-event", self._on_window_state_change)
else:
pass # warnings.warn("No Hildon", UserWarning, 2)
- # If under hildon, rely on the application name being shown
- if hildon is None:
- self._window.set_title("%s" % constants.__pretty_app_name__)
+ hildonize.set_application_title(self._window, "%s" % constants.__pretty_app_name__)
callbackMapping = {
"on_dialpad_quit": self._on_close,
with gtk_toolbox.gtk_lock():
self._errorDisplay.push_exception()
alarm_handler = None
- if hildon is not None:
+ if hildonize.IS_HILDON:
import led_handler
self._ledHandler = led_handler.LedHandler()
#with gtk_toolbox.flock(_lock_file, 0):
gtk.gdk.threads_init()
- if hildon is not None:
+ if hildonize.IS_HILDON:
gtk.set_application_name(constants.__pretty_app_name__)
handle = Dialcentral()
gtk.main()
import gtk
import gtk_toolbox
+import hildonize
import null_backend
textrenderer = gtk.CellRendererText()
textrenderer.set_property("yalign", 0)
- textrenderer.set_property("scale", 1.5)
+ hildonize.set_cell_thumb_selectable(textrenderer)
self._fromColumn = gtk.TreeViewColumn("From")
self._fromColumn.pack_start(textrenderer, expand=True)
self._fromColumn.add_attribute(textrenderer, "text", self.FROM_IDX)
self._messageRenderer = gtk.CellRendererText()
self._messageRenderer.set_property("yalign", 0)
- self._messageRenderer.set_property("scale", 1.5)
+ hildonize.set_cell_thumb_selectable(self._messageRenderer)
self._messageRenderer.set_property("wrap-mode", pango.WRAP_WORD)
self._messageRenderer.set_property("wrap-width", 500)
self._messageColumn = gtk.TreeViewColumn("Messages")
self._contactColumn.pack_start(textrenderer, expand=False)
self._contactColumn.add_attribute(textrenderer, 'text', 0)
textrenderer = gtk.CellRendererText()
- textrenderer.set_property("scale", 1.5)
+ hildonize.set_cell_thumb_selectable(textrenderer)
self._contactColumn.pack_start(textrenderer, expand=True)
self._contactColumn.add_attribute(textrenderer, 'text', 1)
textrenderer = gtk.CellRendererText()
return itertools.izip(*nIterators)
-def abbrev_relative_date(date):
- """
- >>> abbrev_relative_date("42 hours ago")
- '42 h'
- >>> abbrev_relative_date("2 days ago")
- '2 d'
- >>> abbrev_relative_date("4 weeks ago")
- '4 w'
- """
- parts = date.split(" ")
- return "%s %s" % (parts[0], parts[1][0])
-
-
class GVDialer(object):
"""
This class encapsulates all of the knowledge necessary to interace with the grandcentral servers
]
sortedRecent.sort(reverse = True)
for exactDate, name, number, relativeDate, action in sortedRecent:
- relativeDate = abbrev_relative_date(relativeDate)
yield name, number, relativeDate, action
def get_addressbooks(self):
sortedMessages = list(allMessages)
sortedMessages.sort(reverse=True)
for exactDate, header, number, relativeDate, message in sortedMessages:
- relativeDate = abbrev_relative_date(relativeDate)
yield header, number, relativeDate, message
def _grab_json(self, flatXml):
--- /dev/null
+#!/usr/bin/env python
+
+
+import gtk
+
+
+class FakeHildonModule(object):
+ pass
+
+
+try:
+ import hildon
+except ImportError:
+ hildon = FakeHildonModule
+
+
+IS_HILDON = 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
+
+
+if IS_HILDON:
+ def set_application_title(window, title):
+ pass
+else:
+ def set_application_title(window, title):
+ window.set_title(title)
+
+
+if IS_HILDON:
+ def hildonize_window(app, window):
+ oldWindow = window
+ newWindow = hildon.Window()
+ oldWindow.get_child().reparent(newWindow)
+ app.add_window(newWindow)
+ return newWindow
+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
+else:
+ def hildonize_menu(window, gtkMenu):
+ return gtkMenu
+
+
+if IS_HILDON:
+ def set_cell_thumb_selectable(renderer):
+ renderer.set_property(scale=1.5)
+else:
+ def set_cell_thumb_selectable(renderer):
+ pass
+
+
+if IS_HILDON:
+ def hildonize_text_entry(textEntry):
+ textEntry.set_property('hildon-input-mode', 7)
+else:
+ def hildonize_text_entry(textEntry):
+ pass
+
+
+if IS_HILDON:
+ def hildonize_password_entry(textEntry):
+ textEntry.set_property('hildon-input-mode', 7 | (1 << 29))
+else:
+ def hildonize_password_entry(textEntry):
+ pass
+
+
+if IS_HILDON:
+ def hildonize_combo_entry(comboEntry):
+ comboEntry.set_property('hildon-input-mode', 1 << 4)
+else:
+ def hildonize_combo_entry(textEntry):
+ pass
+
+
+if IS_HILDON:
+ def set_thumb_scrollbar(scrolledWindow):
+ hildon.hildon_helper_set_thumb_scrollbar(scrolledWindow, True)
+else:
+ def set_thumb_scrollbar(scrolledWindow):
+ pass
+
+
+class WidgetSwapper(object):
+
+ def __init__(self, parentWidget, newWidget = None):
+ self._parentWidget = parentWidget
+ self._oldWidget = parentWidget.get_child()
+
+ self._activeWidget = self._oldWidget
+ self._widget = newWidget if newWidget is not None else self._oldWidget
+ self._isEnabled = False
+
+ def enable(self):
+ assert not self._isEnabled, "Internal Error"
+ self._parentWidget.remove(self._oldWidget)
+ self._parentWidget.add(self._widget)
+ self._activeWidget = self.widget
+
+ def disable(self):
+ assert self._isEnabled, "Internal Error"
+ self._parentWidget.remove(self._widget)
+ self._parentWidget.add(self._oldWidget)
+ self._activeWidget = self._oldWidget
+
+ @property
+ def activeWidget(self):
+ return self._activeWidget
+
+ @property
+ def widget(self):
+ return self._widget
+
+
+if IS_HILDON:
+ def create_number_swapper(parentWidget):
+ return WidgetSwapper(parentWidget, hildon.NumberEditor())
+else:
+ def create_number_swapper(parentWidget):
+ return WidgetSwapper(parentWidget)