5  The Graphical User Interface

5.1 The iceWing render chain
5.2 The GUI commands
5.2.1 iceWing main window
5.2.2 Preferences window
5.2.3 Commands in category “GrabImage1”
5.2.4 The “Plugin Info” window
5.2.5 Category “Images” and image windows
5.2.6 Panning/Zooming the image windows
5.3 The GUI widgets

5.1  The iceWing render chain

Why should you know this details? Well, you will need to understand the basics of the underlying render mechanism to fully understand how the GUI works and what the many GUI-commands are used for! In iceWing rendering data to image windows is done in several steps. Figure 5.1 shows an overview of the complete rendering process. By using the different GUI commands you can manipulate and inspect the data at different positions of the render chain.


pict

Figure 5.1: The render chain of iceWing.


If a plugin wants to display any data, it calls one of the different prev_render_xxx() functions (see section 9.3.2 for an in deep description of these functions). An example is the plugin “grab”, which displays the loaded or grabbed image in the window “Input data”.

The first thing these render functions do is to check the “Remember Data” flag, which is associated to every image window. If the flag is set, the complete data which is passed to the render functions is copied for later use. This allows to re-render the complete image without the help of the plugin. If any of the remaining parameter of the render chain are changed, e.g. the displayed part of the data or the zoom level, the data can be immediately redisplayed. This means, that you can instantly see the effect on your current image. Otherwise, if the flag “Remember Data” is not set, the effect of the changed parameter gets only visible after the next call of the plugin to the prev_render_xxx() functions. For the “grab” plugin for example this means that you see the effect not until the next image is loaded or grabbed.

If an image should be displayed, the data of the complete image can now be saved with the help of the “Save Original” GUI function. Attention: This saves only the first image, not any text, which may be rendered on the image, nor any lines, circles or anything else besides the first image.

The next step in the render chain is the rendering of the data into an internal buffer. During this the data can be modified. E.g. you can add a drop shadow to all displayed text via the context menu of the image windows. Moreover the displayed region and the size/zoom factor can be changed interactively with the mouse. Thus the coordinate system for the data as specified by the plugin (the “world coordinates”) and the coordinate system for the rendered image as displayed on the screen (the “screen coordinates”) are not identical.

The last step in the render chain is the display of the buffer on the screen. During this some color changes, e.g. a histogram equalization, can be applied to the buffer. Besides displaying the result on screen the result can be saved to a file with the help of the “Save” GUI function.

5.2  The GUI commands

5.2.1  iceWing main window

The main window is divided into three main parts: In the middle area you see “Categories” and to its right the page content of the selected category. Most plugins will create at least one entry (called “page”) into the categories-list. It allows you to check/change that plugins parameters. Please see the respective plugin’s documentation for any plugin specific information. In this documentation only the somewhat special categories “Images” and “GrabImage1” will be described in more detail (see sections 5.2.5 and 5.2.3).

Besides these categories you see a menu at the top and some global buttons at the bottom of the iceWing main window:

Load/Save entries in the file menu Loads/saves all made settings from all widgets inside iceWing from/into the file “${HOME}/.icewing/values”, if you selected the “default” variant of the menu entries. The Load/Save entries allow to select the file name. But be aware: this is different to the command “load/save session”, which stores the window size and position of all open windows, not the widget settings.

These functions are as well available as buttons at the bottom of the main window. Here “Def” denotes the “default” versions.

Edit/Preferences This menu entry opens the preference window, where you can configure different settings for the iceWing main program. See section 5.2.2 for a complete description.

The button with the wrench icon opens as well the preference window.

Edit/Enable DACS Output If iceWing outputs any data via DACS, e.g. if you have used the command line parameter “-oi”, toggling this menu entry disables/enables this outputting.

View/Plugin Info Opens the “Plugin Info” window, which shows different information about all loaded and installed plugins. This window is described in more detail in the section 5.2.4.

Help/iceWing Manual Opens the file icewing.pdf, the iceWing documentation you are reading currently, in a PDF viewer.

Help/About iceWing Opens a window showing some information about iceWing, e.g. the version number and the copyright.

Detach/attach symbol (D/A) Clicking this symbol at the top right corner will detach this page into a separate window. Clicking again will put it back into the iceWing main window.

You will use this feature, if you repeatedly wish to flip quickly from one page to another. Or you change the slider on plugin page 1 and want to see the effects on plugin page 2. If you e.g. work on a plugin sheet and wish to single step (Wait Time = -1) through the next images and watch the plugins doing, you surely wish to detach the “GrabImage1” page.

5.2.2  Preferences window

The wrench icon and the corresponding menu entry open the preference window, where you can configure different settings for the iceWing main program. “Image Saving” specifies settings for the save functions in the context menu of image windows. In detail these are

Image format
Specifies the file format used for saving images. If “By Extension” is selected, the format gets selected based on the extension of the file name. The supported formats are:
PNM/ICE
Portable Anymap, the format of the Netpbm package, is an uncompressed image format, which supports bit depths from 8 to 32 bits and 1 or 3 channels. A special variant of this format, ICE – the iceWing format, additionally supports images with any number of channels and float or double data types.
PNG
Portable Network Graphics, a compressed lossless format which supports bit depths of 8 and 16 bit and up to 4 channels. In the case of 2 or 4 channels the last channel is saved as the alpha channel.
JPEG
The well known lossy image format supporting 8 bit images and 1 or 3 channels. Strictly speaking an image of type JFIF, the JPEG File Interchange Format, is created.
AVI YUV444
Uncompressed raw movie format which uses a planar YVU444 color space, i.e. 8 bit images with 1 or 3 channels are saved completely lossless.
AVI YUV420
Uncompressed raw movie format which uses a planar YUV420 color space, i.e. the color planes of images are down scaled by a factor of two in horizontal and vertical direction. 1 or 3 channels with 8 bits are supported.
AVI MJPEG
A movie format where the single frames are compressed in the same way as the images of the JPEG format, i.e. the compression is lossy. Supported are 8 bit images with 1 or 3 channels.
AVI FFV1
Lossless compressed movie format which uses a planar YUV444 color space, i.e. 8 bit images with 1 or 3 channels are saved completely lossless.
AVI MPEG4
A lossy movie format, which uses inter frame information to enhance the compression ratio, i.e. the single frames are not compressed independent of one another. Supported are 8 bit images with 1 or 3 channels.
SVG
Scalable Vector Graphics, a vector format where geometrical primitives such as points, lines, and polygons are preserved.

Saving in a vector format, i.e. the “SVG” format, requires that “Remember Data” in the context of the image who’s data should be saved is activated. In this case the complete image must be rerendered, which needs the saved data. See section 5.1 for more details about “Remember Data”. Additionally, some features of the iceWing render functions are not supported by SVG. So the exported images may not be completely identical to the displayed ones.

Image name
The file name, under which the images will be saved. You can embed different information in the name by using the following modifiers:
%d : The consecutive image saving counter, starting at 0.

%t : The milliseconds part of the time the image gets saved.

%T: The seconds part of the time the image gets saved.

%b : The name of the current user.

%h : The system’s host name.

%w: The name of the window, from which the image gets saved.

Any of the above modifiers can be changed by printf() style format specifiers. E.g. “image%03d.ppm” would result in “image000.ppm”, “image001.ppm” and so on as file names.

AVI framerate
If AVI movie files get saved, this value will be entered in the file for the frame rate. That is this value will not really change the saved data, only this one setting in the header of the saved AVI file is changed.
Quality
The quality and thus the compression value used when saving jpeg images or AVI movies encoded as MJPEG or MPEG-4. 100 means a small compression and thus a good quality. For MPEG-4 files this sets the bits per pixel and second from 0.05 to 0.5.
Show SaveMessage
If activated a dialog is shown after every image saving which confirms the successful saving.
Save full window
If activated and “Save” or “Save Seq” is used as the saving command, an image of the size of the complete image window will be saved. If deactivated a black border around the image will not be saved.
Reset FilenameCounter
By using %d in the file name, a consecutive image saving counter is embedded in the image file name. This button resets this value to zero.

“Other” has settings for the session handling and the GUI. In detail these are

Save As / Save / Clear
These buttons are similar to the menu entries in the context menu of the image windows. “Save As” saves the current session in a file and allows at the same time to change the current session file name, “Save” saves the current session in the current session file, and “Clear” physically deletes the current session file and thus clears this session. The default session file is “${HOME}/.icewing/session”.

A session file stores a list of windows and their configuration, their position, their size, and optionally their zoom and panning values. On the next start of iceWing a session file can be loaded, which then will restore the windows and the window configuration.

Auto-save at exit
If activated, at program exit the iceWing window configuration will be saved in the current session file.
Save pan/zoom values
If activated the current panning position and the current zoom value will be saved additionally in session files. Otherwise only the position and size of all open windows will be saved.
Use tree for
If set to “Categories”, the categories list will use a tree widget, i.e. categories like “Demo1 WidgetTest” will be shown in a tree like strukture. Otherwise a list widget will be used. If this widget is set to “Images”, the window list in the category “Images” will use a tree widget. If you change this setting, you must save the current settings (by using the “Save” or “Save Def” buttons in the main window) and restart iceWing.
Scrollbars in categorie pages
If activated, the iceWing main window and any detached pages can be resized to any height. If needed, a scrollbar is displayed in the different pages. If deactivated, the windows height can not be made smaller than what is needed for all widgets.
PDF viewer
In the help menu of the main iceWing window is an entry to show the PDF iceWing manual. Here you can select which program should be started to show the manual. A %f will be replaced with the manual file. If this entry is empty, an appropriate viewer from an internal list of known programs will be automatically selected.

5.2.3  Commands in category “GrabImage1”

The category “GrabImage1” has widgets, which specify settings for the plugin “grab”:

Interlace Different grabber camera systems have different methods of sending the video-stream. Here you can select what of the grabbed data should be used. “Both” selects the complete image, “Even” selects only the even field of an interlaced image. “Even + Aspect” grabs only the even field and afterwards halves the image in the horizontal direction to get square pixels again. “Down 2:1/Virtual 2:2” adjusts for grabbed halve field images by halving the image in the horizontal direction and afterwards telling other plugins that the image was downsampled in the vertical direction, too (see also command line parameter “-r”).

Attention: Only some grabbing drivers and additionally only some kernel camera drivers support the grabbing of half fields. So if you specified “-sg” for using a grabber and you set this to something different than “Both” it might well be that the expected does not happen. In this case half field grabbing is not supported with the used configuration of the grabber driver, its configuration and the selected downsampling factor.

Downsampling A ratio of 1 will grab and deliver the image 1:1. But if you e.g. set it to 3, then only every 3rd pixel in both horizontal and vertical direction of the full sized image will be delivered to other plugins - it will become scaled down by a factor of 3. There can be two queues, where the images are stored – one for the original size image and another queue for the downsampled images (see command line parameter “-c” and “-f”).

Grabbing driver options If iceWing was started with the option “-sg” to use a camera, the arguments to this option are shown here. You can change these arguments at runtime. Pressing enter will apply them when a new image is grabbed. The grabber will then be reinitialized with the new arguments. See section 4.2 for a description of all supported arguments.

File TimeStep Every image the plugin “grab” provides to other plugins is marked with a time stamp. E.g. if you use the grabber, the time stamp marks the time the image was grabbed. With this slider you can select the behavior if files from disk should be loaded.

-1 sets the time stamp to the time the image was loaded. Values above 0 specify an increase of the time stamp in ms. E.g. if set to 40 the first image gets a time stamp of 0ms, the second of 40ms, than 80ms …. If this value is set to 0, the frame rate of video files and the values scanned during processing %t and %T in file names specified with option “-sp” are used. See page 36 for further information about %t and %T.

Frame correct Wait Time If this button is not selected, iceWing waits exactly the time slice specified with the next slider before the next image gets acquired. If this button is selected, iceWing adapts this time slice. For example if the processing of the last image took 50ms and the ‘Wait Time’ slider is set to 200ms, iceWing will only wait 150ms.

Wait Time and positioning buttons Sets the delay (in milliseconds), until the next image shall be acquired from disk/grabber. If you set it to -1, iceWing waits until you manually change the image by pressing one of the positioning/acquiring buttons. This -1 works like a “pause-mode”.

Image Num If you work with a video stream on disk, which you have specified with the command line parameter “-sp”, this slider will appear. It shows the current position inside the video stream and allows to seek to an other position.

GrabImage1.Properties If iceWing was started with the option “-sg” to use a camera and the chosen grabber driver supports changing properties on the fly, a GUI in form of an own page in the categories list is created to change these properties interactively. See section 4.2 for a description of the grabber drivers. All drivers with a “propX” option support this.

One widget is shown for every property of the driver and allows to change this property. Additionally, the first widget “Rescan properties” allows to rescan the available properties and show there current value. This may be useful if you used the “Grabbing driver options” widget described above on page 71. When the camera operates in a partial automatic mode, for example auto gain, this can be as well useful to get the current values of all properties.

5.2.4  The “Plugin Info” window

The “Plugin Info” window, which can be opened with the menu entry “View/Plugin Info”, shows different information about plugins iceWing knows about and about the communication between them. Figure 5.2 shows all the different pages of this window.


pict pict pict pict pict


Figure 5.2: All pages of the window “Plugin Info”, which shows information about loaded plugins.


Inside a main loop iceWing calls the registered plugin instances repeatedly. The order in which the instances get called is defined by the plugins. For this and for the communication between plugins iceWing offers different functionality. Plugin instances can provide new data elements, they can observe the provision of data, and they can call functions of other plugin instances. Details about these communication possibilities as well as details about all known plugins is displayed on the different “Plugin Info” pages. The displayed information is not continously updated. By pressing “Refresh” the current internal state about the communication information is displayed immediately. “RefreshEnd” defers the display shortly before the end of the main loop, directly before any floating data with a reference count of zero gets deleted (see below). By pressing “RefreshEnd” you will get in most of cases information about all data, which was provided during the last main loop iteration.

Plugins
On the first page “Plugins” a list of all plugins iceWing knows about and all instances of these plugins is displayed. First all loaded plugins and all its instances are shown. The category “All installed plugins” is only shown if the file “${PREFIX}/share/iceWing/plugins.help” is available. This file contains information and descriptions about the installed plugins. The file is created by the shell script “icewing-docgen. See section 7.4 for more information about this script. Pressing the button “>” on the lower right side of the page displays additional information about the currently selected plugin or plugin instance. Displayed are the plugin name, for an instance the command line arguments for this instance, and the output of the plugin if it is called with the command line option “-h”.

The filter bar directly below the list allows to limit the displayed plugins. Only plugins who’s name or who’s help string contain a certain string are shown in the list. The search is case insensitive.

A double-click on one of the plugin instances (de)activates the instance. If an instance is deactivated the process() function of this plugin instance is not called anymore. This is similar in effect to the command line parameter “-d”. This function can be selected as well in the context menu of the list and via the button “Toggle enabled”. The button “Add instance” and the corresponding context menu entry create at the start of the next main loop run a new instance of the currently selected plugin. This is similar to specifying “-l pluginName” on the command line. The string in the “Args:” entry box specifies the command line arguments for the new instance.

Data
The “Data” page shows information about all data the plugins have created. In iceWing an identifier, a string, is always associated with all data. This identifier allows the plugins to access the data. In the first column the identifier and the instance name of the plugin, which has made the data available, is displayed. All data inside iceWing is reference counted and gets automatically deleted if the reference count drops to zero. If the data is marked as “floating” the deletion is deferred until the end of one main loop iteration. Data is marked as “New” as long as one main loop iteration is not finished since the data was provided by a plugin instance.
Observer
The “Observer” page shows information about plugin instances, which observe the provision of data. If new data with an identifier, which is observed, gets provided by any plugins the observer of this data are called with the new data as an argument. Thus the order in which instances get called is defined by the provision of data and by the observation of these data elements. There is one special data element. The data “start” is not provided by a plugin, but by iceWing at the start of every main loop run. Plugin instances can observe this data and thus get called at the start of the main loop. The “Observer” page shows the different registered observer and information about currently known data elements with a corresponding identifier. New data is available, if the data was provided during the current main loop iteration. Additionally the amount of available data elements with the observed identifier is displayed.
Functions
The “Functions” page shows information about all functions, which plugin instances have published. The function identifier and the plugin instance names, which have provided the function, are displayed.
Logging
The “Logging” page allows to get more detailed real time information about the communication between the plugins. By activating the “Display” toggle button calls to the different iceWing functions, which deal with the communication between plugins, are shown in the text widget above. For a description of the different functions please see section 9.2. The “Clear” button clears the text widget. Deactivating the toggle button stops the logging. Activating the “File” toggle button records this information in the file, whose name is given in the string widget next to the toggle button. The file is closed if the toggle button is deactivated.

5.2.5  Category “Images” and image windows

The category “Images” shows a list of all image windows that the plugins wish to display. Double-clicking an entry of the list opens or closes the window of that entry.

Every of these image windows iceWing or any plugin creates will have different standard menu entries in a context menu. You can access this menu by clicking with the right mouse button in an open image window. Depending on the things a plugin renders in the image, there might be additional plugin specific entries.

Here is a list of entries you will find in all or, partly, a lot of image windows:

File/Save Saves the actual visible window content, including all active rendering manipulations. In the preference window of iceWing you can specify different parameters for the saving process, e.g. the file name and the file format.

File/Save Original Saves the underlying original “world coordinate” image, without any active rendering manipulations, in the original color space (for example YUV). But if the downsample factor (page “other”) is >1, you will still save downsampled images. This downsampling happens inside the plugin “grab” before the original images are anyhow rendered in a image window or passed to further iceWing plugins. Moreover this function does not save any texts, lines, regions, or anything else besides images the plugin may display in the image. Only the first image is saved.

File/Save Seq Once activated, every new acquired image (the visible window content, including all active rendering manipulations) is saved continuously until deactivated. Normally, if the active image format is for single images, a series of image files gets stored. Otherwise, if one of the AVI file formats is selected, a single video-stream file is stored. You can change this format in the preferences window, see section 5.2.2 for further details.

Caution! If you have selected on of the AVI formats in the preference window, you must remember: To prevent corrupt AVI files, you must end this “Save Seq” by (de)selecting this command in the context menu again and continue with at least one new image to close the saved AVI file. Alternatively while recording you can close the whole image window or end iceWing with the “Quit” button, and iceWing sends the close file command itself. Changing the Image format in the preference window will do the same. If the file is not closed the AVI will miss some finalizing code and thus will be corrupt.

File/Save OrigSeq Same as “Save Seq”, but the original “world coordinate” images are used. For the data, which gets saved by this function the same as already stated under “Save Original” applies.

File/Save Session Saves the current iceWing window configuration under the currently active session name. On the next start of iceWing every currently open window will be remembered as it is. Without any special parameters the next time iceWing is launched, the default configuration-file in “${HOME}/.icewing/session” will be used to restore any windows. Alternatively, the command line parameter “-ses <session-file>” can be used to switch to non-default session files.

The Save/Clear Session menu entries are the same commands as the ones in the preferences-window.

File/Clear Session This physically deletes the current session file and thus clears the session. At the next launch the window layout of iceWing will look like the inbuilt default.

File/Close Window Closes the window.

View The View submenu contains different entries to zoom and pan inside the image windows. So these entries are alternatives to the middle mouse button and the scroll whell. See section 5.2.6 for more details. The menu is especially handy if the entries are called via hotkeys. Besides using predefined hotkeys, the hotkeys of all menu entries can be dynamically changed. If a menu entry has currently the focus of the mouse a new hotkey can be set by simply pressing the desired hotkey. All hotkeys are saved in the configuration file.

Info Window Opens a small window, which displays the coordinates and color in several color spaces of the pixel at the mouse position if the mouse is inside any image window. Additionally, if the mouse is over any rendered images, the “Original” tab shows information about the data at the mouse position as it was passed to the iceWing render functions. For example iceWing can display images containing float values, which are converted to 8 bit integer values during display. Possibly, these values are further changed by any special rendering filters or any drawings, which are shown above the image. These final 8 bit values are then displayed as the color values. In contrast, the “Original” tab shows the float values from the inital image.

The spin button allows to set the radius of the square area, from which the displayed color values are averaged. A radius of “0” uses only the pixel under the mouse cursor. The “Original” tab considers the zooming value. The “Display” tab ignores the zoom value.

Additionally, this window contains two toggle buttons for two special functions. If the “color picker” is pressed, the info window waits on a press with the left mouse button inside one of the image windows. The values at the time the button was pressed are then additionally displayed in the info window. Thus two positions can be easily compared. If “measure” is pressed, distances and angles in the image windows can be measured. If the left mouse button is pressed inside an image window and then moved to a second position, the distance of these two positions and the angle between a horizontal line and the marked line are displayed in the info window. Afterwards, to change the initially selected line, the end points of the marked line can be dragged around.

Remember Data (De-)activates the “Remember Data” mode, that was already discussed in detail in section 5.1.

Settings Opens a window, where you can change some further image window related options. As one point different options for the “Show Meta info” feature and the image rendering can be specified. Moreover, all plugins can add any widgets to this window. For a description of these options please refer to the special plugin documentation.
The meta info / image rendering related options are:

Histogram
“Show Meta info” displays histograms of all rendered images. Here you can influence these histograms. “Use lines” changes the visualization form of the histograms (filled or single lines). “Include min/max” changes the method used for scaling the histogram in the vertical axis. If activated, the biggest value of the histogram is used to scale the histogram. If deactivated, the first and the last histogram entries are not considered during determining the biggest value of the histogram. Useful, if a small object is located on an otherwise black or white image.
Planes which should be shown
Images can have any number of planes. Normally, plane 0 of input images is shown in image windows for gray images and the planes 0, 1, and 2 are shown in color based image windows. With this text entry the used planes can be changed. For example, by entering “4 0 1” plane 4 of the input image is used as the first displayed plane (the “red” plane for an RGB image), plane 0 as the second (“green” plane), and plane 1 for the third one (“blue” plane). By entering “2”, only the plane 2 is shown even in color based image windows.
scaleMin/Max
Images in iceWing can have any data type ranging from unsigned chars to doubles. For displaying these images must be converted to a range of 0 to 255. With these sliders you can influence the conversion process. With “scaleMin = -2” the image values are simply shifted in the range 0..255 without locking further at the image values, e.g. for unsigned short images 65535 is displayed with a value of 255. “scaleMin = -1” clamps the image values to a range of 0..255.

All other values for the sliders consider the minimal and maximal values of the to be displayed image. The Min slider specifies the amount, the minimal value is shifted towards the maximal value, in percent of the difference of the minimal value and the maximal value. The Max slider shifts the maximal value towards the minimal value. All pixels darker then the shifted minimal value are displayed as black, all pixels lighter then the maximum are displayed as white, and everything in between is stretched linearly.

Entries of the submenu Preview

Normal
Shows the image in the window with the original colors as they were specified during rendering.
CStretch
The color histogram of the image is stretched: The minimum (and maximum) of all used colors is set to 0 (255) and all colors are stretched linearly to the full range 0 - 255 again.
CStretch5
5%, beginning with the nearest to black (white) pixels are set to black (white). All other colors are stretched linearly.
CStretch10
Same as CStretch5, but with 10% of all pixels to black/white.
HistEQ
Equalize the histogram of the image.

Equalization is used to repair images that have too much contrast or are too light or dark. Equalization attempts to flatten the histogram of the image.

Random
This randomly shuffles the color map.

Colors of the original image, that look very similar, change to very distinguishable colors. This is very useful to e.g. verify some color-separation processes.

Show MetaInfo This menu entry appears only if images are displayed in the window. “Show MetaInfo” (de-)activates the display of some additional information of the original image as passed to the render functions, for example the color-space of the input image, the size of the image in pixels and the color histogram of the image.

Font This menu entry appears only if text may be displayed in the window. Selects the font and thus the size of any text, which get rendered inside the image window (for example the text shown if the meta info is activated).

Font Shadows This menu entry appears only if text may be displayed in the window. Shows the rendered text with shadowed fonts. Helps sometimes to make the text more visible.

5.2.6  Panning/Zooming the image windows

If a new image window is opened the rendered image is normally displayed in such a zoom level that it is always completely visible. By pressing the shift key and the middle mouse button inside the window you can zoom into the image, by pressing the ctrl key and the middle mouse button you can zoom out. Alt plus the middle mouse button resets to the initial fit to window displaying mode. If fit to window is not active you can hold the middle mouse button and move around inside the window to move the clipping frame for the “world coordinate” picture, i.e. to pan inside the image.

Attention:
If your window manager is already using one or more of that combinations for itself, then that signal can not reach iceWing! If you want to use the function, you have to change your window manager setting: Disable that mouse signal there, so it will no longer get caught by your window manager and can reach iceWing.

Besides using the middle mouse button for zooming and panning, there are two additional posibilities to reach these functions: by using the mouse wheel or the context menu. For panning the window vertical, again if fit to window is not active, you can use the mouse wheel. Panning horizontally can be done with the mouse wheel while pressing the shift key and zooming by using the mouse whell while the ctrl key is pressed. Additionally, the image context menu contains a submenu “View” with entries for all these functions.

5.3  The GUI widgets

(TODO: FULL list, or only short summary?) Widget “List” can have a context menu. And it can be reordered via drag’n drop...

In Goptions.h opts_xxx_create()