Displaying Helix Server forms

Helix Server client commands that collect a large amount of input from the user (such as p4 branch, p4 change, p4 label) use ASCII forms. To interact with your end user, your client application program can display Helix Server ASCII forms such as changelists, client specification, and so on. To display a form and collect user input, call ClientUser::Edit(), which puts the form into a temporary file and invokes the text editor that is configured for the client machine.

All form-related commands accept the batch mode flags -o and -i:

These flags allow changes to the form to occur between separate invocations of the p4 application, rather than during a single invocation. (For details about the -o and -i global options, see the P4 Command Reference.)

All form-related commands can return a form descriptor. Your application can use this descriptor to parse forms into constituent variables and to format them from their constituent variables. The specstring protocol variable enables this support in the server. Form descriptors are best used with the tag protocol variable, which causes the form data to appear using ClientUser::OutputStat() rather than OutputInfo().

Select the protocol with ClientApi::SetProtocol() as follows:

client.SetProtocol( "specstring", "" );
client.SetProtocol( "tag", "" );

Your application can override the OutputStat() method in a class derived from ClientUser. The Helix C/C++ API calls this derived method, passing it the output from the command.