Dialog structures: DoobriPrivate and DialogSpec
This page applies to Harlequin v13.1r0 and later; and to Harlequin MultiRIP but not Harlequin Core
The DoobriPrivate
and DialogSpec
definitions for Win32 plugins are given in psdevdlg.h
as follows:
typedef struct DoobriPrivate { int idc;
int idc2;
int idcLabel; int idcReserved;
} DoobriPrivate; typedef int DialogSpec;
For example, when the RIP needs to identify the device configuration dialog for a device the user selects in page setup's Configure Device dialog, it uses the D_GETDLGDEFN
selector, passing a PluginDialogDefn
structure with pdc
set to pdcPageSetup
.
The plugin can respond by setting dlgspec
with the dialog's identifier. (Recall from page 320 that these identifiers are manifest constants in a header file written by the dialog / resource editor which is included in the plugin build.)
Later, when the RIP asks for the identifiers for the individual components of the dialog in D_GETDOOBRIS
, each of the Doobri
structures in pdoobri
can have its DoobriPrivate
field dp
assigned from the identifiers given them by the dialog editor, and according to the types assigned by the plugin to the dc
field. It is up to the plugin to ensure that the type of the Doobri
agrees with the dialog elements assigned, and that the elements are appropriate for that type of dialog. The second output plugin example (OPEG2) illustrates this further.
At minimum, every dialog must contain OK and a Cancel buttons. These buttons do not appear in the Doobri
list, and so that the RIP can recognize them, they must always have the resource identifiers IDOK
and IDCANCEL
(defined in windows.h
) respectively.
Dialogs may have other arbitrary elements not listed as part of a Doobri
, for example descriptive strings, pictures, rules and so on, but interactive elements which do not form part of a Doobri
will not be able to affect the RIP or the plugin, and so would be confusing.