Commit | Line | Data |
---|---|---|
cbe56571 TT |
1 | /* CLI stylizing |
2 | ||
3 | Copyright (C) 2018 Free Software Foundation, Inc. | |
4 | ||
5 | This file is part of GDB. | |
6 | ||
7 | This program is free software; you can redistribute it and/or modify | |
8 | it under the terms of the GNU General Public License as published by | |
9 | the Free Software Foundation; either version 3 of the License, or | |
10 | (at your option) any later version. | |
11 | ||
12 | This program is distributed in the hope that it will be useful, | |
13 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
14 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
15 | GNU General Public License for more details. | |
16 | ||
17 | You should have received a copy of the GNU General Public License | |
18 | along with this program. If not, see <http://www.gnu.org/licenses/>. */ | |
19 | ||
20 | #ifndef CLI_STYLE_H | |
21 | #define CLI_STYLE_H | |
22 | ||
23 | #include "ui-file.h" | |
24 | ||
25 | /* A single CLI style option. */ | |
26 | class cli_style_option | |
27 | { | |
28 | public: | |
29 | ||
30 | /* Construct a CLI style option with a foreground color. */ | |
31 | cli_style_option (ui_file_style::basic_color fg); | |
32 | ||
33 | /* Return a ui_file_style corresponding to the settings in this CLI | |
34 | style. */ | |
35 | ui_file_style style () const; | |
36 | ||
37 | /* Call once to register this CLI style with the CLI engine. */ | |
38 | void add_setshow_commands (const char *name, | |
39 | enum command_class theclass, | |
40 | const char *prefix_doc, | |
41 | const char *prefixname, | |
42 | struct cmd_list_element **set_list, | |
43 | struct cmd_list_element **show_list); | |
44 | ||
45 | private: | |
46 | ||
47 | /* The foreground. */ | |
48 | const char *m_foreground; | |
49 | /* The background. */ | |
50 | const char *m_background; | |
51 | /* The intensity. */ | |
52 | const char *m_intensity; | |
53 | ||
54 | /* Storage for prefixes needed when registering the commands. */ | |
55 | std::string m_show_prefix; | |
56 | std::string m_set_prefix; | |
57 | /* Storage for command lists needed when registering | |
58 | subcommands. */ | |
59 | struct cmd_list_element *m_set_list = nullptr; | |
60 | struct cmd_list_element *m_show_list = nullptr; | |
61 | ||
62 | /* Callback to set a value. */ | |
63 | static void do_set (const char *args, int from_tty); | |
64 | /* Callback to show a value. */ | |
65 | static void do_show (const char *args, int from_tty); | |
66 | /* Callback to show the foreground. */ | |
67 | static void do_show_foreground (struct ui_file *file, int from_tty, | |
68 | struct cmd_list_element *cmd, | |
69 | const char *value); | |
70 | /* Callback to show the background. */ | |
71 | static void do_show_background (struct ui_file *file, int from_tty, | |
72 | struct cmd_list_element *cmd, | |
73 | const char *value); | |
74 | /* Callback to show the intensity. */ | |
75 | static void do_show_intensity (struct ui_file *file, int from_tty, | |
76 | struct cmd_list_element *cmd, | |
77 | const char *value); | |
78 | }; | |
79 | ||
80 | /* The file name style. */ | |
81 | extern cli_style_option file_name_style; | |
82 | ||
83 | /* The function name style. */ | |
84 | extern cli_style_option function_name_style; | |
85 | ||
86 | /* True if styling is enabled. */ | |
87 | extern int cli_styling; | |
88 | ||
89 | #endif /* CLI_STYLE_H */ |