Skip to content
This repository has been archived by the owner on Nov 2, 2020. It is now read-only.

Commit

Permalink
Tidied up code
Browse files Browse the repository at this point in the history
Added comments and docstrings
  • Loading branch information
jinglemansweep committed Jan 18, 2010
1 parent 5f47d49 commit b260f89
Show file tree
Hide file tree
Showing 4 changed files with 143 additions and 35 deletions.
39 changes: 21 additions & 18 deletions examples.py
Expand Up @@ -4,43 +4,46 @@
import datetime

from lcdproc.server import Server
#from lcdproc.screen import Screen

def main():

lcd = Server("media", debug=False)
lcd.start_session()
screen = lcd.add_screen("Hello")
screen.set_cursor("off")
screen.set_heartbeat("off")
screen.set_backlight("on")


screen1 = lcd.add_screen("Screen1")
screen1.set_heartbeat("off")
screen1.set_duration(10)

screen2 = lcd.add_screen("Screen2")
screen2.set_heartbeat("off")
screen2.set_duration(2)

#string_widget = screen.add_string_widget("MyStringWidget", text="TestwWEJIowejioewjio", x=1, y=2)
#scroller_widget = screen.add_scroller_widget("MyScrollerWidget", text="This Is A Test Message, Yeah, Yeah, Yeah", speed=2)
#hbar_widget = screen.add_hbar_widget("MyHBarWidget", x=1, y=4, length=60)
#frame_widget = screen.add_frame_widget("MyFrameWidget")
num1_widget = screen.add_number_widget("MyNumber1Widget", x=1, value=0)
num2_widget = screen.add_number_widget("MyNumber2Widget", x=5, value=0)
num3_widget = screen.add_number_widget("MyNumber3Widget", x=9, value=0)
num4_widget = screen.add_number_widget("MyNumber4Widget", x=13, value=0)

num1_widget = screen1.add_number_widget("MyNumber1Widget", x=1, value=0)
num2_widget = screen1.add_number_widget("MyNumber2Widget", x=5, value=0)
num3_widget = screen1.add_number_widget("MyNumber3Widget", x=9, value=0)
num4_widget = screen1.add_number_widget("MyNumber4Widget", x=13, value=0)

time.sleep(2)

count = 0
progress = 0

while True:
sec = datetime.datetime.now().second
#string_widget.set_text("Hello" + str(count))
#hbar_widget.set_length(progress)

num1_widget.set_value(progress)
num2_widget.set_value(progress)
num3_widget.set_value(progress)
num4_widget.set_value(progress)
time.sleep(0.1)
count = count + 1

time.sleep(0.5)

progress = progress + 1
if progress > 9: progress = 0
pass


# Run

if __name__ == "__main__":
Expand Down
97 changes: 94 additions & 3 deletions lcdproc/screen.py
@@ -1,9 +1,15 @@
from widgets import StringWidget, TitleWidget, HBarWidget, VBarWidget, IconWidget, ScrollerWidget, FrameWidget,NumberWidget


class Screen(object):

def __init__(self, ref):
self.server = None
""" LCDproc Screen Object """

def __init__(self, server, ref):

""" Constructor """

self.server = server
self.ref = ref
self.name = ref
self.width = None
Expand All @@ -18,110 +24,195 @@ def __init__(self, ref):
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]
return self.widgets[ref]


34 changes: 20 additions & 14 deletions lcdproc/server.py
Expand Up @@ -5,23 +5,27 @@

from screen import Screen


class Server(object):

""" LCDproc Server Object """

def __init__(self, hostname="localhost", port=13666, debug=False):
"""
Constructor
"""

""" Constructor """

self.debug = debug
self.hostname = hostname
self.port = port
self.tn = telnetlib.Telnet(self.hostname, self.port)
self.server_info = dict()
self.screens = dict()


def start_session(self):
"""
Start Session
"""

""" Start Session """

response = self.request("hello")
bits = response.split(" ")
self.server_info.update({
Expand All @@ -33,11 +37,12 @@ def start_session(self):
"cell_height": int(bits[13])
})
return response


def request(self, command_string):
"""
Request
"""

""" Request """

self.tn.write(command_string + "\n")
if self.debug: print "Telnet Request: %s" % (command_string)
response = urllib.unquote(self.tn.read_until("\n"))
Expand All @@ -46,11 +51,12 @@ def request(self, command_string):


def add_screen(self, ref):

""" Add Screen """

if ref not in self.screens:
response = self.request("screen_add %s" % (ref))
if "success" not in response: return None
screen = Screen(ref)
screen.server = self
screen = Screen(self, ref)
screen.clear()
self.screens[ref] = screen
return self.screens[ref]
return self.screens[ref]

8 changes: 8 additions & 0 deletions lcdproc/widgets.py
Expand Up @@ -2,6 +2,8 @@

class StringWidget(object):

""" String Widget """

def __init__(self, screen, ref, x, y, text):

self.screen = screen
Expand All @@ -13,20 +15,24 @@ def __init__(self, screen, ref, x, y, text):
self.screen.server.request("widget_add %s %s %s" % (self.screen.ref, self.ref, "string"))
self.update()


def update(self):

self.screen.server.request('widget_set %s %s %s %s "%s"' % (self.screen.ref, self.ref, self.x, self.y, self.text))


def set_x(self, x):

self.x = x
self.update()


def set_y(self, y):

self.y = y
self.update()


def set_text(self, text):

self.text = text
Expand All @@ -35,6 +41,8 @@ def set_text(self, text):

class TitleWidget(object):

""" Title Widget """

def __init__(self, screen, ref, text):

self.screen = screen
Expand Down

0 comments on commit b260f89

Please sign in to comment.