Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 9 additions & 9 deletions devdeck_core/controls/deck_control.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ class DeckControlContextBlock(Exception):


class DeckContextManager:
def __init__(self, deck_context, key_no):
def __init__(self, deck_context, key_no: int):
self.deck_context = deck_context
self.key_no = key_no

Expand All @@ -23,7 +23,7 @@ def __enter__(self):
else:
return ControlContext(self.deck_context, self.key_no)

def trace(self, frame, event, arg):
def trace(self, frame, event, arg) -> DeckControlContextBlock:
raise DeckControlContextBlock()

def __exit__(self, type, value, traceback):
Expand All @@ -40,25 +40,25 @@ def __init__(self, key_no, **kwargs):
self.settings = kwargs
self.validate_settings()

def set_deck_context(self, deck_context):
async def set_deck_context(self, deck_context):
self.__deck_context = deck_context

def clear_deck_context(self):
async def clear_deck_context(self):
self.__deck_context = None

def deck_context(self):
def deck_context(self) -> DeckContextManager:
return DeckContextManager(self.__deck_context, self.__key_no)

def dispose(self):
async def dispose(self):
pass

def initialize(self):
async def initialize(self):
pass

def pressed(self):
async def pressed(self):
pass

def released(self):
async def released(self):
pass

def settings_schema(self):
Expand Down
25 changes: 13 additions & 12 deletions devdeck_core/decks/deck_controller.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,10 +11,10 @@ def __init__(self, key_no, **kwargs):
super().__init__(key_no, **kwargs)
self.deck_controls()

def clear_deck_context(self):
async def clear_deck_context(self):
for key_no, control in self.controls.items():
control.clear_deck_context()
super().clear_deck_context()
await control.clear_deck_context()
await super().clear_deck_context()

def dispose(self):
for key_no, control in self.controls.items():
Expand All @@ -26,40 +26,41 @@ def register_control(self, key_no, control_class, **settings):
def deck_controls(self):
pass

def render(self, deck_context):
async def render(self, deck_context):
self.__logger.info("Rendering deck: %s", type(self).__name__)
self.__deck_context = deck_context
deck_context.reset_deck()
for key_no, control in self.controls.items():
control.set_deck_context(deck_context)
await control.set_deck_context(deck_context)
try:
control.initialize()
await control.initialize()
except Exception as ex:
self.__logger.error("Key %s (%s) initialize() raised an unhandled exception: %s",
key_no, type(self).__name__, str(ex))
self.__logger.info("Rendering complete: %s", type(self).__name__)

def pressed(self, key_no):
async def pressed(self, key_no: int):
if key_no not in self.controls:
return
if issubclass(type(self.controls[key_no]), DeckController):
return
self.__logger.info("Key %s pressed on %s", key_no, type(self).__name__)
try:
self.controls[key_no].pressed()
await self.controls[key_no].pressed()
except Exception as ex:
self.__logger.error("Key %s (%s) pressed() raised an unhandled exception: %s",
key_no, type(self).__name__, str(ex))

def released(self, key_no):
async def released(self, key_no: int):
if key_no not in self.controls:
return
if issubclass(type(self.controls[key_no]), DeckController):
self.__deck_context.set_active_deck(self.controls[key_no])
await self.__deck_context.set_active_deck(self.controls[key_no])
return
self.__logger.info("Key %s released on %s", key_no, type(self).__name__)
try:
self.controls[key_no].released()
await self.controls[key_no].released()
except Exception as ex:
self.__logger.error("Key %s (%s) released() raised an unhandled exception: %s",
key_no, type(self).__name__, str(ex))
self.__deck_context.pop_active_deck()
await self.__deck_context.pop_active_deck()
8 changes: 4 additions & 4 deletions devdeck_core/renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,16 +29,16 @@ def background_color(self, color):
draw = ImageDraw.Draw(self.img)
draw.rectangle((0, 0, self.img.width, self.img.height), fill=color)

def badge_count(self, count):
def badge_count(self, count) -> BadgeCountRenderer:
return BadgeCountRenderer(self, count)

def emoji(self, emoji_name):
def emoji(self, emoji_name) -> EmojiRenderer:
return EmojiRenderer(self, emoji_name)

def image(self, filename):
def image(self, filename) -> ImageRenderer:
return ImageRenderer(self, filename)

def text(self, text):
def text(self, text) -> TextRenderer:
return TextRenderer(self, text)

def colorize(self, color):
Expand Down
4 changes: 2 additions & 2 deletions devdeck_core/rendering/badge_count_renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


class BadgeCountRenderer:
def __init__(self, renderer, count):
def __init__(self, renderer, count: int):
self.renderer = renderer
self.text = str(count)
self.font_filename = os.path.abspath(os.path.join(os.path.dirname(__file__), "../assets", 'Roboto-Regular.ttf'))
Expand All @@ -13,7 +13,7 @@ def __init__(self, renderer, count):
self.circle_size = 192
self.corner_offset = 30

def font_size(self, size):
def font_size(self, size: int):
self._font_size = size
return self

Expand Down
6 changes: 3 additions & 3 deletions devdeck_core/rendering/emoji_renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@


class EmojiRenderer:
def __init__(self, renderer, emoji_name):
def __init__(self, renderer, emoji_name: str):
self.renderer = renderer
self.emoji_name = emoji_name.replace(':', '')
self.center_vertical = None
Expand All @@ -22,11 +22,11 @@ def y(self, y):
self._y = y
return self

def center_vertically(self, offset=0):
def center_vertically(self, offset: int = 0):
self.center_vertical = offset
return self

def center_horizontally(self, offset=0):
def center_horizontally(self, offset: int = 0):
self.center_horizontal = offset
return self

Expand Down
14 changes: 7 additions & 7 deletions devdeck_core/rendering/image_renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@


class ImageRenderer:
def __init__(self, renderer, filename):
def __init__(self, renderer, filename: str):
self.renderer = renderer
self.filename = filename
self._x = 0
Expand All @@ -12,27 +12,27 @@ def __init__(self, renderer, filename):
self.center_vertical = None
self.center_horizontal = None

def x(self, x):
def x(self, x: int):
self._x = x
return self

def y(self, y):
def y(self, y: int):
self._y = y
return self

def center_vertically(self, offset=0):
def center_vertically(self, offset: int = 0):
self.center_vertical = offset
return self

def center_horizontally(self, offset=0):
def center_horizontally(self, offset: int = 0):
self.center_horizontal = offset
return self

def height(self, h):
def height(self, h: int):
self._height = h
return self

def width(self, w):
def width(self, w: int):
self._width = w
return self

Expand Down
12 changes: 6 additions & 6 deletions devdeck_core/rendering/text_renderer.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@


class TextRenderer:
def __init__(self, renderer, text):
def __init__(self, renderer, text: str):
self.renderer = renderer
self.text = text
self.font_filename = os.path.abspath(os.path.join(os.path.dirname(__file__), "../assets", 'Roboto-Regular.ttf'))
Expand All @@ -24,23 +24,23 @@ def y(self, y):
self._y = y
return self

def center_vertically(self, offset=0):
def center_vertically(self, offset: int = 0):
self.center_vertical = offset
return self

def center_horizontally(self, offset=0):
def center_horizontally(self, offset: int = 0):
self.center_horizontal = offset
return self

def font_size(self, size):
def font_size(self, size: int):
self._font_size = size
return self

def color(self, color):
def color(self, color: str):
self.fill = color
return self

def text_align(self, align):
def text_align(self, align: str):
self.align = align
return self

Expand Down