aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--AUTHORS2
-rw-r--r--epan/prefs.c16
-rw-r--r--epan/prefs.h1
-rw-r--r--gtk/capture_dlg.c7
-rw-r--r--gtk/capture_info_dlg.c7
-rw-r--r--gtk/gui_prefs.c20
-rw-r--r--gtk/main.c8
-rw-r--r--gtk/ui_util.c27
-rw-r--r--gtk/ui_util.h8
9 files changed, 86 insertions, 10 deletions
diff --git a/AUTHORS b/AUTHORS
index e2c0e9c016..3c01ce1de1 100644
--- a/AUTHORS
+++ b/AUTHORS
@@ -1933,7 +1933,7 @@ Brian K. Teravskis <Brian_Teravskis [AT] Cargill.com> {
Support for saving RTP analysis data in CSV form
}
-Nathan Jennings <njen [AT] bellsouth.net> {
+Nathan Jennings <njen [AT] triad.rr.com> {
Support for user-supplied interface descriptions
Support for hiding interfaces in drop-down list in capture
dialog
diff --git a/epan/prefs.c b/epan/prefs.c
index d1ee89d106..9a41a77afd 100644
--- a/epan/prefs.c
+++ b/epan/prefs.c
@@ -1046,6 +1046,7 @@ read_prefs(int *gpf_errno_return, int *gpf_read_errno_return,
prefs.gui_ask_unsaved = TRUE;
prefs.gui_find_wrap = TRUE;
prefs.gui_webbrowser = g_strdup("mozilla %s");
+ prefs.gui_window_title = g_strdup("");
prefs.gui_layout_type = layout_type_5;
prefs.gui_layout_content_1 = layout_pane_content_plist;
prefs.gui_layout_content_2 = layout_pane_content_pdetails;
@@ -1360,6 +1361,7 @@ prefs_set_pref(char *prefarg)
#define PRS_GUI_TOOLBAR_MAIN_SHOW "gui.toolbar_main_show"
#define PRS_GUI_TOOLBAR_MAIN_STYLE "gui.toolbar_main_style"
#define PRS_GUI_WEBBROWSER "gui.webbrowser"
+#define PRS_GUI_WINDOW_TITLE "gui.window_title"
#define PRS_GUI_LAYOUT_TYPE "gui.layout_type"
#define PRS_GUI_LAYOUT_CONTENT_1 "gui.layout_content_1"
#define PRS_GUI_LAYOUT_CONTENT_2 "gui.layout_content_2"
@@ -1695,6 +1697,10 @@ set_pref(gchar *pref_name, gchar *value)
} else if (strcmp(pref_name, PRS_GUI_WEBBROWSER) == 0) {
g_free(prefs.gui_webbrowser);
prefs.gui_webbrowser = g_strdup(value);
+ } else if (strcmp(pref_name, PRS_GUI_WINDOW_TITLE) == 0) {
+ if (prefs.gui_window_title != NULL)
+ g_free(prefs.gui_window_title);
+ prefs.gui_window_title = g_strdup(value);
} else if (strcmp(pref_name, PRS_GUI_LAYOUT_TYPE) == 0) {
prefs.gui_layout_type = strtoul(value, NULL, 10);
if (prefs.gui_layout_type == layout_unused ||
@@ -2306,6 +2312,10 @@ write_prefs(char **pf_path_return)
fprintf(pf, "# Ex: mozilla %%s\n");
fprintf(pf, PRS_GUI_WEBBROWSER ": %s\n", prefs.gui_webbrowser);
+ fprintf(pf, "\n# Custom window title. (Prepended to existing titles.)\n");
+ fprintf(pf, PRS_GUI_WINDOW_TITLE ": %s\n",
+ prefs.gui_window_title);
+
fprintf (pf, "\n######## User Interface: Layout ########\n");
fprintf(pf, "\n# Layout type (1-6).\n");
@@ -2510,6 +2520,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_geometry_save_size = src->gui_geometry_save_size;
dest->gui_geometry_save_maximized = src->gui_geometry_save_maximized;
dest->gui_webbrowser = g_strdup(src->gui_webbrowser);
+ dest->gui_window_title = g_strdup(src->gui_window_title);
/* values for the capture dialog box */
dest->capture_device = g_strdup(src->capture_device);
dest->capture_devices_descr = g_strdup(src->capture_devices_descr);
@@ -2550,6 +2561,10 @@ free_prefs(e_prefs *pr)
}
g_free(pr->gui_webbrowser);
pr->gui_webbrowser = NULL;
+ if (pr->gui_window_title != NULL) {
+ g_free(pr->gui_window_title);
+ pr->gui_window_title = NULL;
+ }
if (pr->capture_device != NULL) {
g_free(pr->capture_device);
pr->capture_device = NULL;
@@ -2579,3 +2594,4 @@ free_col_info(e_prefs *pr)
g_list_free(pr->col_list);
pr->col_list = NULL;
}
+
diff --git a/epan/prefs.h b/epan/prefs.h
index b77539c849..2145a8de9e 100644
--- a/epan/prefs.h
+++ b/epan/prefs.h
@@ -134,6 +134,7 @@ typedef struct _e_prefs {
gboolean gui_ask_unsaved;
gboolean gui_find_wrap;
gchar *gui_webbrowser;
+ gchar *gui_window_title;
layout_type_e gui_layout_type;
layout_pane_content_e gui_layout_content_1;
layout_pane_content_e gui_layout_content_2;
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c
index 8023e71cc9..fd9f3734c7 100644
--- a/gtk/capture_dlg.c
+++ b/gtk/capture_dlg.c
@@ -527,6 +527,7 @@ capture_prep(void)
GtkWidget *buffer_size_lb, *buffer_size_sb;
#endif
guint32 value;
+ gchar *cap_title;
if (cap_open_w != NULL) {
/* There's already a "Capture Options" dialog box; reactivate it. */
@@ -566,7 +567,11 @@ capture_prep(void)
g_free(cant_get_if_list_errstr);
}
- cap_open_w = dlg_window_new("Ethereal: Capture Options");
+ /* use user-defined title if preference is set */
+ cap_title = create_user_window_title("Ethereal: Capture Options");
+
+ cap_open_w = dlg_window_new(cap_title);
+ g_free(cap_title);
tooltips = gtk_tooltips_new();
diff --git a/gtk/capture_info_dlg.c b/gtk/capture_info_dlg.c
index d155294824..dd7385a63e 100644
--- a/gtk/capture_info_dlg.c
+++ b/gtk/capture_info_dlg.c
@@ -86,6 +86,7 @@ gchar *iface)
GtkWidget *counts_fr, *running_tb, *running_label, *bbox;
capture_info_ui_t *info;
gchar *cap_w_title;
+ gchar *title_iface;
info = g_malloc0(sizeof(capture_info_ui_t));
info->counts[0].title = "Total";
@@ -113,10 +114,14 @@ gchar *iface)
info->counts[11].title = "Other";
info->counts[11].value_ptr = &(cinfo->counts->other);
- cap_w_title = g_strdup_printf("Ethereal: Capture - Interface %s", iface);
+ /* use user-defined title if preference is set */
+ title_iface = g_strdup_printf("Ethereal: Capture - Interface %s", iface);
+ cap_w_title = create_user_window_title(title_iface);
info->cap_w = dlg_window_new(cap_w_title);
+ g_free(title_iface);
g_free(cap_w_title);
+
gtk_window_set_modal(GTK_WINDOW(info->cap_w), TRUE);
/* Container for capture display widgets */
diff --git a/gtk/gui_prefs.c b/gtk/gui_prefs.c
index dcb42ef402..91b928927d 100644
--- a/gtk/gui_prefs.c
+++ b/gtk/gui_prefs.c
@@ -80,6 +80,7 @@ static gint recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,
#define GUI_ASK_UNSAVED_KEY "ask_unsaved"
#define GUI_WEBBROWSER_KEY "webbrowser"
#define GUI_FIND_WRAP_KEY "find_wrap"
+#define GUI_WINDOW_TITLE_KEY "window_title"
#define GUI_TOOLBAR_STYLE_KEY "toolbar_style"
@@ -173,9 +174,9 @@ static char recent_files_count_max_str[128] = "";
static char open_file_preview_str[128] = "";
#if GTK_MAJOR_VERSION < 2
-#define GUI_TABLE_ROWS 10
+#define GUI_TABLE_ROWS 11
#else
-#define GUI_TABLE_ROWS 9
+#define GUI_TABLE_ROWS 10
#endif
GtkWidget*
@@ -192,6 +193,7 @@ gui_prefs_show(void)
GtkWidget *filter_toolbar_placement_om;
GtkWidget *recent_files_count_max_te, *ask_unsaved_cb, *find_wrap_cb;
GtkWidget *webbrowser_te;
+ GtkWidget *window_title_te;
GtkWidget *save_position_cb, *save_size_cb, *save_maximized_cb;
#if GTK_MAJOR_VERSION < 2
GtkWidget *expander_style_om, *line_style_om;
@@ -343,13 +345,18 @@ gui_prefs_show(void)
OBJECT_SET_DATA(main_vb, GUI_FIND_WRAP_KEY, find_wrap_cb);
/* Webbrowser */
- if(browser_needs_pref()) {
+ if (browser_needs_pref()) {
webbrowser_te = create_preference_entry(main_tb, pos++,
"Web browser command:", NULL, prefs.gui_webbrowser);
gtk_entry_set_text(GTK_ENTRY(webbrowser_te), prefs.gui_webbrowser);
OBJECT_SET_DATA(main_vb, GUI_WEBBROWSER_KEY, webbrowser_te);
}
+ /* Window title */
+ window_title_te = create_preference_entry(main_tb, pos++,
+ "Custom window title (prepended to existing titles):", NULL, prefs.gui_window_title);
+ gtk_entry_set_text(GTK_ENTRY(window_title_te), prefs.gui_window_title);
+ OBJECT_SET_DATA(main_vb, GUI_WINDOW_TITLE_KEY, window_title_te);
/* Show 'em what we got */
gtk_widget_show_all(main_vb);
@@ -456,12 +463,16 @@ gui_prefs_fetch(GtkWidget *w)
prefs.gui_find_wrap =
gtk_toggle_button_get_active(OBJECT_GET_DATA(w, GUI_FIND_WRAP_KEY));
- if(browser_needs_pref()) {
+ if (browser_needs_pref()) {
g_free(prefs.gui_webbrowser);
prefs.gui_webbrowser = g_strdup(gtk_entry_get_text(
GTK_ENTRY(OBJECT_GET_DATA(w, GUI_WEBBROWSER_KEY))));
}
+ if (prefs.gui_window_title != NULL)
+ g_free(prefs.gui_window_title);
+ prefs.gui_window_title = g_strdup(gtk_entry_get_text(
+ GTK_ENTRY(OBJECT_GET_DATA(w, GUI_WINDOW_TITLE_KEY))));
/*
* XXX - we need to have a way to fetch the preferences into
@@ -631,3 +642,4 @@ fileopen_selected_cb(GtkWidget *mybutton_rb _U_, gpointer parent_w)
}
return;
}
+
diff --git a/gtk/main.c b/gtk/main.c
index 9cd1fce2db..5c36257163 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -2951,6 +2951,7 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
GList *filter_list = NULL;
GtkTooltips *tooltips;
GtkAccelGroup *accel;
+ gchar *title;
/* Display filter construct dialog has an Apply button, and "OK" not
only sets our text widget, it activates it (i.e., it causes us to
filter the capture). */
@@ -2960,8 +2961,12 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
TRUE
};
+ /* use user-defined title if preference is set */
+ title = create_user_window_title("The Ethereal Network Analyzer");
+
/* Main window */
- top_level = window_new(GTK_WINDOW_TOPLEVEL, "The Ethereal Network Analyzer");
+ top_level = window_new(GTK_WINDOW_TOPLEVEL, title);
+ g_free(title);
tooltips = gtk_tooltips_new();
@@ -3159,3 +3164,4 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
status_pane = gtk_hpaned_new();
gtk_widget_show(status_pane);
}
+
diff --git a/gtk/ui_util.c b/gtk/ui_util.c
index 97ab2dbc9c..d350ab7dd1 100644
--- a/gtk/ui_util.c
+++ b/gtk/ui_util.c
@@ -570,8 +570,13 @@ GtkWidget *xpm_to_widget(const char ** xpm) {
void
set_main_window_name(gchar *window_name)
{
- gtk_window_set_title(GTK_WINDOW(top_level), window_name);
- gdk_window_set_icon_name(top_level->window, window_name);
+ gchar *title;
+
+ /* use user-defined window title if preference is set */
+ title = create_user_window_title(window_name);
+ gtk_window_set_title(GTK_WINDOW(top_level), title);
+ gdk_window_set_icon_name(top_level->window, title);
+ g_free(title);
}
@@ -1013,3 +1018,21 @@ copy_to_clipboard(GString *str)
gtk_editable_copy_clipboard((GtkEditable *)text); /* Copy the byte data into the clipboard */
#endif
}
+
+/*
+ * Create a new window title string with user-defined title preference.
+ * (Or ignore it if unspecified).
+ */
+gchar *
+create_user_window_title(gchar *caption)
+{
+ /* fail-safe */
+ if (caption == NULL)
+ return g_strdup("");
+
+ /* no user-defined title specified */
+ if ((prefs.gui_window_title == NULL) || (*prefs.gui_window_title == '\0'))
+ return g_strdup(caption);
+
+ return g_strdup_printf("%s %s", prefs.gui_window_title, caption);
+}
diff --git a/gtk/ui_util.h b/gtk/ui_util.h
index de970b1b77..a421a1782c 100644
--- a/gtk/ui_util.h
+++ b/gtk/ui_util.h
@@ -297,4 +297,12 @@ extern GtkWidget *xpm_to_widget_from_parent(GtkWidget *parent, const char ** xpm
*/
extern void copy_to_clipboard(GString *str);
+/** Create a new window title that includes user-defined preference string.
+ *
+ * @param caption string you want included in title (appended to user-defined string)
+ * @return a newly created title string including user-defined preference (if specified)
+ */
+extern gchar *create_user_window_title(gchar *caption);
+
+
#endif /* __GTKGUIUI_UTIL_H__ */