Brand new Feature
- 1. Syntax highlighting for different programming languages
- 2. Customizable theme
- 3. Auto indent
- 4. Add Cut, Copy, Paste functionality
- 5. AND MORE!
Link to the latest releases HERE
Features Code:::
-
Syntax highlighting
def add_syntax_highlighting(self):
# Add syntax highlighting for different programming languages
self.text_area.tag_configure("python", foreground="blue")
self.text_area.tag_configure("java", foreground="green")
def highlight_syntax(self):
text = self.text_area.get(1.0, tkinter.END)
lines = text.split("\n")
for index, line in enumerate(lines, start=1):
if "def" in line:
self.text_area.tag_add("python", f"{index}.0", f"{index}.end")
if "class" in line:
self.text_area.tag_add("python", f"{index}.0", f"{index}.end")
if "public" in line:
self.text_area.tag_add("java", f"{index}.0", f"{index}.end")
if "#" in line:
self.text_area.tag_add("python", f"{index}.0", f"{index}.end")
if "console.log" in line:
self.text_area.tag_add("js", f"{index}.0", f"{index}.end")
if "func" in line:
self.text_area.tag_add("swift", f"{index}.0", f"{index}.end")
if "println" in line:
self.text_area.tag_add("swift", f"{index}.0", f"{index}.end")
if "int main" in line:
self.text_area.tag_add("c", f"{index}.0", f"{index}.end")
# Add more syntax highlighting rules for other languages as needed
self.text_area.tag_config("python", foreground="blue")
self.text_area.tag_config("java", foreground="green")
self.text_area.tag_config("js", foreground="yellow")
self.text_area.tag_config("swift", foreground="purple")
self.text_area.tag_config("c", foreground="orange")
self.text_area.tag_config("python", foreground="blue")
self.text_area.tag_config("java", foreground="green")
-
Custom Themes
Pictures
def customize_theme(self):
self.theme_options = ["Light Theme", "Dark Theme", "Custom Theme"]
self.theme_choice = tkinter.StringVar()
self.theme_choice.set("Light Theme") # Default theme setting
theme_menu = tkinter.OptionMenu(self.master, self.theme_choice, *self.theme_options, command=self.apply_theme)
theme_menu.pack()
def apply_theme(self, event=None):
selected_theme = self.theme_choice.get()
if selected_theme == "Light Theme":
self.text_area.config(bg="white", fg="black")
elif selected_theme == "Dark Theme":
self.text_area.config(bg="black", fg="white")
elif selected_theme == "Custom Theme":
# Implement custom theme settings here
self.text_area.config(bg="lightblue", fg="darkblue")
-
Auto indent
def auto_indent(self):
auto_indent_btn = tkinter.Button(self.master, text="Auto Indent On", command=self.toggle_auto_indent)
auto_indent_btn.pack(side=tkinter.BOTTOM)
self.auto_indent_enabled = False
def toggle_auto_indent(self):
if self.auto_indent_enabled:
self.auto_indent_enabled = False
messagebox.showinfo("Auto Indentation", "Auto Indentation turned off")
else:
self.auto_indent_enabled = True
messagebox.showinfo("Auto Indentation", "Auto Indentation turned on")
self.text_area.bind("<Return>", self.auto_indent_on_return)
def auto_indent_on_return(self, event):
if self.auto_indent_enabled:
current_line = self.text_area.get(f"{event.widget.index(tkinter.INSERT).split('.')[0]}.0",
event.widget.index(tkinter.INSERT))
whitespace = len(current_line) - len(current_line.lstrip())
self.text_area.insert(tkinter.INSERT, "\n" + " " * whitespace)
-
Cut, copy, paste functions
def clipboard_functionality(self):
# Add Cut, Copy, Paste functionality
self.menu_bar.add_command(label="Cut", command=self.cut_text)
self.menu_bar.add_command(label="Copy", command=self.copy_text)
self.menu_bar.add_command(label="Paste", command=self.paste_text)
def cut_text(self):
self.text_area.event_generate("<<Cut>>")
def copy_text(self):
self.text_area.event_generate("<<Copy>>")
def paste_text(self):
self.text_area.event_generate("<<Paste>>")