Add `get_fonts()` API and fix `.px_size` for non-Qt ctxs
Add a public `.ui._style.get_fonts()` helper to retrieve the `_font[_small]: DpiAwareFont` singleton pair. Adjust `DpiAwareFont.px_size` to return `conf.toml` value when Qt returns `-1` (no active Qt app). Also, - raise `ValueError` with detailed msg if both Qt and a conf-lookup fail - add some more type union whitespace cleanups: `int | None` -> `int|None` (this commit-msg was generated in some part by [`claude-code`][claude-code-gh]) [claude-code-gh]: https://github.com/anthropics/claude-codemultiaddrs
parent
858cfce958
commit
88732a67d5
|
|
@ -107,7 +107,22 @@ class DpiAwareFont:
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def px_size(self) -> int:
|
def px_size(self) -> int:
|
||||||
return self._qfont.pixelSize()
|
size: int = self._qfont.pixelSize()
|
||||||
|
|
||||||
|
# XXX, when no Qt app has been spawned this will always be
|
||||||
|
# invalid..
|
||||||
|
# SO, just return any conf.toml value.
|
||||||
|
if size == -1:
|
||||||
|
if (conf_size := self._font_size) is None:
|
||||||
|
raise ValueError(
|
||||||
|
f'No valid `{type(_font).__name__}.px_size` set?\n'
|
||||||
|
f'\n'
|
||||||
|
f'-> `ui.font_size` is NOT set in `conf.toml`\n'
|
||||||
|
f'-> no Qt app is active ??\n'
|
||||||
|
)
|
||||||
|
return conf_size
|
||||||
|
|
||||||
|
return size
|
||||||
|
|
||||||
def configure_to_dpi(self, screen: QtGui.QScreen | None = None):
|
def configure_to_dpi(self, screen: QtGui.QScreen | None = None):
|
||||||
'''
|
'''
|
||||||
|
|
@ -221,6 +236,20 @@ def _config_fonts_to_screen() -> None:
|
||||||
_font_small.configure_to_dpi()
|
_font_small.configure_to_dpi()
|
||||||
|
|
||||||
|
|
||||||
|
def get_fonts() -> tuple[
|
||||||
|
DpiAwareFont,
|
||||||
|
DpiAwareFont,
|
||||||
|
]:
|
||||||
|
'''
|
||||||
|
Get the singleton font pair (of instances) from which all other
|
||||||
|
UI/UX should be "scaled around".
|
||||||
|
|
||||||
|
See `DpiAwareFont` for (internal) deats.
|
||||||
|
|
||||||
|
'''
|
||||||
|
return _font, _font_small
|
||||||
|
|
||||||
|
|
||||||
# TODO: re-compute font size when main widget switches screens?
|
# TODO: re-compute font size when main widget switches screens?
|
||||||
# https://forum.qt.io/topic/54136/how-do-i-get-the-qscreen-my-widget-is-on-qapplication-desktop-screen-returns-a-qwidget-and-qobject_cast-qscreen-returns-null/3
|
# https://forum.qt.io/topic/54136/how-do-i-get-the-qscreen-my-widget-is-on-qapplication-desktop-screen-returns-a-qwidget-and-qobject_cast-qscreen-returns-null/3
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue