diff options
Diffstat (limited to 'build_tools/larch8/larch0/gui/larch.py')
-rwxr-xr-x | build_tools/larch8/larch0/gui/larch.py | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/build_tools/larch8/larch0/gui/larch.py b/build_tools/larch8/larch0/gui/larch.py new file mode 100755 index 0000000..cda420b --- /dev/null +++ b/build_tools/larch8/larch0/gui/larch.py @@ -0,0 +1,66 @@ +#!/usr/bin/env python2 +# +# larch.py - GUI for the larch scripts +# +# (c) Copyright 2010 Michael Towers (larch42 at googlemail dot com) +# +# This file is part of the larch project. +# +# larch is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# larch is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with larch; if not, write to the Free Software Foundation, Inc., +# 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +# +#---------------------------------------------------------------------------- +#2010.10.12 + +import sys, os, __builtin__ +dirpath = os.path.dirname(os.path.realpath(__file__)) +sys.path.append(dirpath + '/front') +basedir = os.path.dirname(dirpath) +sys.path.append(basedir + '/cli') +sys.path.append(os.path.dirname(basedir)) + +from controller import base_dir, exports +# Note that the gui module must have a reference point for relative +# paths, so the current directory must be set to the larch base directory +# before starting the gui: +os.chdir(base_dir) + +import mainwindow + +_running = False +def fss(key, *args, **kargs): + while True: + if _running: + ui.busy(True) + res = exports[key](*args) + if _running and not ui.isbusy(): + ui.busy(False) + if res: + result = res[1] + if res[0]: + filter = kargs.get('filter') + return filter(result) if filter else result + + if kargs.get('trap', True): + ui.command('errorDialog', result) + # That might return, but the gui should quit (soon?). + return None + +__builtin__.fss = fss +__builtin__.ui = mainwindow.Ui() +__builtin__.ui_signal = ui.sigin + +mainwindow.init() +_running = True +ui.run() |