Multi-screen pager dashboard for Ragnar.
| 147 | |
| 148 | |
| 149 | class PagerDisplay: |
| 150 | """Multi-screen pager dashboard for Ragnar.""" |
| 151 | |
| 152 | def __init__(self, shared_data): |
| 153 | self.shared_data = shared_data |
| 154 | self.config = self.shared_data.config |
| 155 | self.shared_data.ragnarstatustext2 = "Awakening..." |
| 156 | self.commentaire_ia = Commentaireia() |
| 157 | self.semaphore = threading.Semaphore(10) |
| 158 | |
| 159 | # Initialize pagerctl |
| 160 | try: |
| 161 | logger.info("Initializing pagerctl display...") |
| 162 | self.pager = Pager() |
| 163 | self.pager.init() |
| 164 | self.pager.set_rotation(270) # Landscape 480x222 |
| 165 | |
| 166 | self.width = self.pager.width # 222 |
| 167 | self.height = self.pager.height # 480 |
| 168 | logger.info(f"Pager display initialized: {self.width}x{self.height}") |
| 169 | |
| 170 | self.shared_data.width = self.width |
| 171 | self.shared_data.height = self.height |
| 172 | except Exception as e: |
| 173 | logger.error(f"Error initializing pagerctl: {e}") |
| 174 | raise |
| 175 | |
| 176 | # Colors |
| 177 | self.BLACK = self.pager.BLACK |
| 178 | self.WHITE = self.pager.WHITE |
| 179 | self.GRAY = self.pager.rgb(128, 128, 128) |
| 180 | self.DARK_GRAY = self.pager.rgb(64, 64, 64) |
| 181 | self.LIGHT_GRAY = self.pager.rgb(200, 200, 200) |
| 182 | self.GREEN = self.pager.rgb(0, 200, 0) |
| 183 | self.RED = self.pager.rgb(220, 0, 0) |
| 184 | self.YELLOW = self.pager.rgb(220, 200, 0) |
| 185 | self.CYAN = self.pager.rgb(0, 180, 220) |
| 186 | self.BLUE = self.pager.rgb(50, 100, 220) |
| 187 | self.ORANGE = self.pager.rgb(220, 140, 0) |
| 188 | self.PURPLE = self.pager.rgb(160, 80, 220) |
| 189 | self.DARK_BG = self.pager.rgb(20, 20, 30) |
| 190 | self.CARD_BG = self.pager.rgb(35, 35, 50) |
| 191 | self.HEADER_BG = self.pager.rgb(15, 15, 25) |
| 192 | |
| 193 | # Fonts |
| 194 | self.font_arial = self.shared_data.font_arial_path |
| 195 | self.font_viking = self.shared_data.font_viking_path |
| 196 | |
| 197 | # Screen state |
| 198 | self.current_screen = SCREEN_DASHBOARD |
| 199 | self.scroll_offset = 0 |
| 200 | self.dialog_showing = False |
| 201 | self._handoff_launcher_path = None |
| 202 | |
| 203 | # Settings screen state: per-screen selected index and scroll position |
| 204 | self._settings_selected = {s: 0 for s in SETTINGS_SCREENS} |
| 205 | self._settings_scroll = {s: 0 for s in SETTINGS_SCREENS} |
| 206 |
no outgoing calls
no test coverage detected