diff --git a/gluon/newcron.py b/gluon/newcron.py index 7245507c..96e1e917 100644 --- a/gluon/newcron.py +++ b/gluon/newcron.py @@ -48,7 +48,13 @@ def stopcron(): global _cron_stopping _cron_stopping = True while _cron_subprocs: - _cron_subprocs.pop().terminate() + proc = _cron_subprocs.pop() + if proc.poll() is None: + try: + proc.terminate() + except: + import traceback + traceback.print_exc() class extcron(threading.Thread): @@ -254,7 +260,10 @@ class cronlauncher(threading.Thread): shell=self.shell) _cron_subprocs.append(proc) (stdoutdata, stderrdata) = proc.communicate() - _cron_subprocs.remove(proc) + try: + _cron_subprocs.remove(proc) + except ValueError: + pass if proc.returncode != 0: logger.warning( 'WEB2PY CRON Call returned code %s:\n%s' % @@ -320,8 +329,8 @@ def crondance(applications_parent, ctype='soft', startup=False, apps=None): w2p_path = fileutils.abspath('web2py.py', gluon=True) if os.path.exists(w2p_path): commands.append(w2p_path) - if global_settings.applications_parent != global_settings.gluon_parent: - commands.extend(('-f', global_settings.applications_parent)) + if applications_parent != global_settings.gluon_parent: + commands.extend(('-f', applications_parent)) citems = [(k in task and not v in task[k]) for k, v in checks] task_min = task.get('min', []) if not task: diff --git a/gluon/widget.py b/gluon/widget.py index 770e3aed..cf885ae6 100644 --- a/gluon/widget.py +++ b/gluon/widget.py @@ -225,8 +225,8 @@ class web2pyDialog(object): text=str(ProgramVersion + "\n" + ProgramAuthor), font=('Helvetica', 11), justify=Tkinter.CENTER, foreground='#195866', background=bg_color, - height=3).pack( side='top', - fill='both', + height=3).pack( side='top', + fill='both', expand='yes') self.bannerarea.after(1000, self.update_canvas) @@ -246,7 +246,7 @@ class web2pyDialog(object): [('0.0.0.0', 'Public')] for ip, legend in ips: self.ips[ip] = Tkinter.Radiobutton( - self.root, bg=bg_color, highlightthickness=0, + self.root, bg=bg_color, highlightthickness=0, selectcolor='light grey', width=30, anchor=Tkinter.W, text='%s (%s)' % (legend, ip), justify=Tkinter.LEFT, @@ -1119,6 +1119,8 @@ def start(cron=True): # ## if -S start interactive shell (also no cron) if options.shell: + if options.folder: + os.chdir(options.folder) if not options.args is None: sys.argv[:] = options.args run(options.shell, plain=options.plain, bpython=options.bpython,