mirror of
https://github.com/Faraphel/Atlas-Install.git
synced 2025-07-05 12:18:21 +02:00
added a scrollbar and made the text widget resizable
This commit is contained in:
parent
1c64f5288d
commit
51a6e46930
1 changed files with 17 additions and 10 deletions
|
@ -10,26 +10,33 @@ ModConfig: any
|
|||
class Window(tkinter.Toplevel):
|
||||
def __init__(self, mod_config: "ModConfig"):
|
||||
super().__init__()
|
||||
self.grid_rowconfigure(2, weight=1)
|
||||
self.grid_columnconfigure(1, weight=1)
|
||||
|
||||
self.mod_config = mod_config
|
||||
|
||||
self.entry_format_input = ttk.Entry(self, width=100)
|
||||
self.entry_format_input.grid(row=1, column=1, sticky="NEWS")
|
||||
self.entry_format_input.grid(row=1, column=1, columnspan=2, sticky="NEWS")
|
||||
self.entry_format_input.bind("<Return>", self.preview)
|
||||
|
||||
self.track_preview = tkinter.Text(self, background="black", foreground=MKWColor("off").color_code)
|
||||
self.track_preview.grid(row=2, column=1, sticky="NEWS")
|
||||
self.text_track_preview = tkinter.Text(self, background="black", foreground=MKWColor("off").color_code)
|
||||
self.text_track_preview.grid(row=2, column=1, sticky="NEWS")
|
||||
|
||||
self.scrollbar_track_preview = ttk.Scrollbar(self, command=self.text_track_preview.yview)
|
||||
self.scrollbar_track_preview.grid(row=2, column=2, sticky="NEWS")
|
||||
|
||||
self.text_track_preview.configure(yscrollcommand=self.scrollbar_track_preview.set)
|
||||
|
||||
for color in MKWColor.get_all_colors():
|
||||
self.track_preview.tag_configure(color.bmg, foreground=color.color_code)
|
||||
self.track_preview.tag_configure("error", background="red", foreground="white")
|
||||
self.text_track_preview.tag_configure(color.bmg, foreground=color.color_code)
|
||||
self.text_track_preview.tag_configure("error", background="red", foreground="white")
|
||||
|
||||
def preview(self, event: tkinter.Event = None):
|
||||
"""
|
||||
Preview all the tracks name with the track format
|
||||
:return:
|
||||
"""
|
||||
self.track_preview.delete(1.0, tkinter.END)
|
||||
self.text_track_preview.delete(1.0, tkinter.END)
|
||||
|
||||
# insert all the tracks representation
|
||||
for track in self.mod_config.get_tracks():
|
||||
|
@ -53,14 +60,14 @@ class Window(tkinter.Toplevel):
|
|||
return "" # remove the tag
|
||||
|
||||
# insert into the text the track_repr without the tags
|
||||
self.track_preview.insert(
|
||||
self.text_track_preview.insert(
|
||||
tkinter.END,
|
||||
re.sub(r"\\c{(?P<color_name>.*?)}", tag_format, track_repr) + "\n"
|
||||
)
|
||||
|
||||
# color every part of the track_repr with the position and color got in the re.sub
|
||||
for (pos_start, tag_start), (pos_end, tag_end) in zip(tags, tags[1:] + [(None, None)]):
|
||||
self.track_preview.tag_add(
|
||||
self.text_track_preview.tag_add(
|
||||
tag_start,
|
||||
f"end-1c-1l+{pos_start}c",
|
||||
"end-1c" + (f"-1l+{pos_end}c" if pos_end is not None else "")
|
||||
|
@ -68,5 +75,5 @@ class Window(tkinter.Toplevel):
|
|||
|
||||
except Exception as exc:
|
||||
formatted_exc = str(exc).replace('\n', ' ')
|
||||
self.track_preview.insert(tkinter.END, f"< Error: {formatted_exc} >\n")
|
||||
self.track_preview.tag_add("error", "end-1c-1l", "end-1c")
|
||||
self.text_track_preview.insert(tkinter.END, f"< Error: {formatted_exc} >\n")
|
||||
self.text_track_preview.tag_add("error", "end-1c-1l", "end-1c")
|
||||
|
|
Loading…
Reference in a new issue