Conditional Layer Utility
© copyright 2018 Matthew Keane - matkeane.com
=============================================

The utility is designed to help with the management of Conditional Layers.

Licence
-------

This software is distributed under the terms of the ISC licence: http://opensource.org/licenses/ISC
Please see the licence terms in the separate 'LICENCE.txt' file.

System Requirements
-------------------
Display Builder is a Java application and the application download includes the required 
Java Runtime Environment (JRE).

Minimum display resolution: 1280x720 pixels.
Minimum memory required: 512Mb.

Installation
------------

Simply extract the zip archive to a suitable place on your hard-drive and launch the application.
The application itself is not signed by a developer - under MacOS, you will need to authorise 
the app in 'System Preferences - Security and Privacy' before launching it the first time.

Instructions
------------

Network Commands:
    
CLIENT_CONNECT:
Args: 1 (IP address). client_connect 123.456.789.001
Aliases: clientconnect, connect

CLIENT_DISCONNECT
Args: 1 (IP address). client_disconnect 123.456.789.001
Aliases: clientdisconnect, disconnect

ENABLE_LAYER
Args: 1 (layer Number). enable_layer 1
Aliases: enablelayer, layer_enable, layerenable

DISABLE_LAYER
Args: 1 (layer Number). disable_layer 1
Aliases: disablelayer, layer_disable, layerdisable

TOGGLE_LAYER
Args: 1 (layer Number). toggle_layer 1
Aliases: togglelayer, layer_toggle, layertoggle

SET_LAYER
Args: 2 (layer Number, layer status Boolean [true/false]). set_layer 1 true
Args: 2 (layer Number, layer status Integer [1/0]). set_layer 29 0
Aliases: setlayer, layer_set

ENABLE_ALL
Args: 0. enable_all
Aliases: enableall

DISABLE_ALL
Args: 0. disable_all
Aliases: disableall

TAKE
Args: 0. take

RECALL_PRESET
Args: 1 (preset Number). recall_preset 1
Aliases: recallpreset, preset_recall, presetrecall, preset

UI Controls:

Two grids of 30 buttons control the status of the layers. Depending on the operating mode
of the app, one or more grids may be active.

A pull-down menu in the centre panel allows the operating mode to be selected.
- In 'Preview' mode layers are manipulated on the Preview grid, through the UI or by network
commands. Individual layers can be switched on the Program grid, but Presets and other UI 
controls will affect the Preview grid only. When a 'Take' is performed, the values from 
'Preview' are assigned to 'Program', and network commands sent to any connected clients.

- In 'Live' mode, any changes are carried out immediately on the Program grid, and network
commands sent at the same time.

- In 'Network' mode, UI controls are disabled and the layers can only be controlled by
network commands.

Below the active layer grid, there are the following UI elements:
- A pulldown menu to recall a Preset.
- The 'Add Preset' button, which adds a new preset with the current status of the grid.
- 'All Off' disables all layers. 
- 'All On' enables all layers.

The 'Take' button assigns the layer settings from Preview to Program.

The 'Copy Program' button copies the current status of the Program grid to Preview, without
performing a Take.

Other options are grouped under tabs. Click on a tab header, or use the 'tab' key to
cycle through the tabs.

- Main tab:

View the application version number and the text of the software licence.
Follow the link to the matkeane.com website for more detailed information.

Enter a project name and click on the 'Save' button to save the current project as a file, 
or click on the 'Load' button to load a previously saved project file.

- Network tab:

Toggle the status of the UDP and OSC servers in the app, and set the port numbers on which
the app should listen for network commands.

Toggle the broadcast status of the app. If this is set to 'Offline', no network commands 
are sent by the app.

Manage client connections by adding an IP address, a communications port and, optionally,
a name for the client. The app will send network messages to all clients listed here, when
broadcasting is activated.

The 'Display' and 'Production' buttons will set, or update, a client to use the standard
ports for Watchout Display or Production machines. 

- Layer and Groups tab:

A name can be assigned to a layers, using the pulldown menu and text field
(N.B. Layer switching using names is not yet implemented).

Add and modify Layer Groups.

To edit the layers assigned to a group, click on the 'Edit Layers' button, and click on
layers in the preview grid to (un)assign layers. Layers already assigned to another group
cannot be selected.

- Presets tab:

Select a Preset to manage:
Assign an optional name (N.B. Preset recall using names is not yet implemented).
Update the grid values from the current grid (Preview or Program, depending on the current 
operating mode).
Recall the Preset value to the current grid.
Delete the Preset.

- Settings tab:

A/B Auto Switching: Automatically swap Preview/Program values when performing a take.
Keyboard Shortcuts: Enable keyboard shortcuts for some UI buttons:
	SPACEBAR: Perform Take.
Force All Layers Off: Override layer condition preferences in Watchout - when true, 
	sends 'enableLayerCond 1073741824' instead of 'enableLayerCond 0'.


Version History
---------------
v1.1.0 - 08/10/18
- Initial Release.

Other Information
-----------------
Built with Processing: http://processing.org/

'Watchout' is a trademark of Dataton AB, Sweden: http://www.dataton.com/
