2021-09-13 16:50:23 +00:00
|
|
|
|
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.
|
|
|
|
|
|
2021-09-21 15:27:39 +00:00
|
|
|
|
---
|
|
|
|
|
|
2021-09-13 16:50:23 +00:00
|
|
|
|
Arguments:
|
2021-09-21 15:27:39 +00:00
|
|
|
|
- `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.
|
2021-09-13 16:50:23 +00:00
|
|
|
|
|
|
|
|
|
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.
|
2021-09-21 15:27:39 +00:00
|
|
|
|
|
|
|
|
|
---
|
2021-09-13 16:50:23 +00:00
|
|
|
|
|
|
|
|
|
Parameters:
|
2021-09-21 15:27:39 +00:00
|
|
|
|
- `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
|
2021-09-13 16:50:23 +00:00
|
|
|
|
|
2021-09-21 15:27:39 +00:00
|
|
|
|
---
|
2021-09-13 16:50:23 +00:00
|
|
|
|
|
|
|
|
|
Events:
|
2021-09-21 15:27:39 +00:00
|
|
|
|
- `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’).
|
2021-09-13 16:50:23 +00:00
|
|
|
|
"""
|
|
|
|
|
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.
|
|
|
|
|
"""
|
|
|
|
|
...
|