Fix bug #5645, and other minor bug
authorRyan Campbell <campbellr@gmail.com>
Thu, 27 May 2010 01:12:27 +0000 (19:12 -0600)
committerRyan Campbell <campbellr@gmail.com>
Thu, 27 May 2010 01:12:27 +0000 (19:12 -0600)
Fixed bug "User is able to click on 'please check api settings' list
item".

Also, the "please check api settings" now says what account uid it is
talking about.

package/src/mevemon.py
package/src/ui/diablo/gui.py
package/src/ui/fremantle/gui.py

index 53fce38..eb10a49 100755 (executable)
@@ -166,9 +166,13 @@ class mEveMon():
         
         for uid, api_key in acct_dict.items():
             auth = self.cached_api.auth(userID=uid, apiKey=api_key)
-            api_char_list = auth.account.Characters()
-            
-            for character in api_char_list.characters:
+            try:
+                api_char_list = auth.account.Characters()
+                characters = api_char_list.characters
+            except:
+                characters = []
+
+            for character in characters:
                 if character.characterID == char_id:
                     return uid
 
@@ -240,8 +244,9 @@ class mEveMon():
 
         ui_char_list = []
         err_img = "/usr/share/mevemon/imgs/error.jpg"
+        err_txt = "Problem fetching info for account"
 
-        placeholder_chars = ("Please check your API settings.", err_img, "0")
+        placeholder_chars = (err_txt, err_img, None)
         
         acct_dict = self.get_accounts()
         if not acct_dict:
@@ -251,7 +256,7 @@ class mEveMon():
             char_names = self.get_chars_from_acct(uid)
             
             if not char_names:
-                ui_char_list.append(placeholder_chars)
+                ui_char_list.append((err_txt + "\t(UID: %s)" % uid, err_img, None))
             else:
                 # append each char we get to the list we'll return to the
                 # UI --danny
index 4212bf8..35bb741 100644 (file)
@@ -248,13 +248,12 @@ class mEveMonUI(BaseUI):
         # Attach menu to the window
         self.win.set_menu(menu)
 
-        character_win = CharacterSheetUI(self.controller)
 
         # create the treeview --danny
         self.char_model = models.CharacterListModel(self.controller)
         treeview = gtk.TreeView(model = self.char_model)
         treeview.set_grid_lines(gtk.TREE_VIEW_GRID_LINES_HORIZONTAL)
-        treeview.connect('row-activated', character_win.build_window)
+        treeview.connect('row-activated', self.do_charactersheet)
         treeview.set_model(self.char_model)
         self.add_columns_to_treeview(treeview)
 
@@ -287,18 +286,37 @@ class mEveMonUI(BaseUI):
         self.char_model.get_characters()
         progress_bar.destroy()
 
+
+    def do_charactersheet(self, treeview, path, view_column):
+
+        model = treeview.get_model()
+        miter = model.get_iter(path)
+        
+        # column 0 is the portrait, column 1 is name
+        char_name = model.get_value(miter, 1)
+        uid = model.get_value(miter, 2)
+        
+        if uid:
+            CharacterSheetUI(self.controller, char_name, uid)
+        else:
+            pass
+
 class CharacterSheetUI(BaseUI):
     #time between live sp updates (in milliseconds)
     UPDATE_INTERVAL = 1000
 
-    def __init__(self, controller):
+    def __init__(self, controller, char_name, uid):
         self.controller = controller
+        self.char_name = char_name
+        self.uid = uid
         self.sheet = None
         self.char_id = None
         self.skills_model = None
 
+        self.build_window()
 
-    def build_window(self, treeview, path, view_column):
+
+    def build_window(self):
         # TODO: this is a really long and ugly function, split it up somehow
 
         self.win = hildon.Window()
@@ -315,24 +333,18 @@ class CharacterSheetUI(BaseUI):
         # Attach menu to the window
         self.win.set_menu(menu)
 
-        model = treeview.get_model()
-        miter = model.get_iter(path)
-        
-        # column 0 is the portrait, column 1 is name
-        char_name = model.get_value(miter, 1)
-        self.uid = model.get_value(miter, 2)
-        self.char_id = self.controller.char_name2id(char_name)
+        self.char_id = self.controller.char_name2id(self.char_name)
 
         self.sheet = self.controller.get_char_sheet(self.uid, self.char_id)
 
-        self.win.set_title(char_name)
+        self.win.set_title(self.char_name)
 
 
         hbox = gtk.HBox(False, 0)
         info_vbox = gtk.VBox(False, 0)
 
         portrait = gtk.Image()
-        portrait.set_from_file(self.controller.get_portrait(char_name, 256))
+        portrait.set_from_file(self.controller.get_portrait(self.char_name, 256))
         portrait.show()
 
         hbox.pack_start(portrait, False, False, 10)
index 183b918..8544f70 100644 (file)
@@ -250,12 +250,11 @@ class mEveMonUI(BaseUI):
 
         pannable_area = hildon.PannableArea()
 
-        character_win = CharacterSheetUI(self.controller)
 
         # gtk.HILDON_UI_MODE_NORMAL -> not selection in the treeview
         # gtk.HILDON_UI_MODE_EDIT -> selection in the treeview
         treeview = hildon.GtkTreeView(gtk.HILDON_UI_MODE_NORMAL)
-        treeview.connect('row-activated', character_win.build_window)
+        treeview.connect('row-activated', self.do_charactersheet)
 
         self.char_model = models.CharacterListModel(self.controller)
         treeview.set_model(self.char_model)
@@ -291,17 +290,36 @@ class mEveMonUI(BaseUI):
         hildon.hildon_gtk_window_set_progress_indicator(self.win, 0)
     
 
+    def do_charactersheet(self, treeview, path, view_column):
+
+        model = treeview.get_model()
+        miter = model.get_iter(path)
+        
+        # column 0 is the portrait, column 1 is name
+        char_name = model.get_value(miter, 1)
+        uid = model.get_value(miter, 2)
+        
+        if uid:
+            CharacterSheetUI(self.controller, char_name, uid)
+        else:
+            pass
+
+
 class CharacterSheetUI(BaseUI):
     UPDATE_INTERVAL = 1
 
-    def __init__(self, controller):
+    def __init__(self, controller, char_name, uid):
         self.controller = controller
+        self.char_name = char_name
+        self.uid = uid
         self.sheet = None
         self.char_id = None
         self.skills_model = None
+        
+        self.build_window()
 
 
-    def build_window(self, treeview, path, view_column):
+    def build_window(self):
         # TODO: this is a really long and ugly function, split it up somehow
 
         self.win = hildon.StackableWindow()
@@ -317,24 +335,18 @@ class CharacterSheetUI(BaseUI):
 
         pannable_area = hildon.PannableArea()
 
-        model = treeview.get_model()
-        miter = model.get_iter(path)
-        
-        # column 0 is the portrait, column 1 is name
-        char_name = model.get_value(miter, 1)
-        self.uid = model.get_value(miter, 2)
-        self.char_id = self.controller.char_name2id(char_name)
+        self.char_id = self.controller.char_name2id(self.char_name)
 
         self.sheet = self.controller.get_char_sheet(self.uid, self.char_id)
 
-        self.win.set_title(char_name)
+        self.win.set_title(self.char_name)
 
 
         hbox = gtk.HBox(False, 0)
         info_vbox = gtk.VBox(False, 0)
 
         portrait = gtk.Image()
-        portrait.set_from_file(self.controller.get_portrait(char_name, 256))
+        portrait.set_from_file(self.controller.get_portrait(self.char_name, 256))
         portrait.show()
 
         hbox.pack_start(portrait, False, False, 10)