Focus the filter input field when starting. Shows python interpreter version that will be used to launch programs. Added a PANE between the 2 main columns. Set a minimum size for the window. Rerouting cprint directly in the layout now.

This commit is contained in:
PySimpleGUI 2021-06-13 08:07:13 -04:00
parent a70e030e74
commit b8a13bd54e
1 changed files with 32 additions and 7 deletions

View File

@ -381,7 +381,7 @@ def settings_window():
[sg.T('Theme', font='_ 16')],
[sg.T('Leave blank to use global default'), sg.T(global_theme)],
[sg.Combo(['']+sg.theme_list(),sg.user_settings_get_entry('-theme-', ''), readonly=True, k='-THEME-')],
[sg.T('Double-click a File Will:'), sg.R('Run', 2, sg.user_settings_get_entry('-dclick runs-', False), k='-DCLICK RUNS-'), sg.R('Edit', 2, sg.user_settings_get_entry('-dclick edits-', False), k='-DCLICK EDITS-'), sg.R('Nohthing', 2, sg.user_settings_get_entry('-dclick none-', False), k='-DCLICK NONE-')],
[sg.T('Double-click a File Will:'), sg.R('Run', 2, sg.user_settings_get_entry('-dclick runs-', False), k='-DCLICK RUNS-'), sg.R('Edit', 2, sg.user_settings_get_entry('-dclick edits-', False), k='-DCLICK EDITS-'), sg.R('Nothing', 2, sg.user_settings_get_entry('-dclick none-', False), k='-DCLICK NONE-')],
[sg.CB('Use Advanced Interface', default=advanced_mode() ,k='-ADVANCED MODE-')],
[sg.B('Ok', bind_return_key=True), sg.B('Cancel')],
]
@ -436,7 +436,7 @@ def make_window():
left_col = sg.Column([
[sg.Listbox(values=get_file_list(), select_mode=sg.SELECT_MODE_EXTENDED, size=(50,20), bind_return_key=True, key='-DEMO LIST-')],
[sg.Text('Filter (F1):', tooltip=filter_tooltip), sg.Input(size=(25, 1), enable_events=True, key='-FILTER-', tooltip=filter_tooltip),
[sg.Text('Filter (F1):', tooltip=filter_tooltip), sg.Input(size=(25, 1), focus=True, enable_events=True, key='-FILTER-', tooltip=filter_tooltip),
sg.T(size=(15,1), k='-FILTER NUMBER-')],
[sg.Button('Run'), sg.B('Edit'), sg.B('Clear'), sg.B('Open Folder')],
[sg.Text('Find (F2):', tooltip=find_tooltip), sg.Input(size=(25, 1), enable_events=True, key='-FIND-', tooltip=find_tooltip),
@ -447,10 +447,11 @@ def make_window():
[sg.Text('Find (F3):', tooltip=find_re_tooltip), sg.Input(size=(25, 1),key='-FIND RE-', tooltip=find_re_tooltip),sg.B('Find RE')]], k='-RE COL-'))
right_col = [
[sg.Multiline(size=(70, 21), write_only=True, key=ML_KEY, reroute_stdout=True, echo_stdout_stderr=True)],
[sg.Multiline(size=(70, 21), write_only=True, key=ML_KEY, reroute_stdout=True, echo_stdout_stderr=True, reroute_cprint=True)],
[sg.Button('Edit Me (this program)'), sg.B('Settings'), sg.Button('Exit')],
[sg.T('PySimpleGUI ver ' + sg.version.split(' ')[0] + ' tkinter ver ' + sg.tclversion_detailed, font='Default 8', pad=(0,0))],
[sg.T('Python ver ' + sys.version, font='Default 8', pad=(0,0))],
[sg.T('Interpreter ' + execute_py_get_interpreter(), font='Default 8', pad=(0,0))],
]
options_at_bottom = sg.pin(sg.Column([[sg.CB('Verbose', enable_events=True, k='-VERBOSE-'),
@ -466,13 +467,17 @@ def make_window():
layout = [[sg.Text('PySimpleGUI Demo Program & Project Browser', font='Any 20')],
[choose_folder_at_top],
[sg.Column([[left_col],[ lef_col_find_re]], element_justification='l', expand_x=True, expand_y=True), sg.Column(right_col, element_justification='c', expand_x=True, expand_y=True) ],
# [sg.Column([[left_col],[ lef_col_find_re]], element_justification='l', expand_x=True, expand_y=True), sg.Column(right_col, element_justification='c', expand_x=True, expand_y=True)],
[sg.Pane([sg.Column([[left_col],[ lef_col_find_re]], element_justification='l', expand_x=True, expand_y=True), sg.Column(right_col, element_justification='c', expand_x=True, expand_y=True) ], orientation='h', relief=sg.RELIEF_SUNKEN, k='-PANE-')],
[options_at_bottom]]
# --------------------------------- Create Window ---------------------------------
window = sg.Window('PSG Demo & Project Browser', layout, finalize=True, icon=icon, resizable=True)
window = sg.Window('PSG Demo & Project Browser', layout, finalize=True, icon=icon, resizable=True, use_default_focus=False)
window.set_min_size(window.size)
window['-DEMO LIST-'].expand(True, True, True)
window[ML_KEY].expand(True, True, True)
window['-PANE-'].expand(True, True, True)
window.bind('<F1>', '-FOCUS FILTER-')
window.bind('<F2>', '-FOCUS FIND-')
@ -482,7 +487,7 @@ def make_window():
window['-RE COL-'].update(visible=False)
window['-OPTIONS BOTTOM-'].update(visible=False)
sg.cprint_set_output_destination(window, ML_KEY)
# sg.cprint_set_output_destination(window, ML_KEY)
return window
@ -502,6 +507,7 @@ def main():
file_list = get_file_list()
window = make_window()
window['-FILTER NUMBER-'].update(f'{len(file_list)} files')
counter = 0
while True:
event, values = window.read()
@ -522,7 +528,7 @@ def main():
else:
full_filename, line = get_file_list_dict()[file], 1
if line is not None:
sg.cprint(f'Editing using {editor_program}', text_color='white', background_color='red', end='')
sg.cprint(f'Editing using {editor_program}', c='white on red', end='')
sg.cprint('')
sg.cprint(f'{full_filename}', c='white on purple')
# if line != 1:
@ -790,12 +796,31 @@ def execute_command_subprocess_with_pipe_output(command, *args, wait=False, cwd=
return sp
def execute_py_get_interpreter():
"""
Returns the command that was specified in the global options that will be used to execute Python files
when the execute_py_file function is called.
:return: Full path to python interpreter or '' if nothing entered
:rtype: (str)
"""
return sg.pysimplegui_user_settings.get('-python command-', '')
# Normally you want to use the PySimpleGUI version of these functions
try:
execute_py_file = sg.execute_py_file
except:
execute_py_file = execute_py_file_with_pipe_output
try:
execute_py_get_interpreter = sg.execute_py_get_interpreter
except:
execute_py_get_interpreter = execute_py_get_interpreter
try:
execute_command_subprocess = sg.execute_command_subprocess
except: