TSK Manager v0.11.0
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
# tsk/common/widget.py
|
||||
"""
|
||||
TSK Widget abstraction layer.
|
||||
|
||||
This module provides TSK-specific widgets that extend openpilot's Widget system.
|
||||
By creating this abstraction layer, we insulate the TSK application from changes
|
||||
in the underlying openpilot UI library.
|
||||
"""
|
||||
|
||||
from openpilot.system.ui.widgets import Widget
|
||||
from openpilot.system.ui.widgets.scroller import _Scroller
|
||||
|
||||
__all__ = ['TSKWidget', 'Scroller']
|
||||
|
||||
|
||||
# ============================================================================
|
||||
# Scroller factory function
|
||||
# ============================================================================
|
||||
# This replaces the direct import of openpilot's Scroller widget.
|
||||
#
|
||||
# WHY: openpilot's Scroller API changes frequently between releases.
|
||||
# - In v0.10.x: Scroller(items, horizontal=True, pad_start=10, pad_end=10)
|
||||
# - In v0.11.x: Scroller split into Scroller (wrapper) and _Scroller (impl).
|
||||
# The wrapper no longer accepts items in the constructor, removed pad_start/
|
||||
# pad_end (now just pad), and doesn't expose scroll_panel or
|
||||
# set_scrolling_enabled.
|
||||
#
|
||||
# This function wraps _Scroller (the actual implementation) so that:
|
||||
# 1. TSK code can call Scroller(items, ...) like a normal constructor
|
||||
# 2. The returned object has scroll_panel, set_scrolling_enabled, etc.
|
||||
# 3. When comma changes the API again, we only fix this one place
|
||||
#
|
||||
# USAGE: from tsk.common.widget import Scroller
|
||||
# scroller = Scroller([widget1, widget2], horizontal=True, pad=10)
|
||||
# scroller.scroll_panel.get_offset()
|
||||
# scroller.set_scrolling_enabled(True)
|
||||
# ============================================================================
|
||||
def Scroller(items, **kwargs):
|
||||
return _Scroller(items, **kwargs)
|
||||
|
||||
|
||||
class TSKWidget(Widget):
|
||||
"""
|
||||
Base class for all TSK widgets.
|
||||
|
||||
This extends openpilot's Widget class and provides TSK-specific
|
||||
functionality and customization. All TSK UI components should
|
||||
extend this class instead of using OpenPilotWidget directly.
|
||||
|
||||
Benefits:
|
||||
- Isolation from openpilot UI changes
|
||||
- TSK-specific features can be added here
|
||||
- Consistent behavior across all TSK widgets
|
||||
- Easier testing and mocking
|
||||
"""
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
# TSK-specific initialization can go here
|
||||
# For example: logging, analytics, custom state management
|
||||
Reference in New Issue
Block a user