Metadata-Version: 2.1
Name: phoebusgen
Version: 0.0.7
Summary: Control screen generator for Phoebus
Home-page: https://github.com/tynanford/phoebusgen
Author: Tynan Ford
Author-email: tford@lbl.gov
License: UNKNOWN
Platform: UNKNOWN
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: GNU General Public License v2 (GPLv2)
Classifier: Operating System :: OS Independent
Classifier: Development Status :: 3 - Alpha
Classifier: Topic :: Software Development :: Code Generators
Requires-Python: >=3.5
Description-Content-Type: text/markdown
Requires-Dist: pyyaml (>=3)

Python Module to Generate Phoebus Control Screens
===

[![Python unittest Status](https://github.com/tynanford/phoebusgen/workflows/Python%20unittest/badge.svg)](https://github.com/tynanford/phoebusgen/actions)
[![codecov](https://codecov.io/gh/tynanford/phoebusgen/branch/master/graph/badge.svg)](https://codecov.io/gh/tynanford/phoebusgen)

Phoebus is the next generation of Control System Studio, a graphical platform for EPICS control systems.
https://github.com/ControlSystemStudio/phoebus

This module aims to provide a way to generate Phoebus xml through Python.

# Requirements

- Python >= 3.5
- [pyyaml](https://pypi.org/project/PyYAML/)
  - ```pip install pyyaml```

# Install
Pip Package: [phoebusgen](https://pypi.org/project/phoebusgen/)
```
pip install phoebusgen
```

# Intro

```
>>> import phoebusgen.widget as w
>>> text_update_widget = w.TextUpdate('test widget', 'TEST:PV', 10, 20, 20, 50)
>>> text_update_widget.predefined_foreground_color('OK')
>>> print(text_update_widget)
<?xml version="1.0" ?>
<widget type="textupdate" version="2.0.0">
  <name>test widget</name>
  <x>10</x>
  <y>20</y>
  <width>20</width>
  <height>50</height>
  <pv_name>TEST:PV</pv_name>
  <foreground_color>
    <color red="0" green="255" blue="0" alpha="255" name="OK"/>
  </foreground_color>
</widget>
```


# Modules 

## phoebusgen.widget

Low Level Python API to directly create Phoebus widgets

Widgets Finished:
- Arc
- Ellipse
- Label
- Picture
- Rectangle
- Progress Bar
- Tank
- Text Update
- Thermometer
- Check Box
- Radio Button
- Slide Button
- Text Entry
- Action Button
- LED
- Array
- Embedded Display
- Group
- 3DViewer

Example
- ```text_update_xml = phoebusgen.widget.TextUpdate(widget_name, pv_name, x, y, height, width)```


## phoebusgen.screen 

```
>>> import phoebusgen.screen
>>> import phoebusgen.widget
>>> my_screen = phoebusgen.screen.Screen("my screen")
>>> print(my_screen)
<?xml version="1.0" ?>
<display version="2.0.0">
  <name>my screen</name>
</display>

>>> my_widget = phoebusgen.widget.TextUpdate("test", "test:PV", 10, 10 ,10 ,10)
>>> my_screen.add_widget(my_widget)
>>> print(my_screen)
<?xml version="1.0" ?>
<display version="2.0.0">
  <name>my screen</name>
  <widget type="textupdate" version="2.0.0">
    <name>test</name>
    <x>10</x>
    <y>10</y>
    <width>10</width>
    <height>10</height>
    <pv_name>test:PV</pv_name>
  </widget>
</display>
```





