Skip to content

Commit

Permalink
feat: Help menu (about, documentation, bug report, etc) (nightly)
Browse files Browse the repository at this point in the history
  • Loading branch information
tomlin7 committed Jan 28, 2024
1 parent b548517 commit 700bd7d
Show file tree
Hide file tree
Showing 9 changed files with 338 additions and 239 deletions.
454 changes: 241 additions & 213 deletions CHANGELOG.md

Large diffs are not rendered by default.

3 changes: 2 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,8 @@
<a href=https://github.com/billyeatcookies/Biscuit/blob/main/CODE_OF_CONDUCT.md>Code of Conduct</a> •
<a href=https://github.com/billyeatcookies/Biscuit/releases>Downloads</a> •
<a href=https://billyeatcookies.github.io/biscuit-extensions>Marketplace</a><br><br>
<img src="https://github.com/billyeatcookies/biscuit/assets/70792552/75c1eaf8-04d1-4945-859f-52b32b36d529" width=2000><br>
<img src="https://github.com/billyeatcookies/biscuit/assets/70792552/75c1eaf8-04d1-4945-859f-52b32b36d529" width=2000><br><br>
<code>"Life is short, eat more biscuits."</code>
</h1>

Biscuit is a lightweight, awesome code editor for any language. Biscuit supports essential language features such as Smart Code Completions, Syntax highlighting, etc. We wrote it in python, using only tkinter for GUI. It's a great alternative to [insert funny thing here]! Scroll down to see [some of the features](https://github.com/billyeatcookies/Biscuit/tree/main?tab=readme-ov-file#features).
Expand Down
2 changes: 1 addition & 1 deletion biscuit/__init__.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
__version__ = '2.59.0'
__version__ = '2.60.0'
__version_info__ = tuple([ int(num) for num in __version__.split('.')])

# For tests to run successfully
Expand Down
18 changes: 10 additions & 8 deletions biscuit/core/layout/base/content/editors/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,25 +13,23 @@
"""
from __future__ import annotations

import os
import tkinter as tk
import typing
from typing import List, Union

from biscuit.core.components.editors import Editor, Welcome
from biscuit.core.components.editors.editor import BaseEditor
from biscuit.core.components.floating.palette.actionset import ActionSet

if typing.TYPE_CHECKING:
from .. import ContentPane

import os
import tkinter as tk

from biscuit.core.components.editors import Editor, Welcome
from biscuit.core.components.games import Game
from biscuit.core.components.utils import Frame

from .editorsbar import Editorsbar
from .empty import Empty

if typing.TYPE_CHECKING:
from .. import ContentPane


class EditorsPane(Frame):
"""Tabbed container for editors."""
Expand Down Expand Up @@ -73,6 +71,10 @@ def get_active_actionset(self) -> ActionSet:
def add_default_editors(self) -> None:
"Adds all default editors"
self.add_editors(self.default_editors)

def add_welcome(self) -> None:
"Shows welcome tab"
self.add_editor(Welcome(self))

def add_editors(self, editors: list[Editor]) -> None:
"Append <Editor>s to list. Create tabs for them."
Expand Down
28 changes: 24 additions & 4 deletions biscuit/core/layout/menubar/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -100,6 +100,7 @@ def add_menus(self) -> None:
self.add_edit_menu()
self.add_selection_menu()
self.add_view_menu()
self.add_help_menu()

def add_file_menu(self) -> None:
events = self.events
Expand All @@ -112,14 +113,16 @@ def add_file_menu(self) -> None:
self.file_menu.add_item("Open Folder", events.open_directory)
# TODO open recent files
self.file_menu.add_separator()
self.file_menu.add_item("Close Editor", events.close_file)
self.file_menu.add_item("Close Folder", events.close_dir)
self.file_menu.add_item("Close Window", events.quit)
self.file_menu.add_separator()
self.file_menu.add_item("Save", events.save)
self.file_menu.add_item("Save As...", events.save_as)
self.file_menu.add_item("Save All", events.save_all)
self.file_menu.add_separator()
self.file_menu.add_item("Preferences", events.open_settings)
self.file_menu.add_separator()
self.file_menu.add_item("Close Editor", events.close_file)
self.file_menu.add_item("Close Folder", events.close_dir)
self.file_menu.add_item("Close Window", events.quit)
self.file_menu.add_separator()
self.file_menu.add_item("Exit", events.quit)

def add_edit_menu(self) -> None:
Expand Down Expand Up @@ -163,6 +166,23 @@ def add_view_menu(self) -> None:
self.view_menu.add_separator()
self.view_menu.add_item("Terminal", events.show_terminal)
self.view_menu.add_item("Log", events.show_logs)

def add_help_menu(self) -> None:
events = self.events

self.help_menu = self.add_menu("Help")
self.help_menu.add_item("Welcome", events.show_welcome)
self.help_menu.add_item("Show All Commands", events.show_command_prompt)
self.help_menu.add_item("Documentation", events.documentation)
self.help_menu.add_item("Show Release Notes", events.release_notes)
self.help_menu.add_separator()
self.help_menu.add_item("Report Bug", events.report_bug)
self.help_menu.add_item("Request Feature", events.request_feature)
self.help_menu.add_separator()
self.help_menu.add_item("View License", events.view_license)
self.help_menu.add_item("Code of Conduct", events.code_of_conduct)
self.help_menu.add_separator()
self.help_menu.add_item("About", events.about)

def close_all_menus(self, *_) -> None:
for menu in self.menus:
Expand Down
4 changes: 2 additions & 2 deletions biscuit/core/utils/binder.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,8 @@ def bind_all(self) -> None:
def late_bind_all(self) -> None:
"""Bindings that require full initialization"""

self.bind(self.bindings.commandpalette, lambda e: self.base.palette.show_prompt(">"))
self.bind(self.bindings.panel, self.base.root.baseframe.contentpane.toggle_panel)
self.bind(self.bindings.commandpalette, self.events.show_command_prompt)
self.bind(self.bindings.panel, self.base.contentpane.toggle_panel)

self.bind('<Configure>', self.base.on_gui_update)
self.bind('<FocusIn>', self.base.on_focus)
Expand Down
33 changes: 33 additions & 0 deletions biscuit/core/utils/events.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
from __future__ import annotations

import typing
import webbrowser as web
from tkinter import messagebox

if typing.TYPE_CHECKING:
from ... import App
Expand Down Expand Up @@ -55,6 +57,9 @@ def save_all(self, *_) -> None:
return editor.save(path)
if editor.content.editable:
editor.save()

def open_settings(self, *_) -> None:
self.base.open_settings()

def close_file(self, *_) -> None:
self.base.close_active_editor()
Expand Down Expand Up @@ -203,3 +208,31 @@ def show_terminal(self, *_) -> None:

def show_logs(self, *_) -> None:
self.base.panel.show_logs()

def show_welcome(self, *_) -> None:
self.base.editorsmanager.add_welcome()

def show_command_prompt(self, *_) -> None:
self.base.palette.show_prompt(">")

def documentation(self, *_) -> None:
web.open("https://billyeatcookies.github.io/biscuit/")

def release_notes(self, *_) -> None:
web.open("https://github.com/billyeatcookies/biscuit/blob/main/CHANGELOG.md")

def report_bug(self, *_) -> None:
web.open("https://github.com/billyeatcookies/biscuit/issues/new?assignees=billyeatcookies&labels=bug&projects=&template=bug_report.md")

def request_feature(self, *_) -> None:
web.open("https://github.com/billyeatcookies/biscuit/issues/new?assignees=billyeatcookies&labels=enhancement&projects=&template=feature_request.md")

def code_of_conduct(self, *_) -> None:
web.open("https://github.com/billyeatcookies/biscuit/blob/main/CODE_OF_CONDUCT.md")

def view_license(self, *_) -> None:
web.open("https://github.com/billyeatcookies/biscuit/blob/main/LICENSE.md")

def about(self, *_) -> None:
messagebox.showinfo("Biscuit", str(self.base.sysinfo))
self.base.logger.info(str(self.base.sysinfo))
33 changes: 24 additions & 9 deletions biscuit/core/utils/sysinfo.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
from __future__ import annotations

import platform
import sys
import tkinter as tk
import typing
from dataclasses import dataclass
from textwrap import dedent

if typing.TYPE_CHECKING:
from ... import App

import platform
import sys
from dataclasses import dataclass
from biscuit import __version__


@dataclass
Expand All @@ -21,11 +24,23 @@ def __init__(self, base: App) -> None:
self.machine = platform.machine()
self.processor = platform.processor()
self.python_version = sys.version
self.tk_version = tk.TclVersion

def __str__(self) -> None:
return f"""
OS: {self.os} ({self.version}, {self.release})
Machine: {self.machine}
Processor: {self.processor}
Python Version: {self.python_version}
"""
return dedent(
f"""BISCUIT
----------------------------------------
"Life is short, eat more biscuits."
- billiam (2020, colorized, not really)
----------------------------------------
Version: {__version__}
Python Version: {self.python_version}
Tcl/Tk Version: {self.tk_version}
OS: {self.os} {self.release} ({self.version})
Processor: {self.processor}
MIT License
Copyright (c) 2021-24 billyeatcookies""")
2 changes: 1 addition & 1 deletion pyproject.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[tool.poetry]
name = "biscuit"
version = "2.58.0"
version = "2.60.0"
description = "The uncompromising code editor"
authors = ["Billy <billydevbusiness@gmail.com>"]
license = "MIT"
Expand Down

0 comments on commit 700bd7d

Please sign in to comment.