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
67from pygame .font import Font
8+ from pygame .font import SysFont
79
810from 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 :
0 commit comments