pygametexteditor 0.5.3
A WYSIWYG-texteditor based on pygame.
License: MIT
Requires Python: >=3.6
Keywords: pygame,texteditor,text,editor

# A WYSIWYG-texteditor based on pygame for pygame

## Usage

The text editor can be inserted into any existing pygame window. 
A minimal example of it being activated within an existing pygame window can be found below.

The texteditor takes 5 obligatory parameters and 3 optional parameters.

##### Obligatory parameters
- ```offset_X``` : integer - the offset from the left border of the pygame screen
- ```offset_y``` : integer - the offset from the top border of the pygame screen
- ```textAreaWidth``` : integer - the width of texteditor
- ```textAreaHeight``` : integer - the height of texteditor
- ```screen``` : pygame display surface - on which the texteditor is to be displayed

##### Optional Parameters with default values

- ```line_numbers_flag``` - a boolean enabling showing line numbers 
    > Default: ```False```
- ```style``` - a String setting the color scheme of editor and syntax highlighting 
    > Default: ```'dark'```
- ```syntax_highlighting_flag``` - a boolean enabling syntax highlighting for Python code 
    > Default: ```False```

## Setup

##### Minimal pygame setup

```
import pygame
from pygametexteditor import TextEditor

pygame.init()
screenHeight = 600
screenWidth = 900
screen = pygame.display.set_mode((screenWidth, screenHeight))
pygame.display.set_caption("Pygame")
pygame.display.get_surface().fill((200, 200, 200))  # background coloring

```
##### Minimal texteditor setup
```
# parameters
screen = pygame.display.get_surface()  # get existing pygame window/screen
offset_X = 50  # offset from the left border of the pygame window
offset_Y = 50  # offset from the top border of the pygame window
textAreaHeight = 500
textAreaWidth = 800


# Instantiation
TX = TextEditor(offset_X, offset_Y, textAreaWidth, textAreaHeight, screen)

# TextEditor in a loop
while True:    
    TX.display_editor()  # displays editor functionality once per loop
    pygame.display.flip()  # updates pygame window

```

##### Retrieving text from the editor

The editor offers the function `get_text_as_string()` to retrieve the entire text 
as a String from the editor. Lines are separated by the new line character ```\n```.

The editor offers the function `get_text_as_list()` to retrieve the entire text as a list from the editor. 
Each String-item in the list represents one line from the editor.

##### Removing text from the editor

The editor offers the function `clear_text()` to clear the editor of any text.

## Customization

#### Line Numbers 
Line numbers can be shown on the left side of the editor. Line numbers begin with 0 as is the Pythonian way. 

Line numbers can be enabled and disabled with ```set_line_numbers(Boolean)```.


#### Syntax Highlighting

The editor comes with syntax highlighting for Python code. Tokenization is based on the ```pygment``` package. 

Syntax highlighting can be enabled/disabled with ```set_syntax_coloring(boolean_value)```.

The syntax colors being used are also specified in the yml style file.


#### Color-scheme customization

The editor uses a yml file to set the color-scheme for the editor itself and for the syntax coloring. 

Two styles are delivered with the editor, they can be activated respectively by:
- `set_colorscheme("dark")`
- `set_colorscheme("bright")`

A custom style can be loaded with the following method from a created yml file: 
- `set_colorscheme_from_yaml("X:\path\to\custom\filename.yml")`

All keys must be present with values. Acceptable values are 
RGB colors in the following format: ```(255, 255, 255)``` or ```255, 255, 255```.

The following keys are required in the ```stylename.yml``` file, syntax colors are only used if syntax
highlighting is enabled, but are still required to be included.

*Editor colors*
- `codingBackgroundColor`
- `codingScrollBarBackgroundColor`
- `lineNumberColor`
- `lineNumberBackgroundColor`
- `textColor`

*Syntax colors*
- `textColor_normal`
- `textColor_comments`
- `textColor_quotes`
- `textColor_operators`
- `textColor_keywords`
- `textColor_function`
- `textColor_builtin`