Update tree state from a build event dict. Examples -------- >>> tree = BuildTree() >>> tree.on_event({ ... "event": "session_created", "name": "dev", "window_total": 2, ... }) >>> tree.session_name 'dev' >>> tree.window_to
(self, event: dict[str, t.Any])
| 435 | self._before_script_event: threading.Event = threading.Event() |
| 436 | |
| 437 | def on_event(self, event: dict[str, t.Any]) -> None: |
| 438 | """Update tree state from a build event dict. |
| 439 | |
| 440 | Examples |
| 441 | -------- |
| 442 | >>> tree = BuildTree() |
| 443 | >>> tree.on_event({ |
| 444 | ... "event": "session_created", "name": "dev", "window_total": 2, |
| 445 | ... }) |
| 446 | >>> tree.session_name |
| 447 | 'dev' |
| 448 | >>> tree.window_total |
| 449 | 2 |
| 450 | >>> tree.on_event({ |
| 451 | ... "event": "window_started", "name": "editor", "pane_total": 3, |
| 452 | ... }) |
| 453 | >>> len(tree.windows) |
| 454 | 1 |
| 455 | >>> tree.windows[0].name |
| 456 | 'editor' |
| 457 | """ |
| 458 | kind = event["event"] |
| 459 | if kind == "session_created": |
| 460 | self.session_name = event["name"] |
| 461 | self.window_total = event.get("window_total") |
| 462 | self.session_pane_total = event.get("session_pane_total") |
| 463 | elif kind == "before_script_started": |
| 464 | self._before_script_event.set() |
| 465 | elif kind == "before_script_done": |
| 466 | self._before_script_event.clear() |
| 467 | elif kind == "window_started": |
| 468 | self.windows.append( |
| 469 | _WindowStatus(name=event["name"], pane_total=event["pane_total"]) |
| 470 | ) |
| 471 | elif kind == "pane_creating": |
| 472 | if self.windows: |
| 473 | w = self.windows[-1] |
| 474 | w.pane_num = event["pane_num"] |
| 475 | w.pane_total = event["pane_total"] |
| 476 | elif kind == "window_done": |
| 477 | if self.windows: |
| 478 | w = self.windows[-1] |
| 479 | w.done = True |
| 480 | w.pane_num = None |
| 481 | w.pane_done = w.pane_total or 0 |
| 482 | self.session_panes_done += w.pane_done |
| 483 | self.windows_done += 1 |
| 484 | elif kind == "workspace_built": |
| 485 | for w in self.windows: |
| 486 | w.done = True |
| 487 | |
| 488 | def render(self, colors: Colors, width: int) -> list[str]: |
| 489 | """Render the current tree state to a list of display strings. |