Docs: Remove a bunch of GTK+ references.

Change-Id: Icab98813d0b81a7337562e9857429d4bb98dc44c
Reviewed-on: https://code.wireshark.org/review/26817
Petri-Dish: Gerald Combs <gerald@wireshark.org>
Tested-by: Petri Dish Buildbot
Reviewed-by: Gerald Combs <gerald@wireshark.org>
This commit is contained in:
Gerald Combs 2018-04-09 12:11:26 +08:00
parent 8b93e6d6a2
commit 974a15bf74
13 changed files with 79 additions and 269 deletions

View File

@ -1,10 +1,10 @@
This document is an attempt, to bring some light to the things done, when
packet capturing is performed. There might be things missing, and others
maybe wrong :-( The following will concentrate a bit on the win32 gtk
port of wireshark.
This document is an attempt, to bring some light to the things done, when
packet capturing is performed. There might be things missing, and others
maybe wrong :-( The following will concentrate a bit on the Windows
port of Wireshark.
XXX: when ongoing file reorganization will be completed, the following
XXX: when ongoing file reorganization will be completed, the following
two lists maybe won't be needed any longer!
libpcap related source files:
@ -36,11 +36,11 @@ conditions.h
Capture driver
--------------
Wireshark doesn't have direct access to the capture hardware. Instead of this,
Wireshark doesn't have direct access to the capture hardware. Instead of this,
it uses the Libpcap/Winpcap library to capture data from network cards.
On Win32, in capture-wpcap.c the function ws_module_open("wpcap.dll") is called
to load the wpcap.dll. This dll includes all functions needed for
On Win32, in capture-wpcap.c the function ws_module_open("wpcap.dll") is called
to load the wpcap.dll. This dll includes all functions needed for
packet capturing.
@ -53,8 +53,8 @@ There are some kinds of targets to put the capture data into:
-user specified "single" capture file
-user specified "ringbuffer" capture file
Which kind of file is used depends on the user settings. In principle there
is no difference in handling these files, so if not otherwise notified,
Which kind of file is used depends on the user settings. In principle there
is no difference in handling these files, so if not otherwise notified,
it will be called the capture file.
The capture file is stored, using the wiretap library.
@ -62,70 +62,70 @@ The capture file is stored, using the wiretap library.
Overview
--------
Capturing is done using a two task model: the currently running (parent)
process will spawn a child process to do the real capture work, namely
controlling libpcap. This two task model is used because it's necessary
Capturing is done using a two task model: the currently running (parent)
process will spawn a child process to do the real capture work, namely
controlling libpcap. This two task model is used because it's necessary
to split the capturing process (which should avoid packet drop) from the parent
process which might need significant time to display the data.
When a capture is started, the parent builds a "command line" and creates a
new child process with it. A pipe from the child to the parent is created
which is used to transfer control messages.
When a capture is started, the parent builds a "command line" and creates a
new child process with it. A pipe from the child to the parent is created
which is used to transfer control messages.
The child will init libpcap and send the parent a "new capture file is used"
control message through the pipe.
The child cyclically takes the packet data from libpcap and saves it to disk.
From time to time it will send the parent a "new packets" control message.
The child cyclically takes the packet data from libpcap and saves it to disk.
From time to time it will send the parent a "new packets" control message.
If the parent process receives this "new packets" message and the option
"Update list of packets in real time" is used, it will read the packet data
If the parent process receives this "new packets" message and the option
"Update list of packets in real time" is used, it will read the packet data
from the file, dissect and display it.
If the user wants to stop the capture, this can be done in two ways: by
menu/toolbar of the parent process or the Stop button of the child processes
If the user wants to stop the capture, this can be done in two ways: by
menu/toolbar of the parent process or the Stop button of the child processes
dialog box (which obviously cannot be used it this dialog is hidden).
The Stop button will stop the capture itself, close the control pipe and then
The Stop button will stop the capture itself, close the control pipe and then
closes itself. The parent will detect this and stop its part of the capture.
If the menu/toolbar is used, the parent will send a break signal to the child
If the menu/toolbar is used, the parent will send a break signal to the child
which will lead to the same sequence as described above.
Win32 only: as the windows implementation of signals simply doesn't work,
another pipe from the parent to the child is used to send a "close capture"
Win32 only: as the windows implementation of signals simply doesn't work,
another pipe from the parent to the child is used to send a "close capture"
message instead of a signal.
Start capture
-------------
A capture is started, by specifying to start the capture at the command line,
trigger the OK button in the "Capture Options" dialog box and some more. The
capture start is actually done by calling the capture_start() function in
A capture is started, by specifying to start the capture at the command line,
trigger the OK button in the "Capture Options" dialog box and some more. The
capture start is actually done by calling the capture_start() function in
capture.c.
Capture child (Loop)
--------------------
The capture child will open the target capture file, prepare pcap things,
init stop conditions, init the capture statistic dialog (if not hidden) and
init stop conditions, init the capture statistic dialog (if not hidden) and
start a loop which is running until the flag ld.go is FALSE.
Inside this loop,
Inside this loop,
-gtk main things are updated
-Qt main things are updated
-pcap_dispatch(capture_pcap_cb) is called
-the capture stop conditions are checked (ld.go is set to FALSE to finish)
-update the capture statistic dialog (if not hidden)
While this loop is running, the pcap_dispatch() will call capture_pcap_cb()
for every packet captured. Inside this, the packet data is converted into
wtap (wiretap) format and saved to file. Beside saving, it is trying to
do some basic dissecting (for the statistic window), by calling the
While this loop is running, the pcap_dispatch() will call capture_pcap_cb()
for every packet captured. Inside this, the packet data is converted into
wtap (wiretap) format and saved to file. Beside saving, it is trying to
do some basic dissecting (for the statistic window), by calling the
appropriate capture_xxx function.
When the user triggered a capture stop or one of the capture stop conditions
When the user triggered a capture stop or one of the capture stop conditions
matched, the ld.go flag is set to FALSE, and the loop will stop shortly after.

View File

@ -367,7 +367,7 @@ in the proto_tree, then we jump to instruction 3.
00002 ANY_EQ reg#0 == reg#1
This checks to see if any of the fields in register 0
This checks to see if any of the fields in register 0
(which has the pre-loaded constant value of 127.0.0.1) are equal
to any of the fields in register 1 (which are all of the ip.addr
fields in the proto tree). The resulting value in the
@ -550,8 +550,8 @@ Go to wireshark/ and run make. One thing to do is make dftest and see
if you can construct valid display filters with your new operator. Or
you may want to move directly to the generation of Wireshark.
Look also at wireshark/gtk/dfilter_expr_dlg.c and edit the display filter
expression generator.
Also look at ui/qt/display_filter_expression_dialog.cpp and the display
filter expression generator.
How to add a new test to dfilter-test.py
========================================

View File

@ -348,10 +348,6 @@ The menu entries themselves are generated with the following code structure:
ext_menubar_add_entry(os_menu, "Test Entry B",
NULL, menu_cb, <user_data>);
This will not work with the GTK version on macOS; the GTK interface is
currently not supported on this platform. The Qt interface on macOS
provides the menu.
For a more detailed information, please refer to plugin_if.h
6.2 Implement interactions with the main interface

View File

@ -5,7 +5,7 @@ internals are required.
As examples on how to use the tap system see the implementation of
tap-rpcstat.c (tshark version)
gtk/rpc_stat.c (gtk-wireshark version)
ui/qt/rpc_service_response_time_dialog.cpp (wireshark version)
If all you need is to keep some counters, there's the stats_tree API,
which offers a simple way to make a GUI and tshark tap-listener; see
@ -151,7 +151,7 @@ void (*draw)(void *tapdata)
This callback is used when Wireshark wants your application to redraw its
output. It will usually not be called unless your application has received
new data through the (*packet) callback.
On some ports of Wireshark (gtk2) (*draw) will be called asynchronously
On some ports of Wireshark (Qt) (*draw) will be called asynchronously
from a separate thread up to once every 2-3 seconds.
On other ports it might only be called once when the capture is finished
or the file has been [re]read completely.

View File

@ -1522,10 +1522,9 @@ Below the drawing area and the scrollbar are the controls. On the
bottom left there will be five similar sets of controls to control each
individual graph such as "Display:<button>" which button will toggle
that individual graph on/off. If <button> is ticked, the graph will be
displayed. "Color:<color>" which is just a button to show which color
will be used to draw that graph (color is only available in Gtk2
version) and finally "Filter:<filter-text>" which can be used to specify
a display filter for that particular graph.
displayed. "Color:<color>" which is just a button to show which color
will be used to draw that graph. Finally "Filter:<filter-text>" which
can be used to specify a display filter for that particular graph.
If filter-text is empty then all packets will be used to calculate the
quantity for that graph. If filter-text is specified only those packets
@ -2848,16 +2847,6 @@ If the global F<colorfilters> file exists, it is used only if the personal
F<colorfilters> file does not exist; global and personal color filters are
not merged.
=item GTK rc files
The F<gtkrc> files contain system-wide and personal GTK theme settings.
The global F<gtkrc> file uses the same directory as the
global preferences file.
The personal F<gtkrc> file uses the same directory as the personal
preferences file.
=item Plugins
See above in the description of the About:Plugins page.

View File

@ -16,11 +16,11 @@ Wireshark consists of the following major parts:
* Capture - using the libpcap/winpcap library, in _/wiretap_
* User interface - using the Qt or $$GTK+$$ and associated libraries
* User interface - using Qt and associated libraries
* Utilities - miscellaneous helper code
* Help - using an external web browser and GTK text output
* Help - using an external web browser and text output
[[ChCodeStyle]]
@ -33,10 +33,10 @@ section of the file _doc/README.developer_.
=== The GLib library
Glib is used as a basic platform abstraction library. It doesn't provide
GLib is used as a basic platform abstraction library. It doesn't provide
any direct GUI functionality.
To quote the Glib Reference Manual:
To quote the GLib Reference Manual:
____
GLib provides the core application building blocks for libraries and
applications written in C. It provides the core object system used in GNOME, the

View File

@ -475,7 +475,7 @@ When reporting problems with Wireshark, it is helpful if you supply the
following information:
. The version number of Wireshark and the dependent libraries linked with
it, e.g. Qt, GTK+, etc. You can obtain this with the command
it, e.g. Qt, GLib, etc. You can obtain this with the command
`wireshark -v`.
. Information about the platform you run Wireshark on.

View File

@ -55,19 +55,10 @@ Most of the Win32 binary libraries you will find on the web are in this
format. You will recognize MSVC libraries by the .lib/.dll file extension.
[[ChLibsFormatWin32Cygwin]]
==== Win32: cygwin gcc
Cygwin provides most of the required libraries (with file extension .a or .lib)
for Wireshark suitable for cygwins gcc compiler.
[[ChLibsSetup]]
=== Win32: Automated library download
=== Win32: Automated Library Download
The required libraries (apart from Qt) are automatically downloaded as part of
the CMake generation step, and subsequently as required when libraries are updated.
@ -106,44 +97,35 @@ It is available at https://www.qt.io/download-open-source/#section-2[].
==== Win32 MSVC
Qt5 must be installed manually, from the Qt installers page
https://www.qt.io/download-open-source/#section-2[], using the version of Qt
Qt5 must be installed manually from the Qt installers page
https://www.qt.io/download-open-source/#section-2[] using the version of Qt
appropriate for your compiler. Note that separate installations (into different directories) of Qt
are required for 32 bit and 64 bit builds. The environment variable QT5_BASE_DIR should be
set as appropriate for your environment and should point to the Qt directory that contains the
bin directory, e.g. C:\Qt\Qt5.6.2\5.6\msvc2013
bin directory, e.g. _C:\Qt\5.9.5\msvc2017_64_.
[[ChLibsGtk]]
[[ChLibsGLib]]
=== GTK+ / GLib / GDK / Pango / ATK / GNU gettext / GNU libiconv
=== GLib And Supporting Libraries
The Glib library is used as a basic platform abstraction library, its
not related to graphical user interface (GUI) things. For a detailed
description about GLib, see <<ChCodeGLib>>.
The GLib library is used as a basic platform abstraction library and can
be used in both CLI and GUI applications. For a detailed description
about GLib see <<ChCodeGLib>>.
The GTK and its dependent libraries are used to build the older, deprecated, Wireshark GUI.
For a detailed description of the GTK libraries, see <<ChUIGTK>>.
GLib depends on GNU libiconv, GNU gettext, and other libraries. You will
typically not come into contact with these while doing Wireshark
development. Wireshark's build system check for and require both GLib
and its dependencies.
All other libraries are dependent on the two libraries mentioned above,
you will typically not come in touch with these while doing Wireshark
development.
As the requirements for the GLib/GTK libraries have increased in the past,
the required additional libraries depend on the GLib/GTK versions you have.
The 2.x versions require all mentioned libs.
[[ChLibsUnixGTK]]
[[ChLibsUnixGLib]]
==== Unix
The GLib/GTK+ libraries are available for many unix-like platforms and
Cygwin.
The GLib library is available for most Linux distributions and UNIX
flavors. If it isn't already installed and isn't available as a package
for your platform, you can get it at http://www.gtk.org/download.html[].
If these libraries aren't already installed and also aren't available as a
package for your platform, you can get them at
http://www.gtk.org/download.html[].
[[ChLibsWin32GTK]]
[[ChLibsWin32GLib]]
==== Win32 MSVC

View File

@ -451,21 +451,15 @@ be informative when things don't work as expected.
[[ChSrcRunFirstTimeWin32]]
==== Win32 native
==== Win32 Native
During the build all relevant program files are collected in a
subdirectory `run\RelWithDebInfo`. You can run the program from there by
launching the Wireshark.exe executable.
The older GTK based version is also available in the same subdirectory.
You can run the program from there by launching the wireshark-gtk.exe
executable.
[[ChSrcDebug]]
=== Debug your generated Wireshark
=== Debug Your Generated Wireshark
[[ChSrcUnixDebug]]

View File

@ -16,10 +16,6 @@ development team:
* Wireshark, Qt based
* Wireshark, GTK{plus} 2.x based
* Wireshark, GTK{plus} 3.x based
* TShark, console based
There are other Wireshark frontends which are not developed nor maintained by
@ -55,10 +51,10 @@ well on Windows, macOS, and Linux. See <<ChUIGUIDocs>> for details.
Additionally, try to keep the following in mind:
*Workflow*. Excessive navigation and gratuitous dialogs should be
avoided or reduced. For example, the two GTK+ flow graph dialogs have
been combined into one in Qt. Many alert dialogs have been replaced with
status bar messages. Statistics dialogs are displayed immediately
instead of requiring that options be specified.
avoided or reduced. For example, compared to the legacy UI many alert
dialogs have been replaced with status bar messages. Statistics dialogs
are displayed immediately instead of requiring that options be
specified.
*Discoverability and feedback*. Most users don't like to read
documentation and instead prefer to learn an application as they use it.
@ -81,7 +77,7 @@ To edit and build Wireshark using Qt Cretor, open the top-level
_CMakeLists.txt_ within Qt Creator. It should ask you to choose a build
location. Do so. It should then ask you to run CMake. Fill in any
desired build arguments (e.g. "-D CMAKE_BUILD_TYPE=Debug" or "-D
ENABLE_GTK3=OFF") and click the ``Run CMake'' button. When that
ENABLE_CCACHE=ON") and click the ``Run CMake'' button. When that
completes select ``Build → Open Build and Run Kit Selector...'' and make
sure _wireshark_ is selected.
@ -257,106 +253,6 @@ _ui/qt/proto_tree.cpp_ for an example of this.
http://www.kdab.com/kdab-products/gammaray/[GammaRay] lets you inspect
the internals of a running Qt application similar to $$Spy++$$ on Windows.
[[ChUIGTK]]
=== The GTK library
.We have switched to Qt
[NOTE]
====
Wiresharks default interface uses Qt. If you would like to add a new
interface feature you should use it and not GTK{plus}.
The documentation below is primarily historical.
====
Wireshark was initially based on the GTK{plus} toolkit. See
http://www.gtk.org[] for details. GTK{plus} is designed to hide the
details of the underlying GUI in a platform independent way. As GTK is
intended to be a multiplatform tool, there are some drawbacks, as the
result is a somewhat "non native" look and feel.
GTK{plus} is available for many different platforms including, but not limited to:
Unix/Linux, macOS and Win32. Its the foundation of the famous GNOME desktop,
so the future development of GTK should be certain. GTK is implemented in plain
C (as is Wireshark itself), and available under the LGPL (Lesser General Public
License), making it free to used by commercial and noncommercial applications.
There are other similar toolkits like wxWidgets which could also be used for
Wireshark. Theres no "one and only" reason for or against any of these
toolkits. However, the decision towards GTK was made a long time ago :-)
There are two major GTK versions available:
[[ChUIGTK2x]]
==== GTK Version 2.x
GTK 2.x depends on the following libraries:
* GObject (Object library. Basis for GTK and others)
* GLib (A general-purpose utility library, not specific to graphical user
interfaces. GLib provides many useful data types, macros, type conversions,
string utilities, file utilities, a main loop abstraction, and so on.)
* Pango (Pango is a library for internationalized text handling. It centers
around the PangoLayout object, representing a paragraph of text. Pango
provides the engine for GtkTextView, GtkLabel, GtkEntry, and other widgets
that display text.)
* ATK (ATK is the Accessibility Toolkit. It provides a set of generic interfaces
allowing accessibility technologies to interact with a graphical user
interface. For example, a screen reader uses ATK to discover the text in an
interface and read it to blind users. GTK+ widgets have built-in support for
accessibility using the ATK framework.)
* GdkPixbuf (This is a small library which allows you to create GdkPixbuf
("pixel buffer") objects from image data or image files. Use a
GdkPixbuf in combination with GtkImage to display images.)
* GDK (GDK is the abstraction layer that allows GTK+ to support multiple
windowing systems. GDK provides drawing and window system facilities on X11,
Windows, and the Linux framebuffer device.)
[[ChUIGTK3x]]
==== GTK Version 3.x
Wireshark (as of version 1.10) has been ported to use the GTK3 library.
GTK 3.x depends on the following libraries:
(See GTK 2.x)
[[ChUIGTKCompat]]
==== Compatibility GTK versions
The GTK library itself defines some values which makes it easy to distinguish
between the versions, e.g. `GTK_MAJOR_VERSION` and `GTK_MINOR_VERSION` will be
set to the GTK version at compile time inside the gtkversion.h header.
[[ChUIGTKWeb]]
==== GTK resources on the web
You can find several resources about GTK.
First of all, have a look at http://www.gtk.org[]. This
will be the first place to look at. If you want to develop GTK related
things for Wireshark, the most important place might be the GTK API
documentation at http://library.gnome.org/devel/gtk/stable/[].
Several mailing lists are available about GTK development, see
http://mail.gnome.org/mailman/listinfo[], the gtk-app-devel-list may be your
friend.
As its often done wrong: You should post a mail to *help* the developers
there instead of only complaining. Posting such a thing like "I don't like
your dialog, it looks ugly" won't be of much help. You might think about
what you dislike and describe why you dislike it and provide a suggestion
for a better way.
[[ChUIGUIDocs]]
=== Human Interface Reference Documents
@ -392,46 +288,4 @@ http://msdn.microsoft.com/en-us/library/Aa511258.aspx[]
* User Experience Stack Exchange:
https://ux.stackexchange.com/[]
[[ChUIGTKDialogs]]
=== Adding/Extending Dialogs
This is usually the main area for contributing new user interface features.
XXX: add the various functions from gtk/dlg_utils.h
[[ChUIGTKWidgetNamings]]
=== Widget naming
It seems to be common sense to name the widgets with some
descriptive trailing characters, like:
* xy_lb = gtk_label_new();
* xy_cb = gtk_checkbox_new();
* XXX: add more examples
However, this schema isn't used at all places inside the code.
[[ChUIGTKPitfalls]]
=== Common GTK programming pitfalls
There are some common pitfalls in GTK programming.
[[ChUIGTKShowAll]]
==== Usage of gtk_widget_show() / gtk_widget_show_all()
When a GTK widget is created it will be hidden by default. In order to
show it, a call to gtk_widget_show() has to be done.
It isn't necessary to do this for each and every widget created. A call
to gtk_widget_show_all() on the parent of all the widgets in question
(e.g. a dialog window) can be done, so all of its child widgets will
be shown too.
// End of WSDG Chapter User Interface

View File

@ -24,7 +24,7 @@ image::wsdg_graphics/ws-function-blocks.png[{pdf-scaledwidth}]
The function blocks in more detail:
GUI:: Handling of all user input/output (all windows, dialogs and such).
Source code can be found in the _ui/qt_ and _ui/gtk_ directory.
Source code can be found in the _ui/qt_ directory.
Core:: Main "glue code" that holds the other blocks together. Source
code can be found in the root directory.

View File

@ -83,8 +83,6 @@ On the _Choose Components_ page of the installer you can select from the followi
* *TShark* - A command-line network protocol analyzer. If you havent tried it
you should.
* *Wireshark 1 Legacy* - The old (GTK+) user interface in case you need it.
* *Plugins &amp; Extensions* - Extras for the Wireshark and TShark dissection engines
- *Dissector Plugins* - Plugins with some extended dissections.
@ -325,10 +323,7 @@ distributions follow the same system):
* The `wireshark` package contains the core Wireshark libraries and command-line
tools.
* The `wireshark-qt` package contains the Qt-based GUI.
* The `wireshark-gtk` (formerly `wireshark-gnome`) package contains the legacy
Gtk+ based GUI.
* The `wireshark` or `wireshark-qt` package contains the Qt-based GUI.
Many distributions use `yum` or a similar package management tool to make
installation of software (including its dependencies) easier. If your
@ -383,7 +378,7 @@ Use the following command to install Wireshark under Gentoo Linux with all of
the extra features:
----
$ USE="c-ares gtk ipv6 portaudio snmp ssl kerberos threads selinux" emerge wireshark
$ USE="c-ares ipv6 portaudio snmp ssl kerberos threads selinux" emerge wireshark
----
==== Installing from packages under FreeBSD

View File

@ -769,7 +769,7 @@ you save them to disk. If you have a capture running, this list is automatically
updated every few seconds with any new objects seen. The saved objects can then
be opened with the proper viewer or executed in the case of executables (if it
is for the same platform you are running Wireshark on) without any further work
on your part. This feature is not available when using GTK2 versions below 2.4.
on your part.
.The “Export Objects” dialog box
image::wsug_graphics/ws-export-objects.png[{screenshot-attrs}]