X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=package%2Fsrc%2Fui%2Ffremantle%2Fgui.py;h=eff19ebdcfffb836b7344c4ba5518260484a5eb6;hb=ccf1c442fe0ef0721110a089b0007351b451a397;hp=2d539682b993cf7d79ffe45addca45d98a1ea34d;hpb=e47bec2e992f5e83e85da0d54deb34d360ab85e5;p=mevemon diff --git a/package/src/ui/fremantle/gui.py b/package/src/ui/fremantle/gui.py index 2d53968..eff19eb 100644 --- a/package/src/ui/fremantle/gui.py +++ b/package/src/ui/fremantle/gui.py @@ -24,15 +24,19 @@ import gobject import glib +import validation + from ui import models class BaseUI(): about_name = 'mEveMon' about_text = ('Mobile character monitor for EVE Online') - about_authors = ['Ryan Campbell', 'Danny Campbell'] + about_authors = ['Ryan Campbell ', + 'Danny Campbell '] + about_website = 'http://mevemon.garage.maemo.org' - app_version = '0.3' + app_version = '0.4' menu_items = ("Settings", "About", "Refresh") @@ -185,17 +189,35 @@ class BaseUI(): ok_button = dialog.add_button(gtk.STOCK_OK, gtk.RESPONSE_OK) dialog.show_all() + result = dialog.run() - if result == gtk.RESPONSE_OK: - self.controller.add_account(uidEntry.get_text(), apiEntry.get_text()) - self.accounts_model.get_accounts() - + valid_credentials = False + + while not valid_credentials: + if result == gtk.RESPONSE_OK: + uid = uidEntry.get_text() + api_key = apiEntry.get_text() + + try: + validation.uid(uid) + validation.api_key(api_key) + except validation.ValidationError, e: + self.report_error(e.message) + result = dialog.run() + else: + valid_credentials = True + self.controller.add_account(uid, api_key) + self.accounts_model.get_accounts() + else: + break + dialog.destroy() - return result + + def report_error(self, error): + hildon.hildon_banner_show_information(self.win, '', error) - def about_clicked(self, button): dialog = gtk.AboutDialog() dialog.set_website(self.about_website) @@ -226,15 +248,15 @@ class mEveMonUI(BaseUI): gtk.set_application_name("mEveMon") #create the main window - win = hildon.StackableWindow() - win.connect("destroy", self.controller.quit) - win.show_all() - hildon.hildon_gtk_window_set_progress_indicator(win, 1) + self.win = hildon.StackableWindow() + self.win.connect("destroy", self.controller.quit) + self.win.show_all() + hildon.hildon_gtk_window_set_progress_indicator(self.win, 1) # Create menu - menu = self.create_menu(win) + menu = self.create_menu(self.win) # Attach menu to the window - win.set_app_menu(menu) + self.win.set_app_menu(menu) pannable_area = hildon.PannableArea() @@ -252,11 +274,11 @@ class mEveMonUI(BaseUI): pannable_area.add(treeview) - win.add(pannable_area); + self.win.add(pannable_area); - win.show_all() + self.win.show_all() - hildon.hildon_gtk_window_set_progress_indicator(win, 0) + hildon.hildon_gtk_window_set_progress_indicator(self.win, 0) def add_columns_to_treeview(self, treeview): @@ -295,16 +317,16 @@ class CharacterSheetUI(BaseUI): def build_window(self, treeview, path, view_column): # TODO: this is a really long and ugly function, split it up somehow - win = hildon.StackableWindow() - win.show_all() - hildon.hildon_gtk_window_set_progress_indicator(win, 1) + self.win = hildon.StackableWindow() + #win.show_all() + hildon.hildon_gtk_window_set_progress_indicator(self.win, 1) # Create menu # NOTE: we probably want a window-specific menu for this page, but the # main appmenu works for now - menu = self.create_menu(win) + menu = self.create_menu(self.win) # Attach menu to the window - win.set_app_menu(menu) + self.win.set_app_menu(menu) pannable_area = hildon.PannableArea() @@ -318,7 +340,7 @@ class CharacterSheetUI(BaseUI): self.sheet = self.controller.get_char_sheet(self.uid, self.char_id) - win.set_title(char_name) + self.win.set_title(char_name) hbox = gtk.HBox(False, 0) @@ -357,10 +379,10 @@ class CharacterSheetUI(BaseUI): self.add_columns_to_skills_view(skills_treeview) vbox.pack_start(skills_treeview, False, False, 1) - win.add(pannable_area) - win.show_all() + self.win.add(pannable_area) + self.win.show_all() - hildon.hildon_gtk_window_set_progress_indicator(win, 0) + hildon.hildon_gtk_window_set_progress_indicator(self.win, 0) def display_skill_in_training(self, vbox): skill = self.controller.get_skill_in_training(self.uid, self.char_id) @@ -402,7 +424,6 @@ class CharacterSheetUI(BaseUI): self.add_label("Corp: %s" % self.sheet.corporationName, box) self.add_label("Balance: %s ISK" % self.sheet.balance, box) self.live_sp_val = self.controller.get_sp(self.uid, self.char_id) - print self.live_sp_val self.live_sp = self.add_label("Total SP: %s" % self.live_sp_val, box) @@ -445,13 +466,18 @@ class CharacterSheetUI(BaseUI): treeview.append_column(column) - def refresh_clicked(self, button, window): - hildon.hildon_gtk_window_set_progress_indicator(window, 1) + def refresh_clicked(self, button): + hildon.hildon_gtk_window_set_progress_indicator(self.win, 1) self.skills_model.get_skills() - hildon.hildon_gtk_window_set_progress_indicator(window, 0) + hildon.hildon_gtk_window_set_progress_indicator(self.win, 0) def update_live_sp(self): + # we don't want to keep the timer running in the background + # when this callback returns False, the timer destorys itself + if not self.win.get_is_topmost(): + return False + self.live_sp_val = self.live_sp_val + self.spps * self.UPDATE_INTERVAL self.live_sp.set_label("Total SP: %d" % self.live_sp_val)