aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2005-01-20 23:17:23 +0000
committerUlf Lamping <ulf.lamping@web.de>2005-01-20 23:17:23 +0000
commit66ce7f36231b5a15cb0b493e039c7284edf3a62f (patch)
treedc06533f5d8be6ba70be06bb5dd65f10fd1f4d7d
parent13e90b72b3833198c5ebe8c1ba79ef863977fca6 (diff)
add some more online help functionality and help buttons at various dialog boxes, if a help page *is* available. However, the new help system needs a lot more work before completed.
svn path=/trunk/; revision=13152
-rw-r--r--gtk/capture_dlg.c6
-rw-r--r--gtk/capture_if_dlg.c14
-rw-r--r--gtk/color_dlg.c14
-rw-r--r--gtk/conversations_table.c29
-rw-r--r--gtk/decode_as_dlg.c27
-rw-r--r--gtk/filter_dlg.c12
-rw-r--r--gtk/find_dlg.c14
-rw-r--r--gtk/goto_dlg.c14
-rw-r--r--gtk/help_dlg.c118
-rw-r--r--gtk/help_dlg.h72
-rw-r--r--gtk/hostlist_table.c29
-rw-r--r--gtk/io_stat.c25
-rw-r--r--gtk/menu.c26
-rw-r--r--gtk/print_dlg.c14
-rw-r--r--gtk/proto_dlg.c12
-rw-r--r--gtk/proto_hier_stats_dlg.c14
-rw-r--r--gtk/summary_dlg.c14
-rw-r--r--gtk/toolbar.c52
-rw-r--r--gtk/webbrowser.c2
19 files changed, 365 insertions, 143 deletions
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c
index 671411a123..e5b6425598 100644
--- a/gtk/capture_dlg.c
+++ b/gtk/capture_dlg.c
@@ -1080,11 +1080,7 @@ capture_prep(void)
help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
gtk_tooltips_set_tip(tooltips, help_bt,
"Show help about capturing.", NULL);
-#ifdef ETHEREAL_EUG_DIR
- SIGNAL_CONNECT(help_bt, "clicked", url_page_cb, HELP_CAPTURE_OPTIONS_DIALOG);
-#else
- SIGNAL_CONNECT(help_bt, "clicked", help_topic_cb, "Capturing");
-#endif
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_CAPTURE_OPTIONS_DIALOG);
gtk_widget_grab_default(ok_bt);
diff --git a/gtk/capture_if_dlg.c b/gtk/capture_if_dlg.c
index d90a76150e..2ea8113cc8 100644
--- a/gtk/capture_if_dlg.c
+++ b/gtk/capture_if_dlg.c
@@ -62,6 +62,7 @@
#include "wtap.h"
#include "main.h"
+#include "help_dlg.h"
extern gboolean is_capture_in_progress(void);
@@ -298,7 +299,7 @@ capture_if_destroy_cb(GtkWidget *win _U_, gpointer user_data _U_)
void
capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
{
- GtkWidget *main_vb, *bbox, *close_bt;
+ GtkWidget *main_vb, *bbox, *close_bt, *help_bt;
GtkWidget *if_tb;
GtkWidget *if_lb;
@@ -507,13 +508,22 @@ capture_if_cb(GtkWidget *w _U_, gpointer d _U_)
g_string_free(if_tool_str, TRUE);
/* Button row: close button */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_CAPTURE_INTERFACES_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 5);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(cap_if_w, close_bt, window_cancel_button_cb);
gtk_tooltips_set_tip(tooltips, close_bt, "Close this window.", NULL);
+ if(topic_available(HELP_CAPTURE_INTERFACES_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_CAPTURE_INTERFACES_DIALOG);
+ }
+
gtk_widget_grab_default(close_bt);
SIGNAL_CONNECT(cap_if_w, "delete_event", window_delete_event_cb, NULL);
diff --git a/gtk/color_dlg.c b/gtk/color_dlg.c
index 9f8c5493ec..6cb2b5dc64 100644
--- a/gtk/color_dlg.c
+++ b/gtk/color_dlg.c
@@ -47,6 +47,7 @@
#include "file_dlg.h"
#include "gtkglobals.h"
#include <epan/prefs.h>
+#include "help_dlg.h"
static GtkWidget* colorize_dialog_new(char *filter);
static void add_filter_to_list(gpointer filter_arg, gpointer list_arg);
@@ -200,6 +201,7 @@ colorize_dialog_new (char *filter)
GtkWidget *color_apply;
GtkWidget *color_save;
GtkWidget *color_cancel;
+ GtkWidget *color_help;
#if GTK_MAJOR_VERSION >= 2
GtkListStore *store;
@@ -386,7 +388,11 @@ colorize_dialog_new (char *filter)
/* Button row: OK and cancel buttons */
- button_ok_hbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CLOSE/*, GTK_STOCK_CANCEL*/, NULL);
+ if(topic_available(HELP_COLORING_RULES_DIALOG)) {
+ button_ok_hbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ button_ok_hbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CLOSE/*, GTK_STOCK_CANCEL*/, NULL);
+ }
gtk_box_pack_start (GTK_BOX (dlg_vbox), button_ok_hbox, FALSE, FALSE, 5);
color_ok = OBJECT_GET_DATA(button_ok_hbox, GTK_STOCK_OK);
@@ -402,6 +408,12 @@ colorize_dialog_new (char *filter)
window_set_cancel_button(color_win, color_cancel, color_cancel_cb);
gtk_tooltips_set_tip (tooltips, color_cancel, ("Close this dialog but don't apply the color filter changes to the display"), NULL);
+ if(topic_available(HELP_COLORING_RULES_DIALOG)) {
+ color_help = OBJECT_GET_DATA(button_ok_hbox, GTK_STOCK_HELP);
+ gtk_tooltips_set_tip (tooltips, color_help, ("Get help about this dialog"), NULL);
+ SIGNAL_CONNECT(color_help, "clicked", topic_cb, HELP_COLORING_RULES_DIALOG);
+ }
+
gtk_widget_grab_default(color_ok);
/* signals and such */
diff --git a/gtk/conversations_table.c b/gtk/conversations_table.c
index c460d55a45..d1ae9785dc 100644
--- a/gtk/conversations_table.c
+++ b/gtk/conversations_table.c
@@ -48,13 +48,14 @@
#include "image/clist_descend.xpm"
#include "simple_dialog.h"
#include "globals.h"
-#include "gtk/find_dlg.h"
+#include "find_dlg.h"
#include "color.h"
#include "gtk/color_dlg.h"
#include "gtkglobals.h"
#include "main.h"
#include "ui_util.h"
#include "dlg_utils.h"
+#include "help_dlg.h"
#define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a))
@@ -1238,7 +1239,7 @@ init_conversation_table(gboolean hide_ports, char *table_name, char *tap_name, c
char title[256];
GtkWidget *vbox;
GtkWidget *bbox;
- GtkWidget *close_bt;
+ GtkWidget *close_bt, *help_bt;
gboolean ret;
@@ -1261,12 +1262,21 @@ init_conversation_table(gboolean hide_ports, char *table_name, char *tap_name, c
}
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_STATS_CONVERSATIONS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(conversations->win, close_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_CONVERSATIONS_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_CONVERSATIONS_DIALOG);
+ }
+
SIGNAL_CONNECT(conversations->win, "delete_event", window_delete_event_cb, NULL);
SIGNAL_CONNECT(conversations->win, "destroy", ct_win_destroy_cb, conversations);
@@ -1385,7 +1395,7 @@ init_conversation_notebook_cb(GtkWidget *w _U_, gpointer d _U_)
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *bbox;
- GtkWidget *close_bt;
+ GtkWidget *close_bt, *help_bt;
GtkWidget *win;
GtkWidget *resolv_cb;
int page;
@@ -1440,12 +1450,21 @@ init_conversation_notebook_cb(GtkWidget *w _U_, gpointer d _U_)
SIGNAL_CONNECT(resolv_cb, "toggled", ct_resolve_toggle_dest, pages);
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_STATS_CONVERSATIONS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(win, close_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_CONVERSATIONS_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_CONVERSATIONS_DIALOG);
+ }
+
SIGNAL_CONNECT(win, "delete_event", window_delete_event_cb, NULL);
SIGNAL_CONNECT(win, "destroy", ct_win_destroy_notebook_cb, pages);
diff --git a/gtk/decode_as_dlg.c b/gtk/decode_as_dlg.c
index c8cedc734e..59043eb203 100644
--- a/gtk/decode_as_dlg.c
+++ b/gtk/decode_as_dlg.c
@@ -39,6 +39,7 @@
#include <epan/epan_dissect.h>
#include "compat_macros.h"
#include "decode_as_dcerpc.h"
+#include "help_dlg.h"
#undef DEBUG
@@ -520,7 +521,7 @@ decode_show_destroy_cb (GtkWidget *win _U_, gpointer user_data _U_)
void
decode_show_cb (GtkWidget * w _U_, gpointer data _U_)
{
- GtkWidget *main_vb, *bbox, *ok_bt, *clear_bt, *scrolled_window;
+ GtkWidget *main_vb, *bbox, *ok_bt, *clear_bt, *help_bt, *scrolled_window;
gchar *titles[E_LIST_D_COLUMNS] = {
"Table", "Value", "Initial", "Current"
};
@@ -603,7 +604,11 @@ decode_show_cb (GtkWidget * w _U_, gpointer data _U_)
}
/* Button row */
- bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CLEAR, NULL);
+ if(topic_available(HELP_DECODE_AS_SHOW_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CLEAR, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_CLEAR, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
@@ -613,6 +618,11 @@ decode_show_cb (GtkWidget * w _U_, gpointer data _U_)
clear_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLEAR);
SIGNAL_CONNECT(clear_bt, "clicked", decode_show_clear_cb, decode_show_w);
+ if(topic_available(HELP_DECODE_AS_SHOW_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_DECODE_AS_SHOW_DIALOG);
+ }
+
/* set ok as default, this button won't change anything */
window_set_cancel_button(decode_show_w, ok_bt, NULL);
@@ -1858,7 +1868,7 @@ decode_add_notebook (GtkWidget *format_hb)
void
decode_as_cb (GtkWidget * w _U_, gpointer data _U_)
{
- GtkWidget *main_vb, *format_hb, *bbox, *ok_bt, *close_bt, *button;
+ GtkWidget *main_vb, *format_hb, *bbox, *ok_bt, *close_bt, *help_bt, *button;
GtkWidget *button_vb, *apply_bt;
GtkTooltips *tooltips = gtk_tooltips_new();
@@ -1904,7 +1914,11 @@ decode_as_cb (GtkWidget * w _U_, gpointer data _U_)
}
/* Button row */
- bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_DECODE_AS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
@@ -1924,6 +1938,11 @@ decode_as_cb (GtkWidget * w _U_, gpointer data _U_)
gtk_tooltips_set_tip(tooltips, close_bt,
"Close the dialog, don't redissect packets.", NULL);
+ if(topic_available(HELP_DECODE_AS_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_DECODE_AS_DIALOG);
+ }
+
gtk_widget_grab_default(ok_bt);
SIGNAL_CONNECT(decode_w, "delete_event", decode_delete_cb, NULL);
diff --git a/gtk/filter_dlg.c b/gtk/filter_dlg.c
index d59363e087..2961216bc0 100644
--- a/gtk/filter_dlg.c
+++ b/gtk/filter_dlg.c
@@ -614,17 +614,9 @@ filter_dialog_new(GtkWidget *button, GtkWidget *parent_filter_te,
help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
if (list == CFILTER_LIST) {
-#ifdef ETHEREAL_EUG_DIR
- SIGNAL_CONNECT(help_bt, "clicked", url_page_cb, HELP_CAPTURE_FILTERS_DIALOG);
-#else
- SIGNAL_CONNECT(help_bt, "clicked", help_topic_cb, "Capture Filters");
-#endif
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_CAPTURE_FILTERS_DIALOG);
} else {
-#ifdef ETHEREAL_EUG_DIR
- SIGNAL_CONNECT(help_bt, "clicked", url_page_cb, HELP_DISPLAY_FILTERS_DIALOG);
-#else
- SIGNAL_CONNECT(help_bt, "clicked", help_topic_cb, "Display Filters");
-#endif
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_DISPLAY_FILTERS_DIALOG);
}
gtk_tooltips_set_tip (tooltips, help_bt, ("Show topic specific help"), NULL);
diff --git a/gtk/find_dlg.c b/gtk/find_dlg.c
index ac9695d589..44260c02d0 100644
--- a/gtk/find_dlg.c
+++ b/gtk/find_dlg.c
@@ -46,6 +46,7 @@
#include <epan/prefs.h>
#include "prefs_dlg.h"
#include "keys.h"
+#include "help_dlg.h"
/* Capture callback data keys */
#define E_FIND_FILT_KEY "find_filter_te"
@@ -113,7 +114,7 @@ find_frame_cb(GtkWidget *w _U_, gpointer d _U_)
*string_opt_frame, *string_opt_vb,
*case_cb, *combo_lb, *combo_cb,
- *bbox, *ok_bt, *cancel_bt;
+ *bbox, *ok_bt, *cancel_bt, *help_bt;
GtkTooltips *tooltips;
#if GTK_MAJOR_VERSION < 2
GtkAccelGroup *accel_group;
@@ -325,7 +326,11 @@ find_frame_cb(GtkWidget *w _U_, gpointer d _U_)
/* Button row */
- bbox = dlg_button_row_new(GTK_STOCK_FIND, GTK_STOCK_CANCEL, NULL);
+ if(topic_available(HELP_FIND_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_FIND, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_FIND, GTK_STOCK_CANCEL, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
@@ -335,6 +340,11 @@ find_frame_cb(GtkWidget *w _U_, gpointer d _U_)
cancel_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);
SIGNAL_CONNECT(cancel_bt, "clicked", find_frame_close_cb, find_frame_w);
+ if(topic_available(HELP_FIND_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_FIND_DIALOG);
+ }
+
/* Attach pointers to needed widgets to the capture prefs window/object */
OBJECT_SET_DATA(find_frame_w, E_FIND_FILT_KEY, filter_text_box);
OBJECT_SET_DATA(find_frame_w, E_FIND_BACKWARD_KEY, up_rb);
diff --git a/gtk/goto_dlg.c b/gtk/goto_dlg.c
index 38f81b8b50..8b60491606 100644
--- a/gtk/goto_dlg.c
+++ b/gtk/goto_dlg.c
@@ -37,6 +37,7 @@
#include "dlg_utils.h"
#include "compat_macros.h"
#include "ui_util.h"
+#include "help_dlg.h"
/* Capture callback data keys */
#define E_GOTO_FNUMBER_KEY "goto_fnumber_te"
@@ -48,7 +49,7 @@ void
goto_frame_cb(GtkWidget *w _U_, gpointer d _U_)
{
GtkWidget *goto_frame_w, *main_vb, *fnumber_hb, *fnumber_lb, *fnumber_te,
- *bbox, *ok_bt, *cancel_bt;
+ *bbox, *ok_bt, *cancel_bt, *help_bt;
goto_frame_w = dlg_window_new("Ethereal: Go To Packet");
@@ -72,7 +73,11 @@ goto_frame_cb(GtkWidget *w _U_, gpointer d _U_)
gtk_widget_show(fnumber_te);
/* Button row: OK and cancel buttons */
- bbox = dlg_button_row_new(GTK_STOCK_JUMP_TO, GTK_STOCK_CANCEL, NULL);
+ if(topic_available(HELP_GOTO_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_JUMP_TO, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_JUMP_TO, GTK_STOCK_CANCEL, NULL);
+ }
gtk_container_add(GTK_CONTAINER(main_vb), bbox);
gtk_widget_show(bbox);
@@ -82,6 +87,11 @@ goto_frame_cb(GtkWidget *w _U_, gpointer d _U_)
cancel_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);
window_set_cancel_button(goto_frame_w, cancel_bt, window_cancel_button_cb);
+ if(topic_available(HELP_GOTO_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_GOTO_DIALOG);
+ }
+
gtk_widget_grab_default(ok_bt);
/* Catch the "activate" signal on the frame number text entry, so that
diff --git a/gtk/help_dlg.c b/gtk/help_dlg.c
index 7c51cd1035..8327b3a694 100644
--- a/gtk/help_dlg.c
+++ b/gtk/help_dlg.c
@@ -99,7 +99,8 @@ static GtkWidget * help_page(const char *topic, const char *filename)
/*
* Create and show help dialog.
*/
-void help_cb(GtkWidget *w _U_, gpointer data _U_)
+static
+void help_dialog(void)
{
GtkWidget *main_vb, *bbox, *help_nb, *close_bt, *label, *topic_vb;
char line[4096+1]; /* XXX - size? */
@@ -180,23 +181,51 @@ void help_cb(GtkWidget *w _U_, gpointer data _U_)
gtk_widget_show_all(help_w);
window_present(help_w);
-} /* help_cb */
+} /* help_dialog */
+gboolean topic_available(topic_action_e action) {
+
+#ifdef ETHEREAL_EUG_DIR
+ /* online: we have all pages available */
+ return TRUE;
+#else
+ /* offline: we have only some pages available */
+ switch(action) {
+ case(HELP_CONTENT):
+ return TRUE;
+ break;
+ case(HELP_GETTING_STARTED):
+ return TRUE;
+ break;
+ case(HELP_CAPTURE_OPTIONS_DIALOG):
+ return TRUE;
+ break;
+ case(HELP_CAPTURE_FILTERS_DIALOG):
+ return TRUE;
+ break;
+ case(HELP_DISPLAY_FILTERS_DIALOG):
+ return TRUE;
+ break;
+ default:
+ return FALSE;
+ }
+#endif
+}
+
/*
* Open the help dialog and show a specific help page.
*/
-
-void help_topic_cb(GtkWidget *w _U_, gpointer data) {
- gchar *topic = data;
+void help_topic(gchar *topic) {
gchar *page_topic;
GtkWidget *help_nb;
GSList *help_page_ent;
gint page_num = 0;
help_page_t *page;
+
/* show help dialog, if not already opened */
- help_cb(NULL, NULL);
+ help_dialog();
help_nb = OBJECT_GET_DATA(help_w, NOTEBOOK_KEY);
@@ -261,8 +290,8 @@ void help_redraw(void)
}
-void
-url_page_action(url_page_action_e action)
+static void
+topic_action(topic_action_e action)
{
/* pages online at www.ethereal.com */
switch(action) {
@@ -319,6 +348,65 @@ url_page_action(url_page_action_e action)
case(HELP_DISPLAY_FILTERS_DIALOG):
browser_open_data_file("eug_html_chunked/ChWorkDefineFilterSection.html");
break;
+ case(HELP_COLORING_RULES_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChCustColorizationSection.html");
+ break;
+ case(HELP_PRINT_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChIOPrintSection.html");
+ break;
+ case(HELP_FIND_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChWorkFindPacketSection.html");
+ break;
+ case(HELP_GOTO_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChWorkGoToPacketSection.html");
+ break;
+ case(HELP_CAPTURE_INTERFACES_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChCapInterfaceSection.html");
+ break;
+ case(HELP_ENABLED_PROTOCOLS_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChCustProtocolDissectionSection.html");
+ break;
+ case(HELP_DECODE_AS_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChCustProtocolDissectionSection.html");
+ break;
+ case(HELP_DECODE_AS_SHOW_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChCustProtocolDissectionSection.html");
+ break;
+ case(HELP_FOLLOW_TCP_STREAM_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChAdvFollowTCPSection.html");
+ break;
+ case(HELP_STATS_SUMMARY_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChStatSummary.html");
+ break;
+ case(HELP_STATS_PROTO_HIERARCHY_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChStatHierarchy.html");
+ break;
+ case(HELP_STATS_ENDPOINTS_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChStatEndpoints.html");
+ break;
+ case(HELP_STATS_CONVERSATIONS_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChStatConversations.html");
+ break;
+ case(HELP_STATS_IO_GRAPH_DIALOG):
+ browser_open_data_file("eug_html_chunked/ChStatIOGraphs.html");
+ break;
+#else
+ /* only some help pages are available for offline reading */
+ case(HELP_CONTENT):
+ help_topic("Overview");
+ break;
+ case(HELP_GETTING_STARTED):
+ help_topic("Getting Started");
+ break;
+ case(HELP_CAPTURE_OPTIONS_DIALOG):
+ help_topic("Capturing");
+ break;
+ case(HELP_CAPTURE_FILTERS_DIALOG):
+ help_topic("Capture Filters");
+ break;
+ case(HELP_DISPLAY_FILTERS_DIALOG):
+ help_topic("Display Filters");
+ break;
#endif
default:
@@ -327,16 +415,14 @@ url_page_action(url_page_action_e action)
}
-void
-url_page_cb(GtkWidget *w _U_, url_page_action_e action)
+void
+topic_cb(GtkWidget *w _U_, topic_action_e action)
{
- url_page_action(action);
+ topic_action(action);
}
-
-void
-url_page_menu_cb( GtkWidget *w _U_, gpointer data _U_, url_page_action_e action)
-{
- url_page_action(action);
+void
+topic_menu_cb(GtkWidget *w _U_, gpointer data _U_, topic_action_e action) {
+ topic_action(action);
}
diff --git a/gtk/help_dlg.h b/gtk/help_dlg.h
index e197abb6ba..b221d1d8ab 100644
--- a/gtk/help_dlg.h
+++ b/gtk/help_dlg.h
@@ -32,24 +32,6 @@
* @ingroup dialog_group
*/
-/** User requested the "Help" dialog box by menu or toolbar.
- *
- * @param widget parent widget (unused)
- * @param data unused
- */
-void help_cb(GtkWidget *widget, gpointer data);
-
-/** Create a "Help" dialog box and start with a specific topic.
- * Will show the first page if topic is not found.
- *
- * @param widget parent widget (unused)
- * @param topic the topic to display (a string)
- */
-void help_topic_cb(GtkWidget *widget, gpointer topic);
-
-/** Redraw all the text widgets, to use a new font. */
-void help_redraw(void);
-
typedef enum {
/* pages online at www.ethereal.com */
ONLINEPAGE_HOME,
@@ -65,40 +47,54 @@ typedef enum {
LOCALPAGE_MAN_TETHEREAL,
LOCALPAGE_MAN_MERGECAP,
LOCALPAGE_MAN_EDITCAP,
- LOCALPAGE_MAN_TEXT2PCAP
+ LOCALPAGE_MAN_TEXT2PCAP,
- /* local help pages (User's Guide) */
-#ifdef ETHEREAL_EUG_DIR
- ,
+ /* help pages (textfiles or local HTML User's Guide) */
HELP_CONTENT = 200,
+ HELP_GETTING_STARTED, /* currently unused */
HELP_CAPTURE_OPTIONS_DIALOG,
HELP_CAPTURE_FILTERS_DIALOG,
- HELP_DISPLAY_FILTERS_DIALOG
-#endif
-} url_page_action_e;
+ HELP_DISPLAY_FILTERS_DIALOG,
+ HELP_COLORING_RULES_DIALOG,
+ HELP_PRINT_DIALOG,
+ HELP_FIND_DIALOG,
+ HELP_GOTO_DIALOG,
+ HELP_CAPTURE_INTERFACES_DIALOG,
+ HELP_ENABLED_PROTOCOLS_DIALOG,
+ HELP_DECODE_AS_DIALOG,
+ HELP_DECODE_AS_SHOW_DIALOG,
+ HELP_FOLLOW_TCP_STREAM_DIALOG, /* currently unused */
+ HELP_STATS_SUMMARY_DIALOG,
+ HELP_STATS_PROTO_HIERARCHY_DIALOG,
+ HELP_STATS_ENDPOINTS_DIALOG,
+ HELP_STATS_CONVERSATIONS_DIALOG,
+ HELP_STATS_IO_GRAPH_DIALOG
+} topic_action_e;
-/** User requested one of the html pages.
+/** Open a specific topic (create a "Help" dialog box or open a webpage).
*
- * @param action the page to show
+ * @param widget parent widget (unused)
+ * @param topic the topic to display
*/
-extern void
-url_page_action(url_page_action_e action);
+void topic_cb(GtkWidget *widget, topic_action_e topic);
-/** User requested one of the html pages by button click.
+/** Open a specific topic called from a menu item.
*
* @param widget parent widget (unused)
- * @param action the page to show
+ * @param data user_data (unused)
+ * @param topic the topic to display
*/
-extern void
-url_page_cb(GtkWidget *widget _U_, url_page_action_e action);
+void topic_menu_cb(GtkWidget *w _U_, gpointer data _U_, topic_action_e topic);
-/** User requested one of the html pages by menu.
+/** Check, if a specific topic is available.
*
- * @param widget parent widget (unused)
- * @param data unused
- * @param action the page to show
+ * @param topic the topic to display
+ * @return TRUE, if topic is available, FALSE if not
*/
-extern void url_page_menu_cb( GtkWidget *widget, gpointer data, url_page_action_e action);
+gboolean topic_available(topic_action_e action);
+
+/** Redraw all the help dialog text widgets, to use a new font. */
+void help_redraw(void);
#endif
diff --git a/gtk/hostlist_table.c b/gtk/hostlist_table.c
index 0e867bd72f..b9f2a21ac1 100644
--- a/gtk/hostlist_table.c
+++ b/gtk/hostlist_table.c
@@ -45,13 +45,14 @@
#include "image/clist_descend.xpm"
#include "simple_dialog.h"
#include "globals.h"
-#include "gtk/find_dlg.h"
+#include "find_dlg.h"
#include "color.h"
#include "gtk/color_dlg.h"
#include "gtkglobals.h"
#include "main.h"
#include "ui_util.h"
#include "dlg_utils.h"
+#include "help_dlg.h"
#define GTK_MENU_FUNC(a) ((GtkItemFactoryCallback)(a))
@@ -723,7 +724,7 @@ init_hostlist_table(gboolean hide_ports, char *table_name, char *tap_name, char
char title[256];
GtkWidget *vbox;
GtkWidget *bbox;
- GtkWidget *close_bt;
+ GtkWidget *close_bt, *help_bt;
gboolean ret;
@@ -746,12 +747,21 @@ init_hostlist_table(gboolean hide_ports, char *table_name, char *tap_name, char
}
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_STATS_ENDPOINTS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(hosttable->win, close_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_ENDPOINTS_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_ENDPOINTS_DIALOG);
+ }
+
SIGNAL_CONNECT(hosttable->win, "delete_event", window_delete_event_cb, NULL);
SIGNAL_CONNECT(hosttable->win, "destroy", hostlist_win_destroy_cb, hosttable);
@@ -869,7 +879,7 @@ init_hostlist_notebook_cb(GtkWidget *w _U_, gpointer d _U_)
GtkWidget *vbox;
GtkWidget *hbox;
GtkWidget *bbox;
- GtkWidget *close_bt;
+ GtkWidget *close_bt, *help_bt;
GtkWidget *win;
GtkWidget *resolv_cb;
int page;
@@ -925,12 +935,21 @@ init_hostlist_notebook_cb(GtkWidget *w _U_, gpointer d _U_)
SIGNAL_CONNECT(resolv_cb, "toggled", hostlist_resolve_toggle_dest, pages);
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_STATS_ENDPOINTS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(win, close_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_ENDPOINTS_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_ENDPOINTS_DIALOG);
+ }
+
SIGNAL_CONNECT(win, "delete_event", window_delete_event_cb, NULL);
SIGNAL_CONNECT(win, "destroy", hostlist_win_destroy_notebook_cb, pages);
diff --git a/gtk/io_stat.c b/gtk/io_stat.c
index 47f14f18d1..c05c22a450 100644
--- a/gtk/io_stat.c
+++ b/gtk/io_stat.c
@@ -52,6 +52,7 @@
#include "compat_macros.h"
#include "dlg_utils.h"
#include "filter_dlg.h"
+#include "help_dlg.h"
void protect_thread_critical_region(void);
void unprotect_thread_critical_region(void);
@@ -1871,7 +1872,8 @@ init_io_stat_window(io_stat_t *io)
{
GtkWidget *vbox;
GtkWidget *hbox;
- GtkWidget *bt_close;
+ GtkWidget *bbox;
+ GtkWidget *close_bt, *help_bt;
/* create the main window */
io->window=window_new(GTK_WINDOW_TOPLEVEL, "I/O Graphs");
@@ -1893,12 +1895,21 @@ init_io_stat_window(io_stat_t *io)
io_stat_set_title(io);
- hbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
- gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
- gtk_widget_show(hbox);
-
- bt_close = OBJECT_GET_DATA(hbox, GTK_STOCK_CLOSE);
- window_set_cancel_button(io->window, bt_close, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_IO_GRAPH_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
+ gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
+ gtk_widget_show(bbox);
+
+ close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
+ window_set_cancel_button(io->window, close_bt, window_cancel_button_cb);
+
+ if(topic_available(HELP_STATS_IO_GRAPH_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_IO_GRAPH_DIALOG);
+ }
SIGNAL_CONNECT(io->window, "delete_event", window_delete_event_cb, NULL);
diff --git a/gtk/menu.c b/gtk/menu.c
index d4ca081458..0ed1f18e64 100644
--- a/gtk/menu.c
+++ b/gtk/menu.c
@@ -344,27 +344,27 @@ static GtkItemFactoryEntry menu_items[] =
ITEM_FACTORY_ENTRY("/Statistics/Endpoints", NULL,
init_hostlist_notebook_cb, 0, NULL, NULL),
ITEM_FACTORY_ENTRY("/_Help", NULL, NULL, 0, "<Branch>", NULL),
- ITEM_FACTORY_STOCK_ENTRY("/Help/_Contents", "F1", help_cb, 0, GTK_STOCK_HELP),
+ ITEM_FACTORY_STOCK_ENTRY("/Help/_Contents", "F1", topic_menu_cb, HELP_CONTENT, GTK_STOCK_HELP),
ITEM_FACTORY_ENTRY("/Help/_Supported Protocols", NULL, supported_cb, 0, NULL, NULL),
#if (GLIB_MAJOR_VERSION >= 2)
#ifdef ETHEREAL_EUG_DIR
ITEM_FACTORY_ENTRY("/Help/User's Guide", NULL, url_page_menu_cb, HELP_CONTENT, NULL, NULL),
#endif
ITEM_FACTORY_ENTRY("/Help/Manual Pages", NULL, NULL, 0, "<Branch>", NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal", NULL, url_page_menu_cb, LOCALPAGE_MAN_ETHEREAL, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal Filter", NULL, url_page_menu_cb, LOCALPAGE_MAN_ETHEREAL_FILTER, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal", NULL, topic_menu_cb, LOCALPAGE_MAN_ETHEREAL, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Ethereal Filter", NULL, topic_menu_cb, LOCALPAGE_MAN_ETHEREAL_FILTER, NULL, NULL),
ITEM_FACTORY_ENTRY("/Help/Manual Pages/<separator>", NULL, NULL, 0, "<Separator>", NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Tethereal", NULL, url_page_menu_cb, LOCALPAGE_MAN_TETHEREAL, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Mergecap", NULL, url_page_menu_cb, LOCALPAGE_MAN_MERGECAP, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Editcap", NULL, url_page_menu_cb, LOCALPAGE_MAN_EDITCAP, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Manual Pages/Text2pcap", NULL, url_page_menu_cb, LOCALPAGE_MAN_TEXT2PCAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Tethereal", NULL, topic_menu_cb, LOCALPAGE_MAN_TETHEREAL, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Mergecap", NULL, topic_menu_cb, LOCALPAGE_MAN_MERGECAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Editcap", NULL, topic_menu_cb, LOCALPAGE_MAN_EDITCAP, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Manual Pages/Text2pcap", NULL, topic_menu_cb, LOCALPAGE_MAN_TEXT2PCAP, NULL, NULL),
ITEM_FACTORY_ENTRY("/Help/Ethereal Online", NULL, NULL, 0, "<Branch>", NULL),
- ITEM_FACTORY_STOCK_ENTRY("/Help/Ethereal Online/Home Page", NULL, url_page_menu_cb, ONLINEPAGE_HOME, GTK_STOCK_HOME),
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Wiki", NULL, url_page_menu_cb, ONLINEPAGE_WIKI, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/User's Guide", NULL, url_page_menu_cb, ONLINEPAGE_USERGUIDE, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/FAQ's", NULL, url_page_menu_cb, ONLINEPAGE_FAQ, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Downloads", NULL, url_page_menu_cb, ONLINEPAGE_DOWNLOAD, NULL, NULL),
- ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Example Files", NULL, url_page_menu_cb, ONLINEPAGE_SAMPLE_FILES, NULL, NULL),
+ ITEM_FACTORY_STOCK_ENTRY("/Help/Ethereal Online/Home Page", NULL, topic_menu_cb, ONLINEPAGE_HOME, GTK_STOCK_HOME),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Wiki", NULL, topic_menu_cb, ONLINEPAGE_WIKI, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/User's Guide", NULL, topic_menu_cb, ONLINEPAGE_USERGUIDE, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/FAQ's", NULL, topic_menu_cb, ONLINEPAGE_FAQ, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Downloads", NULL, topic_menu_cb, ONLINEPAGE_DOWNLOAD, NULL, NULL),
+ ITEM_FACTORY_ENTRY("/Help/Ethereal Online/Example Files", NULL, topic_menu_cb, ONLINEPAGE_SAMPLE_FILES, NULL, NULL),
#endif
ITEM_FACTORY_ENTRY("/Help/<separator>", NULL, NULL, 0, "<Separator>", NULL),
ITEM_FACTORY_ENTRY("/Help/_About Ethereal", NULL, about_ethereal_cb,
diff --git a/gtk/print_dlg.c b/gtk/print_dlg.c
index b7f4877f0f..eedaeaa5f3 100644
--- a/gtk/print_dlg.c
+++ b/gtk/print_dlg.c
@@ -48,6 +48,7 @@
#endif
#include "compat_macros.h"
#include "range_utils.h"
+#include "help_dlg.h"
/* dialog output action */
@@ -359,7 +360,7 @@ open_print_dialog(char *title, output_action_e action, print_args_t *args)
GtkWidget *hex_cb;
GtkWidget *sep, *formfeed_cb;
- GtkWidget *bbox, *ok_bt, *cancel_bt;
+ GtkWidget *bbox, *ok_bt, *cancel_bt, *help_bt;
GtkTooltips *tooltips;
@@ -622,7 +623,11 @@ open_print_dialog(char *title, output_action_e action, print_args_t *args)
/* Button row */
- bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL);
+ if(topic_available(HELP_PRINT_DIALOG)) {
+ bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(action == output_action_print ? GTK_STOCK_PRINT : GTK_STOCK_OK, GTK_STOCK_CANCEL, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
@@ -654,6 +659,11 @@ open_print_dialog(char *title, output_action_e action, print_args_t *args)
window_set_cancel_button(main_win, cancel_bt, window_cancel_button_cb);
gtk_tooltips_set_tip (tooltips, cancel_bt, "Cancel and exit dialog", NULL);
+ if(topic_available(HELP_PRINT_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_PRINT_DIALOG);
+ }
+
gtk_widget_grab_default(ok_bt);
/* Catch the "activate" signal on the "Command" and "File" text entries,
diff --git a/gtk/proto_dlg.c b/gtk/proto_dlg.c
index 5204ea5466..a173131917 100644
--- a/gtk/proto_dlg.c
+++ b/gtk/proto_dlg.c
@@ -42,6 +42,7 @@
#include "compat_macros.h"
#include "disabled_protos.h"
#include <epan/filesystem.h>
+#include "help_dlg.h"
static gboolean proto_delete_event_cb(GtkWidget *, GdkEvent *, gpointer);
static void proto_ok_cb(GtkWidget *, gpointer);
@@ -219,7 +220,11 @@ proto_cb(GtkWidget *w _U_, gpointer data _U_)
/* Button row */
- bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CANCEL, NULL);
+ if(topic_available(HELP_ENABLED_PROTOCOLS_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CANCEL, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_APPLY, GTK_STOCK_SAVE, GTK_STOCK_CANCEL, NULL);
+ }
gtk_box_pack_start(GTK_BOX(main_vb), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
@@ -236,6 +241,11 @@ proto_cb(GtkWidget *w _U_, gpointer data _U_)
button = OBJECT_GET_DATA(bbox, GTK_STOCK_CANCEL);
window_set_cancel_button(proto_w, button, proto_cancel_cb);
+ if(topic_available(HELP_ENABLED_PROTOCOLS_DIALOG)) {
+ button = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(button, "clicked", topic_cb, HELP_ENABLED_PROTOCOLS_DIALOG);
+ }
+
SIGNAL_CONNECT(proto_w, "delete_event", proto_delete_event_cb, NULL);
SIGNAL_CONNECT(proto_w, "destroy", proto_destroy_cb, NULL);
diff --git a/gtk/proto_hier_stats_dlg.c b/gtk/proto_hier_stats_dlg.c
index 0777e190e8..9e774bac5b 100644
--- a/gtk/proto_hier_stats_dlg.c
+++ b/gtk/proto_hier_stats_dlg.c
@@ -33,6 +33,7 @@
#include "ui_util.h"
#include "main.h"
#include "compat_macros.h"
+#include "help_dlg.h"
#if GTK_MAJOR_VERSION < 2
#define NUM_STAT_COLUMNS 8
@@ -312,7 +313,7 @@ void
proto_hier_stats_cb(GtkWidget *w _U_, gpointer d _U_)
{
ph_stats_t *ps;
- GtkWidget *dlg, *ok_bt, *vbox, *bbox;
+ GtkWidget *dlg, *ok_bt, *help_bt, *vbox, *bbox;
/* Get the statistics. */
ps = ph_stats_new();
@@ -334,13 +335,22 @@ proto_hier_stats_cb(GtkWidget *w _U_, gpointer d _U_)
ph_stats_free(ps);
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_OK, NULL);
+ if(topic_available(HELP_STATS_PROTO_HIERARCHY_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_OK, NULL);
+ }
gtk_box_pack_end(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
gtk_widget_show(bbox);
ok_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_OK);
window_set_cancel_button(dlg, ok_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_PROTO_HIERARCHY_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_PROTO_HIERARCHY_DIALOG);
+ }
+
SIGNAL_CONNECT(dlg, "delete_event", window_delete_event_cb, NULL);
gtk_widget_show_all(dlg);
diff --git a/gtk/summary_dlg.c b/gtk/summary_dlg.c
index 2909def87b..7c88be31cc 100644
--- a/gtk/summary_dlg.c
+++ b/gtk/summary_dlg.c
@@ -38,6 +38,7 @@
#include "dlg_utils.h"
#include "ui_util.h"
#include "compat_macros.h"
+#include "help_dlg.h"
#define SUM_STR_MAX 1024
#define FILTER_SNIP_LEN 50
@@ -86,7 +87,7 @@ summary_open_cb(GtkWidget *w _U_, gpointer d _U_)
{
summary_tally summary;
GtkWidget *sum_open_w,
- *main_vb, *bbox, *close_bt;
+ *main_vb, *bbox, *close_bt, *help_bt;
GtkWidget *table;
GtkWidget *list;
char *titles[] = { "Traffic", "Captured", "Displayed" };
@@ -345,12 +346,21 @@ summary_open_cb(GtkWidget *w _U_, gpointer d _U_)
/* Button row. */
- bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ if(topic_available(HELP_STATS_SUMMARY_DIALOG)) {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, GTK_STOCK_HELP, NULL);
+ } else {
+ bbox = dlg_button_row_new(GTK_STOCK_CLOSE, NULL);
+ }
gtk_container_add(GTK_CONTAINER(main_vb), bbox);
close_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_CLOSE);
window_set_cancel_button(sum_open_w, close_bt, window_cancel_button_cb);
+ if(topic_available(HELP_STATS_SUMMARY_DIALOG)) {
+ help_bt = OBJECT_GET_DATA(bbox, GTK_STOCK_HELP);
+ SIGNAL_CONNECT(help_bt, "clicked", topic_cb, HELP_STATS_SUMMARY_DIALOG);
+ }
+
gtk_widget_grab_focus(close_bt);
SIGNAL_CONNECT(sum_open_w, "delete_event", window_delete_event_cb, NULL);
diff --git a/gtk/toolbar.c b/gtk/toolbar.c
index 2ebe954f79..459a88bd48 100644
--- a/gtk/toolbar.c
+++ b/gtk/toolbar.c
@@ -331,16 +331,16 @@ static void toolbar_append_separator(GtkWidget *toolbar) {
#if GTK_MAJOR_VERSION < 2
-#define toolbar_item(new_item, window, toolbar, stock, tooltip, xpm, callback) { \
+#define toolbar_item(new_item, window, toolbar, stock, tooltip, xpm, callback, user_data) { \
icon = gdk_pixmap_create_from_xpm_d(window->window, &mask, &window->style->white, xpm); \
iconw = gtk_pixmap_new(icon, mask); \
new_item = gtk_toolbar_append_item(GTK_TOOLBAR (toolbar), \
- stock, tooltip, "Private", iconw, GTK_SIGNAL_FUNC(callback), NULL);\
+ stock, tooltip, "Private", iconw, GTK_SIGNAL_FUNC(callback), user_data);\
}
#else
-#define toolbar_item(new_item, window, toolbar, stock, tooltip, xpm, callback) { \
+#define toolbar_item(new_item, window, toolbar, stock, tooltip, xpm, callback, user_data) { \
new_item = gtk_toolbar_insert_stock(GTK_TOOLBAR(toolbar), \
- stock, tooltip, "Private", G_CALLBACK(callback), NULL, -1);\
+ stock, tooltip, "Private", G_CALLBACK(callback), user_data, -1);\
}
#endif /* GTK_MAJOR_VERSION */
@@ -395,63 +395,63 @@ toolbar_new(void)
* between them is needed here (stop button is hidden by default) */
toolbar_item(new_button, window, main_tb,
- ETHEREAL_STOCK_CAPTURE_START, "Start a new live capture...", capture_24_xpm, capture_prep_cb);
+ ETHEREAL_STOCK_CAPTURE_START, "Start a new live capture...", capture_24_xpm, capture_prep_cb, NULL);
toolbar_item(stop_button, window, main_tb,
- GTK_STOCK_STOP, "Stop the running live capture", stock_stop_24_xpm, capture_stop_cb);
+ GTK_STOCK_STOP, "Stop the running live capture", stock_stop_24_xpm, capture_stop_cb, NULL);
toolbar_append_separator(main_tb);
#endif /* HAVE_LIBPCAP */
toolbar_item(open_button, window, main_tb,
- GTK_STOCK_OPEN, "Open a capture file...", stock_open_24_xpm, file_open_cmd_cb);
+ GTK_STOCK_OPEN, "Open a capture file...", stock_open_24_xpm, file_open_cmd_cb, NULL);
toolbar_item(save_button, window, main_tb,
- GTK_STOCK_SAVE, "Save this capture file...", stock_save_24_xpm, file_save_cmd_cb);
+ GTK_STOCK_SAVE, "Save this capture file...", stock_save_24_xpm, file_save_cmd_cb, NULL);
toolbar_item(save_as_button, window, main_tb,
- GTK_STOCK_SAVE_AS, "Save this capture file as...", stock_save_as_24_xpm, file_save_as_cmd_cb);
+ GTK_STOCK_SAVE_AS, "Save this capture file as...", stock_save_as_24_xpm, file_save_as_cmd_cb, NULL);
toolbar_item(close_button, window, main_tb,
- GTK_STOCK_CLOSE, "Close this capture file", stock_close_24_xpm, file_close_cmd_cb);
+ GTK_STOCK_CLOSE, "Close this capture file", stock_close_24_xpm, file_close_cmd_cb, NULL);
toolbar_item(reload_button, window, main_tb,
- GTK_STOCK_REFRESH, "Reload this capture file", stock_refresh_24_xpm, file_reload_cmd_cb);
+ GTK_STOCK_REFRESH, "Reload this capture file", stock_refresh_24_xpm, file_reload_cmd_cb, NULL);
toolbar_item(print_button, window, main_tb,
- GTK_STOCK_PRINT, "Print packet(s)...", stock_print_24_xpm, file_print_cmd_cb);
+ GTK_STOCK_PRINT, "Print packet(s)...", stock_print_24_xpm, file_print_cmd_cb, NULL);
toolbar_append_separator(main_tb);
toolbar_item(find_button, window, main_tb,
- GTK_STOCK_FIND, "Find a packet...", stock_search_24_xpm, find_frame_cb);
+ GTK_STOCK_FIND, "Find a packet...", stock_search_24_xpm, find_frame_cb, NULL);
toolbar_item(history_back_button, window, main_tb,
- GTK_STOCK_GO_BACK, "Go back in packet history", stock_left_arrow_24_xpm, history_back_cb);
+ GTK_STOCK_GO_BACK, "Go back in packet history", stock_left_arrow_24_xpm, history_back_cb, NULL);
toolbar_item(history_forward_button, window, main_tb,
- GTK_STOCK_GO_FORWARD, "Go forward in packet history", stock_right_arrow_24_xpm, history_forward_cb);
+ GTK_STOCK_GO_FORWARD, "Go forward in packet history", stock_right_arrow_24_xpm, history_forward_cb, NULL);
toolbar_item(go_to_button, window, main_tb,
- GTK_STOCK_JUMP_TO, "Go to the packet with number...", stock_jump_to_24_xpm, goto_frame_cb);
+ GTK_STOCK_JUMP_TO, "Go to the packet with number...", stock_jump_to_24_xpm, goto_frame_cb, NULL);
toolbar_item(go_to_top_button, window, main_tb,
- GTK_STOCK_GOTO_TOP, "Go to the first packet", stock_top_24_xpm, goto_top_frame_cb);
+ GTK_STOCK_GOTO_TOP, "Go to the first packet", stock_top_24_xpm, goto_top_frame_cb, NULL);
toolbar_item(go_to_bottom_button, window, main_tb,
- GTK_STOCK_GOTO_BOTTOM, "Go to the last packet", stock_bottom_24_xpm, goto_bottom_frame_cb);
+ GTK_STOCK_GOTO_BOTTOM, "Go to the last packet", stock_bottom_24_xpm, goto_bottom_frame_cb, NULL);
toolbar_append_separator(main_tb);
toolbar_item(zoom_in_button, window, main_tb,
- GTK_STOCK_ZOOM_IN, "Zoom in", stock_zoom_in_24_xpm, view_zoom_in_cb);
+ GTK_STOCK_ZOOM_IN, "Zoom in", stock_zoom_in_24_xpm, view_zoom_in_cb, NULL);
toolbar_item(zoom_out_button, window, main_tb,
- GTK_STOCK_ZOOM_OUT, "Zoom out", stock_zoom_out_24_xpm, view_zoom_out_cb);
+ GTK_STOCK_ZOOM_OUT, "Zoom out", stock_zoom_out_24_xpm, view_zoom_out_cb, NULL);
toolbar_item(zoom_100_button, window, main_tb,
- GTK_STOCK_ZOOM_100, "Zoom 100%", stock_zoom_1_24_xpm, view_zoom_100_cb);
+ GTK_STOCK_ZOOM_100, "Zoom 100%", stock_zoom_1_24_xpm, view_zoom_100_cb, NULL);
toolbar_append_separator(main_tb);
#ifdef HAVE_LIBPCAP
toolbar_item(capture_filter_button, window, main_tb,
- ETHEREAL_STOCK_CAPTURE_FILTER, "Edit capture filter...", cfilter_24_xpm, cfilter_dialog_cb);
+ ETHEREAL_STOCK_CAPTURE_FILTER, "Edit capture filter...", cfilter_24_xpm, cfilter_dialog_cb, NULL);
#endif /* HAVE_LIBPCAP */
toolbar_item(display_filter_button, window, main_tb,
- ETHEREAL_STOCK_DISPLAY_FILTER, "Edit/apply display filter...", dfilter_24_xpm, dfilter_dialog_cb);
+ ETHEREAL_STOCK_DISPLAY_FILTER, "Edit/apply display filter...", dfilter_24_xpm, dfilter_dialog_cb, NULL);
toolbar_item(color_display_button, window, main_tb,
- GTK_STOCK_SELECT_COLOR, "Edit coloring rules...", stock_colorselector_24_xpm, color_display_cb);
+ GTK_STOCK_SELECT_COLOR, "Edit coloring rules...", stock_colorselector_24_xpm, color_display_cb, NULL);
/* the preference button uses it's own Stock icon label "Prefs", as "Preferences" is too long */
toolbar_item(prefs_button, window, main_tb,
- ETHEREAL_STOCK_PREFS, "Edit preferences...", stock_preferences_24_xpm, prefs_cb);
+ ETHEREAL_STOCK_PREFS, "Edit preferences...", stock_preferences_24_xpm, prefs_cb, NULL);
toolbar_append_separator(main_tb);
toolbar_item(help_button, window, main_tb,
- GTK_STOCK_HELP, "Show some help...", stock_help_24_xpm, help_cb);
+ GTK_STOCK_HELP, "Show some help...", stock_help_24_xpm, topic_cb, GINT_TO_POINTER(HELP_CONTENT));
/* disable all "sensitive" items by default */
toolbar_init = TRUE;
diff --git a/gtk/webbrowser.c b/gtk/webbrowser.c
index 7c51d4c1ae..5632ca87ea 100644
--- a/gtk/webbrowser.c
+++ b/gtk/webbrowser.c
@@ -284,6 +284,8 @@ browser_open_data_file(const gchar *filename)
/* build filename */
file_path = g_strdup_printf("%s/%s", get_datafile_dir(), filename);
+ /* XXX - check, if the file is really existing, otherwise display a simple_dialog about the problem */
+
/* convert filename to uri */
uri = filename2uri(file_path);