aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--gtk/capture_dlg.c4
-rw-r--r--gtk/file_dlg.c8
-rw-r--r--gtk/gui_prefs.c13
-rw-r--r--gtk/main.c8
-rw-r--r--gtk/menu.c4
-rw-r--r--prefs.c17
-rw-r--r--prefs.h3
7 files changed, 41 insertions, 16 deletions
diff --git a/gtk/capture_dlg.c b/gtk/capture_dlg.c
index da141dfe79..daa25abc04 100644
--- a/gtk/capture_dlg.c
+++ b/gtk/capture_dlg.c
@@ -1,7 +1,7 @@
/* capture_dlg.c
* Routines for packet capture windows
*
- * $Id: capture_dlg.c,v 1.134 2004/06/20 13:39:44 ulfl Exp $
+ * $Id: capture_dlg.c,v 1.135 2004/06/20 15:57:09 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1106,7 +1106,7 @@ capture_prep_cb(GtkWidget *w _U_, gpointer d _U_)
{
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before starting a new capture?" PRIMARY_TEXT_END "\n\n"
diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c
index 2bc6987496..bd2c83120b 100644
--- a/gtk/file_dlg.c
+++ b/gtk/file_dlg.c
@@ -1,7 +1,7 @@
/* file_dlg.c
* Dialog boxes for handling files
*
- * $Id: file_dlg.c,v 1.117 2004/06/20 09:35:51 ulfl Exp $
+ * $Id: file_dlg.c,v 1.118 2004/06/20 15:57:09 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -579,7 +579,7 @@ void
file_open_cmd_cb(GtkWidget *widget, gpointer data _U_) {
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before opening a new one?" PRIMARY_TEXT_END "\n\n"
@@ -890,7 +890,7 @@ void
file_merge_cmd_cb(GtkWidget *widget, gpointer data _U_) {
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_OK_CANCEL,
PRIMARY_TEXT_START "Save the capture file before merging to another one?" PRIMARY_TEXT_END "\n\n"
@@ -1051,7 +1051,7 @@ void
file_close_cmd_cb(GtkWidget *widget _U_, gpointer data _U_) {
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before closing it?" PRIMARY_TEXT_END "\n\n"
diff --git a/gtk/gui_prefs.c b/gtk/gui_prefs.c
index 7d13efcf64..d675360ab8 100644
--- a/gtk/gui_prefs.c
+++ b/gtk/gui_prefs.c
@@ -1,7 +1,7 @@
/* gui_prefs.c
* Dialog box for GUI preferences
*
- * $Id: gui_prefs.c,v 1.73 2004/06/17 16:44:46 ulfl Exp $
+ * $Id: gui_prefs.c,v 1.74 2004/06/20 15:57:10 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -73,6 +73,7 @@ static gint recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,
#define GUI_FILEOPEN_KEY "fileopen_behavior"
#define GUI_RECENT_FILES_COUNT_KEY "recent_files_count"
#define GUI_FILEOPEN_DIR_KEY "fileopen_directory"
+#define GUI_ASK_UNSAVED_KEY "ask_unsaved"
#define GUI_TOOLBAR_STYLE_KEY "toolbar_style"
@@ -178,7 +179,7 @@ gui_prefs_show(void)
#endif
GtkWidget *fileopen_rb, *fileopen_dir_te, *toolbar_style_om;
GtkWidget *filter_toolbar_placement_om;
- GtkWidget *recent_files_count_max_te;
+ GtkWidget *recent_files_count_max_te, *ask_unsaved_cb;
GtkWidget *save_position_cb, *save_size_cb, *save_maximized_cb;
#if GTK_MAJOR_VERSION < 2
GtkWidget *expander_style_om, *line_style_om;
@@ -311,6 +312,11 @@ gui_prefs_show(void)
fileopen_selected_cb(NULL, main_vb);
+ ask_unsaved_cb = create_preference_check_button(main_tb, pos++,
+ "Ask for unsaved capture files:", NULL, prefs.gui_ask_unsaved);
+ OBJECT_SET_DATA(main_vb, GUI_ASK_UNSAVED_KEY, ask_unsaved_cb);
+
+
/* Show 'em what we got */
gtk_widget_show_all(main_vb);
@@ -408,6 +414,9 @@ gui_prefs_fetch(GtkWidget *w)
prefs.gui_fileopen_dir = g_strdup(gtk_entry_get_text(
GTK_ENTRY(OBJECT_GET_DATA(w, GUI_FILEOPEN_DIR_KEY))));
+ prefs.gui_ask_unsaved =
+ gtk_toggle_button_get_active(OBJECT_GET_DATA(w, GUI_ASK_UNSAVED_KEY));
+
/*
* XXX - we need to have a way to fetch the preferences into
* local storage and only set the permanent preferences if there
diff --git a/gtk/main.c b/gtk/main.c
index 7b99c1b358..7ec18601f9 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.444 2004/06/20 14:48:24 ulfl Exp $
+ * $Id: main.c,v 1.445 2004/06/20 15:57:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -828,7 +828,7 @@ main_window_delete_event_cb(GtkWidget *widget _U_, GdkEvent *event _U_, gpointer
{
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before program quit?" PRIMARY_TEXT_END "\n\n"
@@ -922,7 +922,7 @@ file_quit_cmd_cb(GtkWidget *widget _U_, gpointer data _U_)
{
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before program quit?" PRIMARY_TEXT_END "\n\n"
@@ -1360,7 +1360,7 @@ GtkSelectionData *selection_data, guint info, guint t _U_, gpointer data _U_)
g_free(cf_name_ori);
/* ask the user to save it's current capture file first */
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION,
ESD_BTNS_YES_NO_CANCEL,
diff --git a/gtk/menu.c b/gtk/menu.c
index 808e109b80..689dde0735 100644
--- a/gtk/menu.c
+++ b/gtk/menu.c
@@ -1,7 +1,7 @@
/* menu.c
* Menu routines
*
- * $Id: menu.c,v 1.202 2004/06/17 21:53:26 ulfl Exp $
+ * $Id: menu.c,v 1.203 2004/06/20 15:57:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -976,7 +976,7 @@ menu_open_recent_file_cmd_cb(GtkWidget *widget, gpointer data _U_) {
gpointer dialog;
- if((cfile.state != FILE_CLOSED) && !cfile.user_saved) {
+ if((cfile.state != FILE_CLOSED) && !cfile.user_saved && prefs.gui_ask_unsaved) {
/* user didn't saved his current file, ask him */
dialog = simple_dialog(ESD_TYPE_CONFIRMATION, ESD_BTNS_YES_NO_CANCEL,
PRIMARY_TEXT_START "Save capture file before opening a new one?" PRIMARY_TEXT_END "\n\n"
diff --git a/prefs.c b/prefs.c
index d2f6aa2222..5223506d56 100644
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
/* prefs.c
* Routines for handling preferences
*
- * $Id: prefs.c,v 1.136 2004/06/20 14:48:23 ulfl Exp $
+ * $Id: prefs.c,v 1.137 2004/06/20 15:57:07 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -1011,6 +1011,7 @@ read_prefs(int *gpf_errno_return, int *gpf_read_errno_return,
prefs.gui_fileopen_style = FO_STYLE_LAST_OPENED;
prefs.gui_recent_files_count_max = 10;
prefs.gui_fileopen_dir = g_strdup("");
+ prefs.gui_ask_unsaved = TRUE;
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;
@@ -1312,6 +1313,7 @@ prefs_set_pref(char *prefarg)
#define PRS_GUI_RECENT_COUNT_MAX "gui.recent_files_count.max"
#define PRS_GUI_FILEOPEN_DIR "gui.fileopen.dir"
#define PRS_GUI_FILEOPEN_REMEMBERED_DIR "gui.fileopen.remembered_dir"
+#define PRS_GUI_ASK_UNSAVED "gui.ask_unsaved"
#define PRS_GUI_GEOMETRY_SAVE_POSITION "gui.geometry.save.position"
#define PRS_GUI_GEOMETRY_SAVE_SIZE "gui.geometry.save.size"
#define PRS_GUI_GEOMETRY_SAVE_MAXIMIZED "gui.geometry.save.maximized"
@@ -1638,6 +1640,13 @@ set_pref(gchar *pref_name, gchar *value)
prefs.gui_fileopen_dir = g_strdup(value);
} else if (strcmp(pref_name, PRS_GUI_FILEOPEN_REMEMBERED_DIR) == 0) { /* deprecated */
+ } else if (strcmp(pref_name, PRS_GUI_ASK_UNSAVED) == 0) {
+ if (strcasecmp(value, "true") == 0) {
+ prefs.gui_ask_unsaved = TRUE;
+ }
+ else {
+ prefs.gui_ask_unsaved = FALSE;
+ }
} else if (strcmp(pref_name, PRS_GUI_LAYOUT_TYPE) == 0) {
prefs.gui_layout_type = strtoul(value, NULL, 10);
@@ -2182,6 +2191,11 @@ write_prefs(char **pf_path_return)
prefs.gui_fileopen_dir);
}
+ fprintf(pf, "\n# Ask to save unsaved capture files?\n");
+ fprintf(pf, "# TRUE or FALSE (case-insensitive).\n");
+ fprintf(pf, PRS_GUI_ASK_UNSAVED ": %s\n",
+ prefs.gui_ask_unsaved == TRUE ? "TRUE" : "FALSE");
+
fprintf (pf, "\n######## User Interface: Layout ########\n");
fprintf(pf, "\n# Layout type (1-6).\n");
@@ -2371,6 +2385,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_fileopen_dir = g_strdup(src->gui_fileopen_dir);
dest->gui_console_open = src->gui_console_open;
dest->gui_fileopen_style = src->gui_fileopen_style;
+ dest->gui_ask_unsaved = src->gui_ask_unsaved;
dest->gui_layout_type = src->gui_layout_type;
dest->gui_layout_content_1 = src->gui_layout_content_1;
dest->gui_layout_content_2 = src->gui_layout_content_2;
diff --git a/prefs.h b/prefs.h
index da7614bc7a..85b1c5d486 100644
--- a/prefs.h
+++ b/prefs.h
@@ -1,7 +1,7 @@
/* prefs.h
* Definitions for preference handling routines
*
- * $Id: prefs.h,v 1.65 2004/06/20 14:48:23 ulfl Exp $
+ * $Id: prefs.h,v 1.66 2004/06/20 15:57:08 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -128,6 +128,7 @@ typedef struct _e_prefs {
guint gui_fileopen_style;
guint gui_recent_files_count_max;
gchar *gui_fileopen_dir;
+ gboolean gui_ask_unsaved;
layout_type_e gui_layout_type;
layout_pane_content_e gui_layout_content_1;
layout_pane_content_e gui_layout_content_2;