vibefpmgui.run_monitor

The "Run" tab: progress of programs started with Run.

It is the Tests panel with different wording: programs are launched through the same marker wrapper (vibefpmgui.test_runner), so each one's start, end, exit code and output are known, and run times are remembered to estimate the next run.

 1"""The "Run" tab: progress of programs started with Run.
 2
 3It is the Tests panel with different wording: programs are launched through
 4the same marker wrapper (`vibefpmgui.test_runner`), so each one's start,
 5end, exit code and output are known, and run times are remembered to
 6estimate the next run.
 7"""
 8
 9from __future__ import annotations
10
11from typing import ClassVar
12
13from .test_monitor import PASSED, TestMonitor
14
15
16class RunMonitor(TestMonitor):
17    COLUMNS: ClassVar[list[str]] = ["PROGRAM", "STATUS", "TIME"]
18    ICON = "run"
19    WORDS: ClassVar[dict[str, str]] = {
20        "title": "Run", "item": "program", "items": "programs",
21        PASSED: "Finished", "passed": "finished",
22        "idle": "Run a program (toolbar Run, or Run in the Build outputs tab) to see it here.",
23        "idle_label": "Run a program to see progress",
24        "collecting": "Building… (per-file progress is in the Build tab)",
25        "collecting_label": "finding programs",
26        "after_build": "programs start after the build",
27        "none": "This project has no programs to run.", "none_label": "No programs",
28        "unlisted": "The programs could not be built or listed — see the Build tab and output.",
29        "row_tip": "Click to show only this program's output",
30    }
31
32    def __init__(self, parent=None):
33        super().__init__(parent)
34        self.setObjectName("RunMonitor")
35        self.refresh_palette()
class RunMonitor(vibefpmgui.test_monitor.TestMonitor):
17class RunMonitor(TestMonitor):
18    COLUMNS: ClassVar[list[str]] = ["PROGRAM", "STATUS", "TIME"]
19    ICON = "run"
20    WORDS: ClassVar[dict[str, str]] = {
21        "title": "Run", "item": "program", "items": "programs",
22        PASSED: "Finished", "passed": "finished",
23        "idle": "Run a program (toolbar Run, or Run in the Build outputs tab) to see it here.",
24        "idle_label": "Run a program to see progress",
25        "collecting": "Building… (per-file progress is in the Build tab)",
26        "collecting_label": "finding programs",
27        "after_build": "programs start after the build",
28        "none": "This project has no programs to run.", "none_label": "No programs",
29        "unlisted": "The programs could not be built or listed — see the Build tab and output.",
30        "row_tip": "Click to show only this program's output",
31    }
32
33    def __init__(self, parent=None):
34        super().__init__(parent)
35        self.setObjectName("RunMonitor")
36        self.refresh_palette()

Header with filter chips, progress bar and a table of tests. Clicking a test emits test_selected with its name ("" to show all output).

RunMonitor(parent=None)
33    def __init__(self, parent=None):
34        super().__init__(parent)
35        self.setObjectName("RunMonitor")
36        self.refresh_palette()
COLUMNS: ClassVar[list[str]] = ['PROGRAM', 'STATUS', 'TIME']
ICON = 'run'
WORDS: ClassVar[dict[str, str]] = {'title': 'Run', 'item': 'program', 'items': 'programs', 'Passed': 'Finished', 'passed': 'finished', 'idle': 'Run a program (toolbar Run, or Run in the Build outputs tab) to see it here.', 'idle_label': 'Run a program to see progress', 'collecting': 'Building… (per-file progress is in the Build tab)', 'collecting_label': 'finding programs', 'after_build': 'programs start after the build', 'none': 'This project has no programs to run.', 'none_label': 'No programs', 'unlisted': 'The programs could not be built or listed — see the Build tab and output.', 'row_tip': "Click to show only this program's output"}
staticMetaObject = PySide6.QtCore.QMetaObject("RunMonitor" inherits "TestMonitor": )