|
@@ -0,0 +1,48 @@
|
|
|
|
+#!./bin/python3
|
|
|
|
+
|
|
|
|
+import yaml
|
|
|
|
+import pygame # type: ignore
|
|
|
|
+
|
|
|
|
+# Color constants
|
|
|
|
+
|
|
|
|
+BLACK = (0, 0, 0)
|
|
|
|
+GREEN = (0, 255, 0)
|
|
|
|
+
|
|
|
|
+class Display:
|
|
|
|
+ '''
|
|
|
|
+ Display object
|
|
|
|
+ '''
|
|
|
|
+ def __init__(self, config, pydsp):
|
|
|
|
+
|
|
|
|
+ # Set config values
|
|
|
|
+
|
|
|
|
+ self._dx = config.get("dimx", 128)
|
|
|
|
+ self._dy = config.get("dimy", 160)
|
|
|
|
+ self._playlistFile = config.get("playlist", "music.yml")
|
|
|
|
+ self._pydsp = pydsp # Pygame display object
|
|
|
|
+ self._fontsize = config.get("fontsize", 12)
|
|
|
|
+
|
|
|
|
+ # Set initialisation values
|
|
|
|
+
|
|
|
|
+ self._selection_pointer = 0 # Current selected value
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ def update(self):
|
|
|
|
+ '''
|
|
|
|
+ Load the data from the given config file.
|
|
|
|
+ '''
|
|
|
|
+ playlist = yaml.safe_load(open(self._playlistFile))
|
|
|
|
+
|
|
|
|
+ font = pygame.font.Font('freesansbold.ttf', self._fontsize)
|
|
|
|
+ drawline = 0 # Line currently drawm
|
|
|
|
+
|
|
|
|
+ for i, item in enumerate(playlist.get("playlist", [])):
|
|
|
|
+ print(item["name"])
|
|
|
|
+
|
|
|
|
+ if drawline == self._selection_pointer:
|
|
|
|
+ text = font.render(item["name"], True, BLACK, GREEN)
|
|
|
|
+ else:
|
|
|
|
+ text = font.render(item["name"], True, GREEN, BLACK)
|
|
|
|
+
|
|
|
|
+ self._pydsp.blit(text, (0, drawline * self._fontsize))
|
|
|
|
+ drawline += 1
|