Skip to content

PyNotepad

Latest
Compare
Choose a tag to compare
@Mike4947 Mike4947 released this 02 Aug 02:24
· 13 commits to main since this release
26bad38

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

image
image
image

    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>>")