diff --git a/grzegorz_clients/constants.py b/grzegorz_clients/constants.py index 8deed6c..ef804d3 100644 --- a/grzegorz_clients/constants.py +++ b/grzegorz_clients/constants.py @@ -1,36 +1,40 @@ -# Colors -COLOR_BLUE = "rgb(33, 150, 243)" -COLOR_BLUE_SHADOW = "rgba(33, 150, 243, 0.75)" -COLOR_LIGHT_BLUE = "#e3f2fd" -COLOR_INDIGO = "#6610f2" -COLOR_PURPLE = "#6f42c1" -COLOR_PINK = "#e83e8c" -COLOR_RED = "#dd2c00" -COLOR_ORANGE = "#fd7e14" -COLOR_YELLOW = "#ffc107" -COLOR_GREEN = "#28a745" -COLOR_TEAL = "#20c997" -COLOR_CYAN = "#17a2b8" -COLOR_WHITE = "#fff" -COLOR_GRAY_LIGHT = "#abc" -COLOR_GRAY = "#6c757d" -COLOR_GRAY_DARK = "#343a40" -COLOR_PRIMARY = "#007bff" -COLOR_SECONDARY = "#6c757d" -COLOR_SUCCESS = "#28a745" -COLOR_INFO = "#17a2b8" -COLOR_WARNING = "#ffc107" -COLOR_DANGER = "#dc3545" -COLOR_LIGHT = "#f8f9fa" -COLOR_DARK = "#343a40" +@(lambda x: x()) # singleton +class colors: + BLUE = "rgb(33, 150, 243)" + BLUE_SHADOW = "rgba(33, 150, 243, 0.75)" + LIGHT_BLUE = "#e3f2fd" + INDIGO = "#6610f2" + PURPLE = "#6f42c1" + PINK = "#e83e8c" + RED = "#dd2c00" + ORANGE = "#fd7e14" + YELLOW = "#ffc107" + GREEN = "#28a745" + TEAL = "#20c997" + CYAN = "#17a2b8" + WHITE = "#fff" + GRAY_LIGHT = "#abc" + GRAY = "#6c757d" + GRAY_DARK = "#343a40" + PRIMARY = "#007bff" + SECONDARY = "#6c757d" + SUCCESS = "#28a745" + INFO = "#17a2b8" + WARNING = "#ffc107" + DANGER = "#dc3545" + LIGHT = "#f8f9fa" + DARK = "#343a40" -# Font Awesome -ICON_PARTY = '' -ICON_PREV = '' -ICON_NEXT = '' -ICON_PLAY = '' -ICON_PAUSE = '' -ICON_TRASH = '' -ICON_GOTO = '' -ICON_DOWN = '' -ICON_UP = '' +@(lambda x: x()) # singleton +class icons: + + # Font Awesome + PARTY = '' + PREV = '' + NEXT = '' + PLAY = '' + PAUSE = '' + TRASH = '' + GOTO = '' + DOWN = '' + UP = '' diff --git a/grzegorz_clients/remi_ui.py b/grzegorz_clients/remi_ui.py index c935a17..f79f4e4 100644 --- a/grzegorz_clients/remi_ui.py +++ b/grzegorz_clients/remi_ui.py @@ -1,10 +1,10 @@ -import random, os, time, shutil, sys +import os from threading import Timer import remi.gui as gui from remi import App from .utils import Namespace, call_as_thread, seconds_to_timestamp from . import api -from .constants import * +from .constants import colors, icons #globals: WIDTH_L = 400 @@ -27,14 +27,14 @@ class RemiApp(App): self.playback.playing = gui.Label("Now playing: None")# (TODO): update this - self.playback.party = gui.Button(ICON_PARTY) + self.playback.party = gui.Button(icons.PARTY) self.playback.party.attributes["onclick"] = "document.body.classList.toggle('dancing');" self.playback.party.attributes["title"] = "ENABLE PARTY MODE" # hover text - self.playback.previous = gui.Button(ICON_PREV) + self.playback.previous = gui.Button(icons.PREV) self.playback.previous.set_on_click_listener(self.playback_previous) - self.playback.play = gui.Button(ICON_PLAY) + self.playback.play = gui.Button(icons.PLAY) self.playback.play.set_on_click_listener(self.playback_play) - self.playback.next = gui.Button(ICON_NEXT) + self.playback.next = gui.Button(icons.NEXT) self.playback.next.set_on_click_listener(self.playback_next) self.playback.volume_label = gui.Label("Volume:") @@ -78,10 +78,10 @@ class RemiApp(App): # Playback: self.playback.party.style["background"] \ - = f"linear-gradient(40deg,{COLOR_PINK},{COLOR_TEAL})" + = f"linear-gradient(40deg,{colors.PINK},{colors.TEAL})" self.playback.play.style["background"] \ - = f"linear-gradient(40deg,{COLOR_BLUE},{COLOR_PURPLE})" + = f"linear-gradient(40deg,{colors.BLUE},{colors.PURPLE})" self.playback.volume_label.style["font-size"] = "0.8em" @@ -101,9 +101,9 @@ class RemiApp(App): .style["width"] = "100%" self.playlist.clear.style["background"] \ - = f"linear-gradient(40deg,{COLOR_RED},{COLOR_ORANGE})" + = f"linear-gradient(40deg,{colors.RED},{colors.ORANGE})" self.playlist.shuffle.style["background"] \ - = f"linear-gradient(40deg,{COLOR_TEAL},{COLOR_GREEN})" + = f"linear-gradient(40deg,{colors.TEAL},{colors.GREEN})" for i in (self.playlist.shuffle, self.playlist.clear): i.style["height"] = "1.8em" @@ -114,8 +114,8 @@ class RemiApp(App): # Input field: self.input.field.style["height"] = "20px" self.input.field.style["margin"] = "5px" - self.input.field.style["border"] = "1px solid %s" % COLOR_BLUE - self.input.field.style["box-shadow"] = "0px 0px 5px 0px %s" % COLOR_BLUE_SHADOW + self.input.field.style["border"] = "1px solid %s" % colors.BLUE + self.input.field.style["box-shadow"] = "0px 0px 5px 0px %s" % colors.BLUE_SHADOW self.input.field.style["align-self"] = "flex-start" self.input.submit.style["margin"] = "0px 5px" @@ -333,10 +333,10 @@ class RemiApp(App): playlist_item["index"], name, seconds_to_timestamp(length) if length else "--:--", - ICON_GOTO, - ICON_UP, - ICON_DOWN, - ICON_TRASH, + icons.GOTO, + icons.UP, + icons.DOWN, + icons.TRASH, ]) this_playlist = list(zip(table, [i.get("current", False) for i in playlist])) # ew, but it works... @@ -355,9 +355,9 @@ class RemiApp(App): if playlist_item.get("current", False): self.playback.previous.set_enabled(playlist_item.get("index") != 0) self.playback.next.set_enabled(playlist_item.get("index") != N-1) - row_widget.style["background-color"] = COLOR_LIGHT_BLUE + row_widget.style["background-color"] = colors.LIGHT_BLUE else: - row_widget.style["color"] = COLOR_GRAY_DARK + row_widget.style["color"] = colors.GRAY_DARK # for each item element in this row: @@ -366,38 +366,38 @@ class RemiApp(App): if item_index == 1 and "failed" in playlist_item.get("data", {}): item_widget.style["width"] = "1.1em" - item_widget.style["color"] = COLOR_RED + item_widget.style["color"] = colors.RED if item_index >= 3: item_widget.style["width"] = "1.1em" if item_index == 3: # seek here - item_widget.style["color"] = COLOR_GREEN#COLOR_RED if playlist_item.get("current", False) else + item_widget.style["color"] = colors.GREEN#colors.RED if playlist_item.get("current", False) else item_widget.set_on_click_listener(self.on_table_item_play_item, playlist_item) item_widget.attributes["title"] = "Play this item" if item_index == 4: # move up item_widget.set_on_click_listener(self.on_table_item_move_click, playlist_item, False) if playlist_item["index"] == 0: - item_widget.style["color"] = COLOR_GRAY_LIGHT + item_widget.style["color"] = colors.GRAY_LIGHT else: - item_widget.style["color"] = COLOR_TEAL + item_widget.style["color"] = colors.TEAL item_widget.attributes["title"] = "Move this item up the playlist" if item_index == 5: # move down item_widget.set_on_click_listener(self.on_table_item_move_click, playlist_item, True) if playlist_item["index"] == N-1: - item_widget.style["color"] = COLOR_GRAY_LIGHT + item_widget.style["color"] = colors.GRAY_LIGHT else: - item_widget.style["color"] = COLOR_TEAL + item_widget.style["color"] = colors.TEAL item_widget.attributes["title"] = "Move this item down the playlist" if item_index == 6: # remove from playlist - item_widget.style["color"] = COLOR_RED + item_widget.style["color"] = colors.RED item_widget.set_on_click_listener(self.on_table_item_remove_click, playlist_item) item_widget.attributes["title"] = "Remove this item from the playlist" #print(index, key, item_widget) def set_playing(self, is_playing:bool): # Only updates GUI elements! - self.playback.play.set_text(ICON_PAUSE if is_playing else ICON_PLAY) + self.playback.play.set_text(icons.PAUSE if is_playing else icons.PLAY) self.playback.seek_slider.set_enabled(is_playing)