gui-diz-editor/diz-editor.py

99 lines
3.5 KiB
Python
Raw Normal View History

import tkinter as tk
from tkinter import filedialog, messagebox
import os
class DIZEditorApp:
def __init__(self, root):
self.root = root
self.root.title("DIZ Editor")
self.root.geometry("600x400")
self.filepath = None
# Fuente monoespaciada
self.monospace_font = ("Courier", 10)
# Text editing frame
self.text_frame = tk.Frame(self.root)
self.text_frame.pack(fill=tk.BOTH, expand=True)
self.text_vars = []
self.text_entries = []
self.char_counts = []
for i in range(10):
frame = tk.Frame(self.text_frame)
frame.pack(fill=tk.X)
text_var = tk.StringVar()
text_entry = tk.Entry(frame, textvariable=text_var, width=45, font=self.monospace_font)
text_entry.pack(side=tk.LEFT, fill=tk.X, expand=True)
char_count = tk.Label(frame, text="0/45")
char_count.pack(side=tk.RIGHT)
text_var.trace_add('write', self.update_char_count(text_var, char_count))
self.text_vars.append(text_var)
self.text_entries.append(text_entry)
self.char_counts.append(char_count)
# File explorer frame
self.file_frame = tk.Frame(self.root)
self.file_frame.pack(fill=tk.X)
self.file_label = tk.Label(self.file_frame, text="No file selected")
self.file_label.pack(side=tk.LEFT)
self.open_button = tk.Button(self.file_frame, text="Open", command=self.open_file)
self.open_button.pack(side=tk.LEFT)
self.save_button = tk.Button(self.file_frame, text="Save", command=self.save_file)
self.save_button.pack(side=tk.LEFT)
self.save_as_button = tk.Button(self.file_frame, text="Save As", command=self.save_as_file)
self.save_as_button.pack(side=tk.LEFT)
self.exit_button = tk.Button(self.file_frame, text="Exit", command=self.exit_app)
self.exit_button.pack(side=tk.RIGHT)
def update_char_count(self, text_var, char_count):
def callback(*args):
text = text_var.get()
if len(text) > 45:
text_var.set(text[:45])
char_count.config(text=f"{len(text)}/45")
return callback
def open_file(self):
filepath = filedialog.askopenfilename(filetypes=[("DIZ files", "*.diz")])
if filepath:
with open(filepath, 'r') as file:
lines = file.readlines()
for i in range(min(10, len(lines))):
self.text_vars[i].set(lines[i].strip())
for i in range(len(lines), 10):
self.text_vars[i].set('')
self.filepath = filepath
self.file_label.config(text=os.path.basename(filepath))
def save_file(self):
if self.filepath:
self.write_to_file(self.filepath)
else:
self.save_as_file()
def save_as_file(self):
filepath = filedialog.asksaveasfilename(defaultextension=".diz", filetypes=[("DIZ files", "*.diz")])
if filepath:
self.write_to_file(filepath)
self.filepath = filepath
self.file_label.config(text=os.path.basename(filepath))
def write_to_file(self, filepath):
with open(filepath, 'w') as file:
for text_var in self.text_vars:
file.write(text_var.get() + '\n')
def exit_app(self):
self.root.quit()
if __name__ == "__main__":
root = tk.Tk()
app = DIZEditorApp(root)
root.mainloop()