except ImportError:
hildon = None
-import socket
-
-
-gtk.gdk.threads_init()
-#This changes the default, system wide, socket timeout so that a hung server will not completly
-#hork the application
-socket.setdefaulttimeout(5)
def make_ugly(prettynumber):
except StopIteration:
del a[:]
return False
-
+
decorated_func.__name__ = func.__name__
decorated_func.__doc__ = func.__doc__
decorated_func.__dict__.update(func.__dict__)
@returns Iterable of (Address Book Factory, Book Id, Book Name)
"""
yield self, "", "None"
-
+
def open_addressbook(self, bookId):
return self
@returns Iterable of (Address Book Factory, Book Id, Book Name)
"""
yield self, "", ""
-
+
def open_addressbook(self, bookId):
return self
self._typeviewselection.unselect_all()
self._dialog.hide()
return phoneNumber
-
+
def _on_phonetype_select(self, *args):
self._dialog.response(gtk.RESPONSE_OK)
__app_magic__ = 0xdeadbeef
_glade_files = [
- './gc_dialer.glade',
- '../lib/gc_dialer.glade',
'/usr/lib/dialcentral/gc_dialer.glade',
+ os.path.join(os.path.dirname(__file__), "gc_dialer.glade"),
+ os.path.join(os.path.dirname(__file__), "../lib/gc_dialer.glade"),
]
def __init__(self):
self._contactsviewselection = None
self._clearall_id = None
-
+
for path in Dialpad._glade_files:
if os.path.isfile(path):
self._widgetTree = gtk.glade.XML(path)
self._widgetTree.get_widget("callbackcombo").get_child().set_property('hildon-input-mode', (1 << 4))
self._widgetTree.get_widget("usernameentry").set_property('hildon-input-mode', 7)
self._widgetTree.get_widget("passwordentry").set_property('hildon-input-mode', 7|(1 << 29))
+ hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget('contacts_scrolledwindow'), True)
+ hildon.hildon_helper_set_thumb_scrollbar(self._widgetTree.get_widget('recent_scrolledwindow'), True)
gtkMenu = self._widgetTree.get_widget("dialpad_menubar")
menu = gtk.Menu()
"""
If something can be done after the UI loads, push it here so it's not blocking the UI
"""
-
+
import gc_backend
import evo_backend
import gmail_backend
self._addressBookFactories.insert(0, mergedBook)
self._addressBook = None
self.open_addressbook(*self.get_addressbooks().next()[0][0:2])
-
+
gtk.gdk.threads_enter()
self._booksList = gtk.ListStore(gobject.TYPE_STRING, gobject.TYPE_STRING, gobject.TYPE_STRING)
gtk.gdk.threads_leave()
for (factoryId, bookId), (factoryName, bookName) in self.get_addressbooks():
if factoryName and bookName:
- entryName = "%s: %s" % (factoryName, bookName)
+ entryName = "%s: %s" % (factoryName, bookName)
elif factoryName:
entryName = factoryName
elif bookName:
combobox.get_child().set_text(make_pretty(self._gcBackend.get_callback_number()))
def _idly_populate_recentview(self):
+ self._recenttime = time.time()
self._recentmodel.clear()
for personsName, phoneNumber, date, action in self._gcBackend.get_recent():
self._recentmodel.append(item)
gtk.gdk.threads_leave()
- self._recenttime = time.time()
return False
- @make_idler
def _idly_populate_contactsview(self):
+ #@todo Add a lock so only one code path can be in here at a time
+ self._contactstime = time.time()
self._contactsmodel.clear()
# completely disable updating the treeview while we populate the data
contactsview.freeze_child_notify()
contactsview.set_model(None)
- for contactId, contactName in self._addressBook.get_contacts():
- contactType = (self._addressBook.contact_source_short_name(contactId),)
+ addressBook = self._addressBook
+ for contactId, contactName in addressBook.get_contacts():
+ contactType = (addressBook.contact_source_short_name(contactId),)
self._contactsmodel.append(contactType + (contactName, "", contactId) + ("",))
- yield
# restart the treeview data rendering
contactsview.set_model(self._contactsmodel)
contactsview.thaw_child_notify()
-
- self._contactstime = time.time()
+ return False
def attempt_login(self, numOfAttempts = 1):
"""
if self._gcBackend.is_authed():
return True
-
+
for x in xrange(numOfAttempts):
gtk.gdk.threads_enter()
for i, factory in enumerate(self._addressBookFactories):
for bookFactory, bookId, bookName in factory.get_addressbooks():
yield (i, bookId), (factory.factory_name(), bookName)
-
+
def open_addressbook(self, bookFactoryId, bookId):
self._addressBook = self._addressBookFactories[bookFactoryId].open_addressbook(bookId)
self._contactstime = 0
- gobject.idle_add(self._idly_populate_contactsview)
+ threading.Thread(target=self._idly_populate_contactsview).start()
def set_number(self, number):
"""
self._isFullScreen = True
else:
self._isFullScreen = False
-
+
def _on_key_press(self, widget, event, *args):
"""
@note Hildon specific
self.set_number("")
def _on_digit_clicked(self, widget):
- self.set_number(self._phonenumber + widget.get_name()[5])
+ self.set_number(self._phonenumber + widget.get_name()[-1])
def _on_backspace(self, widget):
self.set_number(self._phonenumber[:-1])
dlg.set_authors(["<z2n@merctech.com>", "Eric Warnke <ericew@gmail.com>", "Ed Page <edpage@byu.net>"])
dlg.run()
dlg.destroy()
-
+
def run_doctest():
import doctest