Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #~~~~imports~~~~
- import PySimpleGUI as sg
- import pathlib
- WIN_W = 90
- WIN_H = 25
- #~~~~layout~~~~
- # settings
- menu_def = [['File', ['New Ctrl+N', 'Open... Ctrl+O', 'Save Ctrl+S','Save As...', '---', 'Exit' ]],
- ['Edit', ['Undo Ctrl+Z', 'Paste Ctrl+V'], ],
- ['Help', ' About memopad '], ]
- # the layout its self
- layout = [[sg.Menu(menu_def)],
- [sg.Multiline(font=('Consolas', 12), size=(WIN_W, WIN_H), key='_BODY_')]]
- # reading the window
- window = sg.Window('untitled - memopad', layout=layout, element_padding=(0, 0), margins=(0, 0), resizable=True, return_keyboard_events=True, finalize=True)
- window['_BODY_'].expand(expand_x=True, expand_y=True)
- #~~~~defs~~~~
- def new_file():
- '''Reset body and info bar, and clear filename variable'''
- window['_BODY_'].update(value='')
- window.TKroot.title('untitled - memopad')
- file = None
- return file
- def open_file():
- '''Open file and update the infobar'''
- filepath = sg.popup_get_file('Open', no_window=True)
- filename = filepath.split('/')
- if filename:
- try:
- file = pathlib.Path(filepath)
- window['_BODY_'].update(value=file.read_text())
- window.TKroot.title(filename[-1] + '- memopad')
- return file
- except:
- pass
- def save_file(file):
- '''Save file instantly if already open; otherwise use `save-as` popup'''
- try:
- if file:
- file.write_text(values.get('_BODY_'))
- else:
- save_file_as()
- def save_file_as():
- '''Save new file or save existing file with another name'''
- filename = sg.popup_get_file('Save As', save_as=True, no_window=True)
- try:
- if filename:
- file = pathlib.Path(filepath)
- file.write_text(values.get('_BODY_'))
- filename = filepath.split('/')
- window.TKroot.title(filename[-1] + '- memopad')
- return file
- except:
- pass
- def about_me():
- '''A short, pithy quote'''
- sg.popup_no_wait('"All great things have small beginnings" - Peter Senge')
- #~~~event loop~~~~
- while True:
- event, values = window.read()
- if event in (None, 'Exit'):
- break
- if event in ('New Ctrl+N', 'n:78'):
- file = new_file()
- if event in ('Open... Ctrl+O', 'o:79'):
- file = open_file()
- if event in ('Save Ctrl+S', 's:83'):
- save_file(file)
- if event in ('Save As...',):
- file = save_file_as()
- if event in (' About memopad ',):
- about_me()
Add Comment
Please, Sign In to add comment