From 2077791bed7690247f13a185635940e76c4f53ca Mon Sep 17 00:00:00 2001 From: Kieran-Lock Date: Fri, 14 Jul 2023 17:23:11 +0100 Subject: [PATCH] Updated logo, repo name, and finalized readme --- README.md | 49 ++++++++++++------ logo.png | Bin 12534 -> 2355 bytes main.py | 4 +- {consolegui => xtermgui}/__init__.py | 0 {consolegui => xtermgui}/control/__init__.py | 0 {consolegui => xtermgui}/control/colour.py | 0 {consolegui => xtermgui}/control/colours.py | 0 {consolegui => xtermgui}/control/cursor.py | 0 {consolegui => xtermgui}/control/rgb.py | 0 {consolegui => xtermgui}/control/rgbs.py | 0 {consolegui => xtermgui}/control/style.py | 0 {consolegui => xtermgui}/control/styles.py | 0 {consolegui => xtermgui}/control/text.py | 0 {consolegui => xtermgui}/control/types.py | 0 {consolegui => xtermgui}/geometry/__init__.py | 0 .../geometry/coordinate.py | 0 {consolegui => xtermgui}/geometry/region.py | 0 {consolegui => xtermgui}/gui/__init__.py | 0 {consolegui => xtermgui}/gui/gui.py | 0 .../gui/keyboard_interaction.py | 0 .../gui/mouse_interaction.py | 0 {consolegui => xtermgui}/input/__init__.py | 0 {consolegui => xtermgui}/input/event.py | 0 {consolegui => xtermgui}/input/events.py | 0 {consolegui => xtermgui}/input/input.py | 0 .../input/keyboard_codes.py | 0 .../input/keyboard_event.py | 0 {consolegui => xtermgui}/input/mouse_codes.py | 0 {consolegui => xtermgui}/input/mouse_event.py | 0 {consolegui => xtermgui}/input/setup.py | 0 .../layered_gui/__init__.py | 0 {consolegui => xtermgui}/layered_gui/gui.py | 0 {consolegui => xtermgui}/layered_gui/layer.py | 0 33 files changed, 35 insertions(+), 18 deletions(-) rename {consolegui => xtermgui}/__init__.py (100%) rename {consolegui => xtermgui}/control/__init__.py (100%) rename {consolegui => xtermgui}/control/colour.py (100%) rename {consolegui => xtermgui}/control/colours.py (100%) rename {consolegui => xtermgui}/control/cursor.py (100%) rename {consolegui => xtermgui}/control/rgb.py (100%) rename {consolegui => xtermgui}/control/rgbs.py (100%) rename {consolegui => xtermgui}/control/style.py (100%) rename {consolegui => xtermgui}/control/styles.py (100%) rename {consolegui => xtermgui}/control/text.py (100%) rename {consolegui => xtermgui}/control/types.py (100%) rename {consolegui => xtermgui}/geometry/__init__.py (100%) rename {consolegui => xtermgui}/geometry/coordinate.py (100%) rename {consolegui => xtermgui}/geometry/region.py (100%) rename {consolegui => xtermgui}/gui/__init__.py (100%) rename {consolegui => xtermgui}/gui/gui.py (100%) rename {consolegui => xtermgui}/gui/keyboard_interaction.py (100%) rename {consolegui => xtermgui}/gui/mouse_interaction.py (100%) rename {consolegui => xtermgui}/input/__init__.py (100%) rename {consolegui => xtermgui}/input/event.py (100%) rename {consolegui => xtermgui}/input/events.py (100%) rename {consolegui => xtermgui}/input/input.py (100%) rename {consolegui => xtermgui}/input/keyboard_codes.py (100%) rename {consolegui => xtermgui}/input/keyboard_event.py (100%) rename {consolegui => xtermgui}/input/mouse_codes.py (100%) rename {consolegui => xtermgui}/input/mouse_event.py (100%) rename {consolegui => xtermgui}/input/setup.py (100%) rename {consolegui => xtermgui}/layered_gui/__init__.py (100%) rename {consolegui => xtermgui}/layered_gui/gui.py (100%) rename {consolegui => xtermgui}/layered_gui/layer.py (100%) diff --git a/README.md b/README.md index 445502d..82b519f 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@
- Logo + Logo

A lightweight, expressive GUI framework for compatible terminals @@ -39,7 +39,7 @@ With zero external dependencies, and features including keyboard and mouse input ## Getting Started -XtermGUI is available on [PyPI](https://pypi.org/), under the name `XtermGUI` To use it in your project, run: +XtermGUI is available on [PyPI](https://pypi.org/project/XtermGUI/). To use it in your project, run: ``` pip install XtermGUI @@ -71,7 +71,7 @@ This framework has been tested using the default setup for [WSL 2](https://learn Use the `console_inputs` context manager to prepare the terminal for use with XtermGUI. This will handle the cleanup automatically. ```py -from XtermGUI import console_inputs +from xtermgui import console_inputs with console_inputs(): @@ -83,7 +83,7 @@ _Please note that there may sometimes be control sequence leakage when exiting y Use the `read_console` function to read both keyboard and mouse input from the console. View the [API summary](#api-summary) or [documentation](https://github.com/Kieran-Lock/XtermGUI/blob/main/DOCUMENTATION.md) for the possible events you can receieve from this function. ```py -from XtermGUI import console_inputs, read_console +from xtermgui import console_inputs, read_console with console_inputs(): @@ -93,7 +93,7 @@ with console_inputs(): Read repeated console input by placing this function in a loop. This can be useful for reading a stream of user inputs. ```py -from XtermGUI import console_inputs, read_console +from xtermgui import console_inputs, read_console with console_inputs(): @@ -106,14 +106,14 @@ with console_inputs(): The `Text` class can be used to represent formatted text, which can be printed to the console. It provides all the same functionality as the built-in `str` string type, but can be used in conjunction with the `Style` and `Colour` classes to represent coloured and styled text. ```py -from XtermGUI import Colours, Styles, Text, Colour +from xtermgui import Colours, Styles, Text, Colour, RGBs Colour.configure_default_background(RGBs.DEFAULT_BACKGROUND_WSL.value) # Test written in WSL, so the background is configured like so text = "This is styled text." -text_colour = Colours.F_BLUE.blend(Colours.F_GREY.value, foreground_bias=0.5, foreground_gamma=2.2) # This blending just uses the default blending parameters +text_colour = Colours.F_BLUE.value.blend(Colours.F_GREY.value, foreground_bias=0.5, foreground_gamma=2.2) # This blending just uses the default blending parameters text_background_colour = Colours.B_BLACK.value text_style = Styles.BOLD.value + Styles.UNDERLINED.value @@ -136,7 +136,7 @@ For more complex use cases, it is best to organise your application using the `G You can create a simple GUI by inheriting from `GUI`. ```py -from XtermGUI import GUI +from xtermgui import GUI class MyGUI(GUI): @@ -146,7 +146,7 @@ class MyGUI(GUI): You can use this GUI by using the `start` method as a context manager. ```py -from XtermGUI import GUI +from xtermgui import GUI class MyGUI(GUI): @@ -171,7 +171,7 @@ Receiving input events, via interactions, is an opt-in behaviour in XtermGUI. Wh To use a `GUI` with this capability, pass `inputs=True` to the `start` method. ```py -from XtermGUI import GUI +from xtermgui import GUI class MyGUI(GUI): @@ -194,7 +194,7 @@ if __name__ == "__main__": Receive keyboard events with the `KeyboardInteraction` decorator. ```py -from XtermGUI import GUI, KeyboardInteraction, Events, KeyboardEvent +from xtermgui import GUI, KeyboardInteraction, Events, KeyboardEvent class MyGUI(GUI): @@ -202,8 +202,8 @@ class MyGUI(GUI): super().__init__() @KeyboardInteraction(Events.SPACE.value) - def clicked_space(self, event: KeyboardEvent) -> None: - ... + def clicked_space(self, event: KeyboardEvent) -> None: + ... ``` The `clicked_space` method runs when space is pressed. Reference the API for other keyboard events you can receive. @@ -211,7 +211,7 @@ The `clicked_space` method runs when space is pressed. Reference the API for oth Mouse events can be dealt with similarly, with the `MouseInteraction` decorator. ```py -from XtermGUI import GUI, MouseInteraction, Events, MouseEvent, Region, Coordinate +from xtermgui import GUI, MouseInteraction, Events, MouseEvent, Region, Coordinate INTERACTION_REGION = Region(Coordinate(0, 0), Coordinate(20, 0), Coordinate(20, 10), Coordinate(0, 10)) # An example region - a 20x10 rectangle, which forms a square in the terminal @@ -231,7 +231,7 @@ Mouse interactions require an `Event`, and take a `Region` as an optional argume The `GUI` class provides three key I/O methods - `print`, `erase`, and `clear` - each of which are show below. ```py -from XtermGUI import GUI, Coordinate +from xtermgui import GUI, Coordinate class MyGUI(GUI): @@ -258,7 +258,7 @@ if __name__ == "__main__": To manage GUI layers in your application, use the `LayeredGUI` class. This will provide all of the same I/O methods as the simple `GUI` class, but manages layers automatically. ```py -from XtermGUI import Colour, RGBs, LayeredGUI, Coordinate +from xtermgui import Colour, RGBs, LayeredGUI, Coordinate Colour.configure_default_background(RGBs.DEFAULT_BACKGROUND_WSL.value) @@ -302,6 +302,10 @@ Details of the XtermGUI API are listed below for quick reference. Input events can be received via the `GUI` API. ```py +from enum import Enum +from xtermgui import Event, KeyboardEvent, MouseEvent + + class Events(Enum): SHIFT_BACKSPACE: Event = Event("SHIFT_BACKSPACE") TAB: Event = Event("TAB") @@ -406,6 +410,10 @@ Events that do not appear in this enum (such as the letters of the alphabet) can RGB colours represent only information about a specific colour. ```py +from enum import Enum +from xtermgui import RGB + + class RGBs(Enum): DEFAULT_FOREGROUND = RGB(192, 192, 192) DEFAULT_BACKGROUND_PYCHARM = RGB(43, 43, 43) @@ -429,6 +437,11 @@ class RGBs(Enum): Text colours represent the colour of text printed to the console. ```py +from enum import Enum +from xtermgui import Colour, RGBs + + + class Colours(Enum): F_BLACK: Colour = Colour(foreground=RGBs.BLACK.value) F_WHITE: Colour = Colour(foreground=RGBs.WHITE.value) @@ -465,6 +478,10 @@ class Colours(Enum): Text styles represent the style of text printed to the console. ```py +from enum import Enum +from xtermgui import Style + + class Styles(Enum): NOT_STYLED: Style = Style() BOLD: Style = Style(bold=True) diff --git a/logo.png b/logo.png index 16a552a6a746cef1e1198434ff804f2aff4306be..e2273090f14af2dc924a8f207f5d137f3d3b84b3 100644 GIT binary patch literal 2355 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 diff --git a/main.py b/main.py index 28fcb98..cf77780 100644 --- a/main.py +++ b/main.py @@ -1,10 +1,10 @@ -from consolegui import Colour, RGBs, console_inputs, read_console +from xtermgui import Colour, RGBs, console_inputs, read_console if __name__ == "__main__": Colour.configure_default_background(RGBs.DEFAULT_BACKGROUND_WSL.value) - print("This program showcases the basic capabilities of ConsoleGUI. Exit with ctrl + c.\t\n") + print("This program showcases the basic capabilities of XtermGUI. Exit with ctrl + c.\t\n") with console_inputs(): while True: read = read_console() diff --git a/consolegui/__init__.py b/xtermgui/__init__.py similarity index 100% rename from consolegui/__init__.py rename to xtermgui/__init__.py diff --git a/consolegui/control/__init__.py b/xtermgui/control/__init__.py similarity index 100% rename from consolegui/control/__init__.py rename to xtermgui/control/__init__.py diff --git a/consolegui/control/colour.py b/xtermgui/control/colour.py similarity index 100% rename from consolegui/control/colour.py rename to xtermgui/control/colour.py diff --git a/consolegui/control/colours.py b/xtermgui/control/colours.py similarity index 100% rename from consolegui/control/colours.py rename to xtermgui/control/colours.py diff --git a/consolegui/control/cursor.py b/xtermgui/control/cursor.py similarity index 100% rename from consolegui/control/cursor.py rename to xtermgui/control/cursor.py diff --git a/consolegui/control/rgb.py b/xtermgui/control/rgb.py similarity index 100% rename from consolegui/control/rgb.py rename to xtermgui/control/rgb.py diff --git a/consolegui/control/rgbs.py b/xtermgui/control/rgbs.py similarity index 100% rename from consolegui/control/rgbs.py rename to xtermgui/control/rgbs.py diff --git a/consolegui/control/style.py b/xtermgui/control/style.py similarity index 100% rename from consolegui/control/style.py rename to xtermgui/control/style.py diff --git a/consolegui/control/styles.py b/xtermgui/control/styles.py similarity index 100% rename from consolegui/control/styles.py rename to xtermgui/control/styles.py diff --git a/consolegui/control/text.py b/xtermgui/control/text.py similarity index 100% rename from consolegui/control/text.py rename to xtermgui/control/text.py diff --git a/consolegui/control/types.py b/xtermgui/control/types.py similarity index 100% rename from consolegui/control/types.py rename to xtermgui/control/types.py diff --git a/consolegui/geometry/__init__.py b/xtermgui/geometry/__init__.py similarity index 100% rename from consolegui/geometry/__init__.py rename to xtermgui/geometry/__init__.py diff --git a/consolegui/geometry/coordinate.py b/xtermgui/geometry/coordinate.py similarity index 100% rename from consolegui/geometry/coordinate.py rename to xtermgui/geometry/coordinate.py diff --git a/consolegui/geometry/region.py b/xtermgui/geometry/region.py similarity index 100% rename from consolegui/geometry/region.py rename to xtermgui/geometry/region.py diff --git a/consolegui/gui/__init__.py b/xtermgui/gui/__init__.py similarity index 100% rename from consolegui/gui/__init__.py rename to xtermgui/gui/__init__.py diff --git a/consolegui/gui/gui.py b/xtermgui/gui/gui.py similarity index 100% rename from consolegui/gui/gui.py rename to xtermgui/gui/gui.py diff --git a/consolegui/gui/keyboard_interaction.py b/xtermgui/gui/keyboard_interaction.py similarity index 100% rename from consolegui/gui/keyboard_interaction.py rename to xtermgui/gui/keyboard_interaction.py diff --git a/consolegui/gui/mouse_interaction.py b/xtermgui/gui/mouse_interaction.py similarity index 100% rename from consolegui/gui/mouse_interaction.py rename to xtermgui/gui/mouse_interaction.py diff --git a/consolegui/input/__init__.py b/xtermgui/input/__init__.py similarity index 100% rename from consolegui/input/__init__.py rename to xtermgui/input/__init__.py diff --git a/consolegui/input/event.py b/xtermgui/input/event.py similarity index 100% rename from consolegui/input/event.py rename to xtermgui/input/event.py diff --git a/consolegui/input/events.py b/xtermgui/input/events.py similarity index 100% rename from consolegui/input/events.py rename to xtermgui/input/events.py diff --git a/consolegui/input/input.py b/xtermgui/input/input.py similarity index 100% rename from consolegui/input/input.py rename to xtermgui/input/input.py diff --git a/consolegui/input/keyboard_codes.py b/xtermgui/input/keyboard_codes.py similarity index 100% rename from consolegui/input/keyboard_codes.py rename to xtermgui/input/keyboard_codes.py diff --git a/consolegui/input/keyboard_event.py b/xtermgui/input/keyboard_event.py similarity index 100% rename from consolegui/input/keyboard_event.py rename to xtermgui/input/keyboard_event.py diff --git a/consolegui/input/mouse_codes.py b/xtermgui/input/mouse_codes.py similarity index 100% rename from consolegui/input/mouse_codes.py rename to xtermgui/input/mouse_codes.py diff --git a/consolegui/input/mouse_event.py b/xtermgui/input/mouse_event.py similarity index 100% rename from consolegui/input/mouse_event.py rename to xtermgui/input/mouse_event.py diff --git a/consolegui/input/setup.py b/xtermgui/input/setup.py similarity index 100% rename from consolegui/input/setup.py rename to xtermgui/input/setup.py diff --git a/consolegui/layered_gui/__init__.py b/xtermgui/layered_gui/__init__.py similarity index 100% rename from consolegui/layered_gui/__init__.py rename to xtermgui/layered_gui/__init__.py diff --git a/consolegui/layered_gui/gui.py b/xtermgui/layered_gui/gui.py similarity index 100% rename from consolegui/layered_gui/gui.py rename to xtermgui/layered_gui/gui.py diff --git a/consolegui/layered_gui/layer.py b/xtermgui/layered_gui/layer.py similarity index 100% rename from consolegui/layered_gui/layer.py rename to xtermgui/layered_gui/layer.py