|
| 1 | +import os, webview |
1 | 2 |
|
| 3 | +class KeiEditor(): |
| 4 | + window = None |
| 5 | + file_name = None |
| 6 | + |
| 7 | + def on_closing(self): |
| 8 | + self.window.destroy() |
| 9 | + |
| 10 | + def open_file_dialog(self): |
| 11 | + file_types = ('HTML Files (*.html;*.htm)', 'All files (*.*)') |
| 12 | + file_name = self.window.create_file_dialog(webview.OPEN_DIALOG, allow_multiple=False, file_types=file_types)[0] |
| 13 | + if file_name != None: |
| 14 | + file = open(file_name, "r") |
| 15 | + self.window.evaluate_js('document.getElementById("keieditable").outerHTML = (String.raw`' + |
| 16 | + file.read().replace('`', '`') + '`);') |
| 17 | + |
| 18 | + def save_file(self): |
| 19 | + keieditable = self.window.dom.get_elements('#keieditable') |
| 20 | + file = open(self.file_name, "w") |
| 21 | + file.write(keieditable[0].node['outerHTML']) |
| 22 | + |
| 23 | + def save_as_file_dialog(self): |
| 24 | + file_types = ('HTML Files (*.html;*.htm)', 'All files (*.*)') |
| 25 | + self.file_name = self.window.create_file_dialog(webview.SAVE_DIALOG, allow_multiple=False, |
| 26 | + save_filename='', file_types=file_types)[0] |
| 27 | + if self.file_name != None: |
| 28 | + if os.path.isfile(self.file_name): |
| 29 | + result = self.window.create_confirmation_dialog('Question', 'Overwrite Existing File?') |
| 30 | + if not result: |
| 31 | + self.file_name = None; |
| 32 | + return |
| 33 | + self.save_file() |
| 34 | + |
| 35 | + def save_file_dialog(self): |
| 36 | + if self.file_name != None: |
| 37 | + self.save_file() |
| 38 | + else: |
| 39 | + self.save_as_file_dialog() |
| 40 | + |
| 41 | + def __init__(self): |
| 42 | + self.window = webview.create_window('Kei HTML Editor', url='./index.html', confirm_close=True) |
| 43 | + self.window.expose(self.on_closing) |
| 44 | + self.window.expose(self.open_file_dialog) |
| 45 | + self.window.expose(self.save_file_dialog) |
| 46 | + self.window.expose(self.save_as_file_dialog) |
| 47 | + webview.start() |
| 48 | + |
| 49 | +keiEditor = KeiEditor() |
0 commit comments