mirror of
https://github.com/Pecusx/piradio-mini.git
synced 2026-05-21 14:49:42 +02:00
224 lines
6.9 KiB
Python
224 lines
6.9 KiB
Python
from widgets import StringWidget, TitleWidget, HBarWidget, VBarWidget, IconWidget, ScrollerWidget, FrameWidget,NumberWidget
|
|
|
|
|
|
class Screen(object):
|
|
|
|
""" LCDproc Screen Object """
|
|
|
|
def __init__(self, server, ref):
|
|
|
|
""" Constructor """
|
|
|
|
self.server = server
|
|
self.ref = ref
|
|
self.name = ref
|
|
self.width = None
|
|
self.height = None
|
|
self.priority = None
|
|
self.heartbeat = None
|
|
self.backlight = None
|
|
self.duration = None
|
|
self.timeout = None
|
|
self.cursor = None
|
|
self.cursor_x = None
|
|
self.cursor_y = None
|
|
self.widgets = dict()
|
|
|
|
self.server.request("screen_add %s" % (ref))
|
|
self.set_cursor("off")
|
|
|
|
|
|
def set_name(self, name):
|
|
|
|
""" Set Screen Name """
|
|
|
|
self.name = name
|
|
self.server.request("screen_set %s name %s" % (self.ref, self.name))
|
|
|
|
|
|
def set_width(self, width):
|
|
|
|
""" Set Screen Width """
|
|
|
|
if width > 0 and width <= self.server.server_info.get("screen_width"):
|
|
self.width = width
|
|
self.server.request("screen_set %s wid %i" % (self.ref, self.width))
|
|
|
|
|
|
def set_height(self, height):
|
|
|
|
""" Set Screen Height """
|
|
|
|
if height > 0 and height <= self.server.server_info.get("screen_height"):
|
|
self.height = height
|
|
self.server.request("screen_set %s hgt %i" % (self.ref, self.height))
|
|
|
|
|
|
def set_cursor_x(self, x):
|
|
|
|
""" Set Screen Cursor X Position """
|
|
|
|
if x >= 0 and x <= self.server.server_info.get("screen_width"):
|
|
self.cursor_x = x
|
|
self.server.request("screen_set %s cursor_x %i" % (self.ref, self.cursor_x))
|
|
|
|
|
|
def set_cursor_y(self, y):
|
|
|
|
""" Set Screen Cursor Y Position """
|
|
|
|
if y >= 0 and y <= self.server.server_info.get("screen_height"):
|
|
self.cursor_y = y
|
|
self.server.request("screen_set %s cursor_y %i" % (self.ref, self.cursor_y))
|
|
|
|
|
|
def set_duration(self, duration):
|
|
|
|
""" Set Screen Change Interval Duration """
|
|
|
|
if duration > 0:
|
|
self.duration = duration
|
|
self.server.request("screen_set %s duration %i" % (self.ref, (self.duration * 8)))
|
|
|
|
|
|
def set_timeout(self, timeout):
|
|
|
|
""" Set Screen Timeout Duration """
|
|
|
|
if timeout > 0:
|
|
self.timeout = timeout
|
|
self.server.request("screen_set %s timeout %i" % (self.ref, (self.timeout * 8)))
|
|
|
|
|
|
def set_priority(self, priority):
|
|
|
|
""" Set Screen Priority Class """
|
|
|
|
if priority in ["hidden", "background", "info", "foreground", "alert", "input"]:
|
|
self.priority = priority
|
|
self.server.request("screen_set %s priority %s" % (self.ref, self.priority))
|
|
|
|
|
|
def set_backlight(self, state):
|
|
|
|
""" Set Screen Backlight Mode """
|
|
|
|
if state in ["on", "off", "toggle", "open", "blink", "flash"]:
|
|
self.backlight = state
|
|
self.server.request("screen_set %s backlight %s" % (self.ref, self.backlight))
|
|
|
|
|
|
def set_heartbeat(self, state):
|
|
|
|
""" Set Screen Heartbeat Display Mode """
|
|
|
|
if state in ["on", "off", "open"]:
|
|
self.heartbeat = state
|
|
self.server.request("screen_set %s heartbeat %s" % (self.ref, self.heartbeat))
|
|
|
|
|
|
def set_cursor(self, cursor):
|
|
|
|
""" Set Screen Cursor Mode """
|
|
|
|
if cursor in ["on", "off", "under", "block"]:
|
|
self.cursor = cursor
|
|
self.server.request("screen_set %s cursor %s" % (self.ref, self.cursor))
|
|
|
|
|
|
def clear(self):
|
|
|
|
""" Clear Screen """
|
|
|
|
w1 = StringWidget(self, ref="_w1_", text=" "*20, x=1, y=1)
|
|
w2 = StringWidget(self, ref="_w2_", text=" "*20, x=1, y=2)
|
|
w3 = StringWidget(self, ref="_w3_", text=" "*20, x=1, y=3)
|
|
w4 = StringWidget(self, ref="_w4_", text=" "*20, x=1, y=4)
|
|
|
|
|
|
def add_string_widget(self, ref, text="Text", x=1, y=1):
|
|
|
|
""" Add String Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = StringWidget(screen=self, ref=ref, text=text, x=x, y=y)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_title_widget(self, ref, text="Title"):
|
|
|
|
""" Add Title Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = TitleWidget(screen=self, ref=ref, text=text)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_hbar_widget(self, ref, x=1, y=1, length=10):
|
|
|
|
""" Add Horizontal Bar Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = HBarWidget(screen=self, ref=ref, x=x, y=y, length=length)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_vbar_widget(self, ref, x=1, y=1, length=10):
|
|
|
|
""" Add Vertical Bar Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = VBarWidget(screen=self, ref=ref, x=x, y=y, length=length)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_icon_widget(self, ref, x=1, y=1, name="heart"):
|
|
|
|
""" Add Icon Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = IconWidget(screen=self, ref=ref, x=x, y=y, name=name)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_scroller_widget(self, ref, left=1, top=1, right=20, bottom=1, direction="h", speed=1, text="Message"):
|
|
|
|
""" Add Scroller Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = ScrollerWidget(screen=self, ref=ref, left=left, top=top, right=right, bottom=bottom, direction=direction, speed=speed, text=text)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_frame_widget(self, ref, left=1, top=1, right=20, bottom=1, width=20, height=4, direction="h", speed=1):
|
|
|
|
""" Add Frame Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = FrameWidget(screen=self, ref=ref, left=left, top=top, right=right, bottom=bottom, width=width, height=height, direction=direction, speed=speed)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
def add_number_widget(self, ref, x=1, value=1):
|
|
|
|
""" Add Number Widget """
|
|
|
|
if ref not in self.widgets:
|
|
widget = NumberWidget(screen=self, ref=ref, x=x, value=value)
|
|
self.widgets[ref] = widget
|
|
return self.widgets[ref]
|
|
|
|
|
|
|
|
def del_widget(self, ref):
|
|
""" Delete/Remove A Widget """
|
|
self.server.request("widget_del %s %s" % (self.name, ref))
|
|
del(self.widgets[ref])
|