mirror of https://github.com/chriskiehl/Gooey.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
90 lines
2.2 KiB
90 lines
2.2 KiB
'''
|
|
Main runner entry point for Gooey.
|
|
'''
|
|
|
|
import wx
|
|
import os
|
|
import sys
|
|
import json
|
|
import argparse
|
|
|
|
from functools import partial
|
|
|
|
from gooey.gui.lang import i18n
|
|
from gooey.gui.windows.base_window import BaseWindow
|
|
from gooey.gui.windows.advanced_config import ConfigPanel
|
|
|
|
from gooey.python_bindings import config_generator, source_parser
|
|
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(
|
|
description='Gooey turns your command line programs into beautiful, user friendly GUIs')
|
|
|
|
parser.add_argument(
|
|
'-b', '--create-build-script',
|
|
dest='build_script',
|
|
help='Parse the supplied Python File and generate a runnable Gooey build script'
|
|
)
|
|
|
|
parser.add_argument(
|
|
'-r', '--run',
|
|
dest='run',
|
|
nargs='?',
|
|
const='',
|
|
help='Run Gooey with build_config in local dir OR via the supplied config path'
|
|
)
|
|
|
|
args = parser.parse_args()
|
|
|
|
if args.build_script:
|
|
do_build_script(args.build_script)
|
|
elif args.run is not None:
|
|
do_run(args)
|
|
|
|
|
|
def do_build_script(module_path):
|
|
with open(module_path, 'r') as f:
|
|
if not source_parser.has_argparse(f.read()):
|
|
raise AssertionError('Argparse not found in module. Unable to continue')
|
|
|
|
gooey_config = config_generator.create_from_parser(module_path, show_config=True)
|
|
outfile = os.path.join(os.getcwd(), 'gooey_config.json')
|
|
|
|
print 'Writing config file to: {}'.format(outfile)
|
|
|
|
with open(outfile, 'w') as f:
|
|
f.write(json.dumps(gooey_config, indent=2))
|
|
|
|
|
|
def do_run(args):
|
|
gooey_config = args.run or read_local_dir()
|
|
|
|
if not os.path.exists(gooey_config):
|
|
raise IOError('Gooey Config not found')
|
|
|
|
with open(gooey_config, 'r') as f:
|
|
build_spec = json.load(f)
|
|
run(build_spec)
|
|
|
|
|
|
def run(build_spec):
|
|
app = wx.App(False)
|
|
|
|
i18n.load(build_spec['language'])
|
|
|
|
frame = BaseWindow(build_spec)
|
|
frame.Show(True)
|
|
app.MainLoop()
|
|
|
|
|
|
def read_local_dir():
|
|
local_files = os.listdir(os.getcwd())
|
|
if 'gooey_config.json' not in local_files:
|
|
print "Bugger! gooey_config.json not found!"
|
|
sys.exit(1)
|
|
return os.path.join(os.getcwd(), 'gooey_config.json')
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|