Skip to content

Commit a7bb8b5

Browse files
committed
<Update>[Pygame 2.0.0]: Version 2.89.12
Give up on loading my own font in py2app [#68]
1 parent 1229186 commit a7bb8b5

File tree

4 files changed

+39
-26
lines changed

4 files changed

+39
-26
lines changed

albow/demo/loggingConfiguration.json

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,22 @@
1414
"consoleHandler": {
1515
"class": "logging.StreamHandler",
1616
"formatter": "demoSimple",
17-
"stream": "ext://sys.stdout",
18-
"level": "INFO"
17+
"stream": "ext://sys.stdout"
1918
}
2019
},
2120
"loggers": {
2221
"root": {
2322
"level": "INFO",
2423
"handlers": ["consoleHandler"],
25-
"propagate": "0"
24+
"propagate": "False"
2625
},
2726
"albow": {
28-
"level": "INFO",
27+
"level": "WARNING",
28+
"handlers": ["consoleHandler"],
29+
"propagate": "False"
30+
},
31+
"albow.themes": {
32+
"level": "WARNING",
2933
"propagate": "False"
3034
},
3135
"__main__": {

albow/themes/Theme.py

Lines changed: 27 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11

2-
from pkg_resources import resource_filename
2+
from logging import Logger
3+
from logging import getLogger
34

4-
import logging
5+
from importlib.resources import path
56

67
from pygame.font import Font
8+
from pygame.font import SysFont
79

810
from albow.themes.ThemeError import ThemeError
911

@@ -89,9 +91,9 @@ def __init__(self, name, base=None):
8991
base: A Theme object can be based on another Theme object. When looking in a Theme object
9092
for an attribute, if not found it will be looked for in the base theme
9193
"""
92-
self.logger = logging.getLogger(__name__)
93-
self.name = name
94-
self.base = base
94+
self.logger: Logger = getLogger(__name__)
95+
self.name: str = name
96+
self.base: str = base
9597

9698
def get(self, cls, name):
9799
try:
@@ -102,7 +104,7 @@ def get(self, cls, name):
102104

103105
def lookup(self, cls, name):
104106

105-
self.logger.debug("Theme(%s),lookup(%s, %s)", self.name, cls, name)
107+
# self.logger.debug("Theme(%s),lookup(%s, %s)", self.name, cls, name)
106108
for base_class in cls.__mro__:
107109
class_theme = getattr(self, base_class.__name__, None)
108110
if class_theme:
@@ -116,20 +118,30 @@ def lookup(self, cls, name):
116118
except AttributeError:
117119
base_theme = self.base
118120
if base_theme:
121+
# TODO problem here; No such method .lookup
122+
# https://github.com/hasii2011/albow-python-3/issues/70
119123
return base_theme.lookup(cls, name)
120124
else:
121125
raise ThemeError
122126

123127
def get_font(self, cls, name):
124128

125-
self.logger.debug(f"Theme.get_font({cls}, {name})")
129+
# self.logger.debug(f"Theme.get_font({cls}, {name})")
126130
spec = self.get(cls, name)
127131
if spec:
128132

129-
self.logger.debug(f"font spec = {spec}")
133+
# self.logger.debug(f"font spec = {spec}")
134+
135+
try:
136+
fontPath = self._findFontFile(spec)
137+
font = self._loadFont(fontPath=fontPath, fontSize=spec[0])
138+
except (ValueError, Exception) as e:
139+
#
140+
# TODO Fix this via github issue # https://github.com/hasii2011/albow-python-3/issues/69
141+
self.logger.error(f'{e}')
142+
self.logger.warning(f'Use system font instead')
143+
font = SysFont('Arial', spec[0])
130144

131-
fontPath = self._findFontFile(spec)
132-
font = self._loadFont(fontPath=fontPath, fontSize=spec[0])
133145
return font
134146

135147
def add_theme(self, name):
@@ -138,7 +150,11 @@ def add_theme(self, name):
138150
def _findFontFile(self, spec: tuple):
139151

140152
fontName = spec[1]
141-
fileName = resource_filename(Theme.DEFAULT_PKG, fontName)
153+
# fileName = resource_filename(Theme.DEFAULT_PKG, fontName)
154+
with path(Theme.DEFAULT_PKG, fontName) as p:
155+
# self.logger.debug(f'{p=}')
156+
fileName: str = p.__str__()
157+
142158
return fileName
143159

144160
def _loadFont(self, fontPath: str, fontSize: int) -> Font:

albow/themes/ThemeProperty.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -36,26 +36,19 @@ def __init__(self, name):
3636
self.cache_name = sys.intern("_" + name)
3737

3838
def __get__(self, obj, owner):
39-
self.logger.debug("%s(%s).__get__(%s)", self.__class__.__name__, self.name, obj)
39+
# self.logger.debug("%s(%s).__get__(%s)", self.__class__.__name__, self.name, obj)
4040

4141
try:
4242
cache_name = self.cache_name
4343
try:
4444
return getattr(obj, cache_name)
45-
#
46-
# Python 3 update
47-
#
48-
# except AttributeError, e:
4945
except AttributeError as e:
5046
if ThemeProperty.debug_theme:
5147
self.logger.exception(f"{e}. Ok. Get value from Theme")
5248
value = self.get_from_theme(obj.__class__, self.name)
5349
obj.__dict__[cache_name] = value
5450
return value
55-
#
56-
# TODO Do not use bare exception
57-
#
58-
except:
51+
except (ValueError, Exception):
5952
if ThemeProperty.debug_theme:
6053
import traceback
6154
traceback.print_exc()
@@ -73,7 +66,7 @@ def __set__(self, obj, value):
7366
Returns:
7467
7568
"""
76-
self.logger.debug(f"Setting {obj}.{self.cache_name} = {value}")
69+
# self.logger.debug(f"Setting {obj}.{self.cache_name} = {value}")
7770
obj.__dict__[self.cache_name] = value
7871

7972
def get_from_theme(self, cls, name):

setup.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
]
1515
setup(
1616
name="python3-albow",
17-
version="2.89",
17+
version="2.89.12",
1818
author='Humberto A. Sanchez II',
1919
author_email='Humberto.A.Sanchez.II@gmail.com',
2020
description="A Little Bit of Widgetry for PyGame",

0 commit comments

Comments
 (0)