From d495606f2ae4a4378b02968f6d1cd4c0d146b42a Mon Sep 17 00:00:00 2001 From: Eric Blade Date: Sun, 16 Aug 2009 05:30:11 -0500 Subject: [PATCH] GuiAutoImport: do_import: change label of Stop button when running an import, to provide a visual indicator startClicked: refactor so only the Pipe Open is inside the exception handler, since that should be the only thing in there that we need to ignore an exception from. --- pyfpdb/GuiAutoImport.py | 54 +++++++++++++++++++++++------------------ 1 file changed, 31 insertions(+), 23 deletions(-) diff --git a/pyfpdb/GuiAutoImport.py b/pyfpdb/GuiAutoImport.py index b1815e95..80272e93 100755 --- a/pyfpdb/GuiAutoImport.py +++ b/pyfpdb/GuiAutoImport.py @@ -136,12 +136,19 @@ class GuiAutoImport (threading.Thread): def do_import(self): """Callback for timer to do an import iteration.""" if self.doAutoImportBool: + self.startButton.set_label(u' I M P O R T I N G ') self.importer.runUpdated() sys.stdout.write(".") sys.stdout.flush() + gobject.timeout_add(1000, self.reset_startbutton) return True else: return False + + def reset_startbutton(self): + self.startButton.set_label(u' _Stop Autoimport ') + return False + def startClicked(self, widget, data): """runs when user clicks start on auto import tab""" @@ -161,33 +168,34 @@ class GuiAutoImport (threading.Thread): # - Ideally we want to release the lock if the auto-import is killed by some # kind of exception - is this possible? if self.settings['global_lock'].acquire(False): # returns false immediately if lock not acquired - try: - print "\nGlobal lock taken ..." - self.doAutoImportBool = True - widget.set_label(u' _Stop Autoimport ') - if self.pipe_to_hud is None: - if os.name == 'nt': - command = "python HUD_main.py" + " " + self.settings['cl_options'] - bs = 0 # windows is not happy with line buffing here - self.pipe_to_hud = subprocess.Popen(command, bufsize = bs, stdin = subprocess.PIPE, - universal_newlines=True) - else: - command = os.path.join(sys.path[0], 'HUD_main.py') - cl = [command, ] + string.split(self.settings['cl_options']) - self.pipe_to_hud = subprocess.Popen(cl, bufsize = 1, stdin = subprocess.PIPE, - universal_newlines=True) - - # Add directories to importer object. + print "\nGlobal lock taken ..." + self.doAutoImportBool = True + widget.set_label(u' _Stop Autoimport ') + if self.pipe_to_hud is None: + if os.name == 'nt': + command = "python HUD_main.py " + self.settings['cl_options'] + bs = 0 + else: + command = os.path.join(sys.path[0], 'HUD_main.py') + command = [command, ] + string.split(self.settings['cl_options']) + bs = 1 + try: + self.pipe_to_hud = subprocess.Popen(command, bufsize = bs, stdin = subprocess.PIPE, + universal_newlines = True) + except: + err = traceback.extract_tb(sys.exc_info()[2])[-1] + print "*** Error: " + err[2] + "(" + str(err[1]) + "): " + str(sys.exc_info()[1]) + + print "self.pipe_to_hud = ", self.pipe_to_hud + if self.pipe_to_hud is not None: for site in self.input_settings: self.importer.addImportDirectory(self.input_settings[site][0], True, site, self.input_settings[site][1]) - print "Adding import directories - Site: " + site + " dir: "+ str(self.input_settings[site][0]) + print "+Import directory - Site: " + site + " dir: " + str(self.input_settings[site][0]) self.do_import() - - interval=int(self.intervalEntry.get_text()) + + interval = int(self.intervalEntry.get_text()) gobject.timeout_add(interval*1000, self.do_import) - except: - err = traceback.extract_tb(sys.exc_info()[2])[-1] - print "***Error: "+err[2]+"("+str(err[1])+"): "+str(sys.exc_info()[1]) + else: print "auto-import aborted - global lock not available" else: # toggled off