Commit Graph

29 Commits

Author SHA1 Message Date
Guy Harris 52df3c73ec The text entry box that a filter construction dialog manipulates is
always attached to the dialog as the E_FILT_FILTER_TE_KEY data, but only
sometimes attached as the E_FILT_TE_KEY data.

Get rid of E_FILT_TE_KEY completely, as it's redundant, and use only
E_FILT_FILTER_TE_KEY; this keeps us from crashing as a result of trying
to manipulate the widget referred to by E_FILT_TE_KEY if E_FILT_TE_KEY
hasn't been set to refer to any widget.

svn path=/trunk/; revision=3067
2001-02-23 05:54:27 +00:00
Guy Harris 81f6ce8b71 Make the "activate" signal on the text entry boxes in the filter editing
dialog activate the entire dialog box.

svn path=/trunk/; revision=3062
2001-02-20 20:25:08 +00:00
Guy Harris 5999b61fdd Use "Close", rather than "Cancel", in the filter dialog box; clicking
that button doesn't undo edits you've made to the list of filters it's
displaying.

Don't show an "OK" button if the dialog isn't attached to a text entry
box, as the "OK" button means "enter the current filter into the
attached text entry box, and close the dialog", and if there *is* no
attached text entry box, "OK" doesn't do what you might expect (it's
equivalent to "Close").

svn path=/trunk/; revision=2952
2001-01-28 21:30:53 +00:00
Guy Harris ceef26d2c1 Have separate capture and display filter lists; some filter dialog boxes
use the capture filter lists, and others use the display filter list, as
appropriate.

Have separate menu items for editing the capture and display filter
lists.

Have separate "~/.ethereal/cfilters" and "~/.ethereal/dfilters" files
for the two lists; if either of those files isn't found, we try
"~/.ethereal/filters", which means that you will start out with two
identical lists holding all your filters - if certain filters belong
only in one list, you'll have to delete them by hand from the other
list.

Do I/O error checking when reading and writing filter lists; when
writing a filter list, write it to a new file, and then rename the new
file on top of the old file, so that you don't lose your old filter list
if, for example, you run out of disk space or disk quota.

svn path=/trunk/; revision=2948
2001-01-28 09:13:10 +00:00
Guy Harris 3c596f5d71 Call "get_filter_list()" when Ethereal starts up.
Have it free up any list of filters we already have before reading in
new filters.

svn path=/trunk/; revision=2947
2001-01-28 04:52:29 +00:00
Guy Harris c8639c08ee Pull the stuff to read and write the list of filter expressions up into
a file in the top-level directory.

svn path=/trunk/; revision=2946
2001-01-28 04:43:26 +00:00
Guy Harris 23e7ce209a Arrange that if the filter list is edited in one dialog box, the filter
lists in all filter dialog boxes are updated to reflect reality.  (The
poor man's model-view.)

svn path=/trunk/; revision=2924
2001-01-21 03:30:24 +00:00
Guy Harris 1ddbe05e58 Give various filter constructing/editing dialog boxes titles to reflect
what they were popped up for.

svn path=/trunk/; revision=2923
2001-01-21 02:27:24 +00:00
Guy Harris d6dd1fea0d In the process of destroying a filter editing dialog box, we get a
selection change event on the list of filters.  Unfortunately, this can
happen after some other widgets in that dialog box have already been
destroyed - including some of the widgets that such a selection change
event can change.

This sometimes happened when "filter_prefs_delete()" hadn't been called,
so the mechanism we had been using, with a Boolean datum attached to the
dialog box, set in "filter_prefs_delete()" before we actually destroy
the dialog box, wasn't sufficient to keep that from happening.

Attach to the top-level window data items containing pointers to the
widgets changed when a filter is selected from the list, give each of
those widgets their own destroy callbacks, clear the pointer attached to
the top-level widget when the widget is destroyed, and don't do anything
to the widget when a filter is selected from the list if the pointer for
that widget is null, as that means the widget's been destroyed and we
*can't* do anything to it.

Not all filter editing dialogs created on behalf of a "Filter:" button
next to a text entry box should, when you click "OK", activate the text
entry box; if the text entry box is part of a dialog box with multiple
widgets, the user might not have filled in all of the items in that
dialog box, so you shouldn't activate it for them.  Add a mechanism by
which, when creating a filter editing dialog box, you can specify
whether the "OK" button should just fill in the text entry box or should
fill it in and also activate it.

svn path=/trunk/; revision=2922
2001-01-21 01:45:07 +00:00
Guy Harris 88d157ef96 Add a dialog box for constructing expressions that test a field in the
display tree, based on Jeff Foster's dialog box for selecting fields.

Make the dialog box for browsing filters into a dialog box for
constructing filters; make the "Apply" button and the "OK" button apply
the filter in the text entry box in the dialog, not the currently
selected filter (selecting a filter puts it in that text entry box, but
the user may edit it afterwards, or may use the aforementioned dialog
box to construct a filter not in the list).

Get rid of extra declarations of "m_r_font" and "m_b_font" in
"proto_draw.c"; they're declared in "gtk/gtkglobals.h", which it includes.

svn path=/trunk/; revision=2805
2001-01-02 01:32:21 +00:00
Gilbert Ramirez e4199779ca This patch adds two things:
- Pressing Esc key will cause the filter selection dialog to
          "Cancel"

        - Double-clicking on a list item in filter selection dialog is
          equivalent to single-click followed by "OK"

Santeri Paavolainen <santtu@ssh.com>

svn path=/trunk/; revision=2533
2000-10-25 16:06:50 +00:00
Gilbert Ramirez 9d9850f209 More EPAN-related code movements. Get rid of usage of #include "globals.h"
and #include "util.h" from epan code. Move get_home_dir() into epan/filesystem.c
as it's used by plugins.c.

svn path=/trunk/; revision=2461
2000-09-28 03:16:29 +00:00
Guy Harris 56697db466 Bleah. What was I thinking? "dlg_window_new()" should take the title
for the dialog window as an argument (as various dialog creators in GTK+
do), not oblige every caller of it to cut-and-paste a
"gtk_window_set_title()" call after it.

svn path=/trunk/; revision=2345
2000-08-23 06:56:31 +00:00
Laurent Deniel 6a480953a9 Miscellaneous code cleaning
- add <stdarg.h> or <varargs.h> in snprintf.h
  and remove those inclusions in the other #ifdef NEED_SNPRINTF_H codes

- remove the check of multiple inclusions in source (.c)  code
  (there is a bit loss of _cpp_ performance, but I prefer the gain of
   code reading and maintenance; and nowadays, disk caches and VM are
   correctly optimized ;-).

- protect all (well almost) header files against multiple inclusions

- add header (i.e. GPL license) in some include files

- reorganize a bit the way header files are included:

  First:
  #include <system_include_files>
  #include <external_package_include_files (e.g. gtk, glib etc.)>
  Then
  #include "ethereal_include_files"

  with the correct HAVE_XXX or NEED_XXX protections.

- add some HAVE_XXX checks before including some system header files

- add the same HAVE_XXX in wiretap as in ethereal

Please forgive me, if I break something (I've only compiled and regression
tested on Linux).

svn path=/trunk/; revision=2254
2000-08-11 13:37:21 +00:00
Guy Harris 7b4e1a3742 Cast an argument to "isspace()" to "guchar" so that if it has the 8th
bit set it won't get sign-extended; this squelches a GCC complaint, and
may keep weird things from happening if there're non-ASCII ISO 8859/n
characters in a filter file.

svn path=/trunk/; revision=2222
2000-08-07 22:35:14 +00:00
Guy Harris ee78255b00 Arrange that filter dialog boxes have an "Apply" button only if one can
apply the filter, i.e. only if the dialog box is attached to the filter
text entry in the main window.

svn path=/trunk/; revision=2212
2000-08-05 07:02:28 +00:00
Richard Sharpe a194f2b07a Added changes so Edit->Filters...->Apply works as I think
it should.

Also added the two files I need to generate an sgml list of fields
that the UserGuide etc needs.

svn path=/trunk/; revision=2174
2000-07-29 03:20:51 +00:00
Guy Harris 105d0f4f70 Add a "dlg_window_new()" routine, which creates a GTK_WINDOW_DIALOG
window and makes it transient for the top-level window; the
transient-for at least provides a hint to X window managers to

	minimize the dialog if the main window is minimized;

	keep the dialog on top of the main window in the Z order for
	windows;

	perhaps (if there are any window managers that actually *do*
	this) even put it atop the main window in the X-Y plane (KWM
	doesn't and I seem to remember that the Exceed X server for
	Windows doesn't).

It's generally considered the Right Thing To Do for dialog boxes.

Use that routine to create dialog boxes, rather than doing it directly
in the code for that dialog box.

svn path=/trunk/; revision=2112
2000-07-05 02:45:42 +00:00
Guy Harris c6e50f9bc9 Split "filter_dialog_cb()" into "filter_dialog_cb()", which pops up a
"global" dialog box when "Edit:Filters" is selected, so that the list of
filters can be edited, and "filter_browse_cb()", which pops up a dialog
box associated with a "Filter:" button and a text entry widget attached
to that button, so that a filter can be selected or saved (although it
also supports the same editing that the "global" dialog box does).

Have "filter_dialog_cb()" connect the window in which the "Filter:"
button lives and the filter dialog box, so that:

	if the window in which the "Filter:" button lives goes away, so
	does the filter dialog box (as it no longer has a text widget
	into which it can stuff the selected filter);

	if the "Filter:" button is clicked when there's already a filter
	dialog box open, we just reactivate that existing dialog box
	rather than popping up a new one.

Also keep a pointer to the "global" filter dialog box, so that we also
arrange that there's only one of them (by reactivating the existing on
if "Edit:Filters" is selected when there's already a "global" filter
dialog box open).

Keep around pointers to the dialog boxes that contain the "Filter:"
buttons, so that we can arrange that there be only one of them (that was
a side-effect of an earlier attempt at fixing the problems described
above, but it's still useful for keeping multiple competing dialog boxes
from being open - there's more of that to be done).

Make the pointer to the "Open Capture File" dialog box widget static to
"file_dlg.c" - nobody outside of "file_dlg.c cares about it.

svn path=/trunk/; revision=1774
2000-04-01 12:03:42 +00:00
Guy Harris 3f6f2f4eaa Ralf Schneider's change to boost the maximum size of a line in the
"filters" file (we also make it a #define so you only have to change it
in one place).

svn path=/trunk/; revision=1755
2000-03-28 06:20:08 +00:00
Guy Harris 2cad7bc346 Make the routines internal to the filter-editing dialog box static.
Declare the one routine exported by "gtk/filter_prefs.c" in
"gtk/filter_prefs.h" rather than in "gtk/main.h".  Declare
"E_FILT_TE_PTR_KEY" there, as well, rather than in "prefs_dlg.h", as the
filter-editing dialog box is no longer a preference tab.

Don't include "prefs_dlg.h" unless the stuff declared therein is of
interest.

Fix "gtk/find_dlg.c" to fire up the filter-editing dialog box, not the
no-longer-extant preferences tab for filters, if the "Filter:" button is
clicked.

svn path=/trunk/; revision=1619
2000-02-12 06:46:54 +00:00
Gilbert Ramirez ea8136cd8e Remove instances of getenv("HOME") and provide a get_home_dir() function
which provides a default value if "HOME" is not set.

svn path=/trunk/; revision=1579
2000-01-29 16:41:28 +00:00
Guy Harris 19af67b894 Change the comments to reflect the fact that this is now no longer a tab
of the "Edit:Preferences" dialog box.

svn path=/trunk/; revision=1279
1999-12-10 07:20:57 +00:00
Guy Harris 7537c5cc73 Jerry Talkington's patch to remove the filter stuff from
"Edit:Preferences" and put it directly under "Edit:Filters", and to add
an "Apply" button to it, which makes the currently selected filter the
current filter and applies it to the current capture.

svn path=/trunk/; revision=1275
1999-12-10 06:28:24 +00:00
Gerald Combs 2cbdb02208 Fixed a bug found by Derek W Poon <dpoon@uclink.berkeley.edu>, where deleted
filter list items were improperly removed from the filter list.

svn path=/trunk/; revision=690
1999-09-19 14:27:44 +00:00
Guy Harris 046c060f98 We need to catch a "window delete" event for the preferences dialog box
- that event happens if, say, you nuke the dialog box from a window
manager - and call "delete" routines for each of the preferences tabs,
so that, for preferences tabs that include list widgets, we can set a
flag on the preferences tab widget telling the selection callback for
the list widget that the buttons it would normally set the sensitivity
of, based on whether any row in the list is selected or not, have Joined
the Choir Invisible, and therefore that we shouldn't change their
sensitivity because GTK+ will whine at us if we do, just as is the case
if we press the "OK" or "Cancel" button (which also cause the window to
go away).

Can we just do this in the "window delete" handler?  I.e., does that get
called if we explicitly destroy the widget?  Or should we catch a
"destroy" event instead?

(There must be a better way to do this....)

svn path=/trunk/; revision=647
1999-09-10 06:53:32 +00:00
Guy Harris 7e1ce9e122 Make stuff used only in "filter_prefs.c" static to it.
svn path=/trunk/; revision=646
1999-09-10 06:01:02 +00:00
Guy Harris d32b5f829f Put RCS IDs (and a copyright notice and GPL notice) in several files,
and fix up the introductory comment on some other files.

svn path=/trunk/; revision=640
1999-09-09 04:25:49 +00:00
Gilbert Ramirez fee5f126ff I forgot to include this file move in my last commit.
svn path=/trunk/; revision=637
1999-09-09 03:35:32 +00:00