Adds Errors handling in GUI

This commit is contained in:
Julien Lengrand-Lambert
2012-08-21 22:02:24 +02:00
parent b4747fa472
commit 74fea1d310
3 changed files with 18 additions and 6 deletions

View File

@@ -48,8 +48,7 @@ class FacemovieThread(threading.Thread, Observable, Observer):
Trigerred by IvolutionWindow. Trigerred by IvolutionWindow.
Uses the Observer pattern to inform the user about the progress of the GUI. Uses the Observer pattern to inform the user about the progress of the GUI.
""" """
if len(message) == 1: if len(message) == 1: # system commands
# system commands
if message[0] == "STOP": if message[0] == "STOP":
self.console_logger.debug("Facemovie is going to stop") self.console_logger.debug("Facemovie is going to stop")
self.my_logger.debug("Facemovie is going to stop") self.my_logger.debug("Facemovie is going to stop")
@@ -61,13 +60,20 @@ class FacemovieThread(threading.Thread, Observable, Observer):
self.my_logger.debug("Unrecognized system command") self.my_logger.debug("Unrecognized system command")
#self.console_logger.debug(message) #self.console_logger.debug(message)
self.my_logger.debug(message) self.my_logger.debug(message)
elif len(message) == 2: elif len(message) == 2: # notifications
# notifications
#self.console_logger.debug(message) #self.console_logger.debug(message)
self.my_logger.debug(message) self.my_logger.debug(message)
# notify gui about small updates # notify gui about small updates
self.notify(["STATUS", message[0], message[1]]) self.notify(["STATUS", message[0], message[1]])
# checking for fatal error
if message[0] == "Error":
self.console_logger.debug("Fatal Error detected")
self.my_logger.debug("Fatal Error detected")
self.stop_process = True
self.notify(["STOP"])
else: else:
self.console_logger.debug("Unrecognized command") self.console_logger.debug("Unrecognized command")
self.my_logger.debug("Unrecognized command") self.my_logger.debug("Unrecognized command")

View File

@@ -192,7 +192,6 @@ class FaceMovie(object, Observable, Observer):
message = message_root + " %d / %d" % (num, den) message = message_root + " %d / %d" % (num, den)
self.notify([message, self.percent(num, den)]) self.notify([message, self.percent(num, den)])
except (ArithmeticError, ZeroDivisionError): except (ArithmeticError, ZeroDivisionError):
#pass
self.notify(["Error", 0]) self.notify(["Error", 0])
def clean_guys(self): def clean_guys(self):
@@ -221,7 +220,8 @@ class FaceMovie(object, Observable, Observer):
if self.number_guys() == 0: if self.number_guys() == 0:
self.console_logger.error("No face has been found in the whole repository! Exiting. . . ") self.console_logger.error("No face has been found in the whole repository! Exiting. . . ")
self.my_logger.error("No face has been found in the whole repository! Exiting. . . ") self.my_logger.error("No face has been found in the whole repository! Exiting. . . ")
sys.exit(0) # FIXME : Find better way to do that self.notify(["Error", 0])
sys.exit(0)
# normalize faces to make them clean # normalize faces to make them clean
self.set_guys_ratio() # sets all faces to the same size, by calculating a ratio to a reference self.set_guys_ratio() # sets all faces to the same size, by calculating a ratio to a reference

View File

@@ -490,6 +490,12 @@ class IvolutionWindow(wx.Frame, Observer, Observable):
self.process_running = False self.process_running = False
elif message[0] == "STATUS": # status label elif message[0] == "STATUS": # status label
if message[1] == "Error":
wx.MutexGuiEnter() # to avoid thread problems
self.sb.SetStatusText("Error detected", 0)
self.progressgauge.SetValue(0)
wx.MutexGuiLeave()
wx.MutexGuiEnter() # to avoid thread problems wx.MutexGuiEnter() # to avoid thread problems
self.sb.SetStatusText(message[1], 1) self.sb.SetStatusText(message[1], 1)
wx.MutexGuiLeave() wx.MutexGuiLeave()