From 9a73454013d34b39c16d31941b0460d5fb47795d Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 07:44:51 -0500 Subject: [PATCH 01/13] Added getter/setter for font to ensure proper screen update when font is changed --- adafruit_display_text/label.py | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) mode change 100644 => 100755 adafruit_display_text/label.py diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py old mode 100644 new mode 100755 index 24ef7b4..4d82588 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -22,23 +22,18 @@ """ `adafruit_display_text.label` ==================================================== - Displays text labels using CircuitPython's displayio. - * Author(s): Scott Shawcroft - Implementation Notes -------------------- - **Hardware:** - **Software and Dependencies:** - * Adafruit CircuitPython firmware for the supported boards: https://github.com/adafruit/circuitpython/releases - """ +print('loading label.py Yay!') + import displayio __version__ = "0.0.0-auto.0" @@ -50,7 +45,6 @@ class Label(displayio.Group): properties will be the left edge of the bounding box, and in the center of a M glyph (if its one line), or the (number of lines * linespacing + M)/2. That is, it will try to have it be center-left as close as possible. - :param Font font: A font class that has ``get_bounding_box`` and ``get_glyph``. Must include a capital M for measuring character size. :param str text: Text to display @@ -77,7 +71,7 @@ def __init__( max_glyphs = len(text) super().__init__(max_size=max_glyphs, **kwargs) self.width = max_glyphs - self.font = font + self._font = font self._text = None self._anchor_point = (0, 0) self.x = x @@ -94,7 +88,7 @@ def __init__( self._transparent_background = True self.palette[1] = color - bounds = self.font.get_bounding_box() + bounds = self._font.get_bounding_box() self.height = bounds[1] self._line_spacing = line_spacing self._boundingbox = None @@ -107,9 +101,11 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals y = 0 i = 0 old_c = 0 + bounds = self._font.get_bounding_box() # moved here *** + self.height = bounds[1] # moved here *** y_offset = int( ( - self.font.get_glyph(ord("M")).height + self._font.get_glyph(ord("M")).height - new_text.count("\n") * self.height * self.line_spacing ) / 2 @@ -121,7 +117,7 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals y += int(self.height * self._line_spacing) x = 0 continue - glyph = self.font.get_glyph(ord(character)) + glyph = self._font.get_glyph(ord(character)) if not glyph: continue right = max(right, x + glyph.width) @@ -176,7 +172,7 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals and old_c < len(self._text) and ( self._text[old_c] == "\n" - or not self.font.get_glyph(ord(self._text[old_c])) + or not self._font.get_glyph(ord(self._text[old_c])) ) ): old_c += 1 @@ -238,6 +234,17 @@ def text(self): def text(self, new_text): self._update_text(str(new_text)) + @property + def font(self): + return self._font + + @font.setter + def font(self, newFont): + old_text=self._text + self._text='' + self._font=newFont + self._update_text(str(old_text)) + @property def anchor_point(self): """Point that anchored_position moves relative to. From 756088bbfc940def2a372918a89e10d20de8a72f Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 07:46:31 -0500 Subject: [PATCH 02/13] deleted print statements --- adafruit_display_text/label.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 4d82588..9d39765 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -32,7 +32,6 @@ https://github.com/adafruit/circuitpython/releases """ -print('loading label.py Yay!') import displayio @@ -110,7 +109,6 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals ) / 2 ) - # print("y offset from baseline", y_offset) left = right = top = bottom = 0 for character in new_text: if character == "\n": @@ -163,7 +161,7 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals x += glyph.shift_x - # TODO skip this for control sequences or non-printables. + # TODO skip this for control sequences or non-qables. i += 1 old_c += 1 # skip all non-prinables in the old string From bb79810529894d66778f880901b6060e8c759dbf Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:26:53 -0500 Subject: [PATCH 03/13] Updated font.height and ran black formatter --- adafruit_display_text/label.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 9d39765..a564805 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -100,8 +100,6 @@ def _update_text(self, new_text): # pylint: disable=too-many-locals y = 0 i = 0 old_c = 0 - bounds = self._font.get_bounding_box() # moved here *** - self.height = bounds[1] # moved here *** y_offset = int( ( self._font.get_glyph(ord("M")).height @@ -238,9 +236,11 @@ def font(self): @font.setter def font(self, newFont): - old_text=self._text - self._text='' - self._font=newFont + old_text = self._text + self._text = "" + self._font = newFont + bounds = self._font.get_bounding_box() + self.height = bounds[1] self._update_text(str(old_text)) @property From 37febaef3cabfbddfa3f01a064485fde25c87e2e Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:30:51 -0500 Subject: [PATCH 04/13] updated newFont to new_font for plint --- adafruit_display_text/label.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index a564805..2b0229a 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -235,14 +235,15 @@ def font(self): return self._font @font.setter - def font(self, newFont): - old_text = self._text - self._text = "" - self._font = newFont + def font(self, new_font): + old_text=self._text + self._text='' + self._font=new_font bounds = self._font.get_bounding_box() - self.height = bounds[1] + self.height = bounds[1] self._update_text(str(old_text)) + @property def anchor_point(self): """Point that anchored_position moves relative to. From b0ca00ef2fa85b3b04cc44769cf72665fbe60efe Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:33:02 -0500 Subject: [PATCH 05/13] re-ran black for formatting --- adafruit_display_text/label.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 2b0229a..643e35b 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -236,14 +236,13 @@ def font(self): @font.setter def font(self, new_font): - old_text=self._text - self._text='' - self._font=new_font + old_text = self._text + self._text = "" + self._font = new_font bounds = self._font.get_bounding_box() - self.height = bounds[1] + self.height = bounds[1] self._update_text(str(old_text)) - @property def anchor_point(self): """Point that anchored_position moves relative to. From b5593bc5e5b3c639a0ab60944289227604a5dcad Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:38:39 -0500 Subject: [PATCH 06/13] added comment for font setter to satisfy pylint --- adafruit_display_text/label.py | 1 + 1 file changed, 1 insertion(+) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 643e35b..bf0c9a1 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -232,6 +232,7 @@ def text(self, new_text): @property def font(self): + """Font to use for text.""" return self._font @font.setter From a2473b518ef4b87fa94705d98b6d49c8b464634f Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:44:09 -0500 Subject: [PATCH 07/13] deleted one blank line --- adafruit_display_text/label.py | 1 - 1 file changed, 1 deletion(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index bf0c9a1..3dbcf84 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -32,7 +32,6 @@ https://github.com/adafruit/circuitpython/releases """ - import displayio __version__ = "0.0.0-auto.0" From 52a3becd774a3fe952fc4541a78495b1335699df Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 08:56:06 -0500 Subject: [PATCH 08/13] deleted blank space, blank line, added some spaces after =, updated comment --- adafruit_display_text/label.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 3dbcf84..1c82b48 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -231,7 +231,7 @@ def text(self, new_text): @property def font(self): - """Font to use for text.""" + """Font to use for text display.""" return self._font @font.setter From 96f2f11555b97df05c10672d27b41ef73f5867b2 Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 09:01:40 -0500 Subject: [PATCH 09/13] modified comment description to try to overcome Sphinx Unexpected Indent error --- adafruit_display_text/label.py | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 1c82b48..a2047e4 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -231,7 +231,9 @@ def text(self, new_text): @property def font(self): - """Font to use for text display.""" + """ + Font to use for text display. + """ return self._font @font.setter From a1c4859ca71b80a1d97f429b0e02a710c3a2d913 Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 09:04:48 -0500 Subject: [PATCH 10/13] reverted back to previous revision without extra lines. Still no luck with Sphinx error... --- adafruit_display_text/label.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index a2047e4..1c82b48 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -231,9 +231,7 @@ def text(self, new_text): @property def font(self): - """ - Font to use for text display. - """ + """Font to use for text display.""" return self._font @font.setter From 4acafa4b4f13a79af4c69d6d0735260fac7fd6b8 Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Fri, 22 May 2020 23:47:05 -0500 Subject: [PATCH 11/13] Added black line at row 46, per recommendation of foamyguy --- adafruit_display_text/label.py | 1 + 1 file changed, 1 insertion(+) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 1c82b48..007d583 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -43,6 +43,7 @@ class Label(displayio.Group): properties will be the left edge of the bounding box, and in the center of a M glyph (if its one line), or the (number of lines * linespacing + M)/2. That is, it will try to have it be center-left as close as possible. + :param Font font: A font class that has ``get_bounding_box`` and ``get_glyph``. Must include a capital M for measuring character size. :param str text: Text to display From 1c1926452304c211b515239b0940dcc82d4ad79b Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Sat, 23 May 2020 09:44:41 -0500 Subject: [PATCH 12/13] trial to see if pylint too-many-instance-attributes can be overridden --- adafruit_display_text/label.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index 007d583..c6098fa 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -43,7 +43,7 @@ class Label(displayio.Group): properties will be the left edge of the bounding box, and in the center of a M glyph (if its one line), or the (number of lines * linespacing + M)/2. That is, it will try to have it be center-left as close as possible. - + :param Font font: A font class that has ``get_bounding_box`` and ``get_glyph``. Must include a capital M for measuring character size. :param str text: Text to display @@ -51,6 +51,9 @@ class Label(displayio.Group): :param int color: Color of all text in RGB hex :param double line_spacing: Line spacing of text to display""" + # pylint: disable=too-many-instance-attributes + # This has a lot of getters/setters, maybe it needs cleanup. + def __init__( self, font, From 83f43decaec49b8b114176007f193eb22c151a85 Mon Sep 17 00:00:00 2001 From: Margaret Matocha Date: Sat, 23 May 2020 11:36:52 -0500 Subject: [PATCH 13/13] added spaces and deleted one tab, thanks foamyguy --- adafruit_display_text/label.py | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/adafruit_display_text/label.py b/adafruit_display_text/label.py index c6098fa..1e057e5 100755 --- a/adafruit_display_text/label.py +++ b/adafruit_display_text/label.py @@ -22,14 +22,21 @@ """ `adafruit_display_text.label` ==================================================== + Displays text labels using CircuitPython's displayio. + * Author(s): Scott Shawcroft + Implementation Notes -------------------- + **Hardware:** + **Software and Dependencies:** + * Adafruit CircuitPython firmware for the supported boards: https://github.com/adafruit/circuitpython/releases + """ import displayio