aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorUlf Lamping <ulf.lamping@web.de>2004-02-01 20:28:11 +0000
committerUlf Lamping <ulf.lamping@web.de>2004-02-01 20:28:11 +0000
commitd11080a09fe4ea26349762f9e14b8203d3cd255b (patch)
tree7b9034fffc58be452b19ff6bc92a84597636b8b9
parent5ed2dfc130416048f8ad813f9856139b2008addc (diff)
moved window geometry values from prefs to recent,
added new pref / recent setting: "maximized main window", which will save, if the main window is maximized or not, this will take effect on GTK version 2 only, but is saved nonetheless svn path=/trunk/; revision=9949
-rw-r--r--gtk/file_dlg.c7
-rw-r--r--gtk/gui_prefs.c11
-rw-r--r--gtk/main.c235
-rw-r--r--gtk/menu.h3
-rw-r--r--gtk/recent.c91
-rw-r--r--gtk/recent.h18
-rw-r--r--prefs.c63
-rw-r--r--prefs.h8
8 files changed, 220 insertions, 216 deletions
diff --git a/gtk/file_dlg.c b/gtk/file_dlg.c
index be6dfb29e2..ffb45b152f 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.90 2004/01/31 18:32:36 ulfl Exp $
+ * $Id: file_dlg.c,v 1.91 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -44,6 +44,7 @@
#include "main.h"
#include "compat_macros.h"
#include "prefs.h"
+#include "recent.h"
#include "color.h"
#include "../ui_util.h"
#include "gtk/color_filters.h"
@@ -249,9 +250,9 @@ file_open_cmd(GtkWidget *w)
last_open_dir);
}
else {
- if (prefs.gui_fileopen_remembered_dir != NULL) {
+ if (recent.gui_fileopen_remembered_dir != NULL) {
gtk_file_selection_set_filename(GTK_FILE_SELECTION(file_open_w),
- prefs.gui_fileopen_remembered_dir);
+ recent.gui_fileopen_remembered_dir);
}
}
break;
diff --git a/gtk/gui_prefs.c b/gtk/gui_prefs.c
index 83ceac28ed..81701a20cd 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.62 2004/01/31 03:22:40 guy Exp $
+ * $Id: gui_prefs.c,v 1.63 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -65,6 +65,7 @@ static gint recent_files_count_changed_cb(GtkWidget *recent_files_entry _U_,
#define HEX_DUMP_HIGHLIGHT_STYLE_KEY "hex_dump_highlight_style"
#define GEOMETRY_POSITION_KEY "geometry_position"
#define GEOMETRY_SIZE_KEY "geometry_size"
+#define GEOMETRY_MAXIMIZED_KEY "geometry_maximized"
#define GUI_FILEOPEN_KEY "fileopen_behavior"
#define GUI_RECENT_FILES_COUNT_KEY "recent_files_count"
@@ -156,7 +157,7 @@ gui_prefs_show(void)
GtkWidget *ptree_browse_om, *highlight_style_om;
GtkWidget *fileopen_rb, *fileopen_dir_te, *toolbar_style_om;
GtkWidget *recent_files_count_max_te;
- GtkWidget *save_position_cb, *save_size_cb;
+ GtkWidget *save_position_cb, *save_size_cb, *save_maximized_cb;
#if GTK_MAJOR_VERSION < 2
GtkWidget *expander_style_om, *line_style_om;
#else
@@ -245,6 +246,10 @@ gui_prefs_show(void)
"Save window size:", NULL, prefs.gui_geometry_save_size);
OBJECT_SET_DATA(main_vb, GEOMETRY_SIZE_KEY, save_size_cb);
+ save_maximized_cb = create_preference_check_button(main_tb, pos++,
+ "Save maximized state:", NULL, prefs.gui_geometry_save_maximized);
+ OBJECT_SET_DATA(main_vb, GEOMETRY_MAXIMIZED_KEY, save_maximized_cb);
+
/* Allow user to select where they want the File Open dialog to open to
* by default */
fileopen_rb = create_preference_radio_buttons(main_tb, pos++,
@@ -428,6 +433,8 @@ gui_prefs_fetch(GtkWidget *w)
GEOMETRY_POSITION_KEY));
prefs.gui_geometry_save_size =
gtk_toggle_button_get_active(OBJECT_GET_DATA(w, GEOMETRY_SIZE_KEY));
+ prefs.gui_geometry_save_maximized =
+ gtk_toggle_button_get_active(OBJECT_GET_DATA(w, GEOMETRY_MAXIMIZED_KEY));
prefs.gui_fileopen_style = fetch_preference_radio_buttons_val(
OBJECT_GET_DATA(w, GUI_FILEOPEN_KEY), gui_fileopen_vals);
diff --git a/gtk/main.c b/gtk/main.c
index 876f77f1c8..74925f3e3c 100644
--- a/gtk/main.c
+++ b/gtk/main.c
@@ -1,6 +1,6 @@
/* main.c
*
- * $Id: main.c,v 1.385 2004/02/01 10:01:19 ulfl Exp $
+ * $Id: main.c,v 1.386 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -147,8 +147,6 @@ static GString *comp_info_str, *runtime_info_str;
gchar *ethereal_path = NULL;
gchar *last_open_dir = NULL;
static gboolean updated_last_open_dir = FALSE;
-static gint root_x = G_MAXINT, root_y = G_MAXINT, top_width, top_height;
-static gboolean updated_geometry = FALSE;
/* init with an invalid value, so that "recent" can detect this and */
/* distinguish it from a command line value */
@@ -173,6 +171,7 @@ static gboolean list_link_layer_types;
static void create_main_window(gint, gint, gint, e_prefs*);
static void file_quit_answered_cb(gpointer dialog _U_, gint btn, gpointer data _U_);
+static void main_save_window_geometry(GtkWidget *widget);
#ifdef WIN32
#if GTK_MAJOR_VERSION >= 2
static void try_to_get_windows_font_gtk2 (void);
@@ -1103,6 +1102,9 @@ main_do_quit(void)
gchar *rec_path;
+ /* get the current geometry, before writing it to disk */
+ main_save_window_geometry(top_level);
+
/* write user's recent file to disk
* It is no problem to write this file, even if we do not quit */
write_recent(&rec_path);
@@ -1193,10 +1195,40 @@ main_window_delete_event_cb(GtkWidget *widget _U_, GdkEvent *event _U_, gpointer
}
}
-static gboolean
-main_window_configure_event_cb(GtkWidget *widget, GdkEvent *event _U_, gpointer data _U_)
+static void
+main_load_window_geometry(GtkWidget *widget)
+{
+ /* as we now have the geometry from the recent file, set it */
+ if (prefs.gui_geometry_save_position) {
+ gtk_widget_set_uposition(GTK_WIDGET(top_level),
+ recent.gui_geometry_main_x,
+ recent.gui_geometry_main_y);
+ }
+ if (prefs.gui_geometry_save_size) {
+ WIDGET_SET_SIZE(top_level,
+ recent.gui_geometry_main_width,
+ recent.gui_geometry_main_height);
+ } else {
+ WIDGET_SET_SIZE(top_level, DEF_WIDTH, -1);
+ }
+#if GTK_MAJOR_VERSION >= 2
+ if(prefs.gui_geometry_save_maximized) {
+ if (recent.gui_geometry_main_maximized) {
+ gdk_window_maximize(widget->window);
+ } else {
+ gdk_window_unmaximize(widget->window);
+ }
+ }
+#endif
+}
+
+static void
+main_save_window_geometry(GtkWidget *widget)
{
gint desk_x, desk_y;
+#if GTK_MAJOR_VERSION >= 2
+ GdkWindowState state;
+#endif
/* Try to grab our geometry.
@@ -1212,24 +1244,36 @@ main_window_configure_event_cb(GtkWidget *widget, GdkEvent *event _U_, gpointer
http://mail.gnome.org/archives/gtk-devel-list/2001-March/msg00289.html
http://www.gtk.org/faq/#AEN606
+ */
+
+ if (prefs.gui_geometry_save_position) {
+ gdk_window_get_root_origin(widget->window,
+ &recent.gui_geometry_main_x,
+ &recent.gui_geometry_main_y);
+ if (gdk_window_get_deskrelative_origin(widget->window,
+ &desk_x, &desk_y)) {
+ if (desk_x <= recent.gui_geometry_main_x &&
+ desk_y <= recent.gui_geometry_main_y)
+ {
+ recent.gui_geometry_main_x = desk_x;
+ recent.gui_geometry_main_y = desk_y;
+ }
+ }
+ }
- XXX - should we get this from the event itself? */
-
- gdk_window_get_root_origin(widget->window, &root_x, &root_y);
- if (gdk_window_get_deskrelative_origin(widget->window,
- &desk_x, &desk_y)) {
- if (desk_x <= root_x && desk_y <= root_y) {
- root_x = desk_x;
- root_y = desk_y;
- }
- }
-
- /* XXX - Is this the "approved" method? */
- gdk_window_get_size(widget->window, &top_width, &top_height);
-
- updated_geometry = TRUE;
+ if (prefs.gui_geometry_save_size) {
+ /* XXX - Is this the "approved" method? */
+ gdk_window_get_size(widget->window,
+ &recent.gui_geometry_main_width,
+ &recent.gui_geometry_main_height);
+ }
- return FALSE;
+#if GTK_MAJOR_VERSION >= 2
+ if(prefs.gui_geometry_save_maximized) {
+ state = gdk_window_get_state(widget->window);
+ recent.gui_geometry_main_maximized = (state == GDK_WINDOW_STATE_MAXIMIZED);
+ }
+#endif
}
static void file_quit_answered_cb(gpointer dialog _U_, gint btn, gpointer data _U_)
@@ -1770,7 +1814,6 @@ main(int argc, char *argv[])
#if GTK_MAJOR_VERSION < 2
char *bold_font_name;
#endif
- gboolean prefs_write_needed = FALSE;
ethereal_tap_list *tli = NULL;
gchar *tap_opt = NULL;
@@ -2568,14 +2611,53 @@ main(int argc, char *argv[])
we were told to. */
create_main_window(pl_size, tv_size, bv_size, prefs);
- dnd_init(top_level);
-
/* Read the recent file, as we have the gui now ready for it. */
read_recent(&rf_path, &rf_open_errno);
+ /* rearrange all the widgets */
+ main_widgets_rearrange();
+
+ /* Fill in column titles. This must be done after the top level window
+ is displayed.
+
+ XXX - is that still true, with fixed-width columns? */
+ packet_list_set_column_titles();
+
+ menu_recent_read_finished();
+
+ switch (font_apply()) {
+ case FA_SUCCESS:
+ break;
+ case FA_FONT_NOT_RESIZEABLE:
+ /* "font_apply()" popped up an alert box. */
+ /* turn off zooming - font can't be resized */
+ case FA_FONT_NOT_AVAILABLE:
+ /* XXX - did we successfully load the un-zoomed version earlier?
+ If so, this *probably* means the font is available, but not at
+ this particular zoom level, but perhaps some other failure
+ occurred; I'm not sure you can determine which is the case,
+ however. */
+ /* turn off zooming - zoom level is unavailable */
+ default:
+ /* in any other case than FA_SUCCESS, turn off zooming */
+ recent.gui_zoom_level = 0;
+ /* XXX: would it be a good idea to disable zooming (insensitive GUI)? */
+ }
+
+ dnd_init(top_level);
+
colors_init();
colfilter_init();
+ /*** we have finished all init things, show the main window ***/
+ gtk_widget_show(top_level);
+
+ /* the window can be maximized only, if it's visible, so do it after show! */
+ main_load_window_geometry(top_level);
+
+ /* process all pending GUI events before continue */
+ while (gtk_events_pending()) gtk_main_iteration();
+
/* If we were given the name of a capture file, read it in now;
we defer it until now, so that, if we can't open it, and pop
up an alert box, the alert box is more likely to come up on
@@ -2779,87 +2861,6 @@ main(int argc, char *argv[])
gtk_main();
- /* If the last opened directory, or our geometry, has changed, save
- whatever we're supposed to save. */
- if (updated_last_open_dir || updated_geometry) {
- /* Re-read our saved preferences. */
- prefs = read_prefs(&gpf_open_errno, &gpf_read_errno, &gpf_path,
- &pf_open_errno, &pf_read_errno, &pf_path);
- if (pf_path == NULL) {
- /* We succeeded in reading the preferences. */
-
- if (updated_last_open_dir) {
- /* The pathname of the last directory in which we've opened
- a file has changed. If it changed from what's in the
- preferences file, and we're supposed to save it, update
- the preference value and note that we will have to write
- the preferences out. */
- if (prefs->gui_fileopen_style == FO_STYLE_LAST_OPENED) {
- /* Yes, we're supposed to save it.
- Has a file been opened since Ethereal was started? */
- if (last_open_dir != NULL) {
- /* Yes. Is the most recently navigated-to directory
- different from the saved directory? */
- if (prefs->gui_fileopen_remembered_dir == NULL ||
- strcmp(prefs->gui_fileopen_remembered_dir, last_open_dir) != 0) {
- /* Yes. */
- prefs->gui_fileopen_remembered_dir = last_open_dir;
- prefs_write_needed = TRUE;
- }
- }
- }
- }
-
- if (updated_geometry) {
- /* We got a geometry update, in the form of a configure_notify
- event, so the geometry has changed. If it changed from
- what's in the preferences file, and we're supposed to save
- the current values of the changed geometry item (position or
- size), update the preference value and note that we will have
- to write the preferences out.
-
- XXX - should GUI stuff such as this be in a separate file? */
- if (prefs->gui_geometry_save_position) {
- if (prefs->gui_geometry_main_x != root_x) {
- prefs->gui_geometry_main_x = root_x;
- prefs_write_needed = TRUE;
- }
- if (prefs->gui_geometry_main_y != root_y) {
- prefs->gui_geometry_main_y = root_y;
- prefs_write_needed = TRUE;
- }
- }
-
- if (prefs->gui_geometry_save_size) {
- if (prefs->gui_geometry_main_width != top_width) {
- prefs->gui_geometry_main_width = top_width;
- prefs_write_needed = TRUE;
- }
- if (prefs->gui_geometry_main_height != top_height) {
- prefs->gui_geometry_main_height = top_height;
- prefs_write_needed = TRUE;
- }
- }
- }
-
- /* Save the preferences if we need to do so.
-
- XXX - this doesn't save the preferences if you don't have a
- preferences file. Forcibly writing a preferences file would
- save the current settings even if you haven't changed them,
- meaning that if the defaults change it won't affect you.
- Perhaps we need to keep track of what the *user* has changed,
- and only write out *those* preferences. */
- if (prefs_write_needed) {
- write_prefs(&pf_path);
- }
- } else {
- /* We failed to read the preferences - silently ignore the
- error. */
- g_free(pf_path);
- }
- }
-
epan_cleanup();
g_free(rc_file);
@@ -3561,20 +3562,7 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
NULL);
SIGNAL_CONNECT(top_level, "realize", window_icon_realize_cb, NULL);
gtk_window_set_title(GTK_WINDOW(top_level), "The Ethereal Network Analyzer");
- if (prefs->gui_geometry_save_position) {
- gtk_widget_set_uposition(GTK_WIDGET(top_level),
- prefs->gui_geometry_main_x,
- prefs->gui_geometry_main_y);
- }
- if (prefs->gui_geometry_save_size) {
- WIDGET_SET_SIZE(top_level, prefs->gui_geometry_main_width,
- prefs->gui_geometry_main_height);
- } else {
- WIDGET_SET_SIZE(top_level, DEF_WIDTH, -1);
- }
gtk_window_set_policy(GTK_WINDOW(top_level), TRUE, TRUE, FALSE);
- SIGNAL_CONNECT(top_level, "configure_event", main_window_configure_event_cb,
- NULL);
/* Container for menu bar, toolbar(s), paned windows and progress/info box */
main_vbox = gtk_vbox_new(FALSE, 1);
@@ -3748,17 +3736,6 @@ create_main_window (gint pl_size, gint tv_size, gint bv_size, e_prefs *prefs)
stat_hbox = gtk_hbox_new(FALSE, 1);
gtk_container_border_width(GTK_CONTAINER(stat_hbox), 0);
gtk_widget_show(stat_hbox);
-
- /* rearrange all the widgets */
- main_widgets_rearrange();
-
- gtk_widget_show(top_level);
-
- /* Fill in column titles. This must be done after the top level window
- is displayed.
-
- XXX - is that still true, with fixed-width columns? */
- packet_list_set_column_titles();
}
diff --git a/gtk/menu.h b/gtk/menu.h
index d553288afe..e264701a68 100644
--- a/gtk/menu.h
+++ b/gtk/menu.h
@@ -1,7 +1,7 @@
/* menu.h
* Menu definitions
*
- * $Id: menu.h,v 1.15 2004/01/29 23:11:38 ulfl Exp $
+ * $Id: menu.h,v 1.16 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -32,6 +32,7 @@ extern "C" {
/* Write all recent capture filenames to the user's recent file */
void menu_recent_file_write_all(FILE *rf);
void menu_open_recent_file_cmd(GtkWidget *w);
+extern void menu_recent_read_finished(void);
GtkWidget *main_menu_new(GtkAccelGroup **);
void set_menu_object_data (gchar *path, gchar *key, gpointer data);
diff --git a/gtk/recent.c b/gtk/recent.c
index df3910273d..d4afa6c644 100644
--- a/gtk/recent.c
+++ b/gtk/recent.c
@@ -2,7 +2,7 @@
* Recent "preference" handling routines
* Copyright 2004, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: recent.c,v 1.7 2004/01/25 18:51:25 ulfl Exp $
+ * $Id: recent.c,v 1.8 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -39,11 +39,27 @@
#include "prefs.h"
#include "prefs-int.h"
+
+#define RECENT_KEY_MAIN_TOOLBAR_SHOW "gui.toolbar_main_show"
+#define RECENT_KEY_FILTER_TOOLBAR_SHOW "gui.filter_toolbar_show"
+#define RECENT_KEY_PACKET_LIST_SHOW "gui.packet_list_show"
+#define RECENT_KEY_TREE_VIEW_SHOW "gui.tree_view_show"
+#define RECENT_KEY_BYTE_VIEW_SHOW "gui.byte_view_show"
+#define RECENT_KEY_STATUSBAR_SHOW "gui.statusbar_show"
+#define RECENT_GUI_TIME_FORMAT "gui.time_format"
+#define RECENT_GUI_ZOOM_LEVEL "gui.zoom_level"
+#define RECENT_GUI_GEOMETRY_MAIN_X "gui.geometry_main_x"
+#define RECENT_GUI_GEOMETRY_MAIN_Y "gui.geometry_main_y"
+#define RECENT_GUI_GEOMETRY_MAIN_WIDTH "gui.geometry_main_width"
+#define RECENT_GUI_GEOMETRY_MAIN_HEIGHT "gui.geometry_main_height"
+#define RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED "gui.geometry_main_maximized"
+#define RECENT_GUI_FILEOPEN_REMEMBERED_DIR "gui.fileopen_remembered_dir"
+
+
#define RECENT_FILE_NAME "recent"
/* #include "../menu.h" */
extern void add_menu_recent_capture_file(gchar *file);
-extern void menu_recent_read_finished(void);
recent_settings_t recent;
@@ -146,6 +162,26 @@ write_recent(char **rf_path_return)
fprintf(rf, RECENT_GUI_ZOOM_LEVEL ": %d\n",
recent.gui_zoom_level);
+ fprintf(rf, "\n# Main window geometry.\n");
+ fprintf(rf, "# Decimal integers.\n");
+ fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_X ": %d\n", recent.gui_geometry_main_x);
+ fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_Y ": %d\n", recent.gui_geometry_main_y);
+ fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_WIDTH ": %d\n",
+ recent.gui_geometry_main_width);
+ fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_HEIGHT ": %d\n",
+ recent.gui_geometry_main_height);
+
+ fprintf(rf, "\n# Main window maximized (GTK2 only).\n");
+ fprintf(rf, "# TRUE or FALSE (case-insensitive).\n");
+ fprintf(rf, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED ": %s\n",
+ recent.gui_geometry_main_maximized == TRUE ? "TRUE" : "FALSE");
+
+ if (recent.gui_fileopen_remembered_dir != NULL) {
+ fprintf(rf, "\n# Last directory navigated to in File Open dialog.\n");
+ fprintf(rf, RECENT_GUI_FILEOPEN_REMEMBERED_DIR ": %s\n",
+ recent.gui_fileopen_remembered_dir);
+ }
+
fclose(rf);
/* XXX - catch I/O errors (e.g. "ran out of disk space") and return
@@ -212,6 +248,28 @@ read_set_recent_pair(gchar *key, gchar *value)
find_index_from_string_array(value, ts_type_text, TS_RELATIVE);
} else if (strcmp(key, RECENT_GUI_ZOOM_LEVEL) == 0) {
recent.gui_zoom_level = strtol(value, NULL, 0);
+
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_MAXIMIZED) == 0) {
+ if (strcasecmp(value, "true") == 0) {
+ recent.gui_geometry_main_maximized = TRUE;
+ }
+ else {
+ recent.gui_geometry_main_maximized = FALSE;
+ }
+
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_X) == 0) {
+ recent.gui_geometry_main_x = strtol(value, NULL, 10);
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_Y) == 0) {
+ recent.gui_geometry_main_y = strtol(value, NULL, 10);
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_WIDTH) == 0) {
+ recent.gui_geometry_main_width = strtol(value, NULL, 10);
+ } else if (strcmp(key, RECENT_GUI_GEOMETRY_MAIN_HEIGHT) == 0) {
+ recent.gui_geometry_main_height = strtol(value, NULL, 10);
+
+ } else if (strcmp(key, RECENT_GUI_FILEOPEN_REMEMBERED_DIR) == 0) {
+ if (recent.gui_fileopen_remembered_dir != NULL)
+ g_free(recent.gui_fileopen_remembered_dir);
+ recent.gui_fileopen_remembered_dir = g_strdup(value);
}
return PREFS_SET_OK;
@@ -236,6 +294,13 @@ read_recent(char **rf_path_return, int *rf_errno_return)
recent.gui_time_format = TS_RELATIVE;
recent.gui_zoom_level = 0;
+ recent.gui_geometry_main_x = 20;
+ recent.gui_geometry_main_y = 20;
+ recent.gui_geometry_main_width = DEF_WIDTH;
+ recent.gui_geometry_main_height = -1;
+ recent.gui_fileopen_remembered_dir= NULL;
+ recent.gui_geometry_main_maximized= FALSE;
+
/* Construct the pathname of the user's recent file. */
rf_path = get_persconffile_path(RECENT_FILE_NAME, FALSE);
@@ -258,28 +323,6 @@ read_recent(char **rf_path_return, int *rf_errno_return)
*rf_path_return = rf_path;
}
}
-
- menu_recent_read_finished();
-
- switch (font_apply()) {
-
- case FA_SUCCESS:
- break;
-
- case FA_FONT_NOT_RESIZEABLE:
- /* "font_apply()" popped up an alert box. */
- recent.gui_zoom_level = 0; /* turn off zooming - font can't be resized */
- break;
-
- case FA_FONT_NOT_AVAILABLE:
- /* XXX - did we successfully load the un-zoomed version earlier?
- If so, this *probably* means the font is available, but not at
- this particular zoom level, but perhaps some other failure
- occurred; I'm not sure you can determine which is the case,
- however. */
- recent.gui_zoom_level = 0; /* turn off zooming - zoom level is unavailable */
- break;
- }
}
diff --git a/gtk/recent.h b/gtk/recent.h
index 3f2527cf6c..b1c245c6b5 100644
--- a/gtk/recent.h
+++ b/gtk/recent.h
@@ -2,7 +2,7 @@
* Definitions for recent "preference" handling routines
* Copyright 2004, Ulf Lamping <ulf.lamping@web.de>
*
- * $Id: recent.h,v 1.3 2004/01/20 18:47:25 ulfl Exp $
+ * $Id: recent.h,v 1.4 2004/02/01 20:28:11 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -31,14 +31,6 @@
#define RECENT_KEY_CAPTURE_FILE "recent.capture_file"
#define RECENT_KEY_DISPLAY_FILTER "recent.display_filter"
-#define RECENT_KEY_MAIN_TOOLBAR_SHOW "gui.toolbar_main_show"
-#define RECENT_KEY_FILTER_TOOLBAR_SHOW "gui.filter_toolbar_show"
-#define RECENT_KEY_PACKET_LIST_SHOW "gui.packet_list_show"
-#define RECENT_KEY_TREE_VIEW_SHOW "gui.tree_view_show"
-#define RECENT_KEY_BYTE_VIEW_SHOW "gui.byte_view_show"
-#define RECENT_KEY_STATUSBAR_SHOW "gui.statusbar_show"
-#define RECENT_GUI_TIME_FORMAT "gui.time_format"
-#define RECENT_GUI_ZOOM_LEVEL "gui.zoom_level"
typedef struct recent_settings_tag {
gboolean main_toolbar_show;
@@ -51,6 +43,14 @@ typedef struct recent_settings_tag {
gboolean statusbar_show;
gint gui_time_format;
gint gui_zoom_level;
+
+ gint gui_geometry_main_x;
+ gint gui_geometry_main_y;
+ gint gui_geometry_main_width;
+ gint gui_geometry_main_height;
+ gchar *gui_fileopen_remembered_dir;
+
+ gboolean gui_geometry_main_maximized; /* this is valid in GTK2 only */
} recent_settings_t;
extern recent_settings_t recent;
diff --git a/prefs.c b/prefs.c
index 3864e47c7a..4627e32f2d 100644
--- a/prefs.c
+++ b/prefs.c
@@ -1,7 +1,7 @@
/* prefs.c
* Routines for handling preferences
*
- * $Id: prefs.c,v 1.123 2004/01/27 04:11:48 guy Exp $
+ * $Id: prefs.c,v 1.124 2004/02/01 20:28:10 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -985,14 +985,10 @@ read_prefs(int *gpf_errno_return, int *gpf_read_errno_return,
prefs.gui_marked_bg.blue = 0;
prefs.gui_geometry_save_position = 0;
prefs.gui_geometry_save_size = 1;
- prefs.gui_geometry_main_x = 20;
- prefs.gui_geometry_main_y = 20;
- prefs.gui_geometry_main_width = DEF_WIDTH;
- prefs.gui_geometry_main_height = -1;
+ prefs.gui_geometry_save_maximized= 1;
prefs.gui_fileopen_style = FO_STYLE_LAST_OPENED;
prefs.gui_recent_files_count_max = 10;
prefs.gui_fileopen_dir = g_strdup("");
- prefs.gui_fileopen_remembered_dir = NULL;
/* set the default values for the capture dialog box */
prefs.capture_device = NULL;
@@ -1288,6 +1284,7 @@ prefs_set_pref(char *prefarg)
#define PRS_GUI_FILEOPEN_REMEMBERED_DIR "gui.fileopen.remembered_dir"
#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"
#define PRS_GUI_GEOMETRY_MAIN_X "gui.geometry.main.x"
#define PRS_GUI_GEOMETRY_MAIN_Y "gui.geometry.main.y"
#define PRS_GUI_GEOMETRY_MAIN_WIDTH "gui.geometry.main.width"
@@ -1568,14 +1565,17 @@ set_pref(gchar *pref_name, gchar *value)
else {
prefs.gui_geometry_save_size = FALSE;
}
- } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_X) == 0) {
- prefs.gui_geometry_main_x = strtol(value, NULL, 10);
- } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_Y) == 0) {
- prefs.gui_geometry_main_y = strtol(value, NULL, 10);
- } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_WIDTH) == 0) {
- prefs.gui_geometry_main_width = strtol(value, NULL, 10);
- } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_HEIGHT) == 0) {
- prefs.gui_geometry_main_height = strtol(value, NULL, 10);
+ } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_SAVE_MAXIMIZED) == 0) {
+ if (strcasecmp(value, "true") == 0) {
+ prefs.gui_geometry_save_maximized = TRUE;
+ }
+ else {
+ prefs.gui_geometry_save_maximized = FALSE;
+ }
+ } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_X) == 0) { /* deprecated */
+ } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_Y) == 0) { /* deprecated */
+ } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_WIDTH) == 0) { /* deprecated */
+ } else if (strcmp(pref_name, PRS_GUI_GEOMETRY_MAIN_HEIGHT) == 0) { /* deprecated */
} else if (strcmp(pref_name, PRS_GUI_FILEOPEN_STYLE) == 0) {
prefs.gui_fileopen_style =
find_index_from_string_array(value, gui_fileopen_style_text,
@@ -1590,10 +1590,7 @@ set_pref(gchar *pref_name, gchar *value)
if (prefs.gui_fileopen_dir != NULL)
g_free(prefs.gui_fileopen_dir);
prefs.gui_fileopen_dir = g_strdup(value);
- } else if (strcmp(pref_name, PRS_GUI_FILEOPEN_REMEMBERED_DIR) == 0) {
- if (prefs.gui_fileopen_remembered_dir != NULL)
- g_free(prefs.gui_fileopen_remembered_dir);
- prefs.gui_fileopen_remembered_dir = g_strdup(value);
+ } else if (strcmp(pref_name, PRS_GUI_FILEOPEN_REMEMBERED_DIR) == 0) { /* deprecated */
/* handle the capture options */
} else if (strcmp(pref_name, PRS_CAP_DEVICE) == 0) {
@@ -2160,6 +2157,11 @@ write_prefs(char **pf_path_return)
fprintf(pf, PRS_GUI_GEOMETRY_SAVE_SIZE ": %s\n",
prefs.gui_geometry_save_size == TRUE ? "TRUE" : "FALSE");
+ fprintf(pf, "\n# Save window maximized state at exit (GKT2 only)?\n");
+ fprintf(pf, "# TRUE or FALSE (case-insensitive).\n");
+ fprintf(pf, PRS_GUI_GEOMETRY_SAVE_MAXIMIZED ": %s\n",
+ prefs.gui_geometry_save_maximized == TRUE ? "TRUE" : "FALSE");
+
fprintf(pf, "\n# Where to start the File Open dialog box.\n");
fprintf(pf, "# One of: LAST_OPENED, SPECIFIED\n");
fprintf(pf, PRS_GUI_FILEOPEN_STYLE ": %s\n",
@@ -2174,21 +2176,6 @@ write_prefs(char **pf_path_return)
prefs.gui_fileopen_dir);
}
- if (prefs.gui_fileopen_remembered_dir != NULL) {
- fprintf(pf, "\n# Last directory navigated to in File Open dialog.\n");
- fprintf(pf, PRS_GUI_FILEOPEN_REMEMBERED_DIR ": %s\n",
- prefs.gui_fileopen_remembered_dir);
- }
-
- fprintf(pf, "\n# Main window geometry.\n");
- fprintf(pf, "# Decimal integers.\n");
- fprintf(pf, PRS_GUI_GEOMETRY_MAIN_X ": %d\n", prefs.gui_geometry_main_x);
- fprintf(pf, PRS_GUI_GEOMETRY_MAIN_Y ": %d\n", prefs.gui_geometry_main_y);
- fprintf(pf, PRS_GUI_GEOMETRY_MAIN_WIDTH ": %d\n",
- prefs.gui_geometry_main_width);
- fprintf(pf, PRS_GUI_GEOMETRY_MAIN_HEIGHT ": %d\n",
- prefs.gui_geometry_main_height);
-
fprintf(pf, "\n####### Name Resolution ########\n");
fprintf(pf, "\n# Resolve addresses to names?\n");
@@ -2280,7 +2267,6 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_hex_dump_highlight_style = src->gui_hex_dump_highlight_style;
dest->gui_toolbar_main_style = src->gui_toolbar_main_style;
dest->gui_fileopen_dir = g_strdup(src->gui_fileopen_dir);
- dest->gui_fileopen_remembered_dir = g_strdup(src->gui_fileopen_remembered_dir);
dest->gui_fileopen_style = src->gui_fileopen_style;
dest->gui_font_name1 = g_strdup(src->gui_font_name1);
dest->gui_font_name2 = g_strdup(src->gui_font_name2);
@@ -2288,10 +2274,7 @@ copy_prefs(e_prefs *dest, e_prefs *src)
dest->gui_marked_bg = src->gui_marked_bg;
dest->gui_geometry_save_position = src->gui_geometry_save_position;
dest->gui_geometry_save_size = src->gui_geometry_save_size;
- dest->gui_geometry_main_x = src->gui_geometry_main_x;
- dest->gui_geometry_main_y = src->gui_geometry_main_y;
- dest->gui_geometry_main_width = src->gui_geometry_main_width;
- dest->gui_geometry_main_height = src->gui_geometry_main_height;
+ dest->gui_geometry_save_maximized = src->gui_geometry_save_maximized;
/* values for the capture dialog box */
dest->capture_device = g_strdup(src->capture_device);
dest->capture_devices_descr = g_strdup(src->capture_devices_descr);
@@ -2329,10 +2312,6 @@ free_prefs(e_prefs *pr)
g_free(pr->gui_fileopen_dir);
pr->gui_fileopen_dir = NULL;
}
- if (pr->gui_fileopen_remembered_dir != NULL) {
- g_free(pr->gui_fileopen_remembered_dir);
- pr->gui_fileopen_remembered_dir = NULL;
- }
if (pr->capture_device != NULL) {
g_free(pr->capture_device);
pr->capture_device = NULL;
diff --git a/prefs.h b/prefs.h
index d573949d1d..70111028da 100644
--- a/prefs.h
+++ b/prefs.h
@@ -1,7 +1,7 @@
/* prefs.h
* Definitions for preference handling routines
*
- * $Id: prefs.h,v 1.55 2004/01/20 18:47:22 ulfl Exp $
+ * $Id: prefs.h,v 1.56 2004/02/01 20:28:10 ulfl Exp $
*
* Ethereal - Network traffic analyzer
* By Gerald Combs <gerald@ethereal.com>
@@ -88,14 +88,10 @@ typedef struct _e_prefs {
color_t gui_marked_bg;
gboolean gui_geometry_save_position;
gboolean gui_geometry_save_size;
- gint gui_geometry_main_x;
- gint gui_geometry_main_y;
- gint gui_geometry_main_width;
- gint gui_geometry_main_height;
+ gboolean gui_geometry_save_maximized;
guint gui_fileopen_style;
guint gui_recent_files_count_max;
gchar *gui_fileopen_dir;
- gchar *gui_fileopen_remembered_dir;
guint32 name_resolve;
gint name_resolve_concurrency;
gchar *capture_device;