moved body of app into main() and build_layout()

This commit is contained in:
Fredrcik W. Warren 2024-05-26 21:20:13 -06:00
parent 83914fa353
commit e4abc271ed

View File

@ -4,6 +4,7 @@ import os
import psutil import psutil
import PySimpleGUI as sg import PySimpleGUI as sg
import subprocess import subprocess
import sys
import time import time
""" """
@ -13,6 +14,7 @@ import time
on the same row and make only 1 of them active at a time on the same row and make only 1 of them active at a time
""" """
# ----------- Utility functions -----------
def resource_path(relative_path): def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """ """ Get absolute path to resource, works for dev and for PyInstaller """
try: try:
@ -21,40 +23,50 @@ def resource_path(relative_path):
base_path = os.path.abspath(".") base_path = os.path.abspath(".")
return os.path.join(base_path, relative_path) return os.path.join(base_path, relative_path)
def get_service(name):
""" return information about services """
service = None
try:
service = psutil.win_service_get(name)
service = service.as_dict()
except Exception as ex:
pass
return service
logo = resource_path("logo.png") def build_layout():
logo = resource_path("logo.png")
# ----------- Create the 3 layouts this Window will display -----------
layout1 = [
[sg.Push(), sg.Image(logo), sg.Push()],
[sg.Text('This program allows Will B. to remotely control your')],
[sg.Text('computer through the internet')],
[sg.Text('Is Will waiting for you - *right now* - to run this program?')],
]
# ----------- Create the 3 layouts this Window will display ----------- layout2 = [
layout1 = [ [sg.Text('Remote connection started')],
[sg.Push(), sg.Image(logo), sg.Push()], [sg.Text('Allow connection through firewall if asked.')],
[sg.Text('This program allows Will B. to remotely control your')], [sg.Text('')],
[sg.Text('computer through the internet')], [sg.Text('Click Exit when finished')],
[sg.Text('Is Will waiting for you - *right now* - to run this program?')], ]
]
layout2 = [ layout3 = [
[sg.Text('Remote connection started')], [sg.Text('Please run this program ONLY when Will is waiting for you')],
[sg.Text('Allow connection through firewall if asked.')], [sg.Text('Click Exit to continue')],
[sg.Text('')], ]
[sg.Text('Click Exit when finished')],
]
layout3 = [ # ----------- Create actual layout using Columns and a row of Buttons
[sg.Text('Please run this program ONLY when Will is waiting for you')], layout = [
[sg.Text('Click Exit to continue')], [
] sg.Column(layout1, key='-COL1-'),
sg.Column(layout2, visible=False, key='-COL2-'),
sg.Column(layout3, visible=False, key='-COL3-')
],
[sg.VPush()],
[sg.Push(), sg.Button('No'), sg.Button('Yes'), sg.Button('Exit', visible=False)]
# ----------- Create actual layout using Columns and a row of Buttons ]
layout = [ return layout
[
sg.Column(layout1, key='-COL1-'),
sg.Column(layout2, visible=False, key='-COL2-'),
sg.Column(layout3, visible=False, key='-COL3-')
],
[sg.VPush()],
[sg.Push(), sg.Button('No'), sg.Button('Yes'), sg.Button('Exit', visible=False)]
]
def vncdisconnect(): def vncdisconnect():
@ -71,31 +83,47 @@ def vncdisconnect():
# subprocess.call("tvnserver.exe -controlservice -connect remotesupport.pismotek.com", shell=True) # subprocess.call("tvnserver.exe -controlservice -connect remotesupport.pismotek.com", shell=True)
# time.sleep(3) # time.sleep(3)
def tab_no(window):
""" handle displaying the no tab/column """
window['-COL1-'].update(visible=False)
window['-COL3-'].update(visible=True)
window['No'].update(visible=False)
window['Yes'].update(visible=False)
window['Exit'].update(visible=True)
window = sg.Window('Pismotek', layout, size=(380, 350)) def tab_yes(window):
""" handle displaying the yes tab/column"""
window['-COL1-'].update(visible=False)
window['-COL2-'].update(visible=True)
window['No'].update(visible=False)
window['Yes'].update(visible=False)
window['Exit'].update(visible=True)
# window.perform_long_operation(vncdisconnect, '-VNCCONNECT-')
def tvn_get_state():
""" get current state of tvnserver - retrun stopped if does not exist """
status = "stopped"
service = get_service('tvnserver')
if service:
status = service["status"]
return status
layout = 1 # The currently visible layout def main():
while True: tvn_state = tvn_get_state()
event, values = window.read() print(tvn_state)
if event in (sg.WIN_CLOSED, 'Exit'): layout = build_layout()
break window = sg.Window('Pismotek', layout, size=(380, 350))
elif event == 'No': while True:
window['-COL1-'].update(visible=False) event, values = window.read()
layout = int(3) if event in (sg.WIN_CLOSED, 'Exit'):
window['-COL3-'].update(visible=True) break
window['No'].update(visible=False) elif event == 'No':
window['Yes'].update(visible=False) tab_no(window)
window['Exit'].update(visible=True) elif event == 'Yes':
elif event == 'Yes': tab_yes(window)
window['-COL1-'].update(visible=False) # elif event == '-VNCCONNECT-':
layout = int(2) # print("Woot")
window['-COL2-'].update(visible=True) window.close()
window['No'].update(visible=False)
window['Yes'].update(visible=False)
window['Exit'].update(visible=True)
# window.perform_long_operation(vncdisconnect, '-VNCCONNECT-')
# elif event == '-VNCCONNECT-':
# print("Woot")
window.close()
if __name__ == "__main__":
main()