diff --git a/PySimpleGUI.py b/PySimpleGUI.py index 9f5b52f8..cc80058f 100644 --- a/PySimpleGUI.py +++ b/PySimpleGUI.py @@ -13754,6 +13754,64 @@ def _refresh_debugger(): # 888 888 888 888 888 888 888 888 # 888 888 888 "Y888888 888 888 888 +import shutil +import glob +import sys +import site +import fnmatch +import os +import requests + +files = "PySimpleGUI.py ".split() +url = "https://raw.githubusercontent.com/PySimpleGUI/PySimpleGUI/master/" + +Pythonista = sys.platform == "ios" + + +def _upgrade_from_github(): + package = files[0].split('.py')[0] + contents = {} + for file in files: + page = requests.get(url + file) + if page.status_code != 200: + raise FileNotFoundError(file + ' not found on github. Nothing installed.') + contents[file] = page.text + + sourcefile = files[0] + + version = None + for line in contents[sourcefile].split('\n'): + line_split = line.split("__version__ =") + if len(line_split) > 1: + version = line_split[-1].strip(" '\"") + break + + if Pythonista: + documents = os.sep + "Documents" + sp = os.getcwd().split(documents) + if len(sp) != 2: + print("unable to install") + exit() + path = sp[0] + documents + os.sep + "site-packages" + os.sep + package + + else: + path = site.getsitepackages()[-1] + os.sep + package + + if not os.path.isdir(path): + os.makedirs(path) + + for file in files: + with open(path + os.sep + file, 'w') as f: + f.write(contents[sourcefile]) + + print("copy", file) + + with open(path + os.sep + "__init__.py", "w") as initfile: + initfile.write("from ." + package + " import *\n") + if version is not None: + initfile.write("from ." + package + " import __version__\n") + print(package + " " + ("?" if version is None else version) + " successfully installed in " + path) + def main(): """ @@ -13768,7 +13826,7 @@ def main(): # theme('dark red') # theme('Light Green 6') ver = version[:version.index('\n')] - popup_notify('Starting up PySimpleGUI Test Harness\n'+ver, f'tcl ver = {tkinter.TclVersion}', f'tkinter version = {tkinter.TkVersion}', f'{sys.version} Python Version', title='Starting up!'+ver) + popup_notify('Starting up PySimpleGUI Test Harness\n'+ver, f'tcl ver = {tkinter.TclVersion}', f'tkinter version = {tkinter.TkVersion}', f'{sys.version} Python Version', title=ver) # ------ Menu Definition ------ # menu_def = [['&File', ['!&Open', '&Save::savekey', '---', '&Properties', 'E&xit']], @@ -13846,12 +13904,14 @@ def main(): tooltip='My tooltip', key='_TEXT1_')], [Frame('Input Text Group', frame1, title_color='red')], [Text('PySimpleGUI Version {}'.format(ver), size=(50, None), font='ANY 12')], + [Text('PySimpleGUI Location {}'.format(os.path.dirname(os.path.abspath(__file__))), size=(50, None), font='ANY 12')], [Text('Python Version {}'.format(sys.version), size=(50, None), font='ANY 12')], [Text('TK / TCL Versions {} / {}'.format(tk.TkVersion, tk.TclVersion), size=(50, None), font='ANY 12')], [TabGroup([[tab1, tab2, tab3, tab4]], key='_TAB_GROUP_', )], [Button('Button'), B('Hide Stuff', metadata='my metadata'), Button('ttk Button', use_ttk_buttons=True, tooltip='This is a TTK Button'), Button('See-through Mode', tooltip='Make the background transparent'), + Button('Install PySimpleGUI from GitHub', key='-INSTALL-'), Button('Exit', tooltip='Exit button')], ] @@ -13902,6 +13962,12 @@ def main(): popup_no_wait('About this program...', 'You are looking at the test harness for the PySimpleGUI program') elif event.startswith('See'): window.set_transparent_color(theme_background_color()) + elif event == '-INSTALL-': + if popup_yes_no('This will upgrade your PySimpleGUI pacakge from GitHub. Are you sure?', title='Are you sure you want to overwrite?', keep_on_top=True) == 'Yes': + _upgrade_from_github() + else: + popup_quick_message('Cancelled upgrade', background_color='red', text_color='white', keep_on_top=True) + i += 1 # _refresh_debugger() window.close()