|
2 | 2 | import sys
|
3 | 3 |
|
4 | 4 | from textual import on
|
| 5 | +from textual import events |
5 | 6 | from textual.app import App, ComposeResult
|
6 | 7 | from textual.reactive import Reactive
|
7 | 8 | from textual.widgets import Input
|
@@ -50,6 +51,12 @@ def __init__(self, disable_asm=False, disable_registers=False):
|
50 | 51 | super().__init__()
|
51 | 52 | self.disable_asm = disable_asm
|
52 | 53 | self.disable_registers = disable_registers
|
| 54 | + self.common_history = [""] |
| 55 | + self.common_history_index = 0 |
| 56 | + self.base_history = [""] |
| 57 | + self.base_history_index = 0 |
| 58 | + self.regressed_history = [""] |
| 59 | + self.regressed_history_index = 0 |
53 | 60 |
|
54 | 61 | async def set_command_result(self, version) -> None:
|
55 | 62 | state = Debugger.get_state(version)
|
@@ -282,29 +289,93 @@ async def execute_debugger_command(self, event: Input.Changed) -> None:
|
282 | 289 | self.diff_area1.append([self.parallel_command_bar.value])
|
283 | 290 | self.diff_area2.append([self.parallel_command_bar.value])
|
284 | 291 |
|
285 |
| - await self.set_common_command_result(result) |
| 292 | + # append to history |
| 293 | + self.common_history.append(self.parallel_command_bar.value) |
| 294 | + self.common_history_index = len(self.common_history) |
| 295 | + |
| 296 | + else: |
| 297 | + # execute last command from history |
| 298 | + result = Debugger.run_parallel_command(self.common_history[-1]) |
| 299 | + |
| 300 | + self.diff_area1.append([self.parallel_command_bar.value]) |
| 301 | + self.diff_area2.append([self.parallel_command_bar.value]) |
| 302 | + |
| 303 | + await self.set_common_command_result(result) |
286 | 304 |
|
287 |
| - self.parallel_command_bar.value = "" |
| 305 | + self.parallel_command_bar.value = "" |
288 | 306 |
|
289 | 307 | elif event.control.id == 'base-command-bar':
|
290 | 308 | if self.base_command_bar.value != "":
|
291 | 309 | result = Debugger.run_single_command(self.base_command_bar.value, "base")
|
292 | 310 | self.diff_area1.append([self.base_command_bar.value])
|
293 | 311 | self.diff_area1.append(result)
|
294 | 312 |
|
295 |
| - await self.set_command_result("base") |
| 313 | + # append to history |
| 314 | + self.base_history.append(self.base_command_bar.value) |
| 315 | + self.base_history_index = len(self.base_history) |
| 316 | + |
| 317 | + else: |
| 318 | + # execute last command from history |
| 319 | + result = Debugger.run_single_command(self.base_history[-1], "base") |
| 320 | + |
| 321 | + self.diff_area1.append([self.base_command_bar.value]) |
| 322 | + self.diff_area1.append(result) |
| 323 | + |
| 324 | + await self.set_command_result("base") |
296 | 325 |
|
297 |
| - self.base_command_bar.value = "" |
| 326 | + self.base_command_bar.value = "" |
298 | 327 |
|
299 | 328 | elif event.control.id == 'regressed-command-bar':
|
300 | 329 | if self.regressed_command_bar.value != "":
|
301 | 330 | result = Debugger.run_single_command(self.regressed_command_bar.value, "regressed")
|
302 | 331 | self.diff_area2.append([self.regressed_command_bar.value])
|
303 | 332 | self.diff_area2.append(result)
|
304 | 333 |
|
305 |
| - await self.set_command_result("regressed") |
| 334 | + # append to history |
| 335 | + self.regressed_history.append(self.regressed_command_bar.value) |
| 336 | + self.regressed_history_index = len(self.regressed_history) |
| 337 | + |
| 338 | + else: |
| 339 | + # execute last command from history |
| 340 | + result = Debugger.run_single_command(self.regressed_history[-1], "regressed") |
| 341 | + self.diff_area2.append([self.regressed_command_bar.value]) |
| 342 | + self.diff_area2.append(result) |
| 343 | + |
| 344 | + await self.set_command_result("regressed") |
| 345 | + |
| 346 | + self.regressed_command_bar.value = "" |
| 347 | + |
| 348 | + async def on_key(self, event: events.Key) -> None: |
| 349 | + if self.focused.id == "parallel-command-bar": |
| 350 | + if event.key == "up": |
| 351 | + self.common_history_index = (self.common_history_index - 1) % len(self.common_history) |
| 352 | + elif event.key == "down": |
| 353 | + self.common_history_index = (self.common_history_index + 1) % len(self.common_history) |
| 354 | + else: |
| 355 | + return |
| 356 | + |
| 357 | + self.parallel_command_bar.value = self.common_history[self.common_history_index] |
| 358 | + |
| 359 | + elif self.focused.id == "base-command-bar": |
| 360 | + if event.key == "up": |
| 361 | + self.base_history_index = (self.base_history_index - 1) % len(self.base_history) |
| 362 | + elif event.key == "down": |
| 363 | + self.base_history_index = (self.base_history_index + 1) % len(self.base_history) |
| 364 | + else: |
| 365 | + return |
| 366 | + |
| 367 | + self.base_command_bar.value = self.base_history[self.base_history_index] |
| 368 | + |
| 369 | + elif self.focused.id == "regressed-command-bar": |
| 370 | + if event.key == "up": |
| 371 | + self.regressed_history_index = (self.regressed_history_index - 1) % len(self.regressed_history) |
| 372 | + elif event.key == "down": |
| 373 | + self.regressed_history_index = (self.regressed_history_index + 1) % len(self.regressed_history) |
| 374 | + else: |
| 375 | + return |
| 376 | + |
| 377 | + self.regressed_command_bar.value = self.regressed_history[self.regressed_history_index] |
306 | 378 |
|
307 |
| - self.regressed_command_bar.value = "" |
308 | 379 |
|
309 | 380 | if __name__ == "__main__":
|
310 | 381 | Debugger = None
|
|
0 commit comments