Fix bug #5645, and other minor bug
[mevemon] / package / src / mevemon.py
index 17c4ca1..eb10a49 100755 (executable)
@@ -69,6 +69,7 @@ class mEveMon():
         self.cached_api = eveapi.EVEAPIConnection( cacheHandler = \
                 apicache.cache_handler(debug=False))
         self.gui = gui.mEveMonUI(self)
+        self.gui.run()
 
     def run(self):
         gtk.main()
@@ -131,7 +132,8 @@ class mEveMon():
 
         try:
             auth = self.cached_api.auth(userID=uid, apiKey=api_key)
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             traceback.print_exc()
             return None
 
@@ -144,7 +146,8 @@ class mEveMon():
         """
         try:
             sheet = self.get_auth(uid).character(char_id).CharacterSheet()
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             # TODO: we should really have a logger that logs this error somewhere
             traceback.print_exc()
             return None
@@ -163,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
 
@@ -182,7 +189,8 @@ class mEveMon():
         try:
             chars = self.cached_api.eve.CharacterName(ids=char_id).characters
             name = chars[0].characterName
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             traceback.print_exc()
             return None
 
@@ -199,7 +207,8 @@ class mEveMon():
             chars = self.cached_api.eve.CharacterID(names=name).characters
             char_id = chars[0].characterID
             char_name = chars[0].name
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             traceback.print_exc()
             return None
 
@@ -216,7 +225,8 @@ class mEveMon():
             try:
                 api_char_list = auth.account.Characters()
                 char_list = [char.name for char in api_char_list.characters]
-            except:
+            except Exception, e:
+                self.gui.report_error(str(e))
                 traceback.print_exc()
                 return None
 
@@ -231,10 +241,12 @@ class mEveMon():
         pair to the list, it appends an 'error message' 
 
         """
+
         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:
@@ -244,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
@@ -267,7 +279,8 @@ class mEveMon():
         """
         try:
             tree = self.cached_api.eve.SkillTree()
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             traceback.print_exc()
             return None
         
@@ -280,7 +293,8 @@ class mEveMon():
         """
         try:
             skill = self.get_auth(uid).character(char_id).SkillInTraining()
-        except:
+        except Exception, e:
+            self.gui.report_error(str(e))
             traceback.print_exc()
             return None