#!/usr/bin/env python3
# -*- coding: UTF-8 -*-
"""
Common
Common functions shared accross all Nextion elements
Check the description of Mixin
https://realpython.com/lessons/multiple-inheritance-python/
"""
# system packages
from time import sleep
[docs]class CommonError(Exception):
"""Base class for exceptions in this module."""
pass
[docs]class Common(object):
"""docstring for Common"""
def __init__(self, nh, pid: int, cid: int, name: str) -> None:
"""
Init gauge
:param nh: The Nextion hardware interface object
:type nh: NexHardware
:param pid: The page ID
:type pid: int
:param cid: The component ID
:type cid: int
:param name: The component name
:type name: str
"""
self._pid = pid
self._cid = cid
self._name = name
self._nh = nh
@property
def pid(self) -> int:
"""
Get page ID of element
:returns: Page ID
:rtype: int
"""
return self._pid
@property
def cid(self) -> int:
"""
Get component ID of element
:returns: Component ID
:rtype: int
"""
return self._cid
@property
def name(self) -> str:
"""
Get name of element
:returns: Name of element
:rtype: str
"""
return self._name
[docs] def hide(self) -> bool:
"""
Hide component on screen
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "vis {},0".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs] def show(self) -> bool:
"""
Show component on screen
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "vis {},1".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonBackgroundColorMixin(object):
"""docstring for CommonBackgroundColorMixin"""
[docs] def Get_background_color_bco(self) -> int:
"""
Get background color attribute of component
:returns: The background color
:rtype: int
"""
cmd = "get {}.bco".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def Set_background_color_bco(self, number: int) -> bool:
"""
Set background color attribute of component
:param number: The background color number
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.bco={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonFontMixin(object):
"""docstring for CommonFontMixin"""
[docs] def Get_font_color_pco(self) -> int:
"""
Get font color attribute of component
:returns: The font color
:rtype: int
"""
cmd = "get {}.pco".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def Set_font_color_pco(self, number: int) -> bool:
"""
Set font color attribute of component
:param number: The font color number
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.pco={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs] def getFont(self) -> int:
"""
Get font attribute of component
:returns: The font color
:rtype: int
"""
cmd = "get {}.font".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def setFont(self, number: int) -> bool:
"""
Set font attribute of component
:param number: The font number
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.font={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonPointerMixin(object):
"""docstring for CommonPointerMixin"""
[docs] def Get_pointer_thickness_wid(self) -> int:
"""
Get pointer wid attribute of component
:returns: The pointer thickness
:rtype: int
"""
cmd = "get {}.wid".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def Set_pointer_thickness_wid(self, number: int) -> bool:
"""
Set pointer hig attribute of component
:param number: The pointer thickness
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.wid={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonPositionMixin(object):
"""docstring for CommonPositionMixin"""
[docs] def Get_place_xcen(self) -> int:
"""
Get xcen attribute of component
:returns: The x position
:rtype: int
"""
cmd = "get {}.xcen".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def Set_place_xcen(self, number: int) -> bool:
"""
Get xcen attribute of component
:param number: The new x position
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.xcen={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs] def Get_place_ycen(self) -> int:
"""
Get ycen attribute of component
:returns: The y position
:rtype: int
"""
cmd = "get {}.ycen".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def Set_place_ycen(self, number: int) -> bool:
"""
Get ycen attribute of component
:param number: The new y position
:type number: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.ycen={}".format(self.name, number)
self._nh.sendCommand(cmd)
cmd = "ref {}".format(self.name)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonTextMixin(object):
"""docstring for CommonTextMixin"""
[docs] def getText(self) -> str:
"""
Get text attribute of component
:returns: The text.
:rtype: str
"""
cmd = "get {}.txt".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetString()
[docs] def setText(self, text: str) -> bool:
"""
Set text attribute of component
:param text: The text
:type text: str
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = '{}.txt="{}"'.format(self.name, text)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()
[docs]class CommonValueMixin(object):
"""docstring for CommonValueMixin"""
[docs] def getValue(self) -> int:
"""
Get value attribute of component
:returns: The value.
:rtype: int
"""
cmd = "get {}.val".format(self.name)
self._nh.sendCommand(cmd)
sleep(0.1) # necessary, data might not be available otherwise
return self._nh.recvRetNumber()
[docs] def setValue(self, value: int) -> bool:
"""
Set value attribute of component
:param text: The value
:type text: int
:returns: True on success, false otherwise
:rtype: bool
"""
cmd = "{}.val={}".format(self.name, value)
self._nh.sendCommand(cmd)
return self._nh.recvRetCommandFinished()