Skip to content

Commit 4b536c1

Browse files
committed
fix: clarify output and terminal accessibility
1 parent 8670719 commit 4b536c1

5 files changed

Lines changed: 93 additions & 5 deletions

File tree

core/output.py

Lines changed: 27 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,19 +26,38 @@ def setup_ui(self):
2626
# Toolbar
2727
toolbar = QHBoxLayout()
2828
self.status_label = QLabel("Bereit")
29+
self.status_label.setAccessibleName("Ausführungsstatus")
30+
self.status_label.setAccessibleDescription(
31+
"Zeigt, ob ein Programm gestartet wurde, läuft oder beendet ist."
32+
)
2933
toolbar.addWidget(self.status_label)
3034
toolbar.addStretch()
3135

32-
self.run_btn = QPushButton("Run")
36+
self.run_btn = QPushButton("Ausführen")
3337
self.run_btn.setEnabled(False)
38+
self.run_btn.setToolTip("Aktuelle Datei ausführen")
39+
self.run_btn.setAccessibleName("Aktuelle Datei ausführen")
40+
self.run_btn.setAccessibleDescription(
41+
"Startet die aktuell geöffnete Datei, sobald ein passender Sprachprovider verfügbar ist."
42+
)
3443
toolbar.addWidget(self.run_btn)
3544

36-
self.stop_btn = QPushButton("Stop")
45+
self.stop_btn = QPushButton("Stoppen")
3746
self.stop_btn.setEnabled(False)
47+
self.stop_btn.setToolTip("Laufenden Prozess stoppen")
48+
self.stop_btn.setAccessibleName("Ausführung stoppen")
49+
self.stop_btn.setAccessibleDescription(
50+
"Beendet den aktuell laufenden Prozess im Ausgabebereich."
51+
)
3852
self.stop_btn.clicked.connect(self.stop_process)
3953
toolbar.addWidget(self.stop_btn)
4054

41-
self.clear_btn = QPushButton("Clear")
55+
self.clear_btn = QPushButton("Leeren")
56+
self.clear_btn.setToolTip("Ausgabe leeren")
57+
self.clear_btn.setAccessibleName("Ausgabe leeren")
58+
self.clear_btn.setAccessibleDescription(
59+
"Entfernt alle bisherigen Meldungen aus dem Ausgabebereich."
60+
)
4261
self.clear_btn.clicked.connect(self.clear)
4362
toolbar.addWidget(self.clear_btn)
4463

@@ -47,6 +66,11 @@ def setup_ui(self):
4766
# Output-Text
4867
self.output = QTextEdit()
4968
self.output.setReadOnly(True)
69+
self.output.setToolTip("Programm-Ausgabe und Fehlermeldungen")
70+
self.output.setAccessibleName("Programmausgabe")
71+
self.output.setAccessibleDescription(
72+
"Zeigt Standardausgabe, Fehlerausgabe und Prozessstatus der ausgeführten Datei."
73+
)
5074
self.output.setFont(QFont("Consolas", 10))
5175
self.output.setStyleSheet(
5276
"QTextEdit { background-color: #1a1a1a; color: #d4d4d4; border: none; }"

features/terminal.py

Lines changed: 28 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ def _setup_ui(self):
6161

6262
self.shell_combo = QComboBox()
6363
self._populate_shells()
64+
self.shell_combo.setToolTip("Shell für das integrierte Terminal auswählen")
65+
self.shell_combo.setAccessibleName("Terminal-Shell auswählen")
66+
self.shell_combo.setAccessibleDescription(
67+
"Wählt aus, welche lokale Shell im integrierten Terminal gestartet wird."
68+
)
6469
self.shell_combo.currentTextChanged.connect(self._restart_shell)
6570
toolbar.addWidget(QLabel("Shell:"))
6671
toolbar.addWidget(self.shell_combo)
@@ -69,10 +74,21 @@ def _setup_ui(self):
6974

7075
self.cwd_label = QLabel(self.working_dir)
7176
self.cwd_label.setStyleSheet("color: #888; font-size: 10px;")
77+
self.cwd_label.setToolTip("Aktueller Arbeitsordner des Terminals")
78+
self.cwd_label.setAccessibleName("Terminal-Arbeitsordner")
79+
self.cwd_label.setAccessibleDescription(
80+
"Zeigt den Ordner, in dem Befehle im integrierten Terminal ausgeführt werden."
81+
)
7282
toolbar.addWidget(self.cwd_label)
7383

74-
btn_clear = QPushButton("Clear")
84+
btn_clear = QPushButton("Leeren")
7585
btn_clear.setFixedWidth(50)
86+
btn_clear.setToolTip("Terminalausgabe leeren")
87+
btn_clear.setAccessibleName("Terminalausgabe leeren")
88+
btn_clear.setAccessibleDescription(
89+
"Entfernt die sichtbare Ausgabe des integrierten Terminals."
90+
)
91+
self.clear_btn = btn_clear
7692
btn_clear.clicked.connect(self.clear)
7793
toolbar.addWidget(btn_clear)
7894

@@ -81,6 +97,11 @@ def _setup_ui(self):
8197
# Output
8298
self.output = QTextEdit()
8399
self.output.setReadOnly(True)
100+
self.output.setToolTip("Ausgabe des integrierten Terminals")
101+
self.output.setAccessibleName("Terminalausgabe")
102+
self.output.setAccessibleDescription(
103+
"Zeigt Ausgaben, Fehlermeldungen und Statuszeilen der gestarteten Shell."
104+
)
84105
self.output.setFont(QFont("Consolas", 10))
85106
self.output.setStyleSheet(
86107
"QTextEdit { background-color: #0c0c0c; color: #cccccc; border: none; }"
@@ -93,10 +114,16 @@ def _setup_ui(self):
93114

94115
self.prompt_label = QLabel(">")
95116
self.prompt_label.setStyleSheet("color: #4ec9b0; font-family: Consolas;")
117+
self.prompt_label.setAccessibleName("Terminal-Eingabeaufforderung")
96118
input_row.addWidget(self.prompt_label)
97119

98120
self.input = TerminalInput()
99121
self.input.setFont(QFont("Consolas", 10))
122+
self.input.setToolTip("Befehl im integrierten Terminal eingeben")
123+
self.input.setAccessibleName("Terminal-Befehl")
124+
self.input.setAccessibleDescription(
125+
"Eingabefeld für Shell-Befehle. Pfeil hoch und Pfeil runter wechseln durch die Befehlshistorie."
126+
)
100127
self.input.setStyleSheet(
101128
"QLineEdit { background: #1a1a1a; color: #cccccc; border: 1px solid #333; padding: 4px; }"
102129
)

tests/test_output_panel.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,24 @@ def test_run_command_stop_btn_enabled_after_start(self):
6868
"stop_btn muss nach run_command() enabled sein",
6969
)
7070

71+
def test_output_controls_expose_accessible_context(self):
72+
"""Ausgabe-Controls brauchen deutsche Labels und Assistenzkontext."""
73+
self.assertEqual(self.panel.run_btn.text(), "Ausführen")
74+
self.assertEqual(self.panel.run_btn.toolTip(), "Aktuelle Datei ausführen")
75+
self.assertEqual(self.panel.run_btn.accessibleName(), "Aktuelle Datei ausführen")
76+
self.assertIn("Sprachprovider", self.panel.run_btn.accessibleDescription())
77+
78+
self.assertEqual(self.panel.stop_btn.text(), "Stoppen")
79+
self.assertEqual(self.panel.stop_btn.accessibleName(), "Ausführung stoppen")
80+
self.assertIn("laufenden Prozess", self.panel.stop_btn.accessibleDescription())
81+
82+
self.assertEqual(self.panel.clear_btn.text(), "Leeren")
83+
self.assertEqual(self.panel.clear_btn.accessibleName(), "Ausgabe leeren")
84+
self.assertIn("Meldungen", self.panel.clear_btn.accessibleDescription())
85+
86+
self.assertEqual(self.panel.status_label.accessibleName(), "Ausführungsstatus")
87+
self.assertEqual(self.panel.output.accessibleName(), "Programmausgabe")
88+
7189

7290
if __name__ == "__main__":
7391
unittest.main()

tests/test_terminal_encoding.py

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,25 @@ def test_input_encoding_powershell_is_utf8(self):
3939
self.assertEqual(widget._input_encoding(), "utf-8")
4040
widget.close()
4141

42+
def test_terminal_controls_expose_accessible_context(self):
43+
"""Terminal-Controls brauchen Tooltip- und Screenreader-Kontext."""
44+
widget = self._make_widget("cmd")
45+
try:
46+
self.assertEqual(widget.shell_combo.accessibleName(), "Terminal-Shell auswählen")
47+
self.assertIn("Shell", widget.shell_combo.toolTip())
48+
self.assertIn("gestartet", widget.shell_combo.accessibleDescription())
49+
50+
self.assertEqual(widget.clear_btn.text(), "Leeren")
51+
self.assertEqual(widget.clear_btn.accessibleName(), "Terminalausgabe leeren")
52+
self.assertIn("Ausgabe", widget.clear_btn.accessibleDescription())
53+
54+
self.assertEqual(widget.cwd_label.accessibleName(), "Terminal-Arbeitsordner")
55+
self.assertEqual(widget.output.accessibleName(), "Terminalausgabe")
56+
self.assertEqual(widget.input.accessibleName(), "Terminal-Befehl")
57+
self.assertIn("Befehlshistorie", widget.input.accessibleDescription())
58+
finally:
59+
widget.close()
60+
4261
# --- set_working_dir encoding-Konsistenz ---
4362

4463
@unittest.skipUnless(sys.platform == "win32", "Windows-only")

ui/main_window.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ def setup_ui(self):
6767
toolbar.addAction("Öffnen", self.open_file)
6868
toolbar.addAction("Speichern", self.save_file)
6969
toolbar.addSeparator()
70-
toolbar.addAction("Run", self.run_current)
70+
toolbar.addAction("Ausführen", self.run_current)
7171

7272
# Sprach-Auswahl in Toolbar
7373
self.lang_combo = QComboBox()

0 commit comments

Comments
 (0)