From: Andrew Flegg Date: Fri, 30 Oct 2009 16:46:15 +0000 (+0000) Subject: Try to sort out missing changes. Bah at git X-Git-Tag: 0.2.0~2 X-Git-Url: http://vcs.maemo.org/git/?a=commitdiff_plain;h=a31f5b6ae04587883fe6878cc2bfa6e26716983b;hp=6f82fd8cbd49343e6d861f7c003c493fb3c6a953;p=hermes Try to sort out missing changes. Bah at git --- diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..d903833 --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +hermes_*.dsc +hermes_*.deb +hermes_*.changes +hermes_*.tar.gz +package/build-stamp +package/configure-stamp diff --git a/package/src/gui.py b/package/src/gui.py index 4c0e365..d1c92cc 100755 --- a/package/src/gui.py +++ b/package/src/gui.py @@ -2,18 +2,18 @@ import gtk, gobject import gnome.gconf -import hildon, osso import traceback import time import thread import os.path import contactview -import urllib2 +import urllib2 +from wimpworks import WimpWorks from hermes import Hermes gobject.threads_init() -class HermesGUI: +class HermesGUI(WimpWorks): """Provides the GUI for Hermes, allowing the syncing of Facebook and Twitter friends' information with the Evolution contacts' database. @@ -23,14 +23,73 @@ class HermesGUI: # ----------------------------------------------------------------------- def __init__(self): - """Constructor. Initialises the gconf connection.""" - self.gc = gnome.gconf.client_get_default() + WimpWorks.__init__(self, 'Hermes', version = '0.1.1', 'org.maemo.hermes') + self.set_background('background.png') + + layout = wimporks.HildonMainScreenLayout(offset = 0.8, container = self) + layout.add_button('Retrieve', "Get contacts' missing info") + layout.add_button('Refresh', "Update contacts' info") + self.add_menu_action("Accounts") + self.menu.show_all() + # ----------------------------------------------------------------------- - def doSync(self, widget, force, main = True): + def do_retrieve(self, widget): + self.sync(widget, False) + + + # ----------------------------------------------------------------------- + def do_refresh(self, widget): + self.sync(widget, True) + + + # ----------------------------------------------------------------------- + def do_accounts(self, widget = None): + dialog = gtk.Dialog('Accounts', self.window) + dialog.add_button('Save', gtk.RESPONSE_OK) + + #pa = hildon.PannableArea() + #dialog.vbox.add(pa) + content = dialog.vbox + #content = gtk.VBox() + #pa.add(content) + #pa.set_size_request(600, 380) + + use_facebook = self.new_checkbox('Use Facebook', content) + use_facebook.set_active(self.get_use_facebook()) + + indent = self.new_indent(content) + self.link_control(use_facebook, gtk.Label('Note: authentication via web page'), indent) + + fb_empty = self.link_control(use_facebook, self.new_checkbox('Create birthday-only contacts'), indent) + fb_empty.set_active(self.get_create_empty()) + + use_twitter = self.new_checkbox('Use Twitter', content) + use_twitter.set_active(self.get_use_twitter()) + + indent = self.new_indent(content) + tw_user = self.link_control(use_twitter, self.new_input('Twitter username'), indent) + tw_user.set_text(self.get_twitter_credentials()[0]) + + tw_pass = self.link_control(indent, use_twitter, self.new_input('Twitter password', password = True), indent) + tw_pass.set_text(self.get_twitter_credentials()[1]) + + dialog.show_all() + result = dialog.run() + dialog.hide() + if result == gtk.RESPONSE_OK: + self.set_use_facebook(use_facebook.get_active()) + self.set_create_empty(fb_empty.get_active()) + self.set_use_twitter(use_twitter.get_active(), tw_user.get_text(), tw_pass.get_text()) + + return result + + + # ----------------------------------------------------------------------- + def sync(self, widget, force, main = True): if main and not self.get_use_facebook() and not self.get_use_twitter(): - saved = self.open_prefs() + saved = self.do_accounts() if saved == gtk.RESPONSE_DELETE_EVENT: return @@ -110,93 +169,7 @@ class HermesGUI: def map_contact(self, widget, contact): print widget, contact - - # ----------------------------------------------------------------------- - def open_prefs(self, widget = None): - dialog = gtk.Dialog('Accounts', self.window) - dialog.add_button('Save', gtk.RESPONSE_OK) - - #pa = hildon.PannableArea() - #dialog.vbox.add(pa) - content = dialog.vbox - #content = gtk.VBox() - #pa.add(content) - #pa.set_size_request(600, 380) - - use_facebook = self.new_checkbox('Use Facebook', content) - use_facebook.set_active(self.get_use_facebook()) - - indent = self.new_indent(content) - fb_msg = self.add_linked(indent, use_facebook, gtk.Label('Note: authentication via web page')) - fb_msg.set_property('justify', gtk.JUSTIFY_LEFT) - fb_empty = self.add_linked(indent, use_facebook, self.new_checkbox('Create birthday-only contacts')) - fb_empty.set_active(self.get_create_empty()) - - use_twitter = self.new_checkbox('Use Twitter', content) - use_twitter.set_active(self.get_use_twitter()) - - indent = self.new_indent(content) - tw_user = self.add_linked(indent, use_twitter, self.new_input('Twitter username')) - tw_user.set_text(self.get_twitter_credentials()[0]) - - tw_pass = self.add_linked(indent, use_twitter, self.new_input('Twitter password')) - tw_pass.set_property('hildon-input-mode', gtk.HILDON_GTK_INPUT_MODE_FULL | - gtk.HILDON_GTK_INPUT_MODE_INVISIBLE) - tw_pass.set_text(self.get_twitter_credentials()[1]) - - dialog.show_all() - result = dialog.run() - dialog.hide() - if result == gtk.RESPONSE_OK: - self.set_use_facebook(use_facebook.get_active()) - self.set_create_empty(fb_empty.get_active()) - self.set_use_twitter(use_twitter.get_active(), tw_user.get_text(), tw_pass.get_text()) - - return result - - # ----------------------------------------------------------------------- - def new_checkbox(self, label, box = None): - checkbox = hildon.CheckButton(gtk.HILDON_SIZE_FINGER_HEIGHT) - checkbox.set_label(label) - if box: - box.add(checkbox) - return checkbox - - - # ----------------------------------------------------------------------- - def new_indent(self, box): - outer = gtk.HBox() - indent = gtk.VBox() - outer.pack_start(indent, padding=48) - box.add(outer) - return indent - - - # ----------------------------------------------------------------------- - def new_input(self, text, box = None): - input = hildon.Entry(gtk.HILDON_SIZE_FINGER_HEIGHT) - input.set_property('hildon-input-mode', gtk.HILDON_GTK_INPUT_MODE_FULL) - input.set_placeholder(text) - input.set_property('is-focus', False) - if box: - box.add(input) - return input - - - # ----------------------------------------------------------------------- - def add_linked(self, box, ctrl, to_add): - box.add(to_add) - self.sync_edit(ctrl, to_add) - ctrl.connect('toggled', self.sync_edit, to_add) - return to_add - - - # ----------------------------------------------------------------------- - def sync_edit(self, use_twitter, edit): - edit.set_property('sensitive', use_twitter.get_active()) - - # ----------------------------------------------------------------------- def need_auth(self, main = False): if main: @@ -260,66 +233,9 @@ class HermesGUI: hildon.hildon_banner_show_information(self.window, '', e) if prefs: - self.open_prefs() - - - # ----------------------------------------------------------------------- - def take_screenshot(self, event = None, data = None): - self.window.disconnect(self.expose_hid) - if not os.path.isfile("/home/user/.cache/launch/org.maemo.hermes.pvr"): - gobject.timeout_add(80, hildon.hildon_gtk_window_take_screenshot, self.window, True) - - - # ----------------------------------------------------------------------- - def main(self): - # -- Window and app... - # - self.app = hildon.Program() - self.window = hildon.Window() - gtk.set_application_name('Hermes') - self.osso_context = osso.Context('org.maemo.hermes', '0.0.5', False) - self.app.add_window(self.window) - - self.window.connect("delete-event", gtk.main_quit) - self.expose_hid = self.window.connect('expose-event', self.take_screenshot) - - # -- Main window buttons... - # - self.background, mask = gtk.gdk.pixbuf_new_from_file('/opt/hermes/share/background.png').render_pixmap_and_mask() - self.window.realize() - self.window.window.set_back_pixmap(self.background, False) - alignment = gtk.Alignment(xalign=0.5, yalign=0.8, xscale=0.8) - box = gtk.HButtonBox() - alignment.add(box) - self.window.add(alignment) - - box.set_property('layout-style', gtk.BUTTONBOX_SPREAD) - button = hildon.Button(gtk.HILDON_SIZE_THUMB_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, - title = 'Retrieve', value = "Get contacts' missing info") - button.set_property('width-request', 250) - button.connect('clicked', self.doSync, False) - box.add(button) - - button = hildon.Button(gtk.HILDON_SIZE_THUMB_HEIGHT, hildon.BUTTON_ARRANGEMENT_VERTICAL, - title = 'Update', value = "Update contacts' info") - button.set_property('width-request', 250) - button.connect('clicked', self.doSync, True) - box.add(button) - - # -- Application menu... - # - menu = hildon.AppMenu() - button = hildon.GtkButton(gtk.HILDON_SIZE_AUTO) - button.set_label("Accounts") - button.connect("clicked", self.open_prefs) - menu.append(button) - menu.show_all() - self.window.set_app_menu(menu) - - self.window.show_all() - gtk.main() - + self.do_accounts() + def get_use_facebook(self): return self.gc.get_bool("/apps/maemo/hermes/use_facebook") @@ -352,5 +268,6 @@ class HermesGUI: # ------------------------------------------------------------------------- if __name__ == '__main__': - HermesGUI().main() + gui = HermesGUI() + gui.run()