An open API service indexing awesome lists of open source software.

https://github.com/cheeksthegeek/pyjsoncanvas

A simple library for working with JSON Canvas (previously known as Obsidian Canvas) files.
https://github.com/cheeksthegeek/pyjsoncanvas

canvas diagramming diagrams json markdown obsidian python

Last synced: 7 months ago
JSON representation

A simple library for working with JSON Canvas (previously known as Obsidian Canvas) files.

Awesome Lists containing this project

README

          

# PyJSONCanvas

PyJSONCanvas is a Python library for working with JSON Canvas (previously known as Obsidian Canvas) files. It provides a simple and intuitive API for creating, editing, and manipulating canvas objects, nodes, and edges.

## Features

- Create, load, and save canvas files in JSON format
- Add, remove, and modify nodes (text, file, link, group)
- Add, remove, and modify edges with various styles and colors
- Validate canvas, nodes, and edges for integrity
- Get connections and adjacent nodes for a given node
- Extensive error handling and helpful exception messages

## Installation

You can install PyJSONCanvas using pip:

```
pip install PyJSONCanvas
```

## Usage

Here's a basic example of how to use PyJSONCanvas:

```python
from pyjsoncanvas import (
Canvas,
TextNode,
FileNode,
LinkNode,
GroupNode,
GroupNodeBackgroundStyle,
Edge,
Color,
)

# Create a new canvas
canvas = Canvas(nodes=[], edges=[])

# Add some nodes
text_node = TextNode(x=100, y=100, width=200, height=100, text="Hello, world!")
canvas.add_node(text_node)

file_node = FileNode(x=300, y=100, width=100, height=100, file="/path/to/file.png")
canvas.add_node(file_node)

# Add an edge
edge = Edge(
fromNode=text_node.id,
fromSide="bottom",
toNode=file_node.id,
toSide="top",
color=Color("#FF0000"),
label="Edge 1",
)
canvas.add_edge(edge)

# Save the canvas as JSON
json_str = canvas.to_json()

# Load the canvas from JSON
loaded_canvas = Canvas.from_json(json_str)

# Get a node
node = loaded_canvas.get_node(text_node.id)

# Get connections for a node
connections = loaded_canvas.get_connections(text_node.id)
```

## Documentation

For full documentation, please see the [PyJSONCanvas Documentation](docs/PyJSONCanvas.md).

## Contributing

We welcome contributions to PyJSONCanvas! If you find any issues or have suggestions for improvements, please open an issue or submit a pull request on the [GitHub repository](https://github.com/cheeksthegeek/PyJSONCanvas).

## License

PyJSONCanvas is released under the [MIT License](https://opensource.org/licenses/MIT).

## Support

If you have any questions or need further assistance, please open an issue on the [GitHub repository](https://github.com/cheeksthegeek/PyJSONCanvas) or contact the maintainers.