Metadata-Version: 2.4
Name: graphos
Version: 0.2.5
Summary: Terminal graph visualization tool.
Author: Edgardo Gutierrez Jr.
Author-email: edgardogutierrezjr@gmail.com
Requires-Python: >=3.10
Description-Content-Type: text/markdown
Requires-Dist: debugpy>=1.8.14
Requires-Dist: rich>=14.0.0
Requires-Dist: setuptools>=79.0.1
Requires-Dist: twine>=6.1.0
Dynamic: author
Dynamic: author-email
Dynamic: requires-python

# Graphos

Basic terminal GUI for flow charts style graphs.

## Installation

https://pypi.org/project/graphos/

`$ pip install graphos`

## Controls

### Keybindings

| Control           | Keybind | Description                                |
| :---------------- | :-----: | :----------------------------------------- |
| Create node       |    N    | Creates a node at the cursor location      |
| Create edge       |    E    | Creates an edge between two selected nodes |
| Grab Node         |    E    | Toggle grab when the cursor is over a node |
| Save              |    S    | Save nodes and edges to a json file        |
| Move cursor left  |   ⬅️    | Move cursor left                           |
| Move cursor right |   ➡️    | Move cursor right                          |
| Move cursor up    |   ⬆️    | Move cursor up                             |
| Move cursor down  |   ⬇️    | Move cursor down                           |
| Pan left          |    A    | Pan the view left                          |
| Pan right         |    D    | Pan the view right                         |
| Pan up            |    W    | Pan the view up                            |
| Pan down          |    S    | Pan the view down                          |
| Quit              |    Q    | Quit                                       |

### Mouse

ℹ️ Mouse functionality requires mouse event recording to be enabled by your preferred terminal.

| Control     |          Mouse event          | Description                                                                                             |
| :---------- | :---------------------------: | :------------------------------------------------------------------------------------------------------ |
| Select node |     Primary button click      | When the cursor is over a node, slick to select                                                         |
| Grab node   | Press and hold primary button | When the cursor is over the node, press and hold to grab the node, then move the mouse to drag the node |
