/* TUI layout window management.
- Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007
+ Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2007, 2008, 2009
Free Software Foundation, Inc.
Contributed by Hewlett-Packard Company.
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 2 of the License, or
+ 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,
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, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA. */
+ along with this program. If not, see <http://www.gnu.org/licenses/>. */
#include "defs.h"
#include "command.h"
#include "tui/tui-win.h"
#include "tui/tui-winsource.h"
#include "tui/tui-disasm.h"
+#include "tui/tui-layout.h"
#include "gdb_string.h"
#include "gdb_curses.h"
** Static Local Decls
********************************/
static void show_layout (enum tui_layout_type);
-static void init_gen_win_info (struct tui_gen_win_info *, enum tui_win_type, int, int, int, int);
-static void *init_and_make_win (void *, enum tui_win_type, int, int, int, int, int);
+static void init_gen_win_info (struct tui_gen_win_info *,
+ enum tui_win_type,
+ int, int, int, int);
+static void *init_and_make_win (void *, enum tui_win_type,
+ int, int, int, int, int);
static void show_source_or_disasm_and_command (enum tui_layout_type);
-static void make_source_or_disasm_window (struct tui_win_info **, enum tui_win_type, int, int);
+static void make_source_or_disasm_window (struct tui_win_info **,
+ enum tui_win_type,
+ int, int);
static void make_command_window (struct tui_win_info **, int, int);
static void make_source_window (struct tui_win_info **, int, int);
static void make_disasm_window (struct tui_win_info **, int, int);
source/asm. */
tui_free_all_source_wins_content ();
tui_clear_source_windows ();
- if (layout == SRC_DATA_COMMAND || layout == DISASSEM_DATA_COMMAND)
+ if (layout == SRC_DATA_COMMAND
+ || layout == DISASSEM_DATA_COMMAND)
{
show_data (layout);
tui_refresh_all (tui_win_list);
{
enum tui_status status = TUI_SUCCESS;
- if (layout_type != UNDEFINED_LAYOUT || regs_display_type != TUI_UNDEFINED_REGS)
+ if (layout_type != UNDEFINED_LAYOUT
+ || regs_display_type != TUI_UNDEFINED_REGS)
{
- enum tui_layout_type cur_layout = tui_current_layout (), new_layout = UNDEFINED_LAYOUT;
+ enum tui_layout_type cur_layout = tui_current_layout (),
+ new_layout = UNDEFINED_LAYOUT;
int regs_populate = FALSE;
CORE_ADDR addr = extract_display_start_addr ();
struct tui_win_info *win_with_focus = tui_win_with_focus ();
struct tui_layout_def *layout_def = tui_layout_def ();
- if (layout_type == UNDEFINED_LAYOUT &&
- regs_display_type != TUI_UNDEFINED_REGS)
+ if (layout_type == UNDEFINED_LAYOUT
+ && regs_display_type != TUI_UNDEFINED_REGS)
{
if (cur_layout == SRC_DISASSEM_COMMAND)
new_layout = DISASSEM_DATA_COMMAND;
- else if (cur_layout == SRC_COMMAND || cur_layout == SRC_DATA_COMMAND)
+ else if (cur_layout == SRC_COMMAND
+ || cur_layout == SRC_DATA_COMMAND)
new_layout = SRC_DATA_COMMAND;
- else if (cur_layout == DISASSEM_COMMAND ||
- cur_layout == DISASSEM_DATA_COMMAND)
+ else if (cur_layout == DISASSEM_COMMAND
+ || cur_layout == DISASSEM_DATA_COMMAND)
new_layout = DISASSEM_DATA_COMMAND;
}
else
new_layout = layout_type;
- regs_populate = (new_layout == SRC_DATA_COMMAND ||
- new_layout == DISASSEM_DATA_COMMAND ||
- regs_display_type != TUI_UNDEFINED_REGS);
- if (new_layout != cur_layout || regs_display_type != TUI_UNDEFINED_REGS)
+ regs_populate = (new_layout == SRC_DATA_COMMAND
+ || new_layout == DISASSEM_DATA_COMMAND
+ || regs_display_type != TUI_UNDEFINED_REGS);
+ if (new_layout != cur_layout
+ || regs_display_type != TUI_UNDEFINED_REGS)
{
if (new_layout != cur_layout)
{
/*
* Now update the window content.
*/
- if (!regs_populate &&
- (new_layout == SRC_DATA_COMMAND ||
- new_layout == DISASSEM_DATA_COMMAND))
+ if (!regs_populate
+ && (new_layout == SRC_DATA_COMMAND
+ || new_layout == DISASSEM_DATA_COMMAND))
tui_display_all_data ();
tui_update_source_windows_with_addr (addr);
switch (type)
{
case SRC_WIN:
- if (cur_layout != SRC_COMMAND &&
- cur_layout != SRC_DISASSEM_COMMAND &&
- cur_layout != SRC_DATA_COMMAND)
+ if (cur_layout != SRC_COMMAND
+ && cur_layout != SRC_DISASSEM_COMMAND
+ && cur_layout != SRC_DATA_COMMAND)
{
tui_clear_source_windows_detail ();
if (cur_layout == DISASSEM_DATA_COMMAND)
}
break;
case DISASSEM_WIN:
- if (cur_layout != DISASSEM_COMMAND &&
- cur_layout != SRC_DISASSEM_COMMAND &&
- cur_layout != DISASSEM_DATA_COMMAND)
+ if (cur_layout != DISASSEM_COMMAND
+ && cur_layout != SRC_DISASSEM_COMMAND
+ && cur_layout != DISASSEM_DATA_COMMAND)
{
tui_clear_source_windows_detail ();
if (cur_layout == SRC_DATA_COMMAND)
}
break;
case DATA_WIN:
- if (cur_layout != SRC_DATA_COMMAND &&
- cur_layout != DISASSEM_DATA_COMMAND)
+ if (cur_layout != SRC_DATA_COMMAND
+ && cur_layout != DISASSEM_DATA_COMMAND)
{
if (cur_layout == DISASSEM_COMMAND)
show_layout (DISASSEM_DATA_COMMAND);
answer what the height of a window would be based upon its type and
the layout. */
int
-tui_default_win_height (enum tui_win_type type, enum tui_layout_type layout)
+tui_default_win_height (enum tui_win_type type,
+ enum tui_layout_type layout)
{
int h;
/* Function to initialize gdb commands, for tui window layout
manipulation. */
+
+/* Provide a prototype to silence -Wmissing-prototypes. */
+extern initialize_file_ftype _initialize_tui_layout;
+
void
_initialize_tui_layout (void)
{
buf_ptr[i] = toupper (buf_ptr[i]);
/* First check for ambiguous input. */
- if (strlen (buf_ptr) <= 1 && (*buf_ptr == 'S' || *buf_ptr == '$'))
+ if (strlen (buf_ptr) <= 1
+ && (*buf_ptr == 'S' || *buf_ptr == '$'))
{
warning (_("Ambiguous command input."));
status = TUI_FAILURE;
new_layout = DISASSEM_COMMAND;
else if (subset_compare (buf_ptr, "SPLIT"))
new_layout = SRC_DISASSEM_COMMAND;
- else if (subset_compare (buf_ptr, "REGS") ||
- subset_compare (buf_ptr, TUI_GENERAL_SPECIAL_REGS_NAME) ||
- subset_compare (buf_ptr, TUI_GENERAL_REGS_NAME) ||
- subset_compare (buf_ptr, TUI_FLOAT_REGS_NAME) ||
- subset_compare (buf_ptr, TUI_SPECIAL_REGS_NAME))
+ else if (subset_compare (buf_ptr, "REGS")
+ || subset_compare (buf_ptr, TUI_GENERAL_SPECIAL_REGS_NAME)
+ || subset_compare (buf_ptr, TUI_GENERAL_REGS_NAME)
+ || subset_compare (buf_ptr, TUI_FLOAT_REGS_NAME)
+ || subset_compare (buf_ptr, TUI_SPECIAL_REGS_NAME))
{
- if (cur_layout == SRC_COMMAND || cur_layout == SRC_DATA_COMMAND)
+ if (cur_layout == SRC_COMMAND
+ || cur_layout == SRC_DATA_COMMAND)
new_layout = SRC_DATA_COMMAND;
else
new_layout = DISASSEM_DATA_COMMAND;
up this code. - edie epstein */
if (subset_compare (buf_ptr, TUI_FLOAT_REGS_NAME))
{
- if (TUI_DATA_WIN->detail.data_display_info.regs_display_type !=
- TUI_SFLOAT_REGS &&
- TUI_DATA_WIN->detail.data_display_info.regs_display_type !=
- TUI_DFLOAT_REGS)
+ if (TUI_DATA_WIN->detail.data_display_info.regs_display_type != TUI_SFLOAT_REGS
+ && TUI_DATA_WIN->detail.data_display_info.regs_display_type != TUI_DFLOAT_REGS)
dpy_type = TUI_SFLOAT_REGS;
else
dpy_type =
static void
-make_command_window (struct tui_win_info **win_info_ptr, int height, int origin_y)
+make_command_window (struct tui_win_info **win_info_ptr,
+ int height, int origin_y)
{
*win_info_ptr = init_and_make_win (*win_info_ptr,
CMD_WIN,
/* make_source_window().
*/
static void
-make_source_window (struct tui_win_info **win_info_ptr, int height, int origin_y)
+make_source_window (struct tui_win_info **win_info_ptr,
+ int height, int origin_y)
{
make_source_or_disasm_window (win_info_ptr, SRC_WIN, height, origin_y);
/* make_disasm_window().
*/
static void
-make_disasm_window (struct tui_win_info **win_info_ptr, int height, int origin_y)
+make_disasm_window (struct tui_win_info **win_info_ptr,
+ int height, int origin_y)
{
make_source_or_disasm_window (win_info_ptr, DISASSEM_WIN, height, origin_y);
static void
-make_data_window (struct tui_win_info **win_info_ptr, int height, int origin_y)
+make_data_window (struct tui_win_info **win_info_ptr,
+ int height, int origin_y)
{
*win_info_ptr = init_and_make_win (*win_info_ptr,
DATA_WIN,
else
{
init_gen_win_info (&TUI_SRC_WIN->generic,
- TUI_SRC_WIN->generic.type,
- src_height,
- TUI_SRC_WIN->generic.width,
- TUI_SRC_WIN->detail.source_info.execution_info->width,
- 0);
+ TUI_SRC_WIN->generic.type,
+ src_height,
+ TUI_SRC_WIN->generic.width,
+ TUI_SRC_WIN->detail.source_info.execution_info->width,
+ 0);
TUI_SRC_WIN->can_highlight = TRUE;
init_gen_win_info (TUI_SRC_WIN->detail.source_info.execution_info,
- EXEC_INFO_WIN,
- src_height,
- 3,
- 0,
- 0);
+ EXEC_INFO_WIN,
+ src_height,
+ 3,
+ 0,
+ 0);
tui_make_visible (&TUI_SRC_WIN->generic);
tui_make_visible (TUI_SRC_WIN->detail.source_info.execution_info);
TUI_SRC_WIN->detail.source_info.has_locator = FALSE;;
else
{
init_gen_win_info (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- tui_term_width (),
- 0,
- (src_height + asm_height) - 1);
+ LOCATOR_WIN,
+ 2 /* 1 */ ,
+ tui_term_width (),
+ 0,
+ (src_height + asm_height) - 1);
TUI_DISASM_WIN->detail.source_info.has_locator = TRUE;
- init_gen_win_info (
- &TUI_DISASM_WIN->generic,
- TUI_DISASM_WIN->generic.type,
- asm_height,
- TUI_DISASM_WIN->generic.width,
- TUI_DISASM_WIN->detail.source_info.execution_info->width,
- src_height - 1);
+ init_gen_win_info (&TUI_DISASM_WIN->generic,
+ TUI_DISASM_WIN->generic.type,
+ asm_height,
+ TUI_DISASM_WIN->generic.width,
+ TUI_DISASM_WIN->detail.source_info.execution_info->width,
+ src_height - 1);
init_gen_win_info (TUI_DISASM_WIN->detail.source_info.execution_info,
- EXEC_INFO_WIN,
- asm_height,
- 3,
- 0,
- src_height - 1);
+ EXEC_INFO_WIN,
+ asm_height,
+ 3,
+ 0,
+ src_height - 1);
TUI_DISASM_WIN->can_highlight = TRUE;
tui_make_visible (&TUI_DISASM_WIN->generic);
tui_make_visible (TUI_DISASM_WIN->detail.source_info.execution_info);
if (TUI_CMD_WIN == NULL)
make_command_window (&TUI_CMD_WIN,
- cmd_height,
- tui_term_height () - cmd_height);
+ cmd_height,
+ tui_term_height () - cmd_height);
else
{
init_gen_win_info (&TUI_CMD_WIN->generic,
- TUI_CMD_WIN->generic.type,
- TUI_CMD_WIN->generic.height,
- TUI_CMD_WIN->generic.width,
- 0,
- TUI_CMD_WIN->generic.origin.y);
+ TUI_CMD_WIN->generic.type,
+ TUI_CMD_WIN->generic.height,
+ TUI_CMD_WIN->generic.width,
+ 0,
+ TUI_CMD_WIN->generic.origin.y);
TUI_CMD_WIN->can_highlight = FALSE;
tui_make_visible (&TUI_CMD_WIN->generic);
}
else
{
init_gen_win_info (&tui_win_list[win_type]->generic,
- tui_win_list[win_type]->generic.type,
- src_height,
- tui_win_list[win_type]->generic.width,
- tui_win_list[win_type]->detail.source_info.execution_info->width,
- data_height - 1);
+ tui_win_list[win_type]->generic.type,
+ src_height,
+ tui_win_list[win_type]->generic.width,
+ tui_win_list[win_type]->detail.source_info.execution_info->width,
+ data_height - 1);
init_gen_win_info (tui_win_list[win_type]->detail.source_info.execution_info,
- EXEC_INFO_WIN,
- src_height,
- 3,
- 0,
- data_height - 1);
+ EXEC_INFO_WIN,
+ src_height,
+ 3,
+ 0,
+ data_height - 1);
tui_make_visible (&tui_win_list[win_type]->generic);
tui_make_visible (tui_win_list[win_type]->detail.source_info.execution_info);
init_gen_win_info (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- tui_term_width (),
- 0,
- total_height - 1);
+ LOCATOR_WIN,
+ 2 /* 1 */ ,
+ tui_term_width (),
+ 0,
+ total_height - 1);
}
tui_win_list[win_type]->detail.source_info.has_locator = TRUE;
tui_make_visible (locator);
/* init_gen_win_info().
*/
static void
-init_gen_win_info (struct tui_gen_win_info *win_info, enum tui_win_type type,
- int height, int width, int origin_x, int origin_y)
+init_gen_win_info (struct tui_gen_win_info *win_info,
+ enum tui_win_type type,
+ int height, int width,
+ int origin_x, int origin_y)
{
int h = height;
/* init_and_make_win().
*/
static void *
-init_and_make_win (void *opaque_win_info, enum tui_win_type win_type,
- int height, int width, int origin_x, int origin_y,
+init_and_make_win (void *opaque_win_info,
+ enum tui_win_type win_type,
+ int height, int width,
+ int origin_x, int origin_y,
int box_it)
{
struct tui_gen_win_info *generic;
static void
-make_source_or_disasm_window (struct tui_win_info **win_info_ptr, enum tui_win_type type,
- int height, int origin_y)
+make_source_or_disasm_window (struct tui_win_info **win_info_ptr,
+ enum tui_win_type type,
+ int height, int origin_y)
{
struct tui_gen_win_info *execution_info = (struct tui_gen_win_info *) NULL;
cmd_height = tui_term_height () / 3;
src_height = tui_term_height () - cmd_height;
-
if (layout_type == SRC_COMMAND)
win_info_ptr = &TUI_SRC_WIN;
else
else
{
init_gen_win_info (locator,
- LOCATOR_WIN,
- 2 /* 1 */ ,
- tui_term_width (),
- 0,
- src_height - 1);
+ LOCATOR_WIN,
+ 2 /* 1 */ ,
+ tui_term_width (),
+ 0,
+ src_height - 1);
(*win_info_ptr)->detail.source_info.has_locator = TRUE;
- init_gen_win_info (
- &(*win_info_ptr)->generic,
- (*win_info_ptr)->generic.type,
- src_height - 1,
- (*win_info_ptr)->generic.width,
- (*win_info_ptr)->detail.source_info.execution_info->width,
- 0);
+ init_gen_win_info (&(*win_info_ptr)->generic,
+ (*win_info_ptr)->generic.type,
+ src_height - 1,
+ (*win_info_ptr)->generic.width,
+ (*win_info_ptr)->detail.source_info.execution_info->width,
+ 0);
init_gen_win_info ((*win_info_ptr)->detail.source_info.execution_info,
- EXEC_INFO_WIN,
- src_height - 1,
- 3,
- 0,
- 0);
+ EXEC_INFO_WIN,
+ src_height - 1,
+ 3,
+ 0,
+ 0);
(*win_info_ptr)->can_highlight = TRUE;
tui_make_visible (&(*win_info_ptr)->generic);
tui_make_visible ((*win_info_ptr)->detail.source_info.execution_info);
else
{
init_gen_win_info (&TUI_CMD_WIN->generic,
- TUI_CMD_WIN->generic.type,
- TUI_CMD_WIN->generic.height,
- TUI_CMD_WIN->generic.width,
- TUI_CMD_WIN->generic.origin.x,
- TUI_CMD_WIN->generic.origin.y);
+ TUI_CMD_WIN->generic.type,
+ TUI_CMD_WIN->generic.height,
+ TUI_CMD_WIN->generic.width,
+ TUI_CMD_WIN->generic.origin.x,
+ TUI_CMD_WIN->generic.origin.y);
TUI_CMD_WIN->can_highlight = FALSE;
tui_make_visible (&TUI_CMD_WIN->generic);
}