From b93cac13378c31cc2136938481cd434a04d16a40 Mon Sep 17 00:00:00 2001 From: Julien Lengrand-Lambert Date: Wed, 18 Jul 2012 19:18:05 +0200 Subject: [PATCH] Allow Facemovie therad to run while gui is running --- Ivolution.py | 6 ++-- facemovie/Facemovie_lib.py | 38 ++----------------------- gui/IvolutionWindow.py | 58 ++++++++++++++++++++++++++++++++++---- 3 files changed, 58 insertions(+), 44 deletions(-) diff --git a/Ivolution.py b/Ivolution.py index 3f40a41..26098cb 100755 --- a/Ivolution.py +++ b/Ivolution.py @@ -1,7 +1,9 @@ #!/usr/bin/env python -from gi.repository import Gtk +from gi.repository import Gtk, GObject from gui import IvolutionWindow + my_app = IvolutionWindow.IvolutionWindow() -Gtk.main() \ No newline at end of file +GObject.threads_init() +Gtk.main() diff --git a/facemovie/Facemovie_lib.py b/facemovie/Facemovie_lib.py index 59d18c9..498fcf4 100644 --- a/facemovie/Facemovie_lib.py +++ b/facemovie/Facemovie_lib.py @@ -37,10 +37,8 @@ class FaceMovie(object): :type face_param: string """ - self.console_logger = None # Used to send messages to the console - self.my_logger = None # Used to save events into a file - - self.setup_logger() + self.console_logger = logging.getLogger('ConsoleLog') # Used to send messages to the console + self.my_logger = logging.getLogger('FileLog') # Used to save events into a file self.source= face_params.input_folder # Source folder for pictures # Retrieving parameters for Face Detection @@ -81,38 +79,6 @@ class FaceMovie(object): self.speed = [2, 5, 9]# this one should be internal. Number of fps for the video - ### checked methods - - def setup_logger(self): - """ - Configures our logger to save error messages - Start logging in file here - """ - # create logger for 'facemovie' - self.my_logger = logging.getLogger('FileLog') - self.my_logger.setLevel(logging.DEBUG) - # create file handler which logs even debug messages - fh = logging.FileHandler('log/fm.log') - fh.setLevel(logging.DEBUG) - # create console handler with a higher log level - self.console_logger = logging.getLogger('ConsoleLog') - # self.console_logger.setLevel(logging.DEBUG) # not needed - - ch = logging.StreamHandler() - #ch.setLevel(logging.DEBUG) # not needed - - # add the handlers to the logger - self.my_logger.addHandler(fh) - - self.my_logger.info("######") # Separating different sessions - - formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') - # create formatter and add it to the handlers - fh.setFormatter(formatter) - #ch.setFormatter(formatter) - - self.console_logger.addHandler(ch) - def list_guys(self): """ diff --git a/gui/IvolutionWindow.py b/gui/IvolutionWindow.py index a37d19b..83405cd 100755 --- a/gui/IvolutionWindow.py +++ b/gui/IvolutionWindow.py @@ -4,6 +4,8 @@ import os import webbrowser +import logging + from gi.repository import Gtk from AboutDialog import AboutDialog @@ -13,10 +15,14 @@ parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) os.sys.path.insert(0,parentdir) from facemovie import Facemovie_lib from facemovie import FaceParams +from facemovie import FacemovieThread class IvolutionWindow(): def __init__(self): + self.my_logger = None + self.console_logger = None + self.builder = Gtk.Builder() self.builder.add_from_file("data/ui/IvolutionWindow.glade") #self.builder.connect_signals({ "on_ivolutionwindow_destroy" : Gtk.main_quit }) @@ -40,6 +46,7 @@ class IvolutionWindow(): self.AboutDialog = None # class self.setup() + self.setup_logger() def setup(self): """ @@ -87,6 +94,9 @@ class IvolutionWindow(): """ self.set_parameters() self.print_parameters() + # Instantiating the facemovie + self.facemovie = FacemovieThread.FacemovieThread(self.face_params) + self.facemovie.start() def on_stopbutton_pressed(self, widget): """ @@ -137,12 +147,48 @@ class IvolutionWindow(): self.speed) def print_parameters(self): - print self.in_fo - print self.out_fo - print self.param - print self.speed - print self.mode - print self.sort + print "#########" + print "Settings:" + print "input folder : %s" %( self.in_fo) + print "output folder : %s" %( self.out_fo) + + print "Face Type : %s" %( self.param) + print "Speed chosen : %s" %( self.speed) + print "Mode chosen : %s" %( self.mode) + print "Sort method : %s" %( self.sort) + + print "#########" + + + def setup_logger(self): + """ + Configures our logger to save error messages + Start logging in file here + """ + # create logger for 'facemovie' + self.my_logger = logging.getLogger('FileLog') + self.my_logger.setLevel(logging.DEBUG) + # create file handler which logs even debug messages + fh = logging.FileHandler('log/fm.log') + fh.setLevel(logging.DEBUG) + # create console handler with a higher log level + self.console_logger = logging.getLogger('ConsoleLog') + self.console_logger.setLevel(logging.DEBUG) # not needed + + ch = logging.StreamHandler() + #ch.setLevel(logging.DEBUG) # not needed + + # add the handlers to the logger + self.my_logger.addHandler(fh) + + self.my_logger.info("######") # Separating different sessions + + formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') + # create formatter and add it to the handlers + fh.setFormatter(formatter) + #ch.setFormatter(formatter) + + self.console_logger.addHandler(ch) if __name__ == "__main__": app = IvolutionWindow()