In this article I want to introduce you the new functions from the MBS FileMaker Plugin in version 11.4.
Let's start with the new features in the Dictionary component. Here you can now filter the keys by their beginning or their end. With the function "Dictionary.KeysWithPrefix" you can now get a list of all keys that have a specific beginning. You may have entries like "person.123.firstname" and "person.123.lastname" and by using Dictionary.KeysWithPrefix you can look for "person.123." to find all keys starting with this prefix. The opposite is the case with the function "Dictionary.KeysWithPostfix". In this case the keys are filtered by their end. So, in the previous example, we could filter by .firstname and get "person.123.firstname". The postfix and prefix keys functions allows you to organize things in the dictionaries with e.g. dot notation.
With the new function SQL.FieldExists you can check if a given field exists that we want to query. To do this, we specify the command reference number and the name of the field in the parameters. If the field exists, we get 1 as return value.
The SendMail.Sign function signs a mail with an S/Mime signature. The mail must be assembled before it can be signed, otherwise later changes would destroy the signature. For signing, you specify in this function, besides the MailID, the reference to the X509 certificate and the reference to your private key.
Read Private and Public Keys from PEM certificate
We have three new functions in the Certificates topic that are used for reading private or public keys of the PEM certificate. With PKey.Read you can read a PKey from a text. If the key is in a container, use the PKey.ReadFromContainer function. If the key is in a PEM file, then read it with PKey.ReadFromFile. In all three cases we get a key reference as return which we can then continue to work with.
Also from the Word area there are innovations You can store a Word file now not only with WordFile.WriteFile as a file on the disk, but can store the Word file also directly into a container. For this the new function "WordFile.WriteContainer" is available.
We also have the new functions WordFile.Contains and WordFile.Substitute. With the WordFile.Contains function you can check if a defined string occurs in a Word document. As answer you receive a 0 or 1. With the function WordFile.Substitute you can replace certain text pieces in a Word document. You specify the search text as well as the new text that is replaced in the parameters of the function. Optionally, you can decide whether all found passages should be replaced with the same text. A note to this function: A piece of text is recognized only if in the found fragment no formatting breaks in the found text. So make sure that the text is uniformly formatted before you use this function.
A cool new function is the Container.Screenshot function. With this function you can take a screenshot of a control in the layout. For example, you can take a picture of a section of a web page from a web viewer, or you can take a picture of an object that has been positioned on a control by script, such as a TextView or MapView. We get the image as a container value and can store it in a container or process it further.
There are also new features for Mac and the iOS SDK
On Mac and iOS you can now also work with property lists called PLists. These lists are often used in Apple operating systems to store settings. There are two valid PList formats XML and binary. Both formats can be read with our read functions. With the function PList.ReadData we can read PList text or a file from a container. We get the data back as JSON and can evaluate it with the known JSON functions. In contrast, the function "PList.ReadFile" reads a file under a specified path and also returns a JSON.
But maybe you want to write your own PList file. For this you can use the "PList.WriteData" function. As a parameter you pass a JSON with the information that should be in the PList. The function converts this JSON to a PList XML. You can write this XML into a document with Text.WriteTextFile to a file for example.
Quicker Manage Database dialog
If you have a large project, then your relationships dialog in FileMaker can get quite large and it takes time for the relationships graph to render. Normally, if you selected the Relationships tab when closing FileMaker Database Manage Dialog, FileMaker will return to that tab in the Database Management dialog when you reopen it. With the new function "SyntaxColoring.DontOpenManageDatabaseDialogWithRelations.SetEnabled" you can prevent this and when you open the database management again the table overview opens instead of the relationship graph.
Sharing Panel for iOS
The new SharingPanel component has a few things waiting for you on iOS. She contains iOS functions to share items and pass them to Air Drop, Mail, Messages, iPhoto, and more. The system provides several standard services, such as copying items to the pasteboard, posting content to social media sites, sending items via email or SMS, and more.
While FileMaker offers this built-in to export containers, the MBS functions can be called in any calculation and export much more different things like styled text.
New functions for Windows users
Last but not least I want to introduce the new functions for Windows users.
For Windows the SystemInfo topic holds a new function for the future. With "SystemInfo.isWindows11" we test if the operating system on which our FileMaker is used is Windows 11.
Also in the area DynaPDF there are a few innovations which are interesting for Windows users. You can make settings for your printer with "DynaPDF.Print.SetSetting". This function can be called several times in a program because only one property is set per call. You can set PrinterName, Orientation, PaperSize, PaperLength, PaperWidth, Scale, Copies, DefaultSource, PrintQuality, Color, Duplex, YResolution, TTOption, Collate, FormName, MediaType, and DitherType.
Setting some of these properties may then look like this:
Set Variable [ $r ; Value: MBS( "DynaPDF.Print.SetSetting"; "PaperSize"; 9) // A4 210 x 297 mm ]
Set Variable [ $r ; Value: MBS( "DynaPDF.Print.SetSetting"; "Orientation"; 1) ]
Set Variable [ $r ; Value: MBS( "DynaPDF.Print.SetSetting"; "PrinterName"; "Microsoft Print to PDF") ]
With the function DynaPDF.Print.GetSetting you can get the values for a specific printer setting.
Another new function that is also usable for the other operating systems is the "DynaPDF.GetInIsTaggedPDF" function. It returns a 1 if the currently opened PDF is a tagged PDF.
In this release we add thread pooling for Windows. This highly benefits some functions using threads like e.g. CURL.PerformInBackground. We can reuse threads and lower the memory footprint.
We hope you will also find some interesting new features. We wish you a lot of fun with MBS FileMaker Plugin Version 11.4. If you need a license or have any questions, please contact us.