22#ifndef TUI_TUI_LAYOUT_H
23#define TUI_TUI_LAYOUT_H
29#include "gdbsupport/iterator-range.h"
31#include <unordered_map>
59 virtual std::unique_ptr<tui_layout_base>
clone ()
const = 0;
66 bool preserve_cmd_win_size_p) = 0;
129 virtual void get_windows (std::vector<tui_win_info *> *windows) = 0;
155 std::unique_ptr<tui_layout_base>
clone ()
const override;
158 bool preserve_cmd_win_size_p)
override;
226 void add_split (std::unique_ptr<tui_layout_split> &&layout,
int weight);
233 std::unique_ptr<tui_layout_base>
clone ()
const override;
236 bool preserve_cmd_win_size_p)
override;
266 item.layout->get_windows (windows);
395 {
return (*m_iter).first; }
410 = iterator_range<known_window_names_iterator>;
virtual void remove_windows(const char *name)=0
virtual void replace_window(const char *name, const char *new_window)=0
virtual bool first_edge_has_border_p() const =0
virtual std::unique_ptr< tui_layout_base > clone() const =0
virtual ~tui_layout_base()=default
virtual bool last_edge_has_border_p() const =0
virtual void specification(ui_file *output, int depth)=0
virtual tui_adjust_result set_height(const char *name, int new_height)=0
virtual tui_adjust_result set_width(const char *name, int new_width)=0
virtual void get_windows(std::vector< tui_win_info * > *windows)=0
tui_layout_base()=default
virtual void get_sizes(bool height, int *min_value, int *max_value)=0
DISABLE_COPY_AND_ASSIGN(tui_layout_base)
virtual std::string layout_fingerprint() const =0
virtual void apply(int x, int y, int width, int height, bool preserve_cmd_win_size_p)=0
virtual const char * get_name() const
DISABLE_COPY_AND_ASSIGN(tui_layout_split)
void specification(ui_file *output, int depth) override
void set_weights_from_sizes()
std::string tui_debug_weights_to_string() const
bool first_edge_has_border_p() const override
void get_sizes(bool height, int *min_value, int *max_value) override
static void tui_debug_print_size_info(const std::vector< size_info > &info)
void get_windows(std::vector< tui_win_info * > *windows) override
std::vector< split > m_splits
std::unique_ptr< tui_layout_base > clone() const override
void remove_windows(const char *name) override
tui_adjust_result set_size(const char *name, int new_size, bool set_width_p)
tui_adjust_result set_width(const char *name, int new_width) override
void add_split(std::unique_ptr< tui_layout_split > &&layout, int weight)
tui_layout_split(bool vertical=true)
void replace_window(const char *name, const char *new_window) override
void add_window(const char *name, int weight)
bool last_edge_has_border_p() const override
tui_adjust_result set_height(const char *name, int new_height) override
void apply(int x, int y, int width, int height, bool preserve_cmd_win_size_p) override
std::string layout_fingerprint() const override
void get_sizes(bool height, int *min_value, int *max_value) override
const char * get_name() const override
bool last_edge_has_border_p() const override
DISABLE_COPY_AND_ASSIGN(tui_layout_window)
std::unique_ptr< tui_layout_base > clone() const override
bool first_edge_has_border_p() const override
void get_windows(std::vector< tui_win_info * > *windows) override
tui_layout_window(const char *name)
void replace_window(const char *name, const char *new_window) override
tui_adjust_result set_width(const char *name, int new_width) override
void apply(int x, int y, int width, int height, bool preserve_cmd_win_size_p) override
void specification(ui_file *output, int depth) override
tui_adjust_result set_height(const char *name, int new_height) override
void remove_windows(const char *name) override
std::string layout_fingerprint() const override
bool operator!=(const known_window_names_iterator &other) const
known_window_names_iterator(known_window_types_iterator &&iter)
const std::string & operator*() const
window_types_map::iterator known_window_types_iterator
known_window_names_iterator & operator++()
known_window_types_iterator m_iter
std::unique_ptr< tui_layout_base > layout
void tui_set_initial_layout()
void tui_register_window(const char *name, window_factory &&factory)
std::unordered_map< std::string, window_factory > window_types_map
void tui_adjust_window_height(struct tui_win_info *win, int new_height)
void tui_apply_current_layout(bool)
iterator_range< known_window_names_iterator > known_window_names_range
void tui_remove_some_windows()
void tui_add_win_to_layout(enum tui_win_type)
std::function< tui_win_info *(const char *name) window_factory)
known_window_names_range all_known_window_names()
void tui_adjust_window_width(struct tui_win_info *win, int new_width)