137 lines
6.4 KiB
Python
137 lines
6.4 KiB
Python
from typing import Union
|
||
import ui_wrapper, device
|
||
|
||
|
||
class Button():
|
||
""" Representation of Hard/Soft buttons
|
||
|
||
A button may trigger several events depending on the configuration; however, Touch Panels only issue Pressed and Released messages to the controller. Other events (e.g., Held, Repeated) are timer driven within the Button instance.
|
||
|
||
---
|
||
|
||
Arguments:
|
||
- `UIHost` (extronlib.device.UIDevice) - Device object hosting this UIObject
|
||
- `ID` (int,string) - ID or Name of the UIObject
|
||
- (optional) `holdTime` (float) - Time for Held event. Held event is triggered only once if the button is pressed and held beyond this time. If holdTime is given, it must be a floating point number specifying period of time in seconds of button being pressed and held to trigger Held event.
|
||
- (optional) `repeatTime` (float) - Time for Repeated event. After holdTime expires, the Repeated event is triggered for every additional repeatTime of button being held. If repeatTime is given, it must be a floating point number specifying time in seconds of button being held.
|
||
|
||
Note: If button is released before holdTime expires, a Tapped event is triggered instead of a Released event. If the button is released after holdTime expires, there will be no Tapped event.
|
||
|
||
---
|
||
|
||
Parameters:
|
||
- `BlinkState` - Returns (string) - the current blink state ('Not blinking' or 'Blinking')
|
||
- `Enabled` - Returns (bool) - True if the control object is enabled else False
|
||
- `Host` - Returns (extronlib.device.UIDevice) - UIDevice object that hosts this control object
|
||
- `ID` - Returns (int) - the object ID
|
||
- `Name` - Returns (string) - the object Name
|
||
- `PressedState` - Returns (bool) - True if the button is pressed, else False
|
||
- `State` - Returns (int) - the current visual state number > Note: It does not return the current state if the button is blinking.
|
||
- `Visible` - Returns (bool) - True if the control object is visible else False
|
||
|
||
---
|
||
|
||
Events:
|
||
- `Held` - (Event) Get/Set the callback when hold expire event is triggered. The callback function must accept exactly two parameters, which are the Button that triggers the event and the state (e.g. ‘Held’).
|
||
- `Pressed` - (Event) Get/Set the callback when the button is pressed. The callback function must accept exactly two parameters, which are the Button that triggers the event and the state (e.g. ‘Pressed’).
|
||
- `Released` - (Event) Get/Set the callback when the button is released. The callback function must accept exactly two parameters, which are the Button that triggers the event and the state (e.g. ‘Held’).
|
||
- `Repeated` - (Event) Get/Set the callback when repeat event is triggered. The callback function must accept exactly two parameters, which are the Button that triggers the event and the state (e.g. ‘Repeated’).
|
||
- `Tapped` - (Event) Get/Set the callback when tap event is triggered. The callback function must accept exactly two parameters, which are the Button that triggers the event and the state (e.g. ‘Tapped’).
|
||
"""
|
||
UIHost = None
|
||
ID = 0
|
||
holdTime = 0.0
|
||
repeatTime = 0.0
|
||
BlinkState = ''
|
||
Enabled = True
|
||
Held = None
|
||
Name = ''
|
||
Pressed = None
|
||
PressedState = True
|
||
Released = None
|
||
Repeated = None
|
||
State = 0
|
||
Tapped = None
|
||
Visible = True
|
||
|
||
def __init__(self, UIHost: device.UIDevice, ID: Union[int, str], holdTime: float=None, repeatTime: float=None) -> None:
|
||
""" Button class constructor.
|
||
|
||
Arguments:
|
||
- UIHost (extronlib.device.UIDevice) - Device object hosting this UIObject
|
||
- ID (int,string) - ID or Name of the UIObject
|
||
- (optional) holdTime (float) - Time for Held event. Held event is triggered only once if the button is pressed and held beyond this time. If holdTime is given, it must be a floating point number specifying period of time in seconds of button being pressed and held to trigger Held event.
|
||
- (optional) repeatTime (float) - Time for Repeated event. After holdTime expires, the Repeated event is triggered for every additional repeatTime of button being held. If repeatTime is given, it must be a floating point number specifying time in seconds of button being held.
|
||
"""
|
||
...
|
||
|
||
def CustomBlink(self, rate: float, stateList: list[int]) -> None:
|
||
""" Make the button cycle through each of the states provided.
|
||
|
||
Arguments:
|
||
- rate (float) - duration of time in seconds for one visual state to stay until replaced by the next visual state.
|
||
- stateList (list of ints) - list of visual states that this button blinks among.
|
||
"""
|
||
...
|
||
|
||
def SetBlinking(self, rate: str, stateList: list[int]) -> None:
|
||
""" Make the button cycle, at ADA compliant rates, through each of the states provided.
|
||
|
||
```
|
||
+-----------+-------------+
|
||
| Rate | Frequency |
|
||
+===========+=============+
|
||
| Slow | 0.5 Hz |
|
||
+-----------+-------------+
|
||
| Medium | 1 Hz |
|
||
+-----------+-------------+
|
||
| Fast | 2 Hz |
|
||
+-----------+-------------+
|
||
```
|
||
|
||
Note: Using this function will blink in unison with other buttons.
|
||
|
||
Arguments:
|
||
- rate (string) - ADA compliant blink rate. ('Slow', 'Medium', 'Fast')
|
||
- stateList (list of ints) - list of visual states that this button blinks among.
|
||
|
||
"""
|
||
...
|
||
|
||
def SetEnable(self, enable: bool) -> None:
|
||
""" Enable or disable an UI control object.
|
||
|
||
Arguments:
|
||
- enable (bool) - True to enable the object or False to disable it.
|
||
"""
|
||
...
|
||
|
||
def SetState(self, State: int) -> None:
|
||
""" Set the current visual state
|
||
|
||
Arguments:
|
||
- State (int) - visual state number
|
||
|
||
Note: Setting the current state stops button from blinking, if it is running. (SetBlinking())
|
||
"""
|
||
...
|
||
|
||
def SetText(self, text: str) -> None:
|
||
""" Specify text to display on the UIObject
|
||
|
||
Arguments:
|
||
- text (string) - text to display
|
||
|
||
Raises:
|
||
- TypeError
|
||
"""
|
||
...
|
||
|
||
def SetVisible(self, visible: bool) -> None:
|
||
""" Change the visibility of an UI control object.
|
||
|
||
Arguments:
|
||
- visible (bool) - True to make the object visible or False to hide it.
|
||
"""
|
||
...
|