Display a window that displays the parms for the init and update methods for each element
()
| 13 | """ |
| 14 | |
| 15 | def main(): |
| 16 | """ |
| 17 | Display a window that displays the parms for the init and update methods for each element |
| 18 | |
| 19 | """ |
| 20 | |
| 21 | common_parms = ['key','k','font','pad','p', 'visible','size','s', 'change_submits', 'enable_events','right_click_menu','tooltip','metadata', 'expand_x', 'expand_y'] |
| 22 | element_classes = sg.Element.__subclasses__() |
| 23 | element_names = {element.__name__: element for element in element_classes} |
| 24 | element_names['Window'] = sg.Window |
| 25 | element_names['SystemTray'] = sg.SystemTray |
| 26 | # vars3 = [m for m in inspect.getmembers(sys.modules[__name__])] |
| 27 | element_arg_default_dict = {} |
| 28 | element_arg_default_dict_update = {} |
| 29 | for element in element_classes: |
| 30 | # Build info about init method |
| 31 | args = inspect.getargspec(element.__init__).args[1:] |
| 32 | defaults = inspect.getargspec(element.__init__).defaults |
| 33 | if len(args) != len(defaults): |
| 34 | diff = len(args) - len(defaults) |
| 35 | defaults = ('NO DEFAULT',)*diff + defaults |
| 36 | args_defaults = [] |
| 37 | for i, a in enumerate(args): |
| 38 | args_defaults.append((a, defaults[i])) |
| 39 | element_arg_default_dict[element.__name__] = args_defaults |
| 40 | |
| 41 | # Build info about update method |
| 42 | args = inspect.getargspec(element.update).args[1:] |
| 43 | defaults = inspect.getargspec(element.update).defaults |
| 44 | if args is None or defaults is None: |
| 45 | element_arg_default_dict_update[element.__name__] = (('',''),) |
| 46 | continue |
| 47 | if len(args) != len(defaults): |
| 48 | diff = len(args) - len(defaults) |
| 49 | defaults = ('NO DEFAULT',)*diff + defaults |
| 50 | args_defaults = [] |
| 51 | for i, a in enumerate(args): |
| 52 | args_defaults.append((a, defaults[i])) |
| 53 | element_arg_default_dict_update[element.__name__] = args_defaults if len(args_defaults) else (('',''),) |
| 54 | |
| 55 | sg.theme('black') |
| 56 | sg.theme_background_color('#131314') |
| 57 | sg.theme_text_element_background_color('#131314') |
| 58 | sg.theme_input_background_color('#131314') |
| 59 | ml = sg.Multiline(size=(40, 30), key='-ML-', write_only=True, reroute_stdout=True, expand_y=True, expand_x=True) |
| 60 | layout = [ [sg.Titlebar('Element Init & Update Parm Viewer', background_color='#131314', text_color='white')], |
| 61 | [sg.Combo([e for e in sorted(element_names.keys())],background_color='#131314', size=(25,30), enable_events=True, readonly=True, expand_x=True, key='-COMBO-')], |
| 62 | sg.vtop([ml], expand_y=True, expand_x=True) ] + [[sg.Sizegrip()]] |
| 63 | # layout += [[Button('Exit', size=(15, 1))]] |
| 64 | |
| 65 | window = sg.Window('Init & Update Parms', layout, use_default_focus=False, keep_on_top=True, no_titlebar=True, margins=(0,0),font='Courier 12', right_click_menu=sg.MENU_RIGHT_CLICK_EDITME_EXIT, resizable=True) |
| 66 | # ml = window['-ML-'] # type: sg.MLine |
| 67 | while True: # Event Loop |
| 68 | event, values = window.read() |
| 69 | if event in (sg.WIN_CLOSED, 'Exit'): |
| 70 | break |
| 71 | # ml.print(event, values) |
| 72 | if event == '-COMBO-': |
no test coverage detected