From 2aa564111b551f4201fae3c79158d0d2324fb9cb Mon Sep 17 00:00:00 2001 From: Szymdows Date: Sat, 7 Mar 2026 20:58:03 +0000 Subject: [PATCH 1/2] feat: overhaul GUI, add export options, and fix text formatting --- README.md | 5 +- contributors.md | 1 + dpad.py | 1916 +++++++++++++++++++++++++++++++++------------- requirements.txt | 1 + screenshot.png | Bin 40526 -> 65252 bytes 5 files changed, 1385 insertions(+), 538 deletions(-) diff --git a/README.md b/README.md index b400659..d78563e 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,6 @@ Author: Devansh Tayal Github: https://github.com/Devansh2005 - ========================================================================= # DESCRIPTION @@ -24,6 +23,7 @@ gtts ==2.2.1 pyttsx3==2.90 SpeechRecognition==3.8.1 PyAudio==0.2.11 +reportlab==4.4.10 ``` Then run it by double clicking on `dpad.py`! @@ -35,9 +35,8 @@ Then run it by double clicking on `dpad.py`! - Various themes are available. - All required font styles and colours. -- Text to speech - Text to speech (Beta). -- Speech to Text +- Speech to Text (Beta). # Editor's Interface Screenshot diff --git a/contributors.md b/contributors.md index 9f7fbfa..1e01c40 100644 --- a/contributors.md +++ b/contributors.md @@ -4,3 +4,4 @@ - [**Name:** Abdul Adhil PK, **email:** 1abduladhilpkpe3@gmail.com] (https://www.github.com/adhilcodes) - [**Name:** Pranjal Srivastava, **email:** pranjalsr.biz@gmail.com] (https://github.com/Dernyt-TPE) - [**Name:** Kishan Mehta, **email:** kishanmehta3@gmail.com] (https://github.com/kishan3) +- [**Name:** Szymdows, **email:** szymdows-programming@outlook.com] (https://github.com/Szymdows) \ No newline at end of file diff --git a/dpad.py b/dpad.py index c27d4ba..64a9490 100644 --- a/dpad.py +++ b/dpad.py @@ -1,544 +1,1390 @@ -#Import modules +""" +╔══════════════════════════════════════════════════════════════════╗ +║ ULTIMATE TEXT EDITOR v2.0 ║ +║ Light-default • Tag-based rich formatting • No icon deps ║ +╚══════════════════════════════════════════════════════════════════╝ +""" + import tkinter as tk -from tkinter import ttk -from tkinter import font, colorchooser, filedialog, messagebox -import os -import pyttsx3 -import speech_recognition as sr -import random - -main_application=tk.Tk() -main_application.geometry('1200x800') -main_application.title("Devansh's Text Editor") - - -###################### main menu ############### ############################ -# ---------&&&&&&&&&&& End main menu ----------------------------------------------- -main_menu= tk.Menu() -#file icons -new_icon= tk.PhotoImage(file="icons2/new.png") -open_icon= tk.PhotoImage(file="icons2/open.png") -save_icon= tk.PhotoImage(file="icons2/save.png") -save_as_icon= tk.PhotoImage(file="icons2/save_as.png") -exit_icon= tk.PhotoImage(file="icons2/exit.png") - -file=tk.Menu(main_menu, tearoff=False) - -## EDIT -#edit Icons -copy_icon=tk.PhotoImage(file="icons2/copy.png") -paste_icon=tk.PhotoImage(file="icons2/paste.png") -cut_icon=tk.PhotoImage(file="icons2/cut.png") -clear_all_icon=tk.PhotoImage(file="icons2/clear_all.png") -find_icon=tk.PhotoImage(file="icons2/find.png") - -edit=tk.Menu(main_menu, tearoff=False) - -### view icon -tool_bar_icon = tk.PhotoImage(file="icons2/tool_bar.png") -status_bar_icon= tk.PhotoImage(file="icons2/status_bar.png") - - -view=tk.Menu(main_menu, tearoff=False) - -###### Color Theme #### -light_default_icon=tk.PhotoImage(file="icons2/light_default.png") -light_plus_icon=tk.PhotoImage(file="icons2/light_plus.png") -dark_icon=tk.PhotoImage(file="icons2/dark.png") -red_icon=tk.PhotoImage(file="icons2/red.png") -monokai_icon=tk.PhotoImage(file="icons2/monokai.png") -night_blue_icon=tk.PhotoImage(file="icons2/night_blue.png") - -color_theme=tk.Menu(main_menu, tearoff=False) - -theme_choice= tk.StringVar() -color_icons = (light_default_icon,light_plus_icon, dark_icon, red_icon, monokai_icon, night_blue_icon) - -color_dict={ - "Light Default": ("#000000", "#ffffff"), - "Light Plus": ("#474747", "#e0e0e0"), - "Dark": ("#c4c4c4", "#2d2d2d"), - "Red": ("#2d2d2d", "#ffe8e8"), - "Monokai": ("#d3b774", "#474747"), - "Night Blue": ("#ededed", "#6b9dc2") +from tkinter import ttk, font as tkfont, colorchooser, filedialog, messagebox, simpledialog +import os, sys, json, re, datetime, threading, random, tempfile + +# ── optional deps ───────────────────────────────────────────────────────────── +try: + import pyttsx3; HAS_TTS = True +except ImportError: HAS_TTS = False +try: + import speech_recognition as sr; HAS_SR = True +except ImportError: HAS_SR = False +try: + from spellchecker import SpellChecker; HAS_SPELL = True +except ImportError: HAS_SPELL = False +try: + import markdown as md_lib; HAS_MD = True +except ImportError: HAS_MD = False +try: + from reportlab.pdfgen import canvas as rl_canvas + from reportlab.lib.pagesizes import A4; HAS_PDF = True +except ImportError: HAS_PDF = False + +# ── constants ───────────────────────────────────────────────────────────────── +APP_TITLE = "Ultimate Text Editor" +CONFIG_FILE = os.path.join(os.path.expanduser("~"), ".ute_config.json") +SESSION_FILE = os.path.join(os.path.expanduser("~"), ".ute_session.json") +MAX_RECENT = 12 +AUTOSAVE_MS = 60_000 +FONT_SIZES = [6,8,9,10,11,12,13,14,16,18,20,22,24,28,32,36,40,48,56,64,72] + +# ── 10 colour themes ────────────────────────────────────────────────────────── +THEMES = { + "Light Default": dict(bg="#ffffff", fg="#1a1a1a", sel_bg="#4a90d9", sel_fg="#ffffff", + ln_bg="#f5f5f5", ln_fg="#aaaaaa", ruler_bg="#ebebeb", + cursor="#1a1a1a", toolbar_bg="#f0f0f0", border="#d0d0d0", + status_bg="#e8e8e8", tag_bg="#fff3b0"), + "Light Warm": dict(bg="#fdf8f0", fg="#2c2416", sel_bg="#c8954a", sel_fg="#ffffff", + ln_bg="#f5ede0", ln_fg="#b89070", ruler_bg="#ede0cc", + cursor="#2c2416", toolbar_bg="#ede0cc", border="#d4b896", + status_bg="#e6d5be", tag_bg="#ffe4b5"), + "Solarized": dict(bg="#fdf6e3", fg="#657b83", sel_bg="#268bd2", sel_fg="#fdf6e3", + ln_bg="#eee8d5", ln_fg="#93a1a1", ruler_bg="#e8e2cf", + cursor="#657b83", toolbar_bg="#eee8d5", border="#ccc4b0", + status_bg="#e8e2cf", tag_bg="#b5e8b5"), + "Dark": dict(bg="#1e1e1e", fg="#d4d4d4", sel_bg="#264f78", sel_fg="#ffffff", + ln_bg="#252526", ln_fg="#5a5a5a", ruler_bg="#1a1a1a", + cursor="#aeafad", toolbar_bg="#2d2d30", border="#3f3f46", + status_bg="#007acc", tag_bg="#3a3a00"), + "Monokai": dict(bg="#272822", fg="#f8f8f2", sel_bg="#49483e", sel_fg="#f8f8f2", + ln_bg="#1e1f1c", ln_fg="#75715e", ruler_bg="#1a1b18", + cursor="#f8f8f0", toolbar_bg="#3e3d32", border="#555544", + status_bg="#75715e", tag_bg="#3d3b00"), + "Night Blue": dict(bg="#1b2333", fg="#cdd6f4", sel_bg="#45475a", sel_fg="#cdd6f4", + ln_bg="#161d2e", ln_fg="#6272a4", ruler_bg="#131929", + cursor="#f5e0dc", toolbar_bg="#1e2640", border="#313244", + status_bg="#313244", tag_bg="#1e3a1e"), + "Nord": dict(bg="#2e3440", fg="#d8dee9", sel_bg="#4c566a", sel_fg="#eceff4", + ln_bg="#272c36", ln_fg="#616e88", ruler_bg="#242933", + cursor="#88c0d0", toolbar_bg="#3b4252", border="#434c5e", + status_bg="#434c5e", tag_bg="#2d4a2d"), + "Dracula": dict(bg="#282a36", fg="#f8f8f2", sel_bg="#44475a", sel_fg="#f8f8f2", + ln_bg="#21222c", ln_fg="#6272a4", ruler_bg="#1e1f29", + cursor="#ff79c6", toolbar_bg="#343746", border="#44475a", + status_bg="#44475a", tag_bg="#3d2020"), + "Forest": dict(bg="#1a2318", fg="#b8d4b0", sel_bg="#3a6b35", sel_fg="#e8f5e8", + ln_bg="#141c13", ln_fg="#4a7a44", ruler_bg="#111910", + cursor="#a8e6a0", toolbar_bg="#223020", border="#2d4a2d", + status_bg="#2d4a2d", tag_bg="#3a1a00"), + "Crimson": dict(bg="#1a0a0a", fg="#f0c8c8", sel_bg="#8b1a1a", sel_fg="#ffffff", + ln_bg="#140606", ln_fg="#8b4444", ruler_bg="#100404", + cursor="#ff8080", toolbar_bg="#200c0c", border="#5a2020", + status_bg="#3a1010", tag_bg="#003a1a"), } - - -#Cascade -main_menu.add_cascade(label="File", menu=file) -main_menu.add_cascade(label="Edit", menu=edit) -main_menu.add_cascade(label="View", menu=view) -main_menu.add_cascade(label="Color Theme", menu=color_theme) - - - -###################### toolbar ############### ############################. - -tool_bar= ttk.Label(main_application) -tool_bar.pack(side=tk.TOP, fill=tk.X) - -# Font Box -font_tuple= tk.font.families() -font_family= tk.StringVar() -font_box= ttk.Combobox(tool_bar, width=30, textvariable=font_family, state="readonly") -font_box["values"]= font_tuple -font_box.current(font_tuple.index("Arial")) -font_box.grid(row=0,column=0,padx=5) - - -# Size Box -size_var=tk.IntVar() -font_size= ttk.Combobox(tool_bar, width=14, textvariable=size_var, state="readonly") -font_size["values"]= tuple(range(8,80,2)) -font_size.current(3) #12 is at index 4 -font_size.grid(row=0, column=1, padx=5) - -# Bold Button.. -bold_icon= tk.PhotoImage(file="icons2/bold.png") -bold_btn= ttk.Button(tool_bar, image=bold_icon) -bold_btn.grid(row=0, column=2, padx=5) - -# Italic Button -italic_icon= tk.PhotoImage(file="icons2/italic.png") -italic_btn = ttk.Button(tool_bar, image=italic_icon) -italic_btn.grid(row=0, column=3, padx=5) - -#underline button -underline_icon= tk.PhotoImage(file="icons2/underline.png") -underline_btn= ttk.Button(tool_bar, image=underline_icon) -underline_btn.grid(row=0, column=4, padx=5) - -# Font color button -font_color_icon= tk.PhotoImage(file="icons2/font_color.png") -font_color_btn= ttk.Button(tool_bar, image=font_color_icon) -font_color_btn.grid(row=0, column=5, padx=5) - -# align left button - -align_left_icon= tk.PhotoImage(file="icons2/align_left.png") -align_left_btn= ttk.Button(tool_bar, image=align_left_icon) -align_left_btn.grid(row=0, column=6, padx=5) - -# align center button -align_center_icon= tk.PhotoImage(file="icons2/align_center.png") -align_center_btn= ttk.Button(tool_bar, image=align_center_icon) -align_center_btn.grid(row=0, column=7, padx=5) - -#align right button -align_right_icon= tk.PhotoImage(file="icons2/align_right.png") -align_right_btn= ttk.Button(tool_bar, image=align_right_icon) -align_right_btn.grid(row=0, column=8, padx=5) - -#read text button -speak_icon = tk.PhotoImage(file="icons2/read.png") -speak_btn = ttk.Button(tool_bar, image=speak_icon, text="Read Text", compound="left") -speak_btn.grid(row=0, column=9, padx=5) - -#talk text button -talk_icon = tk.PhotoImage(file="icons2/speech.png") -talk_btn = ttk.Button(tool_bar, image=talk_icon, text="Speech to Text", compound="left") -talk_btn.grid(row=0, column=10, padx=5) - -# ----------&&&&&&&&&&& End main menu --------------------------------------------- - -###################### text editor ############### ############################ -text_editor=tk.Text(main_application) -text_editor.config(wrap="word", relief=tk.FLAT) - -scroll_bar= tk.Scrollbar(main_application) # to add scroll bar -text_editor.focus_set() # cursor position -scroll_bar.pack(side=tk.RIGHT, fill=tk.Y) #gridding scrollbar -text_editor.pack(fill= tk.BOTH, expand=True) -scroll_bar.config(command=text_editor.yview) -text_editor.config(yscrollcommand=scroll_bar.set) - -#font family and font size functionality -current_font_family= "Arial" -current_font_size = 12 - -def change_font(event=None): - global current_font_family - current_font_family= font_family.get() - text_editor.configure(font=(current_font_family, current_font_size)) - - -def change_font_size(event=None): - global current_font_size - current_font_size= size_var.get() - text_editor.configure(font=(current_font_family, current_font_size)) -font_box.bind("<>", change_font) - -font_size.bind("<>", change_font_size) - -### Buttons functionality - # bold button functionality - -def change_bold(): - text_property=tk.font.Font(font=text_editor["font"]) #dictionary - if text_property.actual()["weight"] == "normal": - text_editor.config(font=(current_font_family, current_font_size, "bold")) - if text_property.actual()["weight"] == "bold": - text_editor.config(font=(current_font_family, current_font_size, "normal")) - -bold_btn.configure(command= change_bold) - -# Italic Button Functionality -def change_italic(): - text_property=tk.font.Font(font=text_editor["font"]) #dictionary - if text_property.actual()["slant"] == "roman": - text_editor.config(font=(current_font_family, current_font_size, "italic")) - if text_property.actual()["slant"] == "italic": - text_editor.config(font=(current_font_family, current_font_size, "normal")) - -italic_btn.configure(command= change_italic) - -# Underline button Functionality -def change_underline(): - text_property=tk.font.Font(font=text_editor["font"]) #dictionary - if text_property.actual()["underline"] == 0: - text_editor.config(font=(current_font_family, current_font_size, "underline")) - if text_property.actual()["underline"] == 1: - text_editor.config(font=(current_font_family, current_font_size, "normal")) - -underline_btn.configure(command= change_underline) - -# Font color Button Functionality - -def change_font_color(): - color_var=tk.colorchooser.askcolor() - text_editor.configure(fg=color_var[1]) - -font_color_btn.configure(command=change_font_color) -### Align Functionality - -### Align Left -def align_left(): - text_content= text_editor.get(1.0, "end") - text_editor.tag_config("left", justify=tk.LEFT) - text_editor.delete(1.0, tk.END) - text_editor.insert(tk.INSERT, text_content, "left") - -align_left_btn.configure(command=align_left) - -### Align Center -def align_center(): - text_content= text_editor.get(1.0, "end") - text_editor.tag_config("center", justify=tk.CENTER) - text_editor.delete(1.0, tk.END) - text_editor.insert(tk.INSERT, text_content, "center") -align_center_btn.configure(command=align_center) - -### Align Right -def align_right(): - text_content= text_editor.get(1.0, "end") - text_editor.tag_config("right", justify=tk.RIGHT) - text_editor.delete(1.0, tk.END) - text_editor.insert(tk.INSERT, text_content, "right") -align_right_btn.configure(command=align_right) - -### Read Text -def read_text(**kwargs): - if 'text' in kwargs: - text = kwargs['text'] - else: - text = text_editor.get(1.0, 'end') # get text content - engine = pyttsx3.init() - engine.say(text) - engine.runAndWait() - engine.stop() -speak_btn.configure(command=read_text) - -### text formatter -def text_formatter(phrase): - interrogatives = ('how', 'why', 'what', 'when', 'who', 'where', 'is', 'do you', "whom", "whose") - capitalized = phrase.capitalize() - if phrase.startswith(interrogatives): - return (f'{capitalized}?') - else: - return (f'{capitalized}.') - -### Speech to text -def take_speech(): - errors=[ - "I don't know what you mean!", - "Excuse me?", - "Can you repeat it please?", - "Say that again please!", - "Sorry I didn't get that" - ] - r = sr.Recognizer() # initialize the listener - m = sr.Microphone() - with m as source: # set listening device to microphone - read_text(text = 'Please say the message you would like to the editor!') - r.pause_threshold = 2 # delay two second from program start before listening - audio= r.listen(source) +DEFAULT_CFG = dict(theme="Light Default", font_family="Georgia", font_size=13, + recent_files=[], autosave=True, wrap=True, + show_linenos=True, show_ruler=True, zoom=0) + +# ── tag names for inline formatting ────────────────────────────────────────── +FMT_BOLD = "fmt_bold" +FMT_ITALIC = "fmt_italic" +FMT_UNDER = "fmt_underline" +FMT_STRIKE = "fmt_strike" + +# ── config helpers ──────────────────────────────────────────────────────────── +def load_cfg(): + if os.path.exists(CONFIG_FILE): + try: + with open(CONFIG_FILE, "r", encoding="utf-8") as f: + d = json.load(f) + return {**DEFAULT_CFG, **d} + except Exception: + pass + return dict(DEFAULT_CFG) + +def save_cfg(cfg): try: - query = r.recognize_google(audio, language='en-UK') #listen to audio - query = text_formatter(query) + with open(CONFIG_FILE, "w", encoding="utf-8") as f: + json.dump(cfg, f, indent=2) except Exception: - error = random.choice(errors) - read_text(text = error) - query = take_speech() - text_editor.insert(tk.INSERT, query, tk.END) - return query -talk_btn.configure(command=take_speech) - -text_editor.configure(font=("Arial", 12)) - - - - -# ---------&&&&&&&&&&& End main menu --------------------------------------------- - - -###################### status bar ############### ############################ BUTTON - -status_bar=ttk.Label(main_application, text= "Status Bar") -status_bar.pack(side=tk.BOTTOM) - -text_changed = False - -def changed(event=None): - global text_changed - if text_editor.edit_modified(): - text_changed = True - words=len(text_editor.get(1.0, "end-1c").split()) - characters = len(text_editor.get(1.0, "end-1c")) - status_bar.config(text=f'Characters:{characters} Words: {words}') - text_editor.edit_modified(False) ## Increase the count of the char and words -text_editor.bind("<>", changed) - -# ---------&&&&&&&&&&& End main menu ------------------------------------------=-- - -# VAriable -url = "" -#new functionality -def new_file(event= None): - global url - url="" - text_editor.delete(1.0, tk.END) - - - -## file commands - -file.add_command(label="New", image=new_icon, compound=tk.LEFT, accelerator="Ctrl+N", command = new_file) -#open functionality -#opening file -def open_file(event=None): - global url - url = filedialog.askopenfilename(initialdir=os.getcwd(), title="Select File", filetypes=(("Text File", "*.txt"),("All Files", "*.*"))) + pass + +def load_sess(): + if os.path.exists(SESSION_FILE): + try: + with open(SESSION_FILE, "r", encoding="utf-8") as f: + return json.load(f) + except Exception: + pass + return {"tabs": []} + +def save_sess(data): try: - with open(url, "r") as fr: - text_editor.delete(1.0, tk.END) - text_editor.insert(1.0, fr.read()) - except FileNotFoundError: - return - except: - return - main_application.title(os.path.basename(url)) - -file.add_command(label="Open", image=open_icon, compound=tk.LEFT, accelerator="Ctrl+O", command=open_file) - -# Save Functionality -def save_file(event= None): - global url - try: - if url: - content = str(text_editor.get(1.0, tk.END)) - with open(url, "w", encoding="utf-8") as fw: - fw.write(content) + with open(SESSION_FILE, "w", encoding="utf-8") as f: + json.dump(data, f, indent=2) + except Exception: + pass + +# ══════════════════════════════════════════════════════════════════════════════ +class EditorTab: + def __init__(self): + self.url = "" + self.frame = None + self.tw = None # tk.Text + self.lc = None # line-number canvas + self.modified = False + self.bookmarks = {} # name → index str + +# ══════════════════════════════════════════════════════════════════════════════ +class UltimateEditor: + + def __init__(self, root: tk.Tk): + self.root = root + self.cfg = load_cfg() + self.tabs = [] # list[EditorTab] + self.active = None # EditorTab | None + + self._ffam = self.cfg["font_family"] + self._fsize = self.cfg["font_size"] + self.cfg.get("zoom", 0) + self._theme = self.cfg["theme"] + + self._wrap = tk.BooleanVar(value=self.cfg["wrap"]) + self._linenos = tk.BooleanVar(value=self.cfg["show_linenos"]) + self._ruler_vis = tk.BooleanVar(value=self.cfg["show_ruler"]) + self._autosave = tk.BooleanVar(value=self.cfg["autosave"]) + self._spell_on = tk.BooleanVar(value=False) + self._show_tb = tk.BooleanVar(value=True) + self._show_sb = tk.BooleanVar(value=True) + self._fullscreen = False + self._md_open = False + self._spell = SpellChecker() if HAS_SPELL else None + + # active formatting state (toggled by buttons; applied on next keypress or selection) + self._fmt_bold = False + self._fmt_italic = False + self._fmt_under = False + self._fmt_strike = False + + root.title(APP_TITLE) + root.geometry("1380x880") + root.minsize(800, 500) + root.protocol("WM_DELETE_WINDOW", self._on_close) + + self._build_ui() + self._apply_theme(self._theme, first=True) + self._restore_session() + if not self.tabs: + self._new_tab() + self._start_autosave() + + # ══════════════════════════════════════════════════════════════════════════ + # UI BUILD + # ══════════════════════════════════════════════════════════════════════════ + def _build_ui(self): + self._build_menu() + self._build_toolbar() + self._build_ruler() + self._build_notebook() + self._build_statusbar() + self._bind_shortcuts() + + # ── MENU ────────────────────────────────────────────────────────────────── + def _build_menu(self): + mb = tk.Menu(self.root) + self.root.config(menu=mb) + + def add(m, label="", acc="", cmd=None, sep=False, check=None, var=None): + if sep: m.add_separator(); return + if check and var is not None: + m.add_checkbutton(label=label, variable=var, command=cmd); return + m.add_command(label=label, accelerator=acc, command=cmd) + + # File + fm = tk.Menu(mb, tearoff=False) + mb.add_cascade(label="File", menu=fm) + add(fm,"New Tab", "Ctrl+T", self._new_tab) + add(fm,"New Window", "Ctrl+Shift+N", self._new_window) + add(fm,sep=True) + add(fm,"Open…", "Ctrl+O", self._open_file) + self._recent_menu = tk.Menu(fm, tearoff=False) + fm.add_cascade(label="Recent Files", menu=self._recent_menu) + self._rebuild_recent() + add(fm,sep=True) + add(fm,"Save", "Ctrl+S", self._save_file) + add(fm,"Save As…", "Ctrl+Shift+S", self._save_as) + add(fm,"Save All", "Ctrl+Alt+S", self._save_all) + add(fm,sep=True) + add(fm,"Export as HTML…", "", self._export_html) + add(fm,"Export as PDF…", "", self._export_pdf) + add(fm,"Print…", "Ctrl+P", self._print_file) + add(fm,sep=True) + add(fm,"Close Tab", "Ctrl+W", self._close_tab) + add(fm,"Exit", "Ctrl+Q", self._on_close) + + # Edit + em = tk.Menu(mb, tearoff=False) + mb.add_cascade(label="Edit", menu=em) + add(em,"Undo", "Ctrl+Z", self._undo) + add(em,"Redo", "Ctrl+Y", self._redo) + add(em,sep=True) + add(em,"Cut", "Ctrl+X", lambda: self._tw() and self._tw().event_generate("<>")) + add(em,"Copy", "Ctrl+C", lambda: self._tw() and self._tw().event_generate("<>")) + add(em,"Paste", "Ctrl+V", lambda: self._tw() and self._tw().event_generate("<>")) + add(em,"Select All", "Ctrl+A", lambda: self._tw() and self._tw().tag_add("sel","1.0","end")) + add(em,"Clear All", "", lambda: self._tw() and self._tw().delete("1.0","end")) + add(em,sep=True) + add(em,"Find & Replace…", "Ctrl+F", self._find_replace) + add(em,"Go to Line…", "Ctrl+G", self._goto_line) + add(em,sep=True) + add(em,"Insert Date/Time", "F5", self._insert_datetime) + add(em,"Insert Special Char…","", self._insert_special) + add(em,sep=True) + add(em,"Add Bookmark…", "", self._add_bookmark) + add(em,"Go to Bookmark…", "", self._goto_bookmark) + + # Format + fmt = tk.Menu(mb, tearoff=False) + mb.add_cascade(label="Format", menu=fmt) + add(fmt,"Bold", "Ctrl+B", self._toggle_bold) + add(fmt,"Italic", "Ctrl+I", self._toggle_italic) + add(fmt,"Underline", "Ctrl+U", self._toggle_underline) + add(fmt,"Strikethrough", "Ctrl+Shift+K", self._toggle_strike) + add(fmt,sep=True) + add(fmt,"Font Colour…", "", self._font_color) + add(fmt,"Highlight Colour…","", self._highlight_color) + add(fmt,"Remove Formatting","Ctrl+Space", self._clear_formatting) + add(fmt,sep=True) + add(fmt,"Increase Font", "Ctrl+=", self._zoom_in) + add(fmt,"Decrease Font", "Ctrl+-", self._zoom_out) + add(fmt,"Reset Zoom", "Ctrl+0", self._zoom_reset) + add(fmt,sep=True) + add(fmt,"Align Left", "Ctrl+L", self._align_left) + add(fmt,"Align Centre", "Ctrl+E", self._align_center) + add(fmt,"Align Right", "Ctrl+R", self._align_right) + add(fmt,sep=True) + add(fmt,"UPPERCASE", "", lambda: self._change_case("upper")) + add(fmt,"lowercase", "", lambda: self._change_case("lower")) + add(fmt,"Title Case", "", lambda: self._change_case("title")) + + # View + vm = tk.Menu(mb, tearoff=False) + mb.add_cascade(label="View", menu=vm) + vm.add_checkbutton(label="Toolbar", variable=self._show_tb, command=self._toggle_toolbar) + vm.add_checkbutton(label="Status Bar", variable=self._show_sb, command=self._toggle_statusbar) + vm.add_checkbutton(label="Line Numbers",variable=self._linenos, command=self._toggle_linenos) + vm.add_checkbutton(label="Ruler", variable=self._ruler_vis, command=self._toggle_ruler) + vm.add_checkbutton(label="Word Wrap", variable=self._wrap, command=self._toggle_wrap) + vm.add_separator() + add(vm,"Markdown Preview", "Ctrl+Shift+M", self._toggle_md_preview) + add(vm,"Distraction-Free", "F11", self._toggle_fullscreen) + vm.add_separator() + tm = tk.Menu(vm, tearoff=False) + vm.add_cascade(label="Color Theme", menu=tm) + self._theme_var = tk.StringVar(value=self._theme) + for name in THEMES: + tm.add_radiobutton(label=name, variable=self._theme_var, value=name, + command=lambda n=name: self._apply_theme(n)) + + # Tools + tl = tk.Menu(mb, tearoff=False) + mb.add_cascade(label="Tools", menu=tl) + add(tl,"Word Count & Stats","", self._show_stats) + tl.add_checkbutton(label="Spell Check", variable=self._spell_on, command=self._toggle_spell) + tl.add_separator() + add(tl,"Read Aloud", "F7", self._read_text) + add(tl,"Speech to Text", "F8", self._take_speech) + tl.add_separator() + tl.add_checkbutton(label="Auto-save", variable=self._autosave) + add(tl,"Keyboard Shortcuts…","", self._show_shortcuts) + + # ── TOOLBAR ─────────────────────────────────────────────────────────────── + def _build_toolbar(self): + t = THEMES[self._theme] + self.tb = tk.Frame(self.root, bd=0, relief="flat") + self.tb.pack(side=tk.TOP, fill=tk.X) + + # ---- row 1: font controls + formatting ---- + r1 = tk.Frame(self.tb) + r1.pack(side=tk.TOP, fill=tk.X, padx=4, pady=2) + + # Font family + families = sorted(set(tkfont.families())) + self._font_var = tk.StringVar(value=self._ffam) + self._font_box = ttk.Combobox(r1, textvariable=self._font_var, + values=families, width=26, state="readonly") + self._font_box.pack(side=tk.LEFT, padx=(0,4)) + self._font_box.bind("<>", self._on_font_change) + + # Font size + self._size_var = tk.IntVar(value=self._fsize) + self._size_box = ttk.Combobox(r1, textvariable=self._size_var, + values=FONT_SIZES, width=5, state="normal") + self._size_box.pack(side=tk.LEFT, padx=(0,6)) + self._size_box.bind("<>", self._on_size_change) + self._size_box.bind("", self._on_size_change) + + self._sep(r1) + + # Formatting toggle buttons — we track their visual state + self._btn_bold = self._tbtn(r1, " B ", self._toggle_bold, tip="Bold (Ctrl+B)", font_kw={"weight":"bold"}) + self._btn_italic = self._tbtn(r1, " I ", self._toggle_italic, tip="Italic (Ctrl+I)", font_kw={"slant":"italic"}) + self._btn_under = self._tbtn(r1, " U ", self._toggle_underline, tip="Underline (Ctrl+U)") + self._btn_strike = self._tbtn(r1, " S ", self._toggle_strike, tip="Strikethrough") + self._sep(r1) + self._tbtn(r1, " Font Colour ", self._font_color) + self._tbtn(r1, " Highlight ", self._highlight_color) + self._tbtn(r1, " Clear Fmt ", self._clear_formatting, tip="Remove formatting (Ctrl+Space)") + self._sep(r1) + self._tbtn(r1, " ← Left ", self._align_left) + self._tbtn(r1, " ≡ Centre ", self._align_center) + self._tbtn(r1, " Right → ", self._align_right) + self._sep(r1) + self._tbtn(r1, " A+ ", self._zoom_in, tip="Zoom In (Ctrl+=)") + self._tbtn(r1, " A− ", self._zoom_out, tip="Zoom Out (Ctrl+-)") + self._sep(r1) + self._tbtn(r1, " ↩ Undo ", self._undo) + self._tbtn(r1, " ↪ Redo ", self._redo) + self._sep(r1) + self._tbtn(r1, " 🔍 Find ", self._find_replace) + self._tbtn(r1, " 📅 Date ", self._insert_datetime) + self._tbtn(r1, " 🔊 Read ", self._read_text) + self._tbtn(r1, " 🎤 Speak ", self._take_speech) + + # live stats on right + self._stats_lbl = tk.Label(r1, text="", font=("Segoe UI", 9)) + self._stats_lbl.pack(side=tk.RIGHT, padx=10) + + def _tbtn(self, parent, text, cmd, tip="", font_kw=None): + """Create a flat toolbar button with optional bold/italic label styling.""" + f = ("Segoe UI", 9) + if font_kw: + f = tkfont.Font(family="Segoe UI", size=9, **font_kw) + b = tk.Button(parent, text=text, command=cmd, + relief="flat", bd=1, padx=4, pady=2, + font=f) + b.pack(side=tk.LEFT, padx=1) + # Hover highlight effect + b.bind("", lambda e: b.config(relief="groove")) + b.bind("", lambda e: b.config(relief="flat")) + if tip: + self._tooltip(b, tip) + return b + + def _sep(self, parent): + tk.Frame(parent, width=1, bg="#cccccc").pack(side=tk.LEFT, fill=tk.Y, padx=4, pady=2) + + def _tooltip(self, widget, text): + tip_win = [None] + def show(e): + if tip_win[0] and tip_win[0].winfo_exists(): + return + tw = tk.Toplevel(widget) + tw.wm_overrideredirect(True) + tw.wm_geometry(f"+{e.x_root+12}+{e.y_root+22}") + tk.Label(tw, text=text, bg="#ffffcc", fg="#000000", + relief="solid", bd=1, font=("Segoe UI", 8), + padx=4, pady=2).pack() + tip_win[0] = tw + def hide(e): + if tip_win[0]: + try: + tip_win[0].destroy() + except Exception: + pass + tip_win[0] = None + widget.bind("", show) + widget.bind("", hide) + widget.bind("", hide) + + # ── RULER ───────────────────────────────────────────────────────────────── + def _build_ruler(self): + self.ruler_frame = tk.Frame(self.root, height=16) + self.ruler_frame.pack(side=tk.TOP, fill=tk.X) + self.ruler_canvas = tk.Canvas(self.ruler_frame, height=16, highlightthickness=0) + self.ruler_canvas.pack(fill=tk.X, expand=True) + self.ruler_canvas.bind("", lambda e: self._draw_ruler()) + + def _draw_ruler(self): + c = self.ruler_canvas; c.delete("all") + t = THEMES[self._theme] + c.config(bg=t["ruler_bg"]) + w = c.winfo_width() + for i in range(0, w, 8): + if i % 80 == 0: + c.create_line(i,0,i,14, fill=t["ln_fg"]) + c.create_text(i+2,2, text=str(i//8), anchor="nw", + fill=t["ln_fg"], font=("Segoe UI",7)) + elif i % 40 == 0: + c.create_line(i,0,i,9, fill=t["ln_fg"]) + elif i % 8 == 0: + c.create_line(i,0,i,5, fill=t["ln_fg"]) + + # ── NOTEBOOK ────────────────────────────────────────────────────────────── + def _build_notebook(self): + self.nb = ttk.Notebook(self.root) + self.nb.pack(side=tk.TOP, fill=tk.BOTH, expand=True) + self.nb.bind("<>", self._on_tab_switch) + self.nb.bind("", lambda e: self._close_tab()) + + # ── STATUS BAR ──────────────────────────────────────────────────────────── + def _build_statusbar(self): + self.sb_frame = tk.Frame(self.root, height=22) + self.sb_frame.pack(side=tk.BOTTOM, fill=tk.X) + self.sb_left = tk.Label(self.sb_frame, text="Ready", anchor="w", font=("Segoe UI",9)) + self.sb_left.pack(side=tk.LEFT, padx=8) + self.sb_right = tk.Label(self.sb_frame, text="", anchor="e", font=("Segoe UI",9)) + self.sb_right.pack(side=tk.RIGHT, padx=8) + self.sb_mid = tk.Label(self.sb_frame, text="", font=("Segoe UI",9)) + self.sb_mid.pack(side=tk.RIGHT, padx=20) + + # ══════════════════════════════════════════════════════════════════════════ + # TAB MANAGEMENT + # ══════════════════════════════════════════════════════════════════════════ + def _new_tab(self, url="", content=""): + tab = EditorTab(); tab.url = url + tab.frame = ttk.Frame(self.nb) + title = os.path.basename(url) if url else "Untitled" + self.nb.add(tab.frame, text=title) + + # line-number canvas + tab.lc = tk.Canvas(tab.frame, width=48, highlightthickness=0) + tab.lc.pack(side=tk.LEFT, fill=tk.Y) + + vsb = ttk.Scrollbar(tab.frame, orient="vertical") + vsb.pack(side=tk.RIGHT, fill=tk.Y) + hsb = ttk.Scrollbar(tab.frame, orient="horizontal") + hsb.pack(side=tk.BOTTOM, fill=tk.X) + + tw = tk.Text(tab.frame, undo=True, maxundo=-1, + wrap="word" if self._wrap.get() else "none", + relief="flat", padx=12, pady=10, + font=(self._ffam, self._fsize), + insertwidth=2, spacing3=3) + tw.pack(side=tk.LEFT, fill=tk.BOTH, expand=True) + tab.tw = tw + + vsb.config(command=tw.yview) + hsb.config(command=tw.xview) + tw.config(yscrollcommand=lambda *a: (vsb.set(*a), self._update_linenos(tab)), + xscrollcommand=hsb.set) + + # ── define formatting tags ────────────────────────────────────────── + self._init_tags(tw) + + if content: + tw.insert("1.0", content) + tw.edit_reset() + + # bindings + tw.bind("<>", lambda e, t=tab: self._on_modified(t)) + tw.bind("", lambda e, t=tab: self._on_key(t, e)) + tw.bind("", lambda e, t=tab: self._update_pos(t)) + tw.bind("", self._context_menu) + tw.bind("(", lambda e: self._autoclose(e, ")")) + tw.bind("[", lambda e: self._autoclose(e, "]")) + tw.bind("{", lambda e: self._autoclose(e, "}")) + + self.tabs.append(tab) + self.nb.select(tab.frame) + self.active = tab + self._apply_theme_to_tab(tab) + self._update_linenos(tab) + tw.focus_set() + return tab + + def _init_tags(self, tw): + """Define all rich-text tags on a text widget.""" + b_font = tkfont.Font(family=self._ffam, size=self._fsize, weight="bold") + i_font = tkfont.Font(family=self._ffam, size=self._fsize, slant="italic") + bi_font = tkfont.Font(family=self._ffam, size=self._fsize, weight="bold", slant="italic") + n_font = tkfont.Font(family=self._ffam, size=self._fsize) + + tw.tag_configure(FMT_BOLD, font=b_font) + tw.tag_configure(FMT_ITALIC, font=i_font) + tw.tag_configure(FMT_UNDER, underline=True) + tw.tag_configure(FMT_STRIKE, overstrike=True) + tw.tag_configure("fmt_bold_italic", font=bi_font) + tw.tag_configure("match", background="#ffff00", foreground="#000000") + tw.tag_configure("misspell", underline=True, foreground="#cc0000") + # colour tags created dynamically + + def _refresh_tags(self, tw): + """Update font objects inside tags when base font changes.""" + b_font = tkfont.Font(family=self._ffam, size=self._fsize, weight="bold") + i_font = tkfont.Font(family=self._ffam, size=self._fsize, slant="italic") + bi_font = tkfont.Font(family=self._ffam, size=self._fsize, weight="bold", slant="italic") + tw.tag_configure(FMT_BOLD, font=b_font) + tw.tag_configure(FMT_ITALIC, font=i_font) + tw.tag_configure("fmt_bold_italic", font=bi_font) + + def _close_tab(self, event=None): + if len(self.tabs) <= 1: + self._on_close(); return + idx = self.nb.index(self.nb.select()) + tab = self.tabs[idx] + if tab.modified: + ans = messagebox.askyesnocancel("Unsaved changes", + f"'{os.path.basename(tab.url) or 'Untitled'}' has unsaved changes. Save?") + if ans is True: self._save_file(tab=tab) + elif ans is None: return + self.nb.forget(idx) + self.tabs.pop(idx) + if self.tabs: + new = min(idx, len(self.tabs)-1) + self.nb.select(new); self.active = self.tabs[new] + + def _on_tab_switch(self, e=None): + if not self.tabs: return + try: + idx = self.nb.index(self.nb.select()) + if 0 <= idx < len(self.tabs): + self.active = self.tabs[idx] + self._update_pos(self.active) + self._sync_fmt_buttons() + except (tk.TclError, ValueError): + pass + + # ══════════════════════════════════════════════════════════════════════════ + # INLINE RICH FORMATTING (the core fix) + # ══════════════════════════════════════════════════════════════════════════ + def _get_sel_or_word(self): + """Return (start, end) of selection, or current word if nothing selected.""" + tw = self._tw() + if not tw: return None, None + try: + return tw.index("sel.first"), tw.index("sel.last") + except tk.TclError: + # no selection → expand to word boundaries + idx = tw.index("insert") + start = tw.index(f"{idx} wordstart") + end = tw.index(f"{idx} wordend") + # if nothing useful (e.g. whitespace), just use insert position + if tw.get(start, end).strip() == "": + return idx, idx + return start, end + + def _apply_fmt_tag(self, tag_name): + """Toggle a formatting tag on the selection (or current word).""" + tw = self._tw() + if not tw: return + start, end = self._get_sel_or_word() + if not start or start == end: return + + existing = tw.tag_ranges(tag_name) + # check if the entire range is already tagged + covered = False + for i in range(0, len(existing), 2): + ts = str(existing[i]); te = str(existing[i+1]) + if tw.compare(ts,"<=",start) and tw.compare(te,">=",end): + covered = True; break + + if covered: + tw.tag_remove(tag_name, start, end) else: - url = filedialog.asksaveasfile(mode="w",defaultextension =".txt" , filetypes=(("Text File", "*.txt"),("All Files", "*.*"))) - content2= text_editor.get(1.0, tk.END) - url.write(content2) - url.close() - except: - return -file.add_command(label="Save", image=save_icon, compound=tk.LEFT, accelerator="Ctrl+S", command = save_file) - -# SAve AS Functionality -def save_as(event= None): - global url - try: - content = text_editor.get(1.0, tk.END) - url = filedialog.asksaveasfile(mode="w",defaultextension =".txt" , filetypes=(("Text File", "*.txt"),("All Files", "*.*"))) - url.write(content) - url.close() - except: - return -file.add_command(label="Save_As", image=save_as_icon, compound=tk.LEFT, accelerator="Ctrl+Alt+S", command= save_as) -# Exit functionality -def exit_func(event= None): - global url, text_changed #line239 - try: - if text_changed: - mbox= messagebox.askyesnocancel("Hey Wait ! Don't You want to save the File !") # Create a message box - if mbox is True: # Save krne h file :) is true to be used as cancel is also falue value - if url: - content = text_editor.get(1.0, tk.END) - with open(url, "w", encoding= "utf-8") as fw: - fw.write(content) - main_application.destroy() - else: - content2= text_editor.get(1.0, tk.END) - url = filedialog.asksaveasfile(mode="w",defaultextension =".txt" , filetypes=(("Text File", "*.txt"),("All Files", "*.*"))) - url.write(content2) - url.close() - main_application.destroy() - elif mbox is False: - main_application.destroy() + tw.tag_add(tag_name, start, end) + + self._sync_fmt_buttons() + + def _toggle_bold(self, event=None): self._apply_fmt_tag(FMT_BOLD); return "break" + def _toggle_italic(self, event=None): self._apply_fmt_tag(FMT_ITALIC); return "break" + def _toggle_underline(self,event=None):self._apply_fmt_tag(FMT_UNDER); return "break" + def _toggle_strike(self, event=None): self._apply_fmt_tag(FMT_STRIKE); return "break" + + def _clear_formatting(self, event=None): + tw = self._tw() + if not tw: return + start, end = self._get_sel_or_word() + if not start: return + for tag in (FMT_BOLD, FMT_ITALIC, FMT_UNDER, FMT_STRIKE): + tw.tag_remove(tag, start, end) + # remove colour tags + for tag in tw.tag_names(): + if tag.startswith("fc_") or tag.startswith("hl_"): + tw.tag_remove(tag, start, end) + self._sync_fmt_buttons() + + def _font_color(self): + color = colorchooser.askcolor(parent=self.root, title="Font Colour")[1] + if not color: return + tw = self._tw() + if not tw: return + start, end = self._get_sel_or_word() + if not start or start == end: return + tag = f"fc_{color.replace('#','')}" + tw.tag_configure(tag, foreground=color) + tw.tag_add(tag, start, end) + + def _highlight_color(self): + color = colorchooser.askcolor(parent=self.root, title="Highlight Colour")[1] + if not color: return + tw = self._tw() + if not tw: return + start, end = self._get_sel_or_word() + if not start or start == end: return + tag = f"hl_{color.replace('#','')}" + tw.tag_configure(tag, background=color) + tw.tag_add(tag, start, end) + + def _sync_fmt_buttons(self): + """Update toolbar button appearance to reflect formatting at cursor.""" + if not hasattr(self, "_btn_bold"): return # toolbar not yet built + tw = self._tw() + if not tw: return + try: pos = tw.index("insert") + except: return + t = THEMES[self._theme] + + def _lit(btn, active): + btn.config(relief="sunken" if active else "flat", + bg=t["sel_bg"] if active else t["toolbar_bg"], + fg=t["sel_fg"] if active else t["fg"]) + + _lit(self._btn_bold, FMT_BOLD in tw.tag_names(pos)) + _lit(self._btn_italic, FMT_ITALIC in tw.tag_names(pos)) + _lit(self._btn_under, FMT_UNDER in tw.tag_names(pos)) + _lit(self._btn_strike, FMT_STRIKE in tw.tag_names(pos)) + + # ── ALIGN ───────────────────────────────────────────────────────────────── + def _align_left(self): self._set_align("left") + def _align_center(self): self._set_align("center") + def _align_right(self): self._set_align("right") + def _set_align(self, j): + tw = self._tw() + if not tw: return + try: + ls = tw.index("sel.first linestart") + le = tw.index("sel.last lineend") + except tk.TclError: + ls = tw.index("insert linestart") + le = tw.index("insert lineend") + tw.tag_configure(f"align_{j}", justify=j) + tw.tag_add(f"align_{j}", ls, le) + + # ── CASE ────────────────────────────────────────────────────────────────── + def _change_case(self, mode): + tw = self._tw() + if not tw: return + try: + s,e = tw.index("sel.first"), tw.index("sel.last") + except tk.TclError: + return + text = tw.get(s,e) + tw.delete(s,e); tw.insert(s, getattr(text, mode)()) + + # ── ZOOM ────────────────────────────────────────────────────────────────── + def _zoom_in(self, e=None): self._zoom(+2) + def _zoom_out(self, e=None): self._zoom(-2) + def _zoom_reset(self,e=None): + self._fsize = self.cfg["font_size"] + self._size_var.set(self._fsize) + self._apply_font_all() + + def _zoom(self, d): + self._fsize = max(6, self._fsize + d) + self._size_var.set(self._fsize) + self._apply_font_all() + + def _on_font_change(self, e=None): + self._ffam = self._font_var.get() + self._apply_font_all() + + def _on_size_change(self, e=None): + try: self._fsize = int(self._size_var.get()) + except: return + self._apply_font_all() + + def _apply_font_all(self): + for tab in self.tabs: + tab.tw.configure(font=(self._ffam, self._fsize)) + self._refresh_tags(tab.tw) + if hasattr(self, "ruler_canvas"): + self._draw_ruler() + + # ── UNDO / REDO ─────────────────────────────────────────────────────────── + def _undo(self, e=None): + tw = self._tw() + if tw: + try: tw.edit_undo() + except tk.TclError: pass + + def _redo(self, e=None): + tw = self._tw() + if tw: + try: tw.edit_redo() + except tk.TclError: pass + + # ══════════════════════════════════════════════════════════════════════════ + # FILE OPERATIONS + # ══════════════════════════════════════════════════════════════════════════ + def _new_window(self, e=None): + import subprocess + subprocess.Popen([sys.executable] + sys.argv) + + def _open_file(self, e=None, path=None): + if not path: + path = filedialog.askopenfilename(initialdir=os.getcwd(), + filetypes=[("Text","*.txt"),("Python","*.py"), + ("Markdown","*.md"),("All","*.*")]) + if not path: return + try: + with open(path, "r", encoding="utf-8", errors="replace") as f: + content = f.read() + except Exception as ex: + messagebox.showerror("Error", str(ex)); return + if self.active and not self.active.url and not self._tw().get("1.0","end-1c"): + self.active.url = path + self._tw().delete("1.0","end") + self._tw().insert("1.0", content) + self._tw().edit_reset() + self.nb.tab(self.active.frame, text=os.path.basename(path)) else: - main_application.destroy() - except: - return - -file.add_command(label="Exit", image=exit_icon, compound=tk.LEFT, accelerator="Ctrl+Q", command=exit_func) -## find functionaly in edit command (last option) -def find_func(event =None): - - def find(): - word = find_input.get() - text_editor.tag_remove('match', "1.0", tk.END) - matches =0 - if word: - start_pos = "1.0" - while True: - start_pos = text_editor.search(word, start_pos, stopindex=tk.END) - if not start_pos: - break - end_pos =f"{start_pos}+ {len(word)}c" - text_editor.tag_add("match", start_pos, end_pos) - matches +=1 - start_pos = end_pos - text_editor.tag_config("match", foreground ="yellow", background= "green") - def replace(): - word = find_input.get() - replace_text = replace_input.get() - content= text_editor.get(1.0, tk.END) - - new_content = content.replace(word, replace_text) - text_editor.delete(1.0, tk.END) - text_editor.insert(1.0, new_content) - ## find and replace funcytionality completed - - -# Dialog box for Find and Replace - find_dialogue = tk.Toplevel() - find_dialogue.geometry("375x250+500+200") - find_dialogue.title("Find") - find_dialogue.resizable(0,0) # Can't maximise and minimise - - # Frame - find_frame = ttk.LabelFrame(find_dialogue, text="Find/ Replace") - find_frame.pack(pady=20) - - #labels - text_find_label = ttk.Label(find_frame, text ="Find : ") - text_replace_label = ttk.Label(find_frame, text= "Replace :") - - #entry - - find_input = ttk.Entry(find_frame, width = 30) - replace_input =ttk.Entry(find_frame, width=30) - - #Button - find_button = ttk.Button(find_frame, text ="Find", command= find) - replace_button= ttk.Button(find_frame, text= "Replace", command= replace) - - # Label Grid - - text_find_label.grid(row= 0, column =0, padx=4, pady =4) - text_replace_label.grid(row=1, column=0, padx=4, pady =4) - - #Entry grid - - find_input.grid(row= 0, column=1, padx=4, pady=4) - replace_input.grid(row= 1, column=1, padx=4, pady=4) - - - # Button grid - - find_button.grid(row=2, column =0, padx=8, pady=4) - replace_button.grid(row=2, column=2, padx=8, pady=4) - - find_dialogue.mainloop() - - -## edit command - -edit.add_command(label="Copy", image=copy_icon, compound=tk.LEFT, accelerator="Ctrl+C", command = lambda:text_editor.event_generate("")) -edit.add_command(label="Paste", image=paste_icon, compound=tk.LEFT, accelerator="Ctrl+V",command = lambda:text_editor.event_generate("")) -edit.add_command(label="Cut", image=cut_icon, compound=tk.LEFT, accelerator="Ctrl+X", command = lambda:text_editor.event_generate("")) -edit.add_command(label="Clear All", image=clear_all_icon, compound=tk.LEFT, accelerator="Ctrl+Alt+X", command= lambda: text_editor.delete(1.0, tk.END)) -edit.add_command(label="Find", image=find_icon, compound=tk.LEFT, accelerator="Ctrl+F", command= find_func) - -## view check button commands - -# To see toolbar and status bar -show_statusbar =tk.BooleanVar() -show_statusbar.set(True) - -show_toolbar =tk.BooleanVar() -show_toolbar.set(True) - -# To hide toolbar -def hide_toolbar(): - global show_toolbar - if show_toolbar: - tool_bar.pack_forget() - show_toolbar= False - else: - text_editor.pack_forget() - status_bar.pack_forget() - tool_bar.pack(side=tk.TOP, fill= tk.X) - text_editor.pack(fill= tk.BOTH, expand= True) - status_bar.pack(side=tk.BOTTOM) - show_toolbar = True - -# To hide statusbar -def hide_statusbar(): - global show_statusbar - if show_statusbar: - status_bar.pack_forget() - show_statusbar = False - else: - status_bar.pack(side= tk.BOTTOM) - show_statusbar = True - - - -## View Button functionality Added - - -view.add_checkbutton(label="Tool Bar",onvalue=True,offvalue=False, variable = show_toolbar, image=tool_bar_icon, compound=tk.LEFT, command= hide_toolbar) -view.add_checkbutton(label="Status Bar",onvalue=True, offvalue=False,variable = show_statusbar, image=status_bar_icon, compound=tk.LEFT, command= hide_statusbar) - -## Color Theme commands -def change_theme(): - chosen_theme = theme_choice.get() - color_tuple= color_dict.get(chosen_theme) - fg_color, bg_color = color_tuple[0], color_tuple[1] - text_editor.config(background= bg_color, fg=fg_color) - -count= 0 -for i in color_dict: - color_theme.add_radiobutton(label= i, image=color_icons[count], variable=theme_choice, compound=tk.LEFT, command= change_theme) - count+=1 - - -####################### main menu functionality ############### ############################ -# ---------&&&&&&&&&&& End main menu ------------------------------------------=-- - -main_application.config(menu=main_menu) - -## Binding the NEW Option Shortcut keys and Find func in Edit Option -main_application.bind("", open_file) -main_application.bind("", new_file) -main_application.bind("", save_file) -main_application.bind("", save_as) -main_application.bind("", exit_func) -main_application.bind("", find_func) + tab = self._new_tab(url=path, content=content) + self.nb.tab(tab.frame, text=os.path.basename(path)) + self._add_recent(path) + self.root.title(f"{os.path.basename(path)} — {APP_TITLE}") + + def _save_file(self, e=None, tab=None): + tab = tab or self.active + if not tab: return + if tab.url: + try: + with open(tab.url, "w", encoding="utf-8") as f: + f.write(tab.tw.get("1.0", "end-1c")) + tab.modified = False + self.nb.tab(tab.frame, text=os.path.basename(tab.url)) + self.sb_left.config(text=f"Saved {datetime.datetime.now():%H:%M:%S}") + except Exception as ex: + messagebox.showerror("Save Error", str(ex)) + else: + self._save_as(tab=tab) + + def _save_as(self, e=None, tab=None): + tab = tab or self.active + if not tab: return + path = filedialog.asksaveasfilename(defaultextension=".txt", + filetypes=[("Text","*.txt"),("Markdown","*.md"),("Python","*.py"),("All","*.*")]) + if not path: return + tab.url = path + self._save_file(tab=tab) + self._add_recent(path) + self.root.title(f"{os.path.basename(path)} — {APP_TITLE}") + + def _save_all(self, e=None): + for tab in self.tabs: self._save_file(tab=tab) + + def _export_html(self): + tw = self._tw() + if not tw: return + content = tw.get("1.0","end-1c").replace("<","<").replace(">",">") + path = filedialog.asksaveasfilename(defaultextension=".html", + filetypes=[("HTML","*.html")]) + if not path: return + html = (f"" + f"" + f"
{content}
") + with open(path, "w", encoding="utf-8") as f: + f.write(html) + messagebox.showinfo("Exported", f"Saved as:\n{path}") + + def _export_pdf(self): + if not HAS_PDF: + messagebox.showwarning("reportlab missing","pip install reportlab"); return + tw = self._tw() + if not tw: return + path = filedialog.asksaveasfilename(defaultextension=".pdf", + filetypes=[("PDF","*.pdf")]) + if not path: return + c = rl_canvas.Canvas(path, pagesize=A4) + W, H = A4; margin=50; y=H-60; lh=15 + c.setFont("Courier", 11) + for line in tw.get("1.0","end-1c").split("\n"): + if y < margin: c.showPage(); y=H-60; c.setFont("Courier",11) + c.drawString(margin, y, line[:105]); y -= lh + c.save() + messagebox.showinfo("Exported", f"Saved as:\n{path}") + + def _print_file(self, e=None): + import webbrowser + tw = self._tw() + if not tw: return + content = tw.get("1.0","end-1c").replace("&","&").replace("<","<").replace(">",">") + with tempfile.NamedTemporaryFile("w", suffix=".html", delete=False, encoding="utf-8") as f: + f.write(f"" + f"
{content}
") + path = f.name + # Convert to proper file URL (handles Windows backslashes) + from urllib.request import pathname2url + file_url = "file:///" + pathname2url(path).lstrip("/") + webbrowser.open(file_url) + + # ── RECENT ──────────────────────────────────────────────────────────────── + def _add_recent(self, path): + r = self.cfg.setdefault("recent_files",[]) + if path in r: r.remove(path) + r.insert(0, path) + self.cfg["recent_files"] = r[:MAX_RECENT] + save_cfg(self.cfg); self._rebuild_recent() + + def _rebuild_recent(self): + self._recent_menu.delete(0,"end") + for p in self.cfg.get("recent_files",[]): + self._recent_menu.add_command(label=p, command=lambda x=p: self._open_file(path=x)) + if not self.cfg.get("recent_files"): + self._recent_menu.add_command(label="(empty)", state="disabled") + + # ══════════════════════════════════════════════════════════════════════════ + # FIND & REPLACE + # ══════════════════════════════════════════════════════════════════════════ + def _find_replace(self, e=None): + dlg = tk.Toplevel(self.root) + dlg.title("Find & Replace") + dlg.geometry("500x310+350+200") + dlg.resizable(False, False) + t = THEMES[self._theme] + dlg.config(bg=t["bg"]) + + frm = tk.LabelFrame(dlg, text="Find / Replace", bg=t["bg"], fg=t["fg"], + font=("Segoe UI",10), padx=10, pady=10) + frm.pack(fill="both",expand=True,padx=12,pady=12) + + def lbl(text, row): + tk.Label(frm,text=text,bg=t["bg"],fg=t["fg"], + font=("Segoe UI",10)).grid(row=row,column=0,sticky="e",padx=4,pady=6) + + lbl("Find:", 0); lbl("Replace:", 1) + find_v = tk.StringVar(); repl_v = tk.StringVar() + fe = ttk.Entry(frm,textvariable=find_v,width=34); fe.grid(row=0,column=1,columnspan=2,padx=4,pady=6) + ttk.Entry(frm,textvariable=repl_v,width=34).grid(row=1,column=1,columnspan=2,padx=4,pady=6) + + case_v = tk.BooleanVar(); regex_v = tk.BooleanVar() + ttk.Checkbutton(frm,text="Match case",variable=case_v).grid(row=2,column=0,columnspan=2,sticky="w",padx=4) + ttk.Checkbutton(frm,text="Regex",variable=regex_v).grid(row=2,column=2,sticky="w") + + count_lbl = tk.Label(frm,text="",bg=t["bg"],fg="#0077aa",font=("Segoe UI",9)) + count_lbl.grid(row=3,column=0,columnspan=3,pady=4) + + def do_find(): + tw = self._tw() + if not tw: return + tw.tag_remove("match","1.0","end") + word = find_v.get() + if not word: return + flags = 0 if case_v.get() else re.IGNORECASE + pat = word if regex_v.get() else re.escape(word) + matches = list(re.finditer(pat, tw.get("1.0","end"), flags)) + count_lbl.config(text=f"{len(matches)} match{'es' if len(matches)!=1 else ''}") + for m in matches: + tw.tag_add("match", f"1.0+{m.start()}c", f"1.0+{m.end()}c") + tw.tag_config("match",background="#ffff44",foreground="#000000") + + def do_replace_all(): + tw = self._tw() + if not tw: return + word=find_v.get(); repl=repl_v.get() + if not word: return + flags = 0 if case_v.get() else re.IGNORECASE + pat = word if regex_v.get() else re.escape(word) + content = tw.get("1.0","end-1c") + new, n = re.subn(pat, repl, content, flags=flags) + tw.delete("1.0","end"); tw.insert("1.0",new) + count_lbl.config(text=f"Replaced {n} occurrence{'s' if n!=1 else ''}") + + bf = tk.Frame(frm,bg=t["bg"]); bf.grid(row=4,column=0,columnspan=3,pady=8) + for txt,cmd in [("Find All",do_find),("Replace All",do_replace_all), + ("Close",dlg.destroy)]: + ttk.Button(bf,text=txt,command=cmd).pack(side=tk.LEFT,padx=6) + fe.focus() + + # ── GO TO LINE ──────────────────────────────────────────────────────────── + def _goto_line(self, e=None): + tw = self._tw() + if not tw: return + line = simpledialog.askinteger("Go to Line","Line number:",parent=self.root) + if line: + tw.see(f"{line}.0"); tw.mark_set("insert",f"{line}.0"); tw.focus_set() + + # ── INSERT DATE / SPECIAL ───────────────────────────────────────────────── + def _insert_datetime(self, e=None): + tw = self._tw() + if tw: tw.insert("insert", datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")) + + def _insert_special(self): + specials = list("©®™°±×÷√∞≠≤≥←→↑↓★☆♠♣♥♦αβγδεζηθ€£¥¿¡§¶†‡•…«»""''") + dlg = tk.Toplevel(self.root); dlg.title("Special Characters"); dlg.geometry("440x200") + tk.Label(dlg,text="Click to insert:",font=("Segoe UI",10)).pack(pady=6) + g = tk.Frame(dlg); g.pack() + tw = self._tw() + for i,ch in enumerate(specials): + tk.Button(g,text=ch,width=3,command=lambda c=ch: tw and tw.insert("insert",c), + font=("Segoe UI",12),relief="flat",bd=1).grid(row=i//14,column=i%14,padx=1,pady=1) + + # ── BOOKMARKS ───────────────────────────────────────────────────────────── + def _add_bookmark(self): + tw = self._tw() + if not tw or not self.active: return + name = simpledialog.askstring("Bookmark","Name:",parent=self.root) + if name: + self.active.bookmarks[name] = tw.index("insert") + self.sb_left.config(text=f"Bookmark '{name}' added") + + def _goto_bookmark(self): + if not self.active or not self.active.bookmarks: + messagebox.showinfo("Bookmarks","No bookmarks in this document."); return + dlg = tk.Toplevel(self.root); dlg.title("Go to Bookmark") + dlg.geometry("300x200") + lb = tk.Listbox(dlg,font=("Segoe UI",11)); lb.pack(fill="both",expand=True,padx=10,pady=10) + for n in self.active.bookmarks: lb.insert("end",n) + def go(): + sel = lb.curselection() + if sel: + idx = self.active.bookmarks[lb.get(sel[0])] + self._tw().see(idx); self._tw().mark_set("insert",idx); dlg.destroy() + ttk.Button(dlg,text="Go",command=go).pack(pady=4) + + # ── STATS ───────────────────────────────────────────────────────────────── + def _show_stats(self): + tw = self._tw() + if not tw: return + text = tw.get("1.0","end-1c") + words = len(text.split()) + chars = len(text); chars_ns = len(text.replace(" ","")) + lines = text.count("\n")+1 + sents = len(re.findall(r'[.!?]+',text)) + paras = len([p for p in text.split("\n\n") if p.strip()]) + reading= max(1, words//200) + messagebox.showinfo("Document Statistics", + f"Words {words:,}\n" + f"Characters {chars:,}\n" + f"Chars (no sp) {chars_ns:,}\n" + f"Lines {lines:,}\n" + f"Sentences {sents:,}\n" + f"Paragraphs {paras:,}\n" + f"Est. reading ~{reading} min") + + # ── SPELL CHECK ─────────────────────────────────────────────────────────── + def _toggle_spell(self): + if not HAS_SPELL: + messagebox.showwarning("Missing","pip install pyspellchecker") + self._spell_on.set(False); return + tw = self._tw() + if not tw: return + if self._spell_on.get(): + self._run_spell(tw) + else: + tw.tag_remove("misspell","1.0","end") + + def _run_spell(self, tw=None): + tw = tw or self._tw() + if not tw or not self._spell: return + tw.tag_remove("misspell","1.0","end") + text = tw.get("1.0","end-1c") + words_iter = list(re.finditer(r'\b[a-zA-Z]+\b',text)) + bad = self._spell.unknown([m.group() for m in words_iter]) + for m in words_iter: + if m.group().lower() in bad: + tw.tag_add("misspell",f"1.0+{m.start()}c",f"1.0+{m.end()}c") + + # ── MARKDOWN PREVIEW ────────────────────────────────────────────────────── + def _toggle_md_preview(self, e=None): + if not HAS_MD: + messagebox.showwarning("Missing","pip install markdown"); return + if self._md_open: + if hasattr(self,"_md_win") and self._md_win.winfo_exists(): + self._md_win.destroy() + self._md_open = False; return + self._md_open = True + self._md_win = tk.Toplevel(self.root) + self._md_win.title("Markdown Preview"); self._md_win.geometry("700x600") + self._md_win.protocol("WM_DELETE_WINDOW", lambda: setattr(self,"_md_open",False) or self._md_win.destroy()) + out = tk.Text(self._md_win,wrap="word",padx=12,pady=12,state="disabled") + out.pack(fill="both",expand=True) + def refresh(): + if not self._md_open: return + tw = self._tw() + if tw: + html = md_lib.markdown(tw.get("1.0","end-1c")) + out.config(state="normal"); out.delete("1.0","end") + out.insert("1.0",html); out.config(state="disabled") + self.root.after(2000,refresh) + refresh() + + # ── TTS / STT ───────────────────────────────────────────────────────────── + def _read_text(self, e=None): + if not HAS_TTS: + messagebox.showwarning("Missing","pip install pyttsx3"); return + tw = self._tw() + text = tw.get("1.0","end-1c") if tw else "" + if not text.strip(): return + def _speak(): + eng = pyttsx3.init(); eng.say(text); eng.runAndWait(); eng.stop() + threading.Thread(target=_speak, daemon=True).start() + + def _take_speech(self, e=None): + if not HAS_SR: + messagebox.showwarning("Missing","pip install SpeechRecognition"); return + def _listen(): + r = sr.Recognizer() + with sr.Microphone() as src: + r.pause_threshold = 2 + try: + audio = r.listen(src, timeout=8) + q = r.recognize_google(audio, language="en-GB") + q = q.capitalize() + ("?" if q.lower().split()[0] in + ("how","why","what","when","who","where","is","do") else ".") + except: q = random.choice(["Didn't catch that.","Please try again."]) + self.root.after(0, lambda: self._tw() and self._tw().insert("insert"," "+q)) + threading.Thread(target=_listen, daemon=True).start() + self.sb_left.config(text="🎤 Listening…") + + # ══════════════════════════════════════════════════════════════════════════ + # VIEW TOGGLES + # ══════════════════════════════════════════════════════════════════════════ + def _toggle_toolbar(self): + if self._show_tb.get(): + # Re-pack toolbar at the top, below the menu + self.tb.pack(side=tk.TOP, fill=tk.X) + # Ensure correct stacking order: toolbar → ruler → notebook + self.tb.lift(self.root) + if hasattr(self, "ruler_frame"): + self.ruler_frame.lift(self.root) + if hasattr(self, "nb"): + self.nb.lift(self.root) + else: + self.tb.pack_forget() -main_application.mainloop() + def _toggle_statusbar(self): + if self._show_sb.get(): + self.sb_frame.pack(side=tk.BOTTOM, fill=tk.X) + else: + self.sb_frame.pack_forget() + + def _toggle_linenos(self): + for tab in self.tabs: + if self._linenos.get(): + tab.lc.pack(side=tk.LEFT, fill=tk.Y, before=tab.tw) + else: + tab.lc.pack_forget() + + def _toggle_ruler(self): + if self._ruler_vis.get(): + self.ruler_frame.pack(side=tk.TOP, fill=tk.X, before=self.nb) + else: + self.ruler_frame.pack_forget() + + def _toggle_wrap(self): + mode = "word" if self._wrap.get() else "none" + for tab in self.tabs: tab.tw.config(wrap=mode) + + def _toggle_fullscreen(self, e=None): + self._fullscreen = not self._fullscreen + self.root.attributes("-fullscreen", self._fullscreen) + + # ══════════════════════════════════════════════════════════════════════════ + # THEMING + # ══════════════════════════════════════════════════════════════════════════ + def _apply_theme(self, name, first=False): + self._theme = name + t = THEMES.get(name, THEMES["Light Default"]) + + self.root.config(bg=t["bg"]) + + style = ttk.Style() + try: style.theme_use("clam") + except: pass + style.configure(".", background=t["bg"], foreground=t["fg"]) + style.configure("TFrame", background=t["bg"]) + style.configure("TLabel", background=t["bg"], foreground=t["fg"]) + style.configure("TButton", background=t["toolbar_bg"], foreground=t["fg"]) + style.configure("TCombobox", fieldbackground=t["bg"], foreground=t["fg"], + selectbackground=t["sel_bg"]) + style.configure("TNotebook", background=t["bg"]) + style.configure("TNotebook.Tab", background=t["ln_bg"], foreground=t["fg"], + padding=[10,3]) + style.map("TNotebook.Tab", + background=[("selected",t["bg"])], + foreground=[("selected",t["fg"])]) + style.configure("TScrollbar", background=t["ln_bg"], troughcolor=t["bg"]) + style.configure("TCheckbutton", background=t["bg"], foreground=t["fg"]) + style.configure("TRadiobutton", background=t["bg"], foreground=t["fg"]) + style.configure("TLabelframe", background=t["bg"], foreground=t["fg"]) + style.configure("TLabelframe.Label",background=t["bg"], foreground=t["fg"]) + style.configure("TEntry", fieldbackground=t["bg"], foreground=t["fg"]) + + if hasattr(self,"tb"): + self.tb.config(bg=t["toolbar_bg"]) + for w in self.tb.winfo_children(): + self._theme_widget(w, t) + if hasattr(self, "_stats_lbl"): + self._stats_lbl.config(bg=t["toolbar_bg"], fg=t["fg"]) + + if hasattr(self,"sb_frame"): + self.sb_frame.config(bg=t["status_bg"]) + for w in (self.sb_left, self.sb_mid, self.sb_right): + w.config(bg=t["status_bg"], fg=t["fg"]) + + if hasattr(self,"ruler_canvas"): + self._draw_ruler() + + for tab in self.tabs: + self._apply_theme_to_tab(tab) + + if hasattr(self,"_theme_var"): + self._theme_var.set(name) + if not first: + self.cfg["theme"] = name + save_cfg(self.cfg) + self._sync_fmt_buttons() + + def _theme_widget(self, w, t): + cls = w.winfo_class() + try: + if cls == "Frame": + w.config(bg=t["toolbar_bg"]) + elif cls == "Label": + w.config(bg=t["toolbar_bg"], fg=t["fg"]) + elif cls == "Button": + w.config(bg=t["toolbar_bg"], fg=t["fg"], + activebackground=t["sel_bg"], + activeforeground=t["sel_fg"]) + except tk.TclError: + pass + for child in w.winfo_children(): + self._theme_widget(child, t) + + def _apply_theme_to_tab(self, tab): + t = THEMES[self._theme] + tab.tw.config(bg=t["bg"], fg=t["fg"], + insertbackground=t["cursor"], + selectbackground=t["sel_bg"], + selectforeground=t["sel_fg"]) + tab.lc.config(bg=t["ln_bg"]) + self._update_linenos(tab) + + # ══════════════════════════════════════════════════════════════════════════ + # LINE NUMBERS + # ══════════════════════════════════════════════════════════════════════════ + def _update_linenos(self, tab): + if not self._linenos.get(): + return + c = tab.lc + tw = tab.tw + t = THEMES[self._theme] + c.delete("all") + try: + i = tw.index("@0,0") + except tk.TclError: + return + while True: + try: + dline = tw.dlineinfo(i) + except tk.TclError: + break + if dline is None: + break + y = dline[1] + ln = i.split(".")[0] + c.create_text(44, y, anchor="ne", text=ln, + fill=t["ln_fg"], + font=(self._ffam, max(8, self._fsize - 2))) + try: + nxt = tw.index(f"{i}+1line") + except tk.TclError: + break + if nxt == i: + break + i = nxt + + # ══════════════════════════════════════════════════════════════════════════ + # STATUS / EVENT HANDLERS + # ══════════════════════════════════════════════════════════════════════════ + def _update_pos(self, tab): + if not tab or not tab.tw: + return + tw = tab.tw + try: + idx = tw.index("insert") + line, col = idx.split(".") + text = tw.get("1.0", "end-1c") + words = len(text.split()) + chars = len(text) + try: + self.sb_left.config(text=f"Ln {line}, Col {int(col)+1}") + self.sb_mid.config(text=f"{words:,} words · {chars:,} chars") + self.sb_right.config(text=f"{self._theme} · {self._ffam} {self._fsize}pt") + except Exception: + pass + try: + self._stats_lbl.config( + text=f"Ln {line} Col {int(col)+1} | {words:,} words") + except Exception: + pass + self._sync_fmt_buttons() + except tk.TclError: + pass + + def _on_modified(self, tab): + try: + if not tab.tw.edit_modified(): + return + except tk.TclError: + return + tab.modified = True + title = os.path.basename(tab.url) or "Untitled" + try: + self.nb.tab(tab.frame, text=f"● {title}") + except tk.TclError: + pass + tab.tw.edit_modified(False) + self._update_pos(tab) + self._update_linenos(tab) + if self._spell_on.get() and HAS_SPELL: + self.root.after(2000, lambda: self._run_spell(tab.tw)) + + def _on_key(self, tab, e): + self._update_linenos(tab) + self._update_pos(tab) + + # ── CONTEXT MENU ────────────────────────────────────────────────────────── + def _context_menu(self, event): + tw = event.widget + m = tk.Menu(self.root, tearoff=False) + m.add_command(label="Cut", command=lambda: tw.event_generate("<>")) + m.add_command(label="Copy", command=lambda: tw.event_generate("<>")) + m.add_command(label="Paste", command=lambda: tw.event_generate("<>")) + m.add_separator() + m.add_command(label="Select All", command=lambda: tw.tag_add("sel","1.0","end")) + m.add_separator() + m.add_command(label="Bold", command=self._toggle_bold) + m.add_command(label="Italic", command=self._toggle_italic) + m.add_command(label="Underline", command=self._toggle_underline) + m.add_command(label="Remove Fmt", command=self._clear_formatting) + m.add_separator() + m.add_command(label="Find & Replace…", command=self._find_replace) + m.add_command(label="Word Count", command=self._show_stats) + m.post(event.x_root, event.y_root) + + # ── AUTO-CLOSE ──────────────────────────────────────────────────────────── + def _autoclose(self, e, closing): + e.widget.insert("insert", closing) + e.widget.mark_set("insert","insert-1c") + + # ── SHORTCUTS ───────────────────────────────────────────────────────────── + def _bind_shortcuts(self): + r = self.root + # Plain commands (event arg ignored) + plain = [ + ("", self._new_tab), + ("", self._close_tab), + ("", self._open_file), + ("", self._save_file), + ("", self._save_as), + ("", self._save_all), + ("", self._on_close), + ("", self._find_replace), + ("", self._goto_line), + ("", self._undo), + ("", self._redo), + ("", self._align_left), + ("", self._align_center), + ("", self._align_right), + ("", self._zoom_in), + ("", self._zoom_out), + ("", self._zoom_reset), + ("", self._print_file), + ("", self._insert_datetime), + ("", self._read_text), + ("", self._take_speech), + ("", self._toggle_fullscreen), + ("", self._toggle_md_preview), + ] + for key, cmd in plain: + r.bind(key, lambda e, c=cmd: c()) + # Format shortcuts need to return "break" to stop default behaviour + r.bind("", lambda e: self._toggle_bold()) + r.bind("", lambda e: self._toggle_italic()) + r.bind("", lambda e: self._toggle_underline()) + r.bind("", lambda e: self._toggle_strike()) + r.bind("", lambda e: self._clear_formatting()) + # Tab cycling + r.bind("", lambda e: self._cycle_tabs(1)) + r.bind("", lambda e: self._cycle_tabs(-1)) + + def _cycle_tabs(self, d): + if not self.tabs: return + idx = self.nb.index(self.nb.select()) + self.nb.select((idx+d) % len(self.tabs)) + + def _show_shortcuts(self): + messagebox.showinfo("Keyboard Shortcuts", + "Ctrl+T/W New / Close tab\n" + "Ctrl+O/S Open / Save\n" + "Ctrl+Shift+S Save As\n" + "Ctrl+Z / Y Undo / Redo\n" + "Ctrl+F Find & Replace\n" + "Ctrl+G Go to Line\n" + "Ctrl+B/I/U Bold / Italic / Underline\n" + "Ctrl+K Strikethrough\n" + "Ctrl+Space Remove Formatting\n" + "Ctrl+L/E/R Align Left/Centre/Right\n" + "Ctrl+=/-/0 Zoom In/Out/Reset\n" + "Ctrl+P Print\n" + "F5 Date/Time stamp\n" + "F7 / F8 Read Aloud / Dictate\n" + "F11 Distraction-Free mode\n" + "Ctrl+Tab Cycle tabs\n" + ) + + # ── AUTOSAVE ────────────────────────────────────────────────────────────── + def _start_autosave(self): + def tick(): + if self._autosave.get(): + for tab in self.tabs: + if tab.modified and tab.url: + self._save_file(tab=tab) + self.root.after(AUTOSAVE_MS, tick) + self.root.after(AUTOSAVE_MS, tick) + + # ── SESSION ─────────────────────────────────────────────────────────────── + def _restore_session(self): + for t in load_sess().get("tabs",[]): + url = t.get("url",""); content = t.get("content","") + if url and os.path.exists(url): + try: + with open(url, "r", encoding="utf-8") as f: + content = f.read() + except Exception: + pass + if url or content: + tab = self._new_tab(url=url, content=content) + if url: self.nb.tab(tab.frame, text=os.path.basename(url)) + + def _save_session(self): + save_sess({"tabs":[{"url":t.url,"content":t.tw.get("1.0","end-1c")[:40000]} + for t in self.tabs]}) + + # ── CLOSE ───────────────────────────────────────────────────────────────── + def _on_close(self): + for tab in self.tabs: + if tab.modified: + name = os.path.basename(tab.url) or "Untitled" + ans = messagebox.askyesnocancel("Unsaved Changes", + f"'{name}' has unsaved changes.\nSave before closing?") + if ans is True: self._save_file(tab=tab) + elif ans is None: return + self._save_session() + self.cfg.update(font_family=self._ffam, font_size=self._fsize, + theme=self._theme, wrap=self._wrap.get(), + show_linenos=self._linenos.get(), autosave=self._autosave.get()) + save_cfg(self.cfg) + self.root.destroy() + + # ── helper ──────────────────────────────────────────────────────────────── + def _tw(self): # -> tk.Text | None + return self.active.tw if self.active else None + +# ══════════════════════════════════════════════════════════════════════════════ +if __name__ == "__main__": + root = tk.Tk() + app = UltimateEditor(root) + root.mainloop() diff --git a/requirements.txt b/requirements.txt index 80061e8..e1d7066 100644 --- a/requirements.txt +++ b/requirements.txt @@ -4,3 +4,4 @@ pyttsx3==2.90 SpeechRecognition==3.8.1 PyAudio==0.2.11 "platform_version == 0x000001D2206A19D8" +reportlab==4.4.10 diff --git a/screenshot.png b/screenshot.png index b3b7d4a40e1545502b001418f823d0cb4075a0c0..d5f04375b11412f45301fdeef918f1ead749e110 100644 GIT binary patch literal 65252 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 ThVZd3qlE;9pM84f$6x;!`V~FJ literal 40526 zcmaI72Ut_t7B(C&GcY3pHhRf8j#y|SRqA+A7(~EEZvxV5q!W_hFoF;uHUw!=5Ks_e zq=XiNQZh=3fDmc|i4aO4gpvf(zTn(DbHD%j|342rNlwn$XYaN4TI*f!S|{_WgN@XF zrTqW^K+5*Fi`M}FiBtgKJINo!MMpx-8-5kN?Tfi?^KU@ipvscy%XdK+>@NTSXoMus z_j}RzAESSBiva-SPVD{fv%UVyIsi~YwY_-ZW}-KJMxxkhzGZRlMoi43$K6NEbx&rR z_da#?(+@p+jsE^{&djZS;O`{wpYq#x?Wo2NXU@nSJSuy$^ZCt7$x&8{zaGsyrId5( zX?p@JOhGl>{Ok|?2l{9&IHA-a9m|>|dp{5I9&;CtMLr%pX8Y)u|NKp^>j9qr_sgS~ z#kT>P|NMCVBf$0VGaub~wD0ZTXZ|w(vQY`(vym1?`GbK}+%`l3xxAN9m5!w!K|SiL za0};uE^L5$Q1?Yo*_-s{DU*-pbWG{z?#z80x|MOH{2H~W>^*QWH(6QruoiT@ZgKOU zJJ_yZ4AcNsbBv^-hWp}E#d6zhPK*kOmjv1_zd`+DWD>t7+?)y)q#0g9p8RLh?zmbe zfYZ+~%(RT$%x_*^kS~LvPEV|}pE$%&6Eb{&V2D4inJy6lw{ZO5Io7ZMoMj-X(2KQ` z4XMkj%#TBua&@w6fJjxTsHF4KSYK;;+|{XZt}>3WCOIAWIQJ6fA3?s3#8hTQ9CyST zMqV?6kTx&jT%4Ae4D62g5Tlk+Z4QV;Gq=9DpiT3WQ$&icqqECKS1vS1AwUBnr6#`kuRUm<72IJ@?1XIe{8 zcOU|1<6T-VyzWv*Rkf1BiF*Oynj5H}$°&*9x*`}EeZjd7`#W$CyuFsG<`4A8v9 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

F2T@`l0CM~+k4+Gv~#!}oUf*u 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 E1Dr+%*Z=?k From 4b210cf5a4a27e9152c4e61e992aac8b873a5805 Mon Sep 17 00:00:00 2001 From: Szymdows Date: Sat, 7 Mar 2026 21:04:58 +0000 Subject: [PATCH 2/2] feat: overhaul GUI, add export options, and fix text formatting --- README.md | 6 ++++++ screenshot.png | Bin 65252 -> 40526 bytes screenshot1.png | Bin 0 -> 65252 bytes 3 files changed, 6 insertions(+) create mode 100644 screenshot1.png diff --git a/README.md b/README.md index d78563e..28cff40 100644 --- a/README.md +++ b/README.md @@ -40,8 +40,14 @@ Then run it by double clicking on `dpad.py`! # Editor's Interface Screenshot +## Before: + ![Screenshot](screenshot.png) +## After: + +![Screenshot](screenshot1.png) + ======================================================================= ## 📌 Opensource Programs diff --git a/screenshot.png b/screenshot.png index d5f04375b11412f45301fdeef918f1ead749e110..b3b7d4a40e1545502b001418f823d0cb4075a0c0 100644 GIT binary patch literal 40526 zcmaI72Ut_t7B(C&GcY3pHhRf8j#y|SRqA+A7(~EEZvxV5q!W_hFoF;uHUw!=5Ks_e zq=XiNQZh=3fDmc|i4aO4gpvf(zTn(DbHD%j|342rNlwn$XYaN4TI*f!S|{_WgN@XF zrTqW^K+5*Fi`M}FiBtgKJINo!MMpx-8-5kN?Tfi?^KU@ipvscy%XdK+>@NTSXoMus z_j}RzAESSBiva-SPVD{fv%UVyIsi~YwY_-ZW}-KJMxxkhzGZRlMoi43$K6NEbx&rR z_da#?(+@p+jsE^{&djZS;O`{wpYq#x?Wo2NXU@nSJSuy$^ZCt7$x&8{zaGsyrId5( zX?p@JOhGl>{Ok|?2l{9&IHA-a9m|>|dp{5I9&;CtMLr%pX8Y)u|NKp^>j9qr_sgS~ z#kT>P|NMCVBf$0VGaub~wD0ZTXZ|w(vQY`(vym1?`GbK}+%`l3xxAN9m5!w!K|SiL za0};uE^L5$Q1?Yo*_-s{DU*-pbWG{z?#z80x|MOH{2H~W>^*QWH(6QruoiT@ZgKOU zJJ_yZ4AcNsbBv^-hWp}E#d6zhPK*kOmjv1_zd`+DWD>t7+?)y)q#0g9p8RLh?zmbe zfYZ+~%(RT$%x_*^kS~LvPEV|}pE$%&6Eb{&V2D4inJy6lw{ZO5Io7ZMoMj-X(2KQ` z4XMkj%#TBua&@w6fJjxTsHF4KSYK;;+|{XZt}>3WCOIAWIQJ6fA3?s3#8hTQ9CyST zMqV?6kTx&jT%4Ae4D62g5Tlk+Z4QV;Gq=9DpiT3WQ$&icqqECKS1vS1AwUBnr6#`kuRUm<72IJ@?1XIe{8 zcOU|1<6T-VyzWv*Rkf1BiF*Oynj5H}$°&*9x*`}EeZjd7`#W$CyuFsG<`4A8v9 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

F2T@`l0CM~+k4+Gv~#!}oUf*u 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 E1Dr+%*Z=?k literal 65252 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 ThVZd3qlE;9pM84f$6x;!`V~FJ diff --git a/screenshot1.png b/screenshot1.png new file mode 100644 index 0000000000000000000000000000000000000000..d5f04375b11412f45301fdeef918f1ead749e110 GIT binary patch literal 65252 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 ThVZd3qlE;9pM84f$6x;!`V~FJ literal 0 HcmV?d00001