From 93cbd71ff46fdaee7fb43e102ad7493151f68389 Mon Sep 17 00:00:00 2001 From: Luke McNinch Date: Sun, 3 Dec 2023 14:39:07 -0500 Subject: [PATCH 1/4] Use label scale to when centering on button --- adafruit_button/button.py | 4 +++- adafruit_button/button_base.py | 12 +++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/adafruit_button/button.py b/adafruit_button/button.py index 007a8f1..45c87f7 100644 --- a/adafruit_button/button.py +++ b/adafruit_button/button.py @@ -130,7 +130,8 @@ def __init__( label_color=0x0, selected_fill=None, selected_outline=None, - selected_label=None + selected_label=None, + label_scale=None ): super().__init__( x=x, @@ -142,6 +143,7 @@ def __init__( label_font=label_font, label_color=label_color, selected_label=selected_label, + label_scale=label_scale, ) self.body = self.fill = self.shadow = None diff --git a/adafruit_button/button_base.py b/adafruit_button/button_base.py index d33cfc4..3d4de0b 100644 --- a/adafruit_button/button_base.py +++ b/adafruit_button/button_base.py @@ -58,7 +58,8 @@ def __init__( label=None, label_font=None, label_color=0x0, - selected_label=None + selected_label=None, + label_scale=None ): super().__init__(x=x, y=y) self.x = x @@ -72,6 +73,7 @@ def __init__( self._label_color = label_color self._label_font = label_font self._selected_label = _check_color(selected_label) + self._label_scale = label_scale or 1 @property def label(self): @@ -89,14 +91,18 @@ def label(self, newtext): if not self._label_font: raise RuntimeError("Please provide label font") - self._label = Label(self._label_font, text=newtext) - dims = self._label.bounding_box + self._label = Label(self._label_font, text=newtext, scale=self._label_scale) + dims = list(self._label.bounding_box) + dims[2] *= self._label.scale + dims[3] *= self._label.scale if dims[2] >= self.width or dims[3] >= self.height: while len(self._label.text) > 1 and ( dims[2] >= self.width or dims[3] >= self.height ): self._label.text = "{}.".format(self._label.text[:-2]) dims = self._label.bounding_box + dims[2] *= self._label.scale + dims[3] *= self._label.scale if len(self._label.text) <= 1: raise RuntimeError("Button not large enough for label") self._label.x = (self.width - dims[2]) // 2 From ae43b151a0b5f4e5897f66745c255d4875e64940 Mon Sep 17 00:00:00 2001 From: Luke McNinch Date: Mon, 11 Dec 2023 20:32:23 -0500 Subject: [PATCH 2/4] Add label_scale option to SpriteButton --- adafruit_button/sprite_button.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_button/sprite_button.py b/adafruit_button/sprite_button.py index c2f02ba..037fcd4 100644 --- a/adafruit_button/sprite_button.py +++ b/adafruit_button/sprite_button.py @@ -56,7 +56,8 @@ def __init__( selected_label=None, bmp_path=None, selected_bmp_path=None, - transparent_index=None + transparent_index=None, + label_scale=None ): if bmp_path is None: raise ValueError("Please supply bmp_path. It cannot be None.") @@ -71,6 +72,7 @@ def __init__( label_font=label_font, label_color=label_color, selected_label=selected_label, + label_scale=label_scale ) self._bmp, self._bmp_palette = load(bmp_path) From 7ff41a3af0f549f167169cb3520c287a9605379e Mon Sep 17 00:00:00 2001 From: Luke McNinch Date: Mon, 11 Dec 2023 21:01:41 -0500 Subject: [PATCH 3/4] Fix a bug. dims should be converted from tuple to list. --- adafruit_button/button_base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_button/button_base.py b/adafruit_button/button_base.py index 3d4de0b..bcebc7e 100644 --- a/adafruit_button/button_base.py +++ b/adafruit_button/button_base.py @@ -100,7 +100,7 @@ def label(self, newtext): dims[2] >= self.width or dims[3] >= self.height ): self._label.text = "{}.".format(self._label.text[:-2]) - dims = self._label.bounding_box + dims = list(self._label.bounding_box) dims[2] *= self._label.scale dims[3] *= self._label.scale if len(self._label.text) <= 1: From c8e9f55799907363b02146c5e6f1a3e4ac57bdf5 Mon Sep 17 00:00:00 2001 From: Luke McNinch Date: Mon, 11 Dec 2023 21:06:41 -0500 Subject: [PATCH 4/4] Black fix --- adafruit_button/sprite_button.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_button/sprite_button.py b/adafruit_button/sprite_button.py index 037fcd4..67fd9ee 100644 --- a/adafruit_button/sprite_button.py +++ b/adafruit_button/sprite_button.py @@ -72,7 +72,7 @@ def __init__( label_font=label_font, label_color=label_color, selected_label=selected_label, - label_scale=label_scale + label_scale=label_scale, ) self._bmp, self._bmp_palette = load(bmp_path)