# BOY Changelog

## Version 3.1.0 - 1/6/2012

- Support view OPI in Web Browser, including mobile device! See WebOPI

- Support connections between widgets

- OPI editor is separated to a plugin `org.csstudio.opibuilder.editor`, which allows you to install BOY in your RCP without OPI editor.
- Allow embedding script text as part of an opi file
- Support Unicode in OPI, such as Chinese, Japanese...
- Add a new option `Detached` to `Open OPI in View` action so the OPI will be opened in a detached view directly
- Add an option "Hook all actions to mouse click event" to actions dialog
- Add a new widget `Image Boolean Indicator` for displaying on/off value by images
- Change the text input behavior with TextInput and Spinner widget, please read BOY manual for details
- Allow to write numeric array to PV from Text Input widget with format like `13 22 33 24`
- Add version check to OPI file. If it is opening an opi file created from newer version of BOY, a warning dialog will popup
- Allow customized widget hooking its own online help with BOY help system
- Keep border style in alarm status if the border style is one of the line styles, such as dash, dot, dash dot and so on. So now you are able to have a dash alarm border.
- Use border color for text color on Group Box Style border. This may affect the looking of some old OPIs which are using Group Box Style border.
- Solve the "floating" problem and improve the performance greatly with using native SWT widgets in BOY
- Allow minimum value higher than maximum value on scaled widgets, such as XYGraph, bar graph, gauge
- Add `Rotation Angle` property to text update and text input widget, so its text can be rotated to arbitrary angle
- Add two system predefined macros
  - $(DID): The unique ID of a display. It can help to create an unique local PV name dedicated to a display
  - $(DNAME): The name of a display
- Add GUIUtil in ScriptUtil
- Add a methods to ScriptUtil: executeEclipseCommand(id)
- Add a method to widget: widget.getMacroValue(macroName)
- Add example and document about how to call custom Java code from BOY script
- Support using macros in file path property
- Add a new option `Open in new Window` to `Open OPI` action
- An OPI view will automatically resize to the OPI size when it is detached
- Add "Auto" time format for XYGraph Axis, so its time format will be automatically calculated from its range
- Add "Boolean Label Position" property to boolean widgets such as boolean switch, image boolean button
- Show disabled graphic figures such as polyline, rectangle in gray
- Allow applying the Display properties value from schema file
- Fix a bug that the context help link for some widgets do not work
- Fix a bug related to the `crop` property of Image widget
- Add Login Dialog example

## Version 1.2.0 - 6/9/2011

- Support Python Script
- Allow to open an OPI in view which can be detached as a standalone window
- Finish BOY online help which includes the help document for every widget. Press F1 to invoke context help for a widget. Update BOY Examples
- Allow user to change the default properties value of widgets by using schema OPI
- Change `widgetController` to `widget`, `pvArray` to `pvs`. Add `display` object to script
- Add script method `display.getWidget(name)` to search a widget by name
- Add script methods `addChild()`, `addChildToRight()`, `addChildToBottom()`, `removeChildByName()` to container widget to support dynamic loading widget
- Add `FileUtil` class to help read/write XML/text file from script
- Support `widget` and `display` objects in scripts executed from Actions
- Add global hot key F8 to enter/exit compact mode, F11 to enter/exit full screen
- Add `Show Scrollbar` property to Label and Text Update widget
- Add `Wrap Words` property to Text Update widget
- Add `Multi-line Input` property to Text Input widget
- Make loading URL file as a background job so that CSS will not hangup if a URL resource is not available
- Re-organize BOY preference to three pages.
- Add an option to script execution: `Do not execute the script if error was detected`. By default, the script is allowed to execute again even error was detected
- Fix a bug that string value cannot be written to local PV from text input widget
- Fix a bug that some widget do not redraw itself when `enabled` properties changed
- Allow embedding `[\ascii-code]` in macros when inputting macros from command line. For example:

      css --launcher.openFile "<path_to_opi>/file1.opi macro1=A[\58]B, macro2=value2" "<path_to_opi2>/file2.opi"

  In above example, the value of macro1 is `A:B`.

## Version 1.1.0 - 2/18/2011

- Support opening OPI files from command line. For example:

      css --launcher.openFile "<path_to_opi>/file1.opi macro1=value1, macro2=value2" "<path_to_opi2>/file2.opi"

  If there is already a CSS instance running, it will open the OPIs in the running CSS. The option `--launcher.openFile` is not necessary if following lines were added to css.ini:

      --launcher.defaultAction
      openFile

  Note1: For Linux GTK, ":" is not allowed in macros. Instead using `[\58]`.
  Note2: To make this command line work for Linux machine, you may need to add follow lines to your css.ini which is under your CSS directory (this line should be added before `-vmargs`):

      -vm
      /path to/libjvm.so

  You may able to find the path to libjvm.so by using command `locate libjvm.so` See https://bugs.eclipse.org/bugs/show_bug.cgi?id=331122

- Add "Tree View" to Outline, which supports reordering and changing parent operations by Drag-and-Drop. It also supports other context menu actions such as copy, paste, delete, create group and so on
- Add "Grid Layout" widget. If a container or display contains such a widget, it will automatically layout widgets in grids
- Add "OPI Probe" to CSS context menu, so the PV names will be passed to the probe OPI
- Support orientation operation on all widgets
  - Flip Horizontal
  - Flip Vertical
  - Rotate Right 90 degree
  - Rotate Left 90 degree
- Better looking Tab widget
  - Allow icon on Tab
  - Add a new context menu entry Change Tab Index
  - Fix some bugs related to undo/redo
- Add two option for executing a script:
  - Skip execution triggered by PVs' first connection
  - Execute anyway even if some PVs are disconnected
- Show script input PVs' connectivity on border too
- Show PVs' disconnected information in tooltip
- Add a preference "Console Popup Level" to control when should the console popup
- Add "Scale Format" property to XYGraph Axis and other widgets with scale such as meter, gauge, knob, progress bar and so on, so that the numeric format on scale can be customized
- Add "Value Label Format" property to widgets with scale and value label, so that the numeric format of the value label can be customized.
- Add two properties to Display: "Auto Zoom to Fit All" and "Show Close Button".
- Add Lock/Unlock Children context menu entry to grouping container.
- Add Import BOY Example wizard, so user will be able to import BOY Examples from File->Import...
- If children are locked, scale children's size correspondingly when grouping container's size changed.
- Allow to paste widgets to a selected container
- Fix an unexpected behavior in drawing straight polyline
- Make "Show Macros" available to runtime
- Add Font property to most of widgets so border's font can be configured now

## Versin 1.0.6 - 11/12/2010

- Add three context menu entries for openning related display as in web browser: Open, Open in New Tab and Open in New Window.
- Remove the wrapping capability from TextUpdate? to improve its performance greatly.
- Improve the performance of cloning widgets.
- Use Display.asyncExec() in GUI Thread with flood control to get a more smooth GUI update.
- Memory usage optimization on Intensity Graph
- Handle NAN alarm limits
- Add Description to every widget action
- Add Virtual Linac Example
- Allow changing pv_value property in Rules. This will allow rules to output a calculation result to a PV widget.
- Remove Drag&Drop capability in Runtime because it would cause unintended change on running OPI.
- Fix a bug that scaled widgets' max property cannot be negative number.
- Fix a bug on Polyline which will cause high CPU usage.
- Fix a bug on Text Update format property which will cause no response on OPI.
- Fix a bug that wav file cannot be played on linux-x64.