Exchanger

From wiki.amiga.org
Jump to navigation Jump to search

Introduction

Exchanger is a program manager for AmigaOS 4. It allows basic external control of running applications and commodities, including:

  • showing or hiding the program GUI;
  • shutting the program down;
  • displaying the Workbench information requester for the particular program;
  • enabling and disabling commodities.

The name may suggest that Exchanger is a replacement for Commodore's original Exchange tool distributed as part of the Amiga operating system. This is partly true; however, the scope of usability is wider. In addition, Exchanger supports modern AmigaOS features such as jumping between screens, object-oriented menus with images, or program window snapshotting.

Minimum requirements

  • AmigaOS 4.1 Update 6 or newer
  • Commodities Library version 53.6 or newer

Exchanger cannot possibly run on earlier systems because of certain Commodities Library features that were not implemented before version 53.6. Program window snapshotting and menu images will only be available when running Exchanger under AmigaOS 4.1 Final Edition or newer.

The program will use the InfoWindow Class for its About window if the class is installed in the system.

Program control in AmigaOS 4.x

As of AmigaOS release 4, there are two types of program that register with the operating system:

  • commodities (auxiliary programs and services, managed via the Commodities Library);
  • registered applications (full-fledged programs, managed via the Application Library).

Both types supply the OS with some information about themselves, and provide a certain level of external control. For example, both commodities and registered applications can hide or show their user interface (GUI) in response to a command sent via the respective library. Similarly, a commodity or an application can shut itself down when a corresponding command is received.

Exchanger aims at becoming a common control point for both program types.

User interface

Exchanger features a simple and easy-to-use graphic user interface (GUI) contained within a single program window. The GUI consists of four main parts:

  • the program list, located on the left-hand side of the program window; it lists all programs currently registered in the OS;
  • the info display on the right, which shows information about the program;
  • the graphic toolbar, located below the info display;
  • the menu.

Info display

As commodities and applications register with slightly different information about themselves, the info display is tabbed in order to cater for both program types. The first tab is for applications, the other for commodities. Should a program register as a commodity and, at the same time, as an application (the OS technically allows this, although such implementation is rarely useful), the program name will only be shown once in the program list, and the user can switch between the tabs in the info display to see the respective information.

Toolbar

The toolbar consists of five graphic buttons, from left to right:

"Show interface"
If the program allows external control of its GUI, this button will send a command telling the respective program to bring up its GUI.
"Hide interface"
If the program allows external control of its GUI, this button will send a command telling the respective program to hide (commodities) or iconify (applications) its GUI.
"Enable/Disable"
If the program is a commodity, this button will toggle its activation state. A disabled (inactive) commodity cannot receive input events from the Commodities Network. This button will be unavailable (ghosted) if the program is an application.
"WB Info"
If Exchanger is able to locate the selected program's icon, this button will display the Workbench information requester for the given program.
"Shutdown"
Tells the selected program to quit.

If a button is not available, it usually means that the particular function is not supported by the selected program. For example, commodities that have no GUI will have the Show/Hide interface buttons ghosted.

Configuration

Exchanger is configured via icon tooltypes or command line parameters, depending on whether the program is started from Workbench or Shell. Some of its features can also be configured during runtime from the Settings menu.

Tooltype CLI parameter Description
DONOTWAIT N/A If you run Exchanger from WBStartup, make sure this tooltype is in place.
CX_PRIORITY CX_PRIORITY The priority of Exchanger's commodity broker (default: 0). No need to change this.
CX_POPUP CX_POPUP Determines whether Exchanger should display its GUI on program startup (default: YES). If you run Exchanger from WBStartup, you'll probably want to change this to NO (the program will run hidden) and bring up the Exchanger window via the CX_POPKEY shortcut when needed.
CX_POPKEY CX_POPKEY The keyboard shortcut to bring Exchanger back from hidden or iconified state (default: ctrl-alt-x).
SHOWSELF SHOWSELF Determines whether Exchanger should display itself in the program list (default: NO).
SHOWHINTS SHOWHINTS Determines whether Exchanger should display help hints for the toolbar buttons (default: YES).
GUIIMAGES GUIIMAGES Specifies the DOS path to the images used by the program (default: PROGDIR:Images).

Usability note

The way the program reacts to the control commands sent by Exchanger absolutely depends on how the respective program is implemented. If a program allows external control (which should normally be the case with both commodities and registered applications), it is the responsibility of the programmer to implement it in a sensible, logical and safe way.

  • If a program does not provide the information it should (for example, no description for it is shown in Exchanger's info display),
  • if a program does not react to the interface control buttons (Show/Hide),
  • if a commodity cannot be enabled or disabled,
  • if a program does not quit (or worse, crashes) upon pressing the Shutdown button,

please contact the author of the respective program. Exchanger is really just a control board that - on user request - tells other programs what to do.