7  Programs of the default distribution

Besides the main iceWing program the iceWing package contains some additional tools and utilities. This chapter gives a brief overview over all these tools. Most of the tools are installed during the normal installation as described in chapter 2. One tool, the icewing-control program, is only build and installed during the main install process if the CMake build system is used. Otherwise it has to be installed separately.

7.1 icewing
7.2 icewing-config
7.3 icewing-control
7.4 icewing-docgen
7.5 icewing-plugingen

7.1  icewing

The icewing program is the main program of the iceWing package. This program was already described in detail in this documentation.

7.2  icewing-config

icewing-config is a shell script similar to e.g. gtk-config which makes compiling of own plugins easy. It generates compiler-flags, extracts system-paths, and more. “icewing-config --help” shows all available options of the script. In detail these are

–prefix
Prints the installation directory of the iceWing package to stdout.
–bindir
Prints the directory ${PREFIX}/bin, i.e the directory “bin” under the installation directory, to stdout.
–libs
Print the linker flags that are necessary to link an iceWing plugin to stdout. I.e. the output of this command should be used during linking of own plugins.
–cflags
Print the compiler flags that are necessary to compile an iceWing plugin to stdout. I.e. the output of this command should be used during compiling of own plugins.
–libdir
Prints the directory ${PREFIX}/lib/iceWing, i.e the directory “lib/iceWing” under the installation directory, to stdout. This is the directory where new plugins should be installed.
–datadir
Prints the directory ${PREFIX}/share/iceWing, i.e the directory “share/iceWing” under the installation directory, to stdout. This is the directory where plugins can store any data files. Additionally, iceWing itself stores some data files in this directory.
–pincludedir
Prints the directory ${PREFIX}/include/iwPlugins, i.e the directory “include/iwPlugins” under the installation directory, to stdout. This is the place where plugins can install new header files.
–home=HOME
If specified, use HOME instead of ˜/.icewing for the –libdir-home, –datadir-home, and –pincludedir-home options. This option must come before these three “-home” options to take effect. This option can be used to adapt the “-home” options to the ICEWING_PLUGIN_PATH environment variable.
–libdir-home
Prints the directory ˜/.icewing/plugins to stdout. This is an alternative directory to the one from –libdir where new plugins can be installed.
–datadir-home
Prints the directory ˜/.icewing/data to stdout. This is an alternative directory to the one from –datadir where plugins can store any data files.
–pincludedir-home
Prints the directory ˜/.icewing/include to stdout. This is an alternative directory to the one from –pincludedir where plugins can install new header files.
–version
Prints the version number of iceWing to stdout.

As an alternative to icewing-config a metadata file for pkg-config is installed as well. E.g. “pkg-config –cflags icewing” will print the necessary compiler flags for compiling an iceWing plugin. All the other information icewing-config provides can be as well retrieved with pkg-config. The only difference is that pkg-config does not support variable names with “-” in its names, so “_” is used instead.

7.3  icewing-control

icewing-control allows to remote control iceWing. The tool uses the capability of iceWing to save and load all its current status into a configuration file. Remote control works quite similar: The tool can send a string containing any lines of the iceWing configuration file to a running iceWing instance and can receive a string from iceWing containing the complete current configuration.

iceWing has to be started with the “-of” option or the remotectrl plugin has to be used. If the option “-of” is used, DACS communication is used and icewing-control must be started with the “-n” option. If the remotectrl plugin is used, native sockets based communication or XCF based communication can be used and icewing-control must be started with the corresponding “-p” or “-x” option to allow communication between iceWing and the icewing-control tool. See page 41 and section 6.6 for more details about the “-of” option and the remotectrl plugin.

icewing-control --help” shows all available options of the tool. In detail these are

-p [host:port]
Use the own internal Internet sockets based protocol for communication with the remotectrl plugin of a running iceWing instance. The argument gives the location where the remotectrl plugin is running. The default is “localhost:4208”.
-n [name]
Use DACS for communication with a running iceWing instance. The argument is the DACS name of the icewing program as specified with the iceWing “-n” option (see page 34). The default is “icewing”.
-x [xcf-server]
Use XCF for communication with the remotectrl plugin of a running iceWing instance. The argument is the XCF server name of the remotectrl plugin as specified with the remotectrl “-x” option (see section 6.6). The default is “xcf”.
-g
Call the “char[] getSettings(void)” function to get all current widget settings and print them to stdout. Exit icewing-control after all command line options have been processed.
-s config-setting
Call the “void control(char[])” function to set the specified widgets to the specified values and exit icewing-control after all command line options have been processed. An example would be “-s "GrabImage1.Wait Time = 94"” to set the “Wait Time” button on the “GrabImage1” page to 94.

If neither any “-g” nor any “-s” option is given, an interactive shell is started. The shell supports TAB completion for commands and its arguments. The available commands are

help
Show all available commands.
get
Get all iceWing settings and print them to stdout. This is identical to the “-g” option.
set
Set one widget in iceWing to a new value. For example the command “set GrabImage1.Wait Time = 94” sets the “Wait Time” button on the “GrabImage1” page to 94. This is identical to the “-s” option.
quit
Quit the icewing-control tool.

7.4  icewing-docgen

icewing-docgen is a shell script which collects help messages of all plugins which are installed under ${PREFIX}/lib/iceWing and all plugins which are integrated in iceWing. The script calls all these plugins with the option “-h” and stores the output in the files “Readme.txt” and “Readme.html” in the current directory. Additionally, it copies the file “Readme.txt” to “${PREFIX}/share/iceWing/plugins.help”. This file is used by iceWing to display additional information about plugins on the “Plugins” page in the “Plugin Info” window. See section 5.2.4 for information about this window. You should use this script every time after installing new plugins.

7.5  icewing-plugingen

icewing-plugingen is a plugin template generator. The script generates in the current directory a basic C or C++ plugin including a Makefile to compile it. The plugin is directly compiled for immediate testing. The plugin is kept short and simple, but shows already data observation, easy user interface generation, and rendering of data in a window.

icewing-plugingen --help” gives more information about its invocation. It is a shell script which expects up to three arguments:

  > icewing-plugingen [-c|-cxx|-cpp] plugin-name short-name

-c
If given, a new C-plugin of name “plugin-name” is generated in the current directory. Function and type names in the generated source start with “short-name”. This option is the default if none of the three is given.
-cxx
If given, a new C++-Plugin of name “plugin-name” deriving from the class Plugin is created in the current directory.
-cpp
This is a synonym for -cxx. See there for a description of the option.