mirror of https://github.com/chriskiehl/Gooey.git
Browse Source
Fixed issue #55. Removed basic layout class in favor of json layout build_spec. Fixed restart button. Fixed all run modes
pull/61/head
Fixed issue #55. Removed basic layout class in favor of json layout build_spec. Fixed restart button. Fixed all run modes
pull/61/head
17 changed files with 319 additions and 138 deletions
Split View
Diff Options
-
1gooey/_tmp/example_argparse_souce_in_main.py
-
171gooey/_tmp/example_argparse_souce_in_try.py
-
1gooey/_tmp/mock_app_vars_in_args.py
-
10gooey/_tmp/mock_argparse_example.py
-
15gooey/_tmp/mockapp.py
-
50gooey/_tmp/mockapp_import_argparse.py
-
18gooey/_tmp/module_with_no_argparse.py
-
16gooey/gui/controller.py
-
2gooey/gui/widgets/components2.py
-
15gooey/gui/windows/layouts.py
-
4gooey/mockapplications/example_argparse_souce_in_try.py
-
15gooey/mockapplications/mockapp.py
-
4gooey/mockapplications/module_with_no_argparse.py
-
89gooey/mockapplications/qwindelzorf _example.py
-
2gooey/python_bindings/argparse_to_json.py
-
43gooey/python_bindings/gooey_decorator.py
-
1gooey/python_bindings/source_parser.py
@ -0,0 +1,171 @@ |
|||
#!/usr/local/bin/python2.7 |
|||
# encoding: utf-8 |
|||
''' |
|||
|
|||
TODO: Fix this. Currently breaks parser |
|||
|
|||
|
|||
bin.example_argparse_souce -- shortdesc |
|||
|
|||
bin.example_argparse_souce is a description |
|||
|
|||
It defines classes_and_methods |
|||
|
|||
@author: user_name |
|||
|
|||
@copyright: 2013 organization_name. All rights reserved. |
|||
|
|||
@license: license |
|||
|
|||
@contact: user_email |
|||
@deffield updated: Updated |
|||
''' |
|||
|
|||
import sys |
|||
import os |
|||
from argparse import ArgumentParser |
|||
from argparse import RawDescriptionHelpFormatter |
|||
|
|||
from gooey.python_bindings.gooey_decorator import Gooey |
|||
|
|||
|
|||
__all__ = [] |
|||
__version__ = 0.1 |
|||
__date__ = '2013-12-13' |
|||
__updated__ = '2013-12-13' |
|||
|
|||
DEBUG = 0 |
|||
TESTRUN = 0 |
|||
PROFILE = 0 |
|||
|
|||
|
|||
class CLIError(Exception): |
|||
'''Generic exception to raise and log different fatal errors.''' |
|||
|
|||
def __init__(self, msg): |
|||
super(CLIError).__init__(type(self)) |
|||
self.msg = "E: %s" % msg |
|||
|
|||
def __str__(self): |
|||
return self.msg |
|||
|
|||
def __unicode__(self): |
|||
return self.msg |
|||
|
|||
|
|||
def main(argv=None): # IGNORE:C0111 |
|||
'''Command line options.''' |
|||
|
|||
if argv is None: |
|||
argv = sys.argv |
|||
else: |
|||
sys.argv.extend(argv) |
|||
|
|||
program_name = os.path.basename(sys.argv[0]) |
|||
program_version = "v%s" % __version__ |
|||
program_build_date = str(__updated__) |
|||
program_version_message = '%%(prog)s %s (%s)' % (program_version, program_build_date) |
|||
program_shortdesc = __import__('__main__').__doc__.split("\n")[1] |
|||
program_license = '''%s |
|||
|
|||
Created by user_name on %s. |
|||
Copyright 2013 organization_name. All rights reserved. |
|||
|
|||
Licensed under the Apache License 2.0 |
|||
http://www.apache.org/licenses/LICENSE-2.0 |
|||
|
|||
Distributed on an "AS IS" basis without warranties |
|||
or conditions of any kind, either express or implied. |
|||
|
|||
USAGE |
|||
''' % (program_shortdesc, str(__date__)) |
|||
|
|||
try: |
|||
# Setup argument parser |
|||
parser = ArgumentParser(description='Example Argparse Program', formatter_class=RawDescriptionHelpFormatter) |
|||
|
|||
parser.add_argument("filename", help="filename") |
|||
|
|||
parser.add_argument("-r", "--recursive", dest="recurse", action="store_true", |
|||
help="recurse into subfolders [default: %(default)s]") |
|||
|
|||
parser.add_argument("-v", "--verbose", dest="verbose", action="count", |
|||
help="set verbosity level [default: %(default)s]") |
|||
|
|||
parser.add_argument("-i", "--include", action="append", nargs='+', |
|||
help="only include paths matching this regex pattern. Note: exclude is given preference over include. ", |
|||
metavar="RE") |
|||
|
|||
parser.add_argument("-m", "--mycoolargument", help="mycoolargument") |
|||
|
|||
parser.add_argument("-e", "--exclude", dest="exclude", |
|||
help="exclude paths matching this regex pattern. [default: %(default)s]", metavar="RE") |
|||
|
|||
parser.add_argument('-V', '--version', action='version') |
|||
|
|||
parser.add_argument('-T', '--tester', choices=['yes', 'no']) |
|||
|
|||
parser.add_argument(dest="paths", help="paths to folder(s) with source file(s) [default: %(default)s]", |
|||
metavar="path", nargs='+') |
|||
|
|||
# for i in parser._actions: |
|||
# print i |
|||
# Process arguments |
|||
args = parser.parse_args() |
|||
|
|||
paths = args.paths |
|||
verbose = args.verbose |
|||
recurse = args.recurse |
|||
inpat = args.include |
|||
expat = args.exclude |
|||
|
|||
if verbose > 0: |
|||
print("Verbose mode on") |
|||
if recurse: |
|||
print("Recursive mode on") |
|||
else: |
|||
print("Recursive mode off") |
|||
|
|||
if inpat and expat and inpat == expat: |
|||
raise CLIError("include and exclude pattern are equal! Nothing will be processed.") |
|||
|
|||
for inpath in paths: |
|||
### do something with inpath ### |
|||
print(inpath) |
|||
return 0 |
|||
except KeyboardInterrupt: |
|||
### handle keyboard interrupt ### |
|||
return 0 |
|||
except Exception, e: |
|||
if DEBUG or TESTRUN: |
|||
raise (e) |
|||
indent = len(program_name) * " " |
|||
sys.stderr.write(program_name + ": " + repr(e) + "\n") |
|||
sys.stderr.write(indent + " for help use --help") |
|||
return 2 |
|||
|
|||
|
|||
if __name__ == "__main__": |
|||
if DEBUG: |
|||
sys.argv.append("-h") |
|||
# sys.argv.append("-v") |
|||
sys.argv.append("-r") |
|||
main() |
|||
sys.exit() |
|||
if TESTRUN: |
|||
import doctest |
|||
|
|||
doctest.testmod() |
|||
if PROFILE: |
|||
import cProfile |
|||
import pstats |
|||
|
|||
profile_filename = 'bin.example_argparse_souce_profile.txt' |
|||
cProfile.run('main()', profile_filename) |
|||
statsfile = open("profile_stats.txt", "wb") |
|||
p = pstats.Stats(profile_filename, stream=statsfile) |
|||
stats = p.strip_dirs().sort_stats('cumulative') |
|||
stats.print_stats() |
|||
statsfile.close() |
|||
sys.exit(0) |
|||
sys.exit(main()) |
@ -0,0 +1,50 @@ |
|||
''' |
|||
Created on Dec 21, 2013 |
|||
|
|||
@author: Chris |
|||
''' |
|||
import sys |
|||
import hashlib |
|||
from time import time as _time |
|||
from time import sleep as _sleep |
|||
import argparse |
|||
|
|||
from gooey import Gooey |
|||
|
|||
|
|||
def main(): |
|||
my_cool_parser = argparse.ArgumentParser(description="Mock application to test Gooey's functionality") |
|||
my_cool_parser.add_argument("filename", help="Name of the file you want to read") # positional |
|||
my_cool_parser.add_argument("outfile", help="Name of the file where you'll save the output") # positional |
|||
my_cool_parser.add_argument('-c', '--countdown', default=10, type=int, help='sets the time to count down from') |
|||
my_cool_parser.add_argument("-s", "--showtime", action="store_true", help="display the countdown timer") |
|||
my_cool_parser.add_argument("-d", "--delay", action="store_true", help="Delay execution for a bit") |
|||
my_cool_parser.add_argument('--verbose', '-v', action='count') |
|||
my_cool_parser.add_argument("-o", "--obfuscate", action="store_true", help="obfuscate the countdown timer!") |
|||
my_cool_parser.add_argument('-r', '--recursive', choices=['yes', 'no'], help='Recurse into subfolders') |
|||
my_cool_parser.add_argument("-w", "--writelog", default="No, NOT whatevs", help="write log to some file or something") |
|||
my_cool_parser.add_argument("-e", "--expandAll", action="store_true", help="expand all processes") |
|||
|
|||
print 'inside of main(), my_cool_parser =', my_cool_parser |
|||
args = my_cool_parser.parse_args() |
|||
|
|||
print sys.argv |
|||
print args.countdown |
|||
print args.showtime |
|||
|
|||
start_time = _time() |
|||
print 'Counting down from %s' % args.countdown |
|||
while _time() - start_time < args.countdown: |
|||
if args.showtime: |
|||
print 'printing message at: %s' % _time() |
|||
else: |
|||
print 'printing message at: %s' % hashlib.md5(str(_time())).hexdigest() |
|||
_sleep(.5) |
|||
print 'Finished running the program. Byeeeeesss!' |
|||
|
|||
# raise ValueError("Something has gone wrong! AHHHHHHHHHHH") |
|||
|
|||
if __name__ == '__main__': |
|||
# sys.argv.extend('asdf -c 5 -s'.split()) |
|||
# print sys.argv |
|||
main() |
@ -0,0 +1,18 @@ |
|||
''' |
|||
Created on Feb 2, 2014 |
|||
|
|||
@author: Chris |
|||
''' |
|||
import time |
|||
from gooey import Gooey |
|||
|
|||
def main(): |
|||
end = time.time() + 10 |
|||
while end > time.time(): |
|||
print 'Jello!', time.time() |
|||
time.sleep(.8) |
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
main() |
|||
|
@ -0,0 +1,15 @@ |
|||
|
|||
|
|||
basic_config = { |
|||
'required': [{ |
|||
'type': 'TextField', |
|||
'data': { |
|||
'display_name': 'Enter Commands', |
|||
'help': 'Enter command line arguments', |
|||
'nargs': '', |
|||
'commands': '', |
|||
'choices': [], |
|||
} |
|||
}], |
|||
'optional': [] |
|||
} |
@ -1,89 +0,0 @@ |
|||
"""inline""" |
|||
|
|||
import argparse |
|||
from __builtin__ import getattr |
|||
from gooey import Gooey |
|||
|
|||
x = '''random line''' |
|||
|
|||
y = """ |
|||
Buncha text here |
|||
and here |
|||
and here |
|||
and here |
|||
""" |
|||
|
|||
# @Gooey |
|||
def main(): |
|||
""" |
|||
This is my main module |
|||
example: |
|||
args = parser.parse_args() |
|||
""" |
|||
parser = argparse.ArgumentParser('Get my users') |
|||
verbosity = parser.add_mutually_exclusive_group() |
|||
verbosity.add_argument('-v', '--verbose', dest='verbose', action="store_true", help="Show more details") |
|||
verbosity.add_argument('-q', '--quiet', dest='quiet', action="store_true", help="Only output on error") |
|||
parser.add_argument("filename", help="yo yo yo") # positional |
|||
parser.add_argument("outfile", help="Name of the file where you'll save the output") # positional |
|||
slervocity = parser.add_mutually_exclusive_group() |
|||
slervocity.add_argument('-c', '--countdown', action="store_true", help='sets the time to count down from') |
|||
slervocity.add_argument("-s", "--showtime", action="store_true", help="display the countdown timer") |
|||
parser.add_argument("-d", "--delay", action="store_true", help="Delay execution for a bit") |
|||
parser.add_argument("-o", "--obfuscate", action="store_true", help="obfuscate the countdown timer!") |
|||
parser.add_argument('-r', '--recursive', choices=['yes', 'no'], help='Recurse into subfolders') |
|||
parser.add_argument("-w", "--writelog", default="No, NOT whatevs", help="write log to some file or something") |
|||
parser.add_argument("-e", "--expandAll", action="store_true", help="expand all processes") |
|||
|
|||
mutually_exclusive_group = [mutex_action |
|||
for group_actions in parser._mutually_exclusive_groups |
|||
for mutex_action in group_actions._group_actions] |
|||
|
|||
base_actions = [action for action in parser._actions |
|||
if action not in mutually_exclusive_group] |
|||
|
|||
for i in base_actions: |
|||
print 'Base Action:', i.option_strings |
|||
# |
|||
# print |
|||
|
|||
for i in mutually_exclusive_group: |
|||
print 'Mute Action:', i |
|||
|
|||
# for i in base_actions: |
|||
# print dir(i) |
|||
# print i.nargs |
|||
# break |
|||
|
|||
|
|||
def moo(asdf): |
|||
'''single quoted inline comment''' |
|||
a = 1 |
|||
|
|||
def foo(): |
|||
"""Double quoted inline comment """ |
|||
a = 1 |
|||
|
|||
def bar(): |
|||
""" |
|||
Double quoted |
|||
multiline comment |
|||
""" |
|||
a = 1 |
|||
|
|||
def baz(): |
|||
''' |
|||
Double quoted |
|||
multiline comment |
|||
''' |
|||
a = 1 |
|||
|
|||
|
|||
def foo(): |
|||
parser = argparse.ArgumentParser() |
|||
bar = 1 |
|||
baz = 2 |
|||
|
|||
if __name__ == '__main__': |
|||
main() |
|||
|
Write
Preview
Loading…
Cancel
Save