#include "tui/tui-source.h"
#include "gdb_curses.h"
-static void tui_layout_command (const char *, int);
static void extract_display_start_addr (struct gdbarch **, CORE_ADDR *);
/* The layouts. */
{
tui_win_info *focus = tui_win_with_focus ();
- if (strcmp (focus->name (), "cmd") == 0)
+ if (strcmp (focus->name (), CMD_NAME) == 0)
{
/* Try leaving the source or disassembly window. If neither
exists, just do nothing. */
{
known_window_types = new std::unordered_map<std::string, window_factory>;
- known_window_types->emplace ("src",
+ known_window_types->emplace (SRC_NAME,
make_standard_window<SRC_WIN,
tui_source_window>);
- known_window_types->emplace ("cmd",
+ known_window_types->emplace (CMD_NAME,
make_standard_window<CMD_WIN, tui_cmd_window>);
- known_window_types->emplace ("regs",
+ known_window_types->emplace (DATA_NAME,
make_standard_window<DATA_WIN,
tui_data_window>);
- known_window_types->emplace ("asm",
+ known_window_types->emplace (DISASSEM_NAME,
make_standard_window<DISASSEM_WIN,
tui_disasm_window>);
- known_window_types->emplace ("status", get_locator_window);
+ known_window_types->emplace (STATUS_NAME, get_locator_window);
}
/* See tui-layout.h. */
{
std::string name_copy = name;
- if (name_copy == "src" || name_copy == "cmd" || name_copy == "regs"
- || name_copy == "asm" || name_copy == "status")
+ if (name_copy == SRC_NAME || name_copy == CMD_NAME || name_copy == DATA_NAME
+ || name_copy == DISASSEM_NAME || name_copy == STATUS_NAME)
error (_("Window type \"%s\" is built-in"), name);
known_window_types->emplace (std::move (name_copy),
const char *this_name = m_splits[i].layout->get_name ();
if (this_name == nullptr)
m_splits[i].layout->remove_windows (name);
+ else if (strcmp (this_name, name) == 0
+ || strcmp (this_name, CMD_NAME) == 0
+ || strcmp (this_name, STATUS_NAME) == 0)
+ {
+ /* Keep. */
+ }
else
{
- if (strcmp (this_name, name) == 0
- || strcmp (this_name, "cmd") == 0)
- {
- /* Keep. */
- }
m_splits.erase (m_splits.begin () + i);
--i;
}
tui_layout_split *layout;
layout = new tui_layout_split ();
- layout->add_window ("src", 2);
- layout->add_window ("status", 0);
- layout->add_window ("cmd", 1);
- add_layout_command ("src", layout);
+ layout->add_window (SRC_NAME, 2);
+ layout->add_window (STATUS_NAME, 0);
+ layout->add_window (CMD_NAME, 1);
+ add_layout_command (SRC_NAME, layout);
layout = new tui_layout_split ();
- layout->add_window ("asm", 2);
- layout->add_window ("status", 0);
- layout->add_window ("cmd", 1);
- add_layout_command ("asm", layout);
+ layout->add_window (DISASSEM_NAME, 2);
+ layout->add_window (STATUS_NAME, 0);
+ layout->add_window (CMD_NAME, 1);
+ add_layout_command (DISASSEM_NAME, layout);
layout = new tui_layout_split ();
- layout->add_window ("src", 1);
- layout->add_window ("asm", 1);
- layout->add_window ("status", 0);
- layout->add_window ("cmd", 1);
+ layout->add_window (SRC_NAME, 1);
+ layout->add_window (DISASSEM_NAME, 1);
+ layout->add_window (STATUS_NAME, 0);
+ layout->add_window (CMD_NAME, 1);
add_layout_command ("split", layout);
layout = new tui_layout_split ();
- layout->add_window ("regs", 1);
- layout->add_window ("src", 1);
- layout->add_window ("status", 0);
- layout->add_window ("cmd", 1);
+ layout->add_window (DATA_NAME, 1);
+ layout->add_window (SRC_NAME, 1);
+ layout->add_window (STATUS_NAME, 0);
+ layout->add_window (CMD_NAME, 1);
layouts.emplace_back (layout);
src_regs_layout = layout;
layout = new tui_layout_split ();
- layout->add_window ("regs", 1);
- layout->add_window ("asm", 1);
- layout->add_window ("status", 0);
- layout->add_window ("cmd", 1);
+ layout->add_window (DATA_NAME, 1);
+ layout->add_window (DISASSEM_NAME, 1);
+ layout->add_window (STATUS_NAME, 0);
+ layout->add_window (CMD_NAME, 1);
layouts.emplace_back (layout);
asm_regs_layout = layout;
}
error (_("Missing '}' in layout specification"));
if (seen_windows.empty ())
error (_("New layout does not contain any windows"));
- if (seen_windows.find ("cmd") == seen_windows.end ())
- error (_("New layout does not contain the \"cmd\" window"));
+ if (seen_windows.find (CMD_NAME) == seen_windows.end ())
+ error (_("New layout does not contain the \"" CMD_NAME "\" window"));
gdb::unique_xmalloc_ptr<char> cmd_name
= make_unique_xstrdup (new_name.c_str ());
new_layout.release ();
}
-/* Base command for "layout". */
-
-static void
-tui_layout_command (const char *layout_name, int from_tty)
-{
- help_list (layout_list, "layout ", all_commands, gdb_stdout);
-}
-
/* Function to initialize gdb commands, for tui window layout
manipulation. */
void
_initialize_tui_layout ()
{
- add_prefix_cmd ("layout", class_tui, tui_layout_command, _("\
+ add_basic_prefix_cmd ("layout", class_tui, _("\
Change the layout of windows.\n\
Usage: layout prev | next | LAYOUT-NAME"),
- &layout_list, "layout ", 0, &cmdlist);
+ &layout_list, "layout ", 0, &cmdlist);
add_cmd ("next", class_tui, tui_next_layout_command,
_("Apply the next TUI layout."),