Remove some GTK+-only code.
[metze/wireshark/wip.git] / ui / recent.h
1 /* recent.h
2  * Definitions for recent "preference" handling routines
3  * Copyright 2004, Ulf Lamping <ulf.lamping@web.de>
4  *
5  * Wireshark - Network traffic analyzer
6  * By Gerald Combs <gerald@wireshark.org>
7  * Copyright 1998 Gerald Combs
8  *
9  * SPDX-License-Identifier: GPL-2.0-or-later
10  */
11
12 #ifndef __RECENT_H__
13 #define __RECENT_H__
14
15 #ifdef __cplusplus
16 extern "C" {
17 #endif /* __cplusplus */
18
19 #include <glib.h>
20 #include <stdio.h>
21 #include "epan/timestamp.h"
22 #include "ui/ws_ui_util.h"
23
24 /** @file
25  *  Recent user interface settings.
26  *  @ingroup main_window_group
27  */
28
29 /** ???. */
30 #define RECENT_KEY_CAPTURE_FILE         "recent.capture_file"
31
32 /** ???. */
33 #define RECENT_KEY_DISPLAY_FILTER       "recent.display_filter"
34
35 #define RECENT_KEY_COL_WIDTH            "column.width"
36
37 #define RECENT_KEY_CAPTURE_FILTER       "recent.capture_filter"
38
39 #define RECENT_KEY_REMOTE_HOST          "recent.remote_host"
40
41 typedef struct _col_width_data {
42     gint   cfmt;
43     gchar *cfield;
44     gint   width;
45     gchar  xalign;
46 } col_width_data;
47
48 /** Defines used in col_width_data.xalign */
49 #define COLUMN_XALIGN_DEFAULT  0
50 #define COLUMN_XALIGN_LEFT    'L'
51 #define COLUMN_XALIGN_CENTER  'C'
52 #define COLUMN_XALIGN_RIGHT   'R'
53
54 typedef enum {
55     BYTES_HEX,
56     BYTES_BITS
57 } bytes_view_type;
58
59 typedef enum {
60     BYTES_ENC_FROM_PACKET, // frame_data packet_char_enc
61     BYTES_ENC_ASCII,
62     BYTES_ENC_EBCDIC
63 } bytes_encoding_type;
64
65 /** Recent settings. */
66 typedef struct recent_settings_tag {
67     gboolean    main_toolbar_show;
68     gboolean    filter_toolbar_show;
69     gboolean    wireless_toolbar_show;
70     gboolean    airpcap_driver_check_show;
71     gboolean    packet_list_show;
72     gboolean    tree_view_show;
73     gboolean    byte_view_show;
74     gboolean    statusbar_show;
75     gboolean    packet_list_colorize;
76     ts_type     gui_time_format;
77     gint        gui_time_precision;
78     ts_seconds_type gui_seconds_format;
79     gint        gui_zoom_level;
80     bytes_view_type gui_bytes_view;
81     bytes_encoding_type gui_bytes_encoding;
82
83     gint        gui_geometry_main_x;
84     gint        gui_geometry_main_y;
85     gint        gui_geometry_main_width;
86     gint        gui_geometry_main_height;
87
88     gboolean    gui_geometry_main_maximized;
89
90     gboolean    has_gui_geometry_main_upper_pane;   /* gui_geometry_main_upper_pane is valid */
91     gint        gui_geometry_main_upper_pane;
92     gboolean    has_gui_geometry_main_lower_pane;   /* gui_geometry_main_lower_pane is valid */
93     gint        gui_geometry_main_lower_pane;
94     gboolean    has_gui_geometry_status_pane;       /* gui_geometry_status_pane is valid */
95     gint        gui_geometry_status_pane_left;
96     gint        gui_geometry_status_pane_right;
97     gint        gui_geometry_wlan_stats_pane;
98     gboolean    privs_warn_if_elevated;
99     gboolean    privs_warn_if_no_npf;
100     GList      *col_width_list;                     /* column widths */
101     GList      *conversation_tabs;                  /* enabled conversation dialog tabs */
102     GList      *endpoint_tabs;                      /* enabled endpoint dialog tabs */
103     gchar      *gui_fileopen_remembered_dir;        /* folder of last capture loaded in File Open dialog */
104     gboolean    gui_rlc_use_pdus_from_mac;
105     GList      *custom_colors;
106     GList      *gui_additional_toolbars;
107     GList      *interface_toolbars;
108 } recent_settings_t;
109
110 /** Global recent settings. */
111 extern recent_settings_t recent;
112
113 /** Initialize recent settings module (done at startup) */
114 extern void recent_init(void);
115
116 /** Cleanup/Frees recent settings (done at shutdown) */
117 extern void recent_cleanup(void);
118
119 /** Write recent settings file.
120  *
121  * @return TRUE if succeeded, FALSE if failed
122  */
123 extern gboolean write_recent(void);
124
125 /** Write profile recent settings file.
126  *
127  * @return TRUE if succeeded, FALSE if failed
128  */
129 extern gboolean write_profile_recent(void);
130
131 /** Read recent settings file (static part).
132  *
133  * @param rf_path_return path to recent file if function failed
134  * @param rf_errno_return if failed
135  * @return TRUE if succeeded, FALSE if failed (check parameters for reason).
136  */
137 extern gboolean recent_read_static(char **rf_path_return, int *rf_errno_return);
138
139 /** Read profile recent settings file (static part).
140  *
141  * @param rf_path_return path to recent file if function failed
142  * @param rf_errno_return if failed
143  * @return TRUE if succeeded, FALSE if failed (check parameters for reason).
144  */
145 extern gboolean recent_read_profile_static(char **rf_path_return, int *rf_errno_return);
146
147 /** Read recent settings file (dynamic part).
148  *
149  * @param rf_path_return path to recent file if function failed
150  * @param rf_errno_return if failed
151  * @return TRUE if succeeded, FALSE if failed (check parameters for reason).
152  */
153 extern gboolean recent_read_dynamic(char **rf_path_return, int *rf_errno_return);
154
155 /**
156  * Given a -o command line string, parse it and set the recent value in
157  * question.  Return an indication of whether it succeeded or failed
158  * in some fashion.
159  *
160  * @param prefarg a string of the form "<recent name>:<recent value>", as might appear
161  * as an argument to a "-o" command line option
162  * @return PREFS_SET_OK or PREFS_SET_SYNTAX_ERR
163  */
164 extern int recent_set_arg(char *prefarg);
165
166 /** Get the column width for the given column
167  *
168  * @param col column number
169  */
170 extern gint recent_get_column_width(gint col);
171
172 /** Set the column width for the given column
173  *
174  * @param col column number
175  * @param width column width
176  */
177 extern void recent_set_column_width(gint col, gint width);
178
179 /** Get the column xalign for the given column
180  *
181  * @param col column number
182  */
183 extern gchar recent_get_column_xalign(gint col);
184
185 /** Set the column xalign for the given column
186  *
187  * @param col column number
188  * @param xalign column alignment
189  */
190 extern void recent_set_column_xalign(gint col, gchar xalign);
191
192 /* save the window and its current geometry into the geometry hashtable */
193 extern void window_geom_save(const gchar *name, window_geometry_t *geom);
194
195 /* load the desired geometry for this window from the geometry hashtable */
196 extern gboolean window_geom_load(const gchar *name, window_geometry_t *geom);
197
198 /**
199  * Returns a list of recent capture filters.
200  *
201  * @param ifname interface name; NULL refers to the global list.
202  */
203 extern GList *recent_get_cfilter_list(const gchar *ifname);
204
205 /**
206  * Add a capture filter to the global recent capture filter list or
207  * the recent capture filter list for an interface.
208  *
209  * @param ifname interface name; NULL refers to the global list.
210  * @param s text of capture filter
211  */
212 extern void recent_add_cfilter(const gchar *ifname, const gchar *s);
213
214 /**
215  * Get the value of an entry for a remote host from the remote host list.
216  *
217  * @param host host name for the remote host.
218  *
219  * @return pointer to the entry for the remote host.
220  */
221 extern struct remote_host *recent_get_remote_host(const gchar *host);
222
223 /**
224  * Get the number of entries of the remote host list.
225  *
226  * @return number of entries in the list.
227  */
228 extern int recent_get_remote_host_list_size(void);
229
230 /**
231  * Iterate over all items in the remote host list, calling a
232  * function for each member
233  *
234  * @param func function to be called
235  * @param user_data argument to pass as user data to the function
236  */
237 extern void recent_remote_host_list_foreach(GHFunc func, gpointer user_data);
238
239 /**
240  * Free all entries of the remote host list.
241  */
242 extern void recent_free_remote_host_list(void);
243
244 /**
245  * Add an entry to the remote_host_list.
246  *
247  * @param host Key of the entry
248  * @param rh Value of the entry
249  */
250 extern void recent_add_remote_host(gchar *host, struct remote_host *rh);
251
252 #ifdef __cplusplus
253 }
254 #endif /* __cplusplus */
255
256 #endif /* recent.h */
257
258 /*
259  * Editor modelines  -  https://www.wireshark.org/tools/modelines.html
260  *
261  * Local Variables:
262  * c-basic-offset: 4
263  * tab-width: 8
264  * indent-tabs-mode: nil
265  * End:
266  *
267  * ex: set shiftwidth=4 tabstop=8 expandtab:
268  * :indentSize=4:tabSize=8:noTabs=true:
269  */