In this article we want to introduce you the new functions from the MBS FileMaker Plugin in version 13.5.
ListDialog
A very cool new feature is in the ListDialog Component. Because we now have checkboxes for the list dialog. These can be displayed using the ListDialog.SetShowCheckboxes function. You can now check boxes either manually or by script. If you want to check the boxes by script, use the ListDialog.SetCheckedfunction. Here you enter the list index of the row you want to check followed by the value. 1 for check and 0 for do not check. You can use the ListDialog.GetCheckedfunction to determine whether a field in a particular row is checked or not. To do this, enter the list index in the parameters and the corresponding value will be returned. We can also use the ListDialog.GetCheckedTags and ListDialog.GetCheckedTitles functions to obtain a list of the checked tags and titles. If you use the filter in the dialog, the boxes remain checked even if they are not currently visible and are returned in these lists.
Phidget
In the last release we already introduced our new component Phidget, which allows you to connect input-output devices of the brand Phidget Inc. with FileMaker and to manage the incoming and outgoing data. For this release we have completely redesigned the script trigger handling. They now work better with short successive events.
We now also have a function with which you can remove script triggers that have been set. This new function is called Phidget.ClearScriptTrigger.
JSON
New in the plugin is the possibility to work with JSON Path. With JSON.Query you can perform a JSON Path query. For example, if you have a JSON in which there are different objects in an array that describe different books with the keys category, author, title and price, then we can use the following code to determine the book whose author begins with „Evelyn“:
MBS("JSON.Query"; json; "$.store.book[?(@.author =~ /Evelyn.*?/)]"; 0)
Another new function that also uses JSON Path is the JSON.Replace function. It searches for all values that match the JSONPath expression and replaces them with the specified value. If we stay with our example, we would use this step to find all books with the title A Wild Sheep Chase and replace the price with 123.
MBS( "JSON.Replace"; json; "$.books[?(@.title == 'A Wild Sheep Chase')].price"; 123 )
Since this release, you can now also use JMESPath for your JSON documents. JMESPath is a language with which you can modify and search your JSON objects. You can find out more about JMESPath here: https://jmespath.org/
With the new JSON.Search function, you can, for example, filter the city names from several objects that describe cities in the USA whose objects have the state with the initials WA. These names should then be output with the key WashingtonCities separated by a comma
MBS( "JSON.Search"; "{ "locations": [ {"name": "Seattle", "state": "WA"}, {"name": "New York", "state": "NY"}, {"name": "Bellevue", "state": "WA"}, {"name": "Olympia", "state": "WA"} ]}"; "locations[?state == 'WA'].name | sort(@) | {WashingtonCities: join(', ', @)}")
We also have the new function JSON.Flatten that flattens a json object or array to a single depth object of key-value pairs. The corresponding function JSON.Unflattenunflatten that object back to the original json.
XML
With the new functions from the XML area, we can set and query extra field definitions. These are SQL field definitions, which we include in creating a table. Here you can see the creation of two such fields to which we assign properties like this
Set Variable [ $r ; Value: MBS("XML.Import.SetExtraFieldDefinitions"; "ImportRun DECIMAL DEFAULT 1¶ImportLabel VARCHAR DEFAULT 'test'") ]
Matrix
With the new Matrix.Lookup function, we now get back a value at a specific position in the matrix or the default value defined in the parameters. This means that there is no error if we query an incorrect value, because we have a fallback value.
Preview
In version 13.3 we already introduced the preview, with which you can view a PDF preview under Mac and Windows. Now the component gets the new function Preview.SetFocus. This function allows you to set the focus on this element using a script. Previously, this was only possible by clicking on the element.
DynaPDF
We also have a new function in DynaPDF. With the function DynaPDF.CreateGeospatialMeasure we create a geospatial measure dictionary. This kind of measure dictionary can be used to convert PDF units to geographic coordinates. A measure dictionary is used by the measure tool of Adobe's Acrobat and by other PDF viewers which contain a PDF compatible measure tool.
Window
There are also new features in the Window area. You can now determine the parent window of a card window or dialog window. The Window.Parent function gives you the reference number of the parent window and you can then query the title of the parent window using the Window.GetTitle function.
For Windows users, this component has another surprise in stock: you can now add a window to the taskbar with Window.AddToTaskbar. With Window.RemoveFromTaskbar you can then also remove windows again.
Plugin
We have two new functions in our component plugin. If you use the plugin frequently, you have probably come across functions that generate a reference number. These references must be released again at the end of their use so that they do not block the memory. With the Plugin.ObjectCounts function, you receive a JSON and can see where and how many references have not yet been released.
Another function we have added is the Plugin.UsedFunctionCounts. This function shows us which MBS function has been used how often. Here you can see a sample output.
For Mac users, we have extended the direct jump function that we previously had for mail addresses and links in the comments, so that you can now also jump to the beginning, the end or to a specific line within a script. This function is particularly useful for large scripts and is often used for documentation.
Mac and iOS
There are also new features for Mac and the iOS SDK
AVRecorder
Since MacOS Sonoma introduces reactions for video recording, you can configure this via AVRecorder functions. When running on macOS 14 or iOS 17, your application can check for effect availability and beside gesture also run effects via script via AVRecorder.PerformEffectForReaction function.
Files
We have added two new functions to the Files component for working on Mac and iOS. With the Files.IsApplication function, we can now check whether a path refers to an application. The Files.IsPackage function determines whether the path refers to a package.
We hope you will also find some interesting new features. We wish you a lot of fun with MBS FileMaker Plugin Version 13.5. If you need a license or have any questions, please contact us.