<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="2" signal="clicked"/>
- <accelerator key="a" signal="clicked"/>
- <accelerator key="b" signal="clicked"/>
<accelerator key="c" signal="clicked"/>
+ <accelerator key="b" signal="clicked"/>
+ <accelerator key="a" signal="clicked"/>
+ <accelerator key="2" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label10">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="3" signal="clicked"/>
- <accelerator key="d" signal="clicked"/>
- <accelerator key="e" signal="clicked"/>
<accelerator key="f" signal="clicked"/>
+ <accelerator key="e" signal="clicked"/>
+ <accelerator key="d" signal="clicked"/>
+ <accelerator key="3" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label11">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="4" signal="clicked"/>
- <accelerator key="g" signal="clicked"/>
- <accelerator key="h" signal="clicked"/>
<accelerator key="i" signal="clicked"/>
+ <accelerator key="h" signal="clicked"/>
+ <accelerator key="g" signal="clicked"/>
+ <accelerator key="4" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label13">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="5" signal="clicked"/>
- <accelerator key="j" signal="clicked"/>
- <accelerator key="k" signal="clicked"/>
<accelerator key="l" signal="clicked"/>
+ <accelerator key="k" signal="clicked"/>
+ <accelerator key="j" signal="clicked"/>
+ <accelerator key="5" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label14">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="6" signal="clicked"/>
- <accelerator key="m" signal="clicked"/>
- <accelerator key="n" signal="clicked"/>
<accelerator key="o" signal="clicked"/>
+ <accelerator key="n" signal="clicked"/>
+ <accelerator key="m" signal="clicked"/>
+ <accelerator key="6" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label15">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="7" signal="clicked"/>
- <accelerator key="p" signal="clicked"/>
- <accelerator key="q" signal="clicked"/>
- <accelerator key="r" signal="clicked"/>
<accelerator key="s" signal="clicked"/>
+ <accelerator key="r" signal="clicked"/>
+ <accelerator key="q" signal="clicked"/>
+ <accelerator key="p" signal="clicked"/>
+ <accelerator key="7" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label16">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="8" signal="clicked"/>
- <accelerator key="t" signal="clicked"/>
- <accelerator key="u" signal="clicked"/>
<accelerator key="v" signal="clicked"/>
+ <accelerator key="u" signal="clicked"/>
+ <accelerator key="t" signal="clicked"/>
+ <accelerator key="8" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label17">
<property name="visible">True</property>
<property name="receives_default">False</property>
<property name="focus_on_click">False</property>
<signal name="clicked" handler="on_digit_clicked"/>
- <accelerator key="9" signal="clicked"/>
- <accelerator key="w" signal="clicked"/>
- <accelerator key="x" signal="clicked"/>
- <accelerator key="y" signal="clicked"/>
<accelerator key="z" signal="clicked"/>
+ <accelerator key="y" signal="clicked"/>
+ <accelerator key="x" signal="clicked"/>
+ <accelerator key="w" signal="clicked"/>
+ <accelerator key="9" signal="clicked"/>
<child>
<widget class="GtkLabel" id="label18">
<property name="visible">True</property>
<property name="visible">True</property>
<property name="orientation">vertical</property>
<child>
+ <widget class="GtkEventBox" id="smsErrorEventBox">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkHBox" id="smsErrorBox">
+ <property name="visible">True</property>
+ <child>
+ <widget class="GtkImage" id="smsErrorImage">
+ <property name="visible">True</property>
+ <property name="stock">gtk-dialog-error</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkLabel" id="smsErrorDescription">
+ <property name="visible">True</property>
+ <property name="use_markup">True</property>
+ <property name="ellipsize">end</property>
+ <property name="single_line_mode">True</property>
+ </widget>
+ <packing>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ <child>
+ <widget class="GtkImage" id="smsErrorClose">
+ <property name="visible">True</property>
+ <property name="stock">gtk-close</property>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">False</property>
+ <property name="position">2</property>
+ </packing>
+ </child>
+ </widget>
+ </child>
+ </widget>
+ <packing>
+ <property name="expand">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<widget class="GtkScrolledWindow" id="smsMessages_scrolledwindow">
<property name="visible">True</property>
<property name="can_focus">True</property>
</child>
</widget>
<packing>
- <property name="position">0</property>
+ <property name="position">1</property>
</packing>
</child>
<child>
</widget>
<packing>
<property name="expand">False</property>
- <property name="position">1</property>
+ <property name="position">2</property>
</packing>
</child>
</widget>
MAX_CHAR = 160
- def __init__(self, widgetTree, parent):
+ def __init__(self, widgetTree, parent, app):
self._clipboard = gtk.clipboard_get()
self._widgetTree = widgetTree
self._window = self._widgetTree.get_widget("smsWindow")
self._isFullScreen = False
self._parent = parent
+ errorBox = self._widgetTree.get_widget("smsErrorEventBox")
+ errorDescription = self._widgetTree.get_widget("smsErrorDescription")
+ errorClose = self._widgetTree.get_widget("smsErrorClose")
+ self._errorDisplay = gtk_toolbox.ErrorDisplay(errorBox, errorDescription, errorClose)
+
self._smsButton = self._widgetTree.get_widget("sendSmsButton")
self._smsButton.connect("clicked", self._on_send)
self._dialButton = self._widgetTree.get_widget("dialButton")
self._smsEntry.get_buffer().connect("changed", self._on_entry_changed)
self._smsEntrySize = None
+ self._app = app
+ self._window = hildonize.hildonize_window(self._app, self._window)
+
self._contacts = []
def add_contact(self, name, contactDetails, messages = (), defaultIndex = -1):
row = list(self._targetList.get_children())[0]
phoneButton = list(row.get_children())[1]
phoneButton.set_label(contactNumbers[numberIndex][1])
- except Exception, e:
- _moduleLogger.exception("%s" % str(e))
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_choose_phone_n(self, button, row):
try:
contactNumbers, numberIndex, messages = self._contacts[0]
phoneButton = list(row.get_children())[1]
phoneButton.set_label(contactNumbers[numberIndex][1])
- except Exception, e:
- _moduleLogger.exception("%s" % str(e))
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_remove_phone_n(self, button, row):
try:
self._targetList.remove(row)
self._update_context()
self._update_button_state()
- except Exception, e:
- _moduleLogger.exception("%s" % str(e))
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_entry_changed(self, *args):
- self._update_letter_count()
+ try:
+ self._update_letter_count()
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_send(self, *args):
- assert 0 < len(self._contacts), "%r" % self._contacts
- phoneNumbers = [
- make_ugly(contact[0][contact[1]][0])
- for contact in self._contacts
- ]
-
- entryBuffer = self._smsEntry.get_buffer()
- enteredMessage = entryBuffer.get_text(entryBuffer.get_start_iter(), entryBuffer.get_end_iter())
- enteredMessage = enteredMessage.strip()
- assert enteredMessage
- self.send_sms(phoneNumbers, enteredMessage)
- self._hide()
+ try:
+ assert 0 < len(self._contacts), "%r" % self._contacts
+ phoneNumbers = [
+ make_ugly(contact[0][contact[1]][0])
+ for contact in self._contacts
+ ]
+
+ entryBuffer = self._smsEntry.get_buffer()
+ enteredMessage = entryBuffer.get_text(entryBuffer.get_start_iter(), entryBuffer.get_end_iter())
+ enteredMessage = enteredMessage.strip()
+ assert enteredMessage
+ self.send_sms(phoneNumbers, enteredMessage)
+ self._hide()
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_dial(self, *args):
- assert len(self._contacts) == 1, "%r" % self._contacts
- contact = self._contacts[0]
- contactNumber = contact[0][contact[1]][0]
- phoneNumber = make_ugly(contactNumber)
- self.dial(phoneNumber)
- self._hide()
+ try:
+ assert len(self._contacts) == 1, "%r" % self._contacts
+ contact = self._contacts[0]
+ contactNumber = contact[0][contact[1]][0]
+ phoneNumber = make_ugly(contactNumber)
+ self.dial(phoneNumber)
+ self._hide()
+ except TypeError, e:
+ self._errorDisplay.push_exception()
def _on_delete(self, *args):
- self._window.emit_stop_by_name("delete-event")
- self._hide()
+ try:
+ self._window.emit_stop_by_name("delete-event")
+ self._hide()
+ except TypeError, e:
+ self._errorDisplay.push_exception()
return True
def _on_window_state_change(self, widget, event, *args):
- """
- @note Hildon specific
- """
try:
if event.new_window_state & gtk.gdk.WINDOW_STATE_FULLSCREEN:
self._isFullScreen = True
event.get_state() & gtk.gdk.CONTROL_MASK
):
self._parent.destroy()
- except Exception, e:
- _moduleLogger.exception(str(e))
+ except TypeError, e:
+ self._errorDisplay.push_exception()
class Dialpad(object):