diff options
-rw-r--r-- | AUTHORS | 2 | ||||
-rw-r--r-- | epan/prefs.c | 16 | ||||
-rw-r--r-- | epan/prefs.h | 1 | ||||
-rw-r--r-- | gtk/capture_dlg.c | 7 | ||||
-rw-r--r-- | gtk/capture_info_dlg.c | 7 | ||||
-rw-r--r-- | gtk/gui_prefs.c | 20 | ||||
-rw-r--r-- | gtk/main.c | 8 | ||||
-rw-r--r-- | gtk/ui_util.c | 27 | ||||
-rw-r--r-- | gtk/ui_util.h | 8 |
9 files changed, 86 insertions, 10 deletions
@@ -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__ */ |