1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156 | import tkinter as tk
from idlelib.tooltip import Hovertip
from tkmacosx import Button
class TextyWindow(tk.Toplevel):
def __init__(self, parent):
super().__init__(parent)
self.parent = parent
self.tabs = []
geometry = self.parent.get_window_geometry()
self.geometry(geometry)
self.protocol("WM_DELETE_WINDOW", self.on_close)
self.option_add("*tearOff", False)
self.parent.log("Tearoff disabled")
# Bind Resize, Move, and Close
self.bind("<Configure>", self.parent.save_prefs)
self.bind("<Destroy>", self.parent.save_prefs)
self.parent.log("Resize, Move, and Close bindings set to save preferences.")
self.config(menu=self.parent.get_menubar())
self.draw_layout()
def on_close(self):
self.parent.destroy_window(self)
def draw_layout(self):
self.parent.log("Drawing layout")
self.set_toolbar()
self.parent.log("Drawing Text Editor")
self.text = tk.Text(
self,
undo=True,
autoseparators=True,
maxundo=-1,
wrap=tk.WORD,
font=("Menlo", 12),
borderwidth=0,
highlightthickness=0,
)
self.text.pack(side=tk.TOP, fill=tk.BOTH, expand=True)
self.text.focus_set()
def set_toolbar(self):
self.parent.log("Drawing Toolbar")
background_color = "#303030" if self.parent.theme == "dark" else "#f0f0f0"
foreground_color = "#f0f0f0" if self.parent.theme == "dark" else "#303030"
toolbar = tk.Frame(self, bd=1, relief=tk.RAISED, bg=background_color)
toolbar.pack(side=tk.TOP, fill=tk.X)
self.parent.log("Drawing Action Buttons")
self.draw_action_buttons(toolbar, background_color, foreground_color)
def draw_action_buttons(self, toolbar, background_color, foreground_color):
self.parent.log("Drawing New File Button")
new_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/new.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # New File
new_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(new_btn, "New File")
self.parent.log("Drawing Open File Button")
save_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/save.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # Save File
save_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(save_btn, "Save File")
self.parent.log("Drawing Spacer")
spacer = tk.Frame(toolbar, width=30, height=30, bg=background_color)
spacer.pack(side=tk.LEFT, padx=2, pady=2)
self.parent.log("Drawing Cut Button")
cut_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/cut.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # Cut
cut_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(cut_btn, "Cut")
self.parent.log("Drawing Copy Button")
copy_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/copy.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # Copy
copy_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(copy_btn, "Copy")
self.parent.log("Drawing Paste Button")
paste_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/paste.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # Paste
paste_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(paste_btn, "Paste")
self.parent.log("Drawing Spacer")
spacer = tk.Frame(toolbar, width=30, height=30, bg=background_color)
spacer.pack(side=tk.LEFT, padx=2, pady=2)
self.parent.log("Drawing Print Button")
print_btn = Button(
toolbar,
image=tk.PhotoImage(file="icons/print.png").subsample(24, 24),
bg=background_color,
bd=0,
borderless=True,
relief="flat",
overrelief="flat",
focusthickness=0,
bordercolor=background_color,
) # Print
print_btn.pack(side=tk.LEFT, padx=2, pady=2)
Hovertip(print_btn, "Print")
|