# New in MBS FileMaker Plugin 14.1

**URL:** <https://the.fmsoup.org/t/new-in-mbs-filemaker-plugin-14-1/4046>\
**Category:** MBS Plugins\
**Tags:** filemaker, plugin, announcement, mbs\
**Created:** [March 20, 2024, 7:00am UTC](https://the.fmsoup.org/t/new-in-mbs-filemaker-plugin-14-1/4046 "2024-03-20T07:00:35Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![MonkeybreadSoftware](https://yyz2.discourse-cdn.com/flex030/user_avatar/the.fmsoup.org/monkeybreadsoftware/32/361_2.png) [@MonkeybreadSoftware](https://the.fmsoup.org/u/MonkeybreadSoftware)\
**Post date:** [March 20, 2024, 7:00am UTC](https://the.fmsoup.org/t/new-in-mbs-filemaker-plugin-14-1/4046/1 "2024-03-20T07:00:35Z")

</div>

In this article we want to introduce you the new functions from the [MBS FileMaker Plugin](https://www.monkeybreadsoftware.com/filemaker/) in version 14.1.

### Overlay

![](https://www.mbsplugins.de/image/OverlayExample.jpg)

Let's start with the new component that has been added to our plugin: [Overlay](https://www.mbsplugins.eu/component_Overlay.shtml). Using the functions of this component, you can display a graphical overlay in your window, completely independently of layout elements and you can interact with this overlay. First you create a new overlay with [Overlay.Create](https://www.mbsplugins.eu/OverlayCreate.shtml) function. We store the returned reference number and use it for the other functions.

We can specify the position in different ways. On the one hand, we can use a layout object as a size and position reference, which helps us, for example, if we want to frame a button on the layout red. Here we use the function [Overlay.SetFrameWithControl](https://www.mbsplugins.eu/OverlaySetFrameWithControl.shtml) and enter the window ID and the name of the control in addition to the overlay reference. If we do not want to display our overlay directly on the layout object or slightly larger, we can enter an offset and the extra width and height in additional parameters.

With the function [Overlay.SetFrame](https://www.mbsplugins.eu/OverlaySetFrame.shtml) we can specify a fixed position and size.

The [Overlay.SetImage](https://www.mbsplugins.eu/OverlaySetImage.shtml) is probably one of the most important functions because you use it to set the overlay graphics. These graphics can have the formats JPEG, PNG, TIFF and BMP, among others. We prefer PNG for small size and supporting transparency. With [Overlay.SetVisible](https://www.mbsplugins.eu/OverlaySetVisible.shtml) we then make this overlay visible and can also hide it again with the same function.

These and many other possibilities are available to you with our new component [Overlay](https://www.mbsplugins.eu/component_Overlay.shtml). If you are further interested in the topic, please also read our blog article [Overlay windows for FileMaker](https://www.mbsplugins.de/archive/2024-02-28/Overlay_windows_for_FileMaker/monkeybreadsoftware_blog_filemaker) and have a look on the new example _Overlay_.

### JSON

The two functions [JSON.AddValueToArray](https://www.mbsplugins.eu/JSONAddValueToArray.shtml) and [JSON.AddValueToObject](https://www.mbsplugins.eu/JSONAddValueToObject.shtml) provide an improvement in working with JSON. With the [JSON.AddValueToObject](https://www.mbsplugins.eu/JSONAddValueToObject.shtml) function, you can easily add one or more new entries to an object.

```auto
MBS( "JSON.AddValueToObject"; "{}"; "Hello"; "World"; "test"; 123; "a"; "abc")

```

Example result:

```auto
{
	"Hello":	"World",
	"test":	123,
	"a":	"abc"
}

```

Similarly with [JSON.AddValueToArray](https://www.mbsplugins.eu/JSONAddValueToArray.shtml), where we add an entry to an array instead of an object.

```auto
Set Variable[$JSON ; Value: "[\"apple\", \"kiwi\", \"mango\"]" ]
Set Variable [$Array ; Value: MBS( "JSON.AddValueToArray"; $JSON; "pomelo";"orange" )]

```

Result:

```auto
["apple", "kiwi", "mango", "pomelo", "orange"]

```

### DynaPDF

While we are on the subject of JSON, I would like to introduce you to the new [DynaPDF.GetActionsAsJSON](https://www.mbsplugins.eu/DynaPDFGetActionsAsJSON.shtml) function. This lists all actions that occur in this PDF. These can be JavaScript or GoTo actions, for example. We also have a new action that we can create in a PDF. The new function [DynaPDF.CreateGoToEAction](https://www.mbsplugins.eu/DynaPDFCreateGoToEAction.shtml) creates an embedded GoTo action. This action type opens an embedded PDF file that is located in the current, parent, or in an external PDF file. Embedded files can be attached directly, e.g. with [DynaPDF.AttachFile](https://www.mbsplugins.eu/DynaPDFAttachFile.shtml), or embedded in file attachment annotations with [DynaPDF.FileAttachAnnot](https://www.mbsplugins.eu/DynaPDFFileAttachAnnot.shtml).

In Release 14.0 we have already introduced you to some new parser functions. With the new function you can output the text and its length current selection or found text.

### RemoteControl

In the [RemoteControl](https://www.mbsplugins.eu/component_RemoteControl.shtml) topic we have added some functions that can check if a certain button is pressed. This allows you, for example, in a script that is triggered by pressing a button, that we can make specific distinctions in a script. We have added the following functions for the corresponding buttons:

- [RemoteControl.IsAltKeyDown](https://www.mbsplugins.eu/RemoteControlIsAltKeyDown.shtml)
- [RemoteControl.IsCapsLockKeyDown](https://www.mbsplugins.eu/RemoteControlIsCapsLockKeyDown.shtml)
- [RemoteControl.IsCommandKeyDown](https://www.mbsplugins.eu/RemoteControlIsCommandKeyDown.shtml)
- [RemoteControl.IsControlKeyDown](https://www.mbsplugins.eu/RemoteControlIsControlKeyDown.shtml)
- [RemoteControl.IsFunctionKeyDown](https://www.mbsplugins.eu/RemoteControlIsFunctionKeyDown.shtml)
- [RemoteControl.IsShiftKeyDown](https://www.mbsplugins.eu/RemoteControlIsShiftKeyDown.shtml)

### GM Image

There is also a new feature in the GraphicsMagick area: [GMImage.Statistics](https://www.mbsplugins.eu/GMImageStatistics.shtml). This function calculates statistics for an image. [GMImage.Statistics](https://www.mbsplugins.eu/GMImageStatistics.shtml) computes common statistics (currently maximum, minimum, mean and standard deviation) for the available image channels. The per-channel values are returned in an ImageStatistics structure as JSON. For example, we have this image:

![](https://www.mbsplugins.de/image/14.1GMImag.jpg)

The picture gives us the following statistics :

```auto
{
	"red":	{
		"maximum":	1,
		"minimum":	0,
		"mean":	0.538055,
		"stddev":	0.307104,
		"variance":	0.094313
	},
	"green":	{
		"maximum":	1,
		"minimum":	0,
		"mean":	0.540072,
		"stddev":	0.287247,
		"variance":	0.082511
	},
	"blue":	{
		"maximum":	1,
		"minimum":	0,
		"mean":	0.553617,
		"stddev":	0.283935,
		"variance":	0.080619
	},
	"opacity":	{
		"maximum":	0,
		"minimum":	0,
		"mean":	0,
		"stddev":	0,
		"variance":	0
	}
}

```

### ListDialog

In the new release, we also have a new option for closing the ListDialog. If you call the function [ListDialog.SetCloseDialogOnDoubleClick](https://www.mbsplugins.eu/ListDialogSetCloseDialogOnDoubleClick.shtml) with the value 1 before, you can close the list dialogs with a double-click. The value 0 in the same function deactivates this function. If you want to know whether the function is currently activated, call the [ListDialog.GetCloseDialogOnDoubleClick](https://www.mbsplugins.eu/ListDialogGetCloseDialogOnDoubleClick.shtml) function.

### Clipboard

Since one of the earliest versions, we already have [clipboard](https://www.mbsplugins.eu/component_Clipboard.shtml) functions that allow us to work with the clipboard. In this release, we have now also added a [clipboard](https://www.mbsplugins.eu/component_Clipboard.shtml) function that deletes the entire contents of the clipboard. So if you want to enjoy a fresh start with the clipboard, use the [Clipboard.Clear](https://www.mbsplugins.eu/ClipboardClear.shtml) function.

## Mac and iOS

There are also new features for Mac and the FileMaker iOS SDK.

### Syntax Coloring

![](https://mbsplugins.de/image/FormatButton3.jpg)

If you format a formula in a FileMaker with our ƒ button in the formula dialog, you can hold down the option key to get a compact display.

![](https://mbsplugins.de/image/FormatButton1.jpg)

Use [SyntaxColoring.FormatCalculation](https://www.mbsplugins.eu/SyntaxColoringFormatCalculation.shtml) to call our formatting code for your own formulas stored in fields. You can use various extensions of the formatting code. If you use the context menus to copy an entry in a list of fields, our context menu now offers you the option of copying the complete field specification.

### Events

New functions for requesting authorizations have been added for events. With the function [Events.RequestFullAccessToEvents](https://www.mbsplugins.eu/EventsRequestFullAccessToEvents.shtml) you can prompt for grant or deny read and write access to event data. Similarly, [Events.RequestWriteOnlyAccessToEvents](https://www.mbsplugins.eu/EventsRequestWriteOnlyAccessToEvents.shtml) queries the authorization for write access only to event data. The function [Events.RequestFullAccessToReminders](https://www.mbsplugins.eu/EventsRequestFullAccessToReminders.shtml) requests the authorization for reminders.

All these dialogs the operating system only prompts them the first time your app requests corresponding event accesses

### AVRecorder

With the new [AVRecorder.SetVideoOrientation](https://www.mbsplugins.eu/AVRecorderSetVideoOrientation.shtml) function, you can set the orientation of the camera. You can choose between PortraitUpsideDown, Portrait, LandscapeLeft, or LandscapeRight. If the device is rotated, you may need to adjust the orientation. You can use the new [AVRecorder.GetVideoOrientation](https://www.mbsplugins.eu/AVRecorderGetVideoOrientation.shtml) function to find out which orientation is currently being used.

We hope you will also find some interesting new features. We wish you a lot of fun with [MBS FileMaker Plugin](https://www.monkeybreadsoftware.com/filemaker/) Version 14.1. If you need a license or have any questions, please contact us.
