Maxinal size of text string using in adl file, which can be processed by MEDM was 256 characters. Now it is 4096. This makes an available to use long macro substitution strings as DESY/KRYK does.
All string information in adl file like PV name, macro substitution, label text were saved in MEDM in static size char arrays (MAX_TOKEN_LENGTH=256, ), the memory was allocated even when string was empty. That is way, just increasing of the constant MAX_TOKEN_LENGTH made MEDM very fat. To solve this problem an using of static size array was reprogramed for an using dynamicly allocated memory.
New resource became available in the Composite element: Element name. It is used to access Composite elements in adl file. This feature is used by DynSymbol implementation.

The DynSymbol's icon on the Object Palette.
The element type has name DynSymbol. It belongs to the group of monitor elements. The aim of this element type is to provide adl displays with elements changing its graphic representation depend on the value of PV.
The DynSymbol element has two levels, which specify resulting graphic representation of the element on the adl display. First level deals with the background color changable following some of the Color Rules. Second one deals with a group of graphic objects painted on the adl display.
To use DynSymbol element in adl display, it has to be created and its resources have to be customised. Main resource of DynSymbol is Graphic Rule. On the Resource Palette it is presented in for of menu. During initialisation, MEDM reads ASCII file with graphic rules and constructs internal list of all available graphical symbols. The graphical symbol is a named Composite element, which groups one or more adl display elements inside. Let's take a look into Graphic Rules file format:
;
;
;
graphicRule ElectricKeys#1 ; graphic rules for hall 1
0 0 /applic/graphic/GR/ElectricFigures1.adl State0 abc=10,def=20
1 1 /applic/graphic/GR/ElectricFigures2.adl State1 abc=11,def=20
2 2 /applic/graphic/GR/ElectricFigures1.adl State2 abc=10,def=22
3 3 /applic/graphic/GR/ElectricFigures1.adl State2 x=12,y=23
graphicRule PumpKeys#1
0. 0.1 /applic/graphic/GR/PumpFigures12.adl Open1 s=12,d23,g90
0.1 1. /applic/graphic/GR/PumpFigures2.adl Open2
1. 10. /applic/graphic/GR/PumpFigures23.adl Close
MEDM_GRAPHIC_RULE, which (if defined) has to keep the path to the file. If the environment is not set, MEDM will tries to read GraphicRules from current directory.

The DynSymbol's Resource Palette.
The aim of this feature is to alleviate the construction of displays, which consist of a number of already existed adl displays with the unique set of macro substitution. It is implemented in form of GUI embeded in MEDM. This tool helps user to build Medm FacePlate (.mfp) files, which keep information about location faceplates on the display. In execute mode, by request of user, MEDM will load such file and will construct display as it would be original adl file. After switching to edit mode, MEDM will delete such display from the screen, as the display would be a related display.
The above picture displays layout of the areas on the faceplate display. The display consists of the title string, the work, and the notes string areas. The strings drawing in the title and the notes are one line texts. The work area keeps a group of faceplate. Each faceplate has resources: location, adl file name, and macro surstitution.
There are six faceplates on the picture. They are named from A till F. Each of them has its own location on the display.

Main File menu has additional item Load faceplate.... Having been activated, this button will pop up file selection dialog, where user can select .mfp file to be load.

Faceplate tool can be invoked either directly from menu Tools:Faceplate... or by Ctrl+F accelerator.

The sample of the using Faceplate dialog.

The frame keeps general resources for the display.


This frame keeps all faceplates defined within display. Each faceplate has toggle button assotiated with it. Having been activated the button displays all resorces of the faceplate in the frame and sets faceplate as current facelate, so the button apply changes will work with this faceplate.

Faceplate location can be defined either as one cell from the grid 8x2 or by x, y, width, abd height in units(in pixel or fraction base) specified in Group Attributes frame. The button unselect cell unselects cell from the grid and makes text entries for the position and the size sensitive for typping in.

The frame keeps macro substitution name=value pairs. Faceplate tool automaticaly distinguishes macro names from adl file, when such is defined.

Selecting adl file for the faceplate. The button browse activates file selection dialog with the directory defined in EPICS_DISPLAY_PATH system environtment.
![]()
These three buttons manipulate with contents of Faceplate frame. add new faceplate adds new faceplate to the group with current set of resources(location, adl file, macro). apply changes save current set of resources into current faceplate(selected one). delete faceplate deletes faceplate out from the group.

New button was added into adl file selection dialog. This makes the dialog to change working directory of the dialog to the directory defined in the EPICS_DISPLAY_PATH environtment.