Skip to content

Commit e934de0

Browse files
Pywebview HTML Editor
1 parent fd3cc4e commit e934de0

File tree

1 file changed

+48
-0
lines changed

1 file changed

+48
-0
lines changed

KeiEditor.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,49 @@
1+
import os, webview
12

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

Comments
 (0)