Metadata-Version: 2.3
Name: pysimultanui
Version: 1.4.0
Project-URL: Documentation, https://github.com/BÃ¼hler Maximilian/pysimultanui#readme
Project-URL: Issues, https://github.com/BÃ¼hler Maximilian/pysimultanui/issues
Project-URL: Source, https://github.com/BÃ¼hler Maximilian/pysimultanui
Author-email: BÃ¼hler Maximilian <maximilian.buehler@a1.digital>
Maintainer-email: TU Wien <maximilian.buehler@tuwien.ac.at>
License-Expression: MIT
License-File: LICENSE.txt
Classifier: Development Status :: 4 - Beta
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3.8
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: Implementation :: CPython
Classifier: Programming Language :: Python :: Implementation :: PyPy
Requires-Python: >=3.8
Requires-Dist: colorlog
Requires-Dist: fastapi[all]
Requires-Dist: gmsh
Requires-Dist: jinja2
Requires-Dist: meshio
Requires-Dist: nicegui>=1.4.22
Requires-Dist: numpy
Requires-Dist: pandas
Requires-Dist: paramiko
Requires-Dist: plotly
Requires-Dist: pyarrow
Requires-Dist: pydantic
Requires-Dist: pysimultan
Requires-Dist: ruamel-yaml
Requires-Dist: tqdm
Requires-Dist: trimesh
Requires-Dist: uvicorn[standard]
Description-Content-Type: text/markdown

===================================================
pysimultanui
===================================================

Python library for creating simple user interfaces 
for PySimultan

## Installation

pysimultanui can be installed using pip:

```bash
pip install pysimultanui
```

## Usage

### Running the UI
uvicorn is used to run the UI. To run the UI, use the following command:








```python
import pysimultanui as psui
from PySimultan2.taxonomy_maps import TaxonomyMap, Content

# example class to be mapped:


class ExampleClass:
    def __init__(self, *args, **kwargs):
        self.a = kwargs.get('a', None)
        self.b = kwargs.get('b', None)
        self.c = None

    def add(self):
        self.c = self.a + self.b

    def subtract(self):
        self.c = self.a - self.b

    def multiply(self):
        self.c = self.a * self.b


# create content and taxonomy map:
contents = {}

contents['a'] = Content(text_or_key='a_in_simultan',
                        property_name='a',
                        type=None,
                        unit=None,
                        documentation='Content a')

contents['b'] = Content(text_or_key='b_in_simultan',
                        property_name='b',
                        type=None,
                        unit=None,
                        documentation='Content b')

contents['c'] = Content(text_or_key='c_in_simultan',
                        property_name='c',
                        type=None,
                        unit=None,
                        documentation='Content c')

example_class_map = TaxonomyMap(taxonomy_name='PySimultanUI',
                                taxonomy_key='PySimultanUI',
                                taxonomy_entry_name='ExampleClass',
                                taxonomy_entry_key='ExampleClass',
                                content=[contents['a'],
                                         contents['b'],
                                         contents['c']
                                         ],
                                )

# get the mapper:
mapper = psui.core.mapper

# register the class to be mapped:
mapper.register(example_class_map.taxonomy_entry_key,
                ExampleClass,
                taxonomy_map=example_class_map)


# register methods:
cls = mapper.get_mapped_class('ExampleClass')

# get the method mapper:
method_mapper = psui.core.method_mapper

method_mapper.register_method(cls=cls,
                              name='subtract',
                              method=cls.subtract,
                              args=[],
                              kwargs={})

method_mapper.register_method(cls=cls,
                              name='add',
                              method=cls.add,
                              args=[],
                              kwargs={})

method_mapper.register_method(cls=cls,
                              name='multiply',
                              method=cls.multiply,
                              args=[],
                              kwargs={})

# run the UI:
psui.run_ui()
```
