"main_menu.[ch]" -> "menus.[ch]"; it handles not only the main menu, but
[obnox/wireshark/wip.git] / gtk / main.h
1 /* main.h
2  * Global defines, etc.
3  *
4  * $Id$
5  *
6  * Wireshark - Network traffic analyzer
7  * By Gerald Combs <gerald@wireshark.org>
8  * Copyright 1998 Gerald Combs
9  *
10  * This program is free software; you can redistribute it and/or
11  * modify it under the terms of the GNU General Public License
12  * as published by the Free Software Foundation; either version 2
13  * of the License, or (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
23  */
24
25 #ifndef __MAIN_H__
26 #define __MAIN_H__
27
28 #ifdef HAVE_CONFIG_H
29 #include "config.h"
30 #endif
31
32 #include "globals.h"
33
34 /** @defgroup main_window_group Main window
35  * The main window has the following submodules:
36    @dot
37   digraph main_dependencies {
38       node [shape=record, fontname=Helvetica, fontsize=10];
39       main [ label="main window" URL="\ref main.h"];
40       menu [ label="menubar" URL="\ref menus.h"];
41       toolbar [ label="toolbar" URL="\ref toolbar.h"];
42       packet_list [ label="packet list pane" URL="\ref main_packet_list.h"];
43       proto_draw [ label="packet details & bytes panes" URL="\ref main_proto_draw.h"];
44       recent [ label="recent user settings" URL="\ref recent.h"];
45       main -> menu [ arrowhead="open", style="solid" ];
46       main -> toolbar [ arrowhead="open", style="solid" ];
47       main -> packet_list [ arrowhead="open", style="solid" ];
48       main -> proto_draw [ arrowhead="open", style="solid" ];
49       main -> recent [ arrowhead="open", style="solid" ];
50   }
51   @enddot
52  */
53
54 /** @file
55  *  The main window, filter toolbar, program start/stop and a lot of other things
56  *  @ingroup main_window_group
57  *  @ingroup windows_group
58  */
59
60 /** Global compile time version string */
61 extern GString *comp_info_str;
62 /** Global runtime version string */
63 extern GString *runtime_info_str;
64
65 extern GtkWidget* airpcap_tb;
66
67 extern void protect_thread_critical_region(void);
68 extern void unprotect_thread_critical_region(void);
69
70 void
71 airpcap_toolbar_encryption_cb(GtkWidget *entry, gpointer user_data);
72
73 /** User requested "Zoom In" by menu or toolbar.
74  *
75  * @param widget parent widget (unused)
76  * @param data unused
77  */
78 extern void view_zoom_in_cb(GtkWidget *widget, gpointer data);
79
80 /** User requested "Zoom Out" by menu or toolbar.
81  *
82  * @param widget parent widget (unused)
83  * @param data unused
84  */
85 extern void view_zoom_out_cb(GtkWidget *widget, gpointer data);
86
87 /** User requested "Zoom 100%" by menu or toolbar.
88  *
89  * @param widget parent widget (unused)
90  * @param data unused
91  */
92 extern void view_zoom_100_cb(GtkWidget *widget, gpointer data);
93
94 /** User requested "Protocol Info" by ptree context menu.
95  *
96  * @param widget parent widget (unused)
97  * @param data unused
98  */
99 extern void selected_ptree_info_cb(GtkWidget *widget, gpointer data);
100
101 /** User requested "Filter Reference" by ptree context menu.
102  *
103  * @param widget parent widget (unused)
104  * @param data unused
105  */
106 extern void selected_ptree_ref_cb(GtkWidget *widget, gpointer data);
107
108 /** "Apply as Filter" / "Prepare a Filter" action type. */
109 typedef enum {
110     MATCH_SELECTED_REPLACE, /**< "Selected" */
111     MATCH_SELECTED_AND,     /**< "and Selected" */
112     MATCH_SELECTED_OR,      /**< "or Selected" */
113     MATCH_SELECTED_NOT,     /**< "Not Selected" */
114     MATCH_SELECTED_AND_NOT, /**< "and not Selected" */
115     MATCH_SELECTED_OR_NOT   /**< "or not Selected" */
116 } MATCH_SELECTED_E;
117
118 /** mask MATCH_SELECTED_E values (internally used) */
119 #define MATCH_SELECTED_MASK         0x0ff
120
121 /** "bitwise or" this with MATCH_SELECTED_E value for instant apply instead of prepare only */
122 #define MATCH_SELECTED_APPLY_NOW    0x100
123
124 /** "bitwise or" this with MATCH_SELECTED_E value for copy to clipboard instead of prepare only */
125 #define MATCH_SELECTED_COPY_ONLY    0x200
126
127 /** User requested one of "Apply as Filter" or "Prepare a Filter" functions
128  *  by menu or context menu of protocol tree.
129  *
130  * @param widget parent widget
131  * @param data parent widget
132  * @param action the function to use
133  */
134 extern void match_selected_ptree_cb(GtkWidget *widget, gpointer data, MATCH_SELECTED_E action);
135
136 /** "Copy ..." action type. */
137 typedef enum {
138     COPY_SELECTED_DESCRIPTION,  /**< "Copy Description" */
139     COPY_SELECTED_FIELDNAME,    /**< "Copy Fieldname" */
140     COPY_SELECTED_VALUE         /**< "Copy Value" */
141 } COPY_SELECTED_E;
142
143 /** User highlited item in details window and then right clicked and selected the copy option
144  *
145  * @param widget parent widget
146  * @param data parent widget
147  * @param action the function to use
148  */
149 extern void copy_selected_plist_cb(GtkWidget *w _U_, gpointer data, COPY_SELECTED_E action);
150
151 /** User requested the colorize function
152  *  by menu or context menu of protocol tree.
153  *
154  * @param widget parent widget
155  * @param data parent widget
156  * @param filt_nr  1-10: use filter for color 1-10
157  *                    0: open new colorization rule dialog
158  *                  255: clear filters for color 1-10
159  */
160 extern void colorize_selected_ptree_cb(GtkWidget *w, gpointer data, guint8 filt_nr);
161
162 /** User requested one of "Apply as Filter" or "Prepare a Filter" functions
163  *  by context menu of packet list.
164  *
165  * @param widget parent widget (unused)
166  * @param data parent widget
167  * @param action the function to use
168  */
169 extern void match_selected_plist_cb(GtkWidget *widget, gpointer data, MATCH_SELECTED_E action);
170
171 /** User requested "Quit" by menu or toolbar.
172  *
173  * @param widget parent widget (unused)
174  * @param data unused
175  */
176 extern void file_quit_cmd_cb(GtkWidget *widget, gpointer data);
177
178 /** User requested "Print" by menu or toolbar.
179  *
180  * @param widget parent widget (unused)
181  * @param data unused
182  */
183 extern void file_print_cmd_cb(GtkWidget *widget, gpointer data);
184
185 /** User requested "Print" by packet list context menu.
186  *
187  * @param widget parent widget (unused)
188  * @param data unused
189  */
190 extern void file_print_selected_cmd_cb(GtkWidget *widget _U_, gpointer data _U_);
191
192 /** User requested "Export as Plain Text" by menu.
193  *
194  * @param widget parent widget (unused)
195  * @param data unused
196  */
197 extern void export_text_cmd_cb(GtkWidget *widget, gpointer data);
198
199 /** User requested "Export as Postscript" by menu.
200  *
201  * @param widget parent widget (unused)
202  * @param data unused
203  */
204 extern void export_ps_cmd_cb(GtkWidget *widget, gpointer data);
205
206 /** User requested "Export as PSML" by menu.
207  *
208  * @param widget parent widget (unused)
209  * @param data unused
210  */
211 extern void export_psml_cmd_cb(GtkWidget *widget, gpointer data);
212
213 /** User requested "Export as PDML" by menu.
214  *
215  * @param widget parent widget (unused)
216  * @param data unused
217  */
218 extern void export_pdml_cmd_cb(GtkWidget *widget, gpointer data);
219
220 /** User requested "Export as CSV" by menu.
221  *
222  * @param widget parent widget (unused)
223  * @param data unused
224  */
225 extern void export_csv_cmd_cb(GtkWidget *widget, gpointer data);
226
227 /** User requested "Export as C Arrays" by menu.
228  *
229  * @param widget parent widget (unused)
230  * @param data unused
231  */
232 extern void export_carrays_cmd_cb(GtkWidget *widget, gpointer data);
233
234 /** User requested "Expand Tree" by menu.
235  *
236  * @param widget parent widget (unused)
237  * @param data unused
238  */
239 extern void expand_tree_cb(GtkWidget *widget, gpointer data);
240
241 /** User requested "Expand All" by menu.
242  *
243  * @param widget parent widget (unused)
244  * @param data unused
245  */
246 extern void expand_all_cb(GtkWidget *widget, gpointer data);
247
248 /** User requested "Collapse All" by menu.
249  *
250  * @param widget parent widget (unused)
251  * @param data unused
252  */
253 extern void collapse_all_cb(GtkWidget *widget, gpointer data);
254
255 /** User requested "Resolve Name" by menu.
256  *
257  * @param widget parent widget (unused)
258  * @param data unused
259  */
260 extern void resolve_name_cb(GtkWidget *widget, gpointer data);
261
262 /** Action to take for reftime_frame_cb() */
263 typedef enum {
264     REFTIME_TOGGLE,     /**< toggle ref frame */
265     REFTIME_FIND_NEXT,  /**< find next ref frame */
266     REFTIME_FIND_PREV   /**< find previous ref frame */
267 } REFTIME_ACTION_E;
268
269 /** User requested one of the "Time Reference" functions by menu.
270  *
271  * @param widget parent widget (unused)
272  * @param data unused
273  * @param action the function to use
274  */
275 extern void reftime_frame_cb(GtkWidget *widget, gpointer data, REFTIME_ACTION_E action);
276
277 /** User requested the "Find Next Mark" function by menu.
278  *
279  * @param widget parent widget (unused)
280  * @param data unused
281  * @param action unused
282  */
283 extern void find_next_mark_cb(GtkWidget *widget, gpointer data, int action);
284
285 /** User requested the "Find Previous Mark" function by menu.
286  *
287  * @param widget parent widget (unused)
288  * @param data unused
289  * @param action unused
290  */
291 extern void find_prev_mark_cb(GtkWidget *widget, gpointer data, int action);
292
293 /** Add a display filter coming from the user's recent file to the dfilter combo box.
294  *
295  * @param dftext the filter string
296  */
297 extern gboolean dfilter_combo_add_recent(gchar *dftext);
298
299 /** Empty out the combobox entry field */
300 extern void dfilter_combo_add_empty(void);
301
302 /** Write all non empty display filters (until maximum count)
303  *  of the combo box GList to the user's recent file.
304  *
305  * @param rf the recent file
306  */
307 extern void dfilter_recent_combo_write_all(FILE *rf);
308
309 /** Quit the program.
310  *
311  * @return TRUE, if a file read is in progress
312  */
313 extern gboolean main_do_quit(void);
314
315 /** Rearrange the main window widgets, user changed it's preferences. */
316 extern void main_widgets_rearrange(void);
317
318 /** Show or hide the main window widgets, user changed it's preferences. */
319 extern void main_widgets_show_or_hide(void);
320
321 /** Apply a new filter string.
322  *  Call cf_filter_packets() and add this filter string to the recent filter list.
323  *
324  * @param cf the capture file
325  * @param dftext the new filter string
326  * @param force force the refiltering, even if filter string doesn't changed
327  * @return TRUE, if the filtering succeeded
328  */
329 extern gboolean main_filter_packets(capture_file *cf, const gchar *dftext,
330     gboolean force);
331
332 #ifdef _WIN32
333 /** Win32 only: Create a console. Beware: cannot be closed again. */
334 extern void create_console(void);
335 #endif
336
337 /** Fill in capture options with values from the preferences */
338 extern void prefs_to_capture_opts(void);
339
340 /** Change configuration profile */
341 extern void change_configuration_profile(const gchar *profile_name);
342
343 /** redissect packets and update UI */
344 extern void redissect_packets(void);
345
346 extern GtkWidget *pkt_scrollw;
347
348 #endif /* __MAIN_H__ */