From 01b1af321f804ef6dfd40d3054c8757f31096ea8 Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Sat, 22 Feb 2020 11:48:26 -0700 Subject: Allow TUI windows in Python This patch adds support for writing new TUI windows in Python. 2020-02-22 Tom Tromey * NEWS: Add entry for gdb.register_window_type. * tui/tui-layout.h (window_factory): New typedef. (tui_register_window): Declare. * tui/tui-layout.c (saved_tui_windows): New global. (tui_apply_current_layout): Use it. (tui_register_window): New function. * python/python.c (do_start_initialization): Call gdbpy_initialize_tui. (python_GdbMethods): Add "register_window_type" function. * python/python-internal.h (gdbpy_register_tui_window) (gdbpy_initialize_tui): Declare. * python/py-tui.c: New file. * Makefile.in (SUBDIR_PYTHON_SRCS): Add py-tui.c. gdb/doc/ChangeLog 2020-02-22 Tom Tromey * python.texi (Python API): Add menu item. (TUI Windows In Python): New node. gdb/testsuite/ChangeLog 2020-02-22 Tom Tromey * gdb.python/tui-window.exp: New file. * gdb.python/tui-window.py: New file. Change-Id: I85fbfb923a1840450a00a7dce113a05d7f048baa --- gdb/testsuite/gdb.python/tui-window.py | 37 ++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 gdb/testsuite/gdb.python/tui-window.py (limited to 'gdb/testsuite/gdb.python/tui-window.py') diff --git a/gdb/testsuite/gdb.python/tui-window.py b/gdb/testsuite/gdb.python/tui-window.py new file mode 100644 index 0000000..4deb585 --- /dev/null +++ b/gdb/testsuite/gdb.python/tui-window.py @@ -0,0 +1,37 @@ +# Copyright (C) 2020 Free Software Foundation, Inc. +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# A TUI window implemented in Python. + +import gdb + +the_window = None + +class TestWindow: + def __init__(self, win): + global the_window + the_window = win + self.count = 0 + self.win = win + win.title = "This Is The Title" + + def render(self): + self.win.erase() + w = self.win.width + h = self.win.height + self.win.write("Test: " + str(self.count) + " " + str(w) + "x" + str(h)) + self.count = self.count + 1 + +gdb.register_window_type("test", TestWindow) -- cgit v1.1