Print PDF dialog with copies and collate options

A client asked about why the print dialog for printing PDF with DynaPDF missed options for copies and collate?

Well, for next pre-release, we will add those options after I found the right flags for the Windows print dialog:

To enable those options, we have to opt-in via putting in a flag to allow it. But that's not enough as the option won't show unless you also tell the dialog how many pages you have. But as that also shows the page number selection, we have to ask the dialog to hide that.

For next version, you can try DynaPDF.Print in FileMaker or PrintPDFFileWithDialog and PrintPDFPageWithDialog methods in DynaPDFMBS class for Xojo.

FileMaker Server for Linux

Today Claris International Inc. released the FileMaker Server in version 19.1.2: Announcement, Release Notes. This includes an rpm package for Linux!
If you have a license, just go to your electronic product delivery page and download the new version.

Linux for FileMaker has a few years of history. After Claris told us years ago to prepare a plugin for Linux, it still took a while till 2016 to get a plugin SDK. In fall that year we shipped version 6.5 of MBS FileMaker Plugin including 64-bit Linux support to be used with the FileMaker Cloud servers at that time. We kept updating our plugin for Linux, adding more Linux features over time and currently have over 2900 of our 6300 functions available on Linux.

Claris got plenty of requests over the years to make the Linux server available stand alone. And in Hamburg at the FileMaker Konferenz in 2019 we had discussions with Claris staff about that and they let us know they are working on such an offering. As usual no time given. But FileMaker Server 19 was released with a Linux developer preview, so everyone with a license could test it. Over the months Claris made great progress and simplified the installation, improved the Admin Console and added a few Linux specific features. Today is finally the release date and we congratulate Claris to this new version. The Linux servers will quickly take over the world!

MBS FileMaker Plugin 10.x work fine on the Linux servers and we recommend to use recent versions to avoid running into fixed bugs.

We post a photo story with all the screenshots we made when we installed a Linux FileMaker server from scratch earlier today: Installation of FileMaker Server in pictures

FileMaker Pro 19.1.3 and MBS Plugin

If you got the brand new FileMaker Pro version 19.1.3 on macOS installed and you use MBS Plugin for script workspace enhancements, please update to version 10.5pr6 or later.

We fixed an issue where showing script IDs would cut away a lot of space for script names.

Please contact us if you continue to see an issue there.

PS: Seems like the problem exists without MBS Plugin, too? See Community

TextInputCanvas Update

As you may know there is an open source project called TextInputCanvas. It provides some better text input events to Xojo apps using custom text control like the Formatted Text Control.

Recently Xojo 2017r2 was released which uses GTK in version 3.0 on Linux. Previous versions used GTK 2.

You can load a copy on my plugin download page.

This plugin is build with my plugin build system, so it has MBS in the name and includes libraries for Mac, Windows and Linux including ARM, so you can use it in all projects. If you find a bug related to the building it, please tell me.

A speciality of MBS Plugins with GTK is, that we built plugins to link dynamically to GTK and use either GTK 2 or GTK 3 depending on the Xojo version. This should help to have just one set of plugins to work with Xojo 2013 up to 2020.

MBS Xojo Plugins, version 20.5pr6

New in this prerelease of the 20.5 plugins:
  • Updated MacCG, MacBase, MacCloud and MacCI plugins.
  • Reduced usage of deprecated SDK functions.
  • Added IsAliasFile to NSURLMBS and CFURLMBS classes.
  • Rewrote handling of DateTime for variants.
  • Added ADateTime, BDateTime, CDateTime and MDateTime properties to ArchiveEntryMBS class.
  • Added Clone method in IMPixelInfo7MBS class.
  • Updated CURL library to version 7.73.0.
  • Updated freetype library to version 2.10.4.
  • Fixed a few declarations to keep plugins compile with older Xojo versions before 2013.
  • Renamed Open/Close events for NSViewControlMBS control to distinguish ours form the normal control events.
  • Added datetime properties to EKEventMBS and EKAlarmMBS classes.
  • Added DateTime property to CURLSFileInfoMBS class.
  • Added kError_Quic_Connect_Error and kError_HTTP3 constants and GetInfoProxyError method to CURLSMBS class.
  • Fixed an error in BuildRecordSetMBS function with empty value array.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr6

New in this prerelease of version 10.5 of the MBS FileMaker Plugin: Download at or ask for being added to the dropbox shared folder.

20 Years Monkeybread Software Party postponed

As you may know we celebrated 20 years of Monkeybread Software in April 2020. Sadly the party had to be cancelled due to the Covid-19 pandemic.

We moved the date to 2021 and it's now six months till that date. But as the pandemic is getting even bigger over the winter, we don't expect anyone to want a party in April 2021. As airplane travel is limited and most clients invited live outside of Germany, travel may be impossible. We talked to the manager of the venue and decided to postpone the party date to somewhere in the future. We hope this will be before we celebrate 25 years! But for international travel, we may have to decide on a date at least six months in advance.

One thing you should know is that a business event would have to define a hygiene concept and make sure the planned measures would be enforced. But a party with 1.5 meter distance between guests, no hugs and touching, no buffet and wearing masks all day doesn't sound very pleasant. If anything would happen, we would face serious trouble including 4 to 5 digit penalties.

Let's wait until the situation improves, a hygiene concept is no longer needed, flights between Europe and America run normally and masks are no longer are mandatory.

Please stay safe and healthy!

MBS Xojo Plugins, version 20.5pr5

New in this prerelease of the 20.5 plugins:
  • Fixed a bug in ChartDirector with a failed assertion on quitting the app on Windows.
  • Fixed target flags for newer plugin SDK.
  • Fixed problem in DynaPDFMBS class where we set erroneously a default font for you (since v20.3).
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr5

New in this prerelease of version 10.5 of the MBS FileMaker Plugin: Download at or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 20.5pr4

New in this prerelease of the 20.5 plugins:
  • Updated to newer plugin SDK.
  • Deprecated CFXMLParserMBS, CFXMLNodeMBS and related classes.
  • Updated LibXL to version 3.9.2.
  • Added SCPreferencesMBS.Available function.
  • Added AllFontsEx function for WindowsFontFamilyMBS class.
  • Changed SQL Plugin to better work together with Actual Tech SQL Server ODBC Drivers.
  • Updated DynaPDF to version
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr4

New in this prerelease of version 10.5 of the MBS FileMaker Plugin:
  • Add a zoom button for inspector palette to scale content to 125%.
  • Updated LibXL to version 3.9.2.
  • Added Matrix.CSVSplit function.
  • Changed SQL functions to better work together with Actual Tech SQL Server ODBC Drivers.
  • Added SystemInfo.CPULoad function.
  • Updated DynaPDF to version
Download at or ask for being added to the dropbox shared folder.

14 years of Xojo versions supported

Did you know you can still use latest MBS Plugins in the ancient REALbasic 2006r4, the version that introduced 64-bit integer data types?

Our plugins can be used with REALbasic, Real Studio and Xojo for over a decade of years.
See Xojo versions supported

Most customers are on the latest versions, but some have to stay on older versions, e.g. for Web 1 API or older GDI drawing on Windows.

So whatever Xojo version you use, you can always relay on recent plugins to get the latest new classes and bug fixes available for your development.

Please do not hesitate to contact us in case you have questions.

16 years of FileMaker versions supported

Did you know the MBS Plugin can run on all FileMaker versions from 7 to 19.1.2?

As of today the current 32-bit Windows version can load in ancient FileMaker Pro 7. We don't expect clients to use that, but we know that some still have 32-bit Windows and use FileMaker Pro 18 there to connect to FileMaker 18 and 19 servers.

For macOS we support currently macOS 10.9 and newer. If you need plugins folder older macOS versions or 32-bit FileMaker Pro, please let us know.

And of course we work hard to get our plugin ready for the future. MacOS Big Sur and Apple Silicon are coming sooner than later and we may need to adjust for those.

MBS Xojo Plugins, version 20.5pr3

New in this prerelease of the 20.5 plugins: Download:
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr3

New in this prerelease of version 10.5 of the MBS FileMaker Plugin:
  • Updated DynaPDF to version Includes web links for DynaPDF.WriteFText.
  • Fixed printer name matching for Printer.SetDefaultPrinter function.
  • Changed our Database Design Dialog enhancements to hide if the underlaying SQL queries fail.
  • Changed ScriptID display in Script Workspace to hide column if we fail to query script names list.
Download at or ask for being added to the dropbox shared folder.

SSH Terminal example for Xojo

For next pre-release we upgrade our MBS Xojo Network Plugin with new DataAvailable event for SSH2ChannelMBS class. This allows to easier use the SSH connection and react event based on incoming data. And we used the chance to build a new example for a GUI based SSH Terminal application example:

Like the TCPSockets in Xojo, the trick is a timer running in the background to check regularly for new data. We start it when you call Execute method and then the timer checks for new data. If you don't use the DataAvailable event, we disable the timer of course, so you can just read yourself.

Originally we started the SSH classes to solve the problem, that normal SSH command line tool doesn't accept password as parameter or via pipe input. With our SSH2SessionMBS class you can provide password, use keyboard interactive password passing or private key file. The last one is the most secure of course.

Will come later this week with 20.5pr3. Please do not hesitate to contact us if you have questions.

DynaPDF WriteFText with links inside

For the next pre-release we include the new DynaPDF library in version The WriteFText function can now create links within the text:

  • to a web site
  • to a named destination within the same PDF.
  • to a named destination within another PDF document

You include \LK[] command in the text as command in your text and then specify the website. Within the brackets you specify 4 to 5 parameters:

  • IsNamedDest (false or 0, true or 1)
  • IsExternalLink (false or 0, true or 1)
  • OpenInNewWindow (false or 0, true or 1)
  • URL or name of a named destination (see DynaPDF.CreateNamedDest())
  • PDF file in which the named destination is located

As you see you can specify booleans either as true/false or 1/0. Whitespace before/after is ignored. To give a few examples:

  • \LK[false, TRUE, false,]Test\EK#
  • \LK[0,1,0,]Test\EK#
  • \LK[true, true, true, NameOfADestination, test.pdf]Test\EK#
  • \LK[true, true, true, DestName, file name with spaces.pdf ]Test\EK#

You may want to use DynaPDF.SetLinkHighlightMode function before calling DynaPDF.WriteFText to set the highlight mode for clicking the link. You can have a border around the link defined with DynaPDF.SetLineWidth or DynaPDF.SetStrokeColor functions.

It may be good to combine this link feature with underline \ul# and then switch color with \FC[] and the right color. For blue, we use 16711680, which is 255 * 256 * 256 as returned by DynaPDF.RGB funtion:

\FC[16711680]\ul#\LK[false, TRUE, false,]Test\EK#\ul#\FC[0]

Looks like this: Test. As you see we pick blue color, underline and the text with link inside. But on the end we turn underline off and set text color to black (0).

In FileMaker use this with DynaPDF.WriteFText or DynaPDF.WriteFTextEx functions. For DynaPDF.WriteStyledText, this won't work as we escape the backslash. So use a placeholder like "$link$", call DynaPDF.ConvertStyledText to convert text and then replace the placeholder with the command above.

In Xojo use this with WriteFText and WriteFTextEx functions in DynaPDFMBS class. If you like to use styled text from TextArea control, please use ConvertStyledText function to get the text converted for WriteFText. Then you can add links after that and before you pass text to WriteFText funtions.

Toolbar Security in FileMaker

Everyone developing a FileMaker solution for macOS should get the MBS FileMaker Plugin and configure the toolbar contextual menu with our Window.ConfigureToolbarMenu function:

As you see, you can configure the toolbar menu to remove the whole menu (mode 1) or hide only the entries to show/hide/configure.
For mode 1 we skipped the screenshot as simply no menu shows up.

If the user is allowed to configure the menu bar, he can enable commands you may have disabled via custom menus and work around your security concept. Like if you disable delete, import, export or print buttons and the user configures the toolbar to restore it.

MBS Xojo Plugins, version 20.5pr2

New in this prerelease of the 20.5 plugins: Download:
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr2

New in this prerelease of version 10.5 of the MBS FileMaker Plugin: Download at or ask for being added to the dropbox shared folder.

Variant Helper functions in MBS Xojo Plugins

Over time we collected a few functions in our plugins to help with variants. Beside the internal routines to convert from/to various classes like SAValue, NSObject, CFObject, PROPVARIANT and VARAINT and Xojo variants, we got a lot of useful helps for your daily coding.


We often encounter variants containing arrays and like to assign them to a local variable in Xojo. But you can't just assign an array inside a variant to an array of variant in Xojo. This raises a TypeMismatchException without explanation message. See Feedback case 24167.
Our GetVariantArrayMBS function checks whether the variant contains an array of type object. If so, we return it as an array of variant and you can use it.


When you have a variant of some type of array, you have no way in Xojo to know the upper bound easily (see Feedback case 31799). You would have to query the type of array, then assign to a matching local variable, handle over 20 types for that then know the upper bound. Our GetVariantArrayUboundMBS function makes this easier as it works for all array types.


The GetVariantArrayValueMBS function allows you to query an array values independent of the type of array as variant. No need to query type and assign to local variable, risking a TypeMismatchException. You simply pass index, we lookup type of array and carefully check which variant value to return. As our plugin knows the upper bound, we can do bounds checking and raise an OutOfBoundsException if needed and include a message text of course.

The functions GetVariantArrayValueMBS and GetVariantArrayUboundMBS allow us to look into all arrays in our Web Starter Kit, where we have a memory browser feature.


Need to set a value in an array? You can use SetVariantArrayValueMBS function to set a value in any type of array universally.


The GetVariantAsDictionaryArrayMBS function is relatively new in one of the last releases. Our code to convert JSON to Xojo objects uses dictionary arrays, but how to cast them correctly? Well, in Xojo you have no way to check whether an array is of type object/variant and then check whether all items inside are Dictionary (or nil). Our plugin function does exactly that and helps to process easily arrays of Dictionary stored in variant.
We put in some safe guards, so it will raise an exception if something isn't as expected. Feedback case 61541.


We just added this function to expose our way to know in the plugin, whether a variant contains an unsigned integer. The built-in VarType() function as well as variant.type property will return 2 for both Int32 and UInt32 and 3 for both Int64 and UInt64. Our GetVariantTypeMBS function returns 102 for UInt32 and 103 for UInt64. Adding 100 to the constant value seems to be the easiest for now. There is a feature request for Xojo (Feedback case 36888) to add their own constants and use them everywhere. In case that gets implemented, we could change our functions to return the new values. So be sure you define yourself a kVariantTypeUInt32 = 102 and kVariantTypeUInt64 = 103 constant, so you have one place in future to adjust those values if needed.

The new GetVariantTypeMBS function is coming for version 20.5pr2 of our plugins together with better UInt32/UInt64 variant handling in a dozen classes.

Please do not hesitate to contact us with questions or if you have ideas for new functionality!

MBS Xojo Plugins, version 20.5pr1

New in this prerelease of the 20.5 plugins:
  • Added CopyColumn method for XLSheetMBS class.
  • Added CubeSQLLastInsertID to SQLDatabaseMBS and SQLConnectionMBS classes.
  • Added imageWithSystemSymbolName method to NSImageMBS class to get SF Symbols.
  • Added phoneticOrganizationName property for CNContactMBS class and phoneticOrganizationName property for CNMutableContactMBS class.
  • Added predicateForContactsMatchingEmailAddress and predicateForContactsMatchingPhoneNumber methods for CNContactMBS class.
  • Added WindowsML classes to do machine learning on Windows 10: see WinLearningModelMBS class
  • Changed setappearance, appearance and effectiveAppearance methods in NSAppearanceMBS class to accept application or NSApplicationMBS objects.
  • Fixed an issue with plugin trying to show dialog in web app.
  • Fixed exception raised by AllFetchKeys function in CNContactStoreMBS class.
  • Fixed loading of UserNotifications framework.
  • Updated DynaPDF to version
  • Updated OpenSSL to version 1.1.1h.
  • Updated SQLAPI to 5.1.2.
  • Updated to Xcode 11.7.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 10.5pr1

New in this prerelease of version 10.5 of the MBS FileMaker Plugin: Download at or ask for being added to the dropbox shared folder.


Jul 2024
Jun 2024
May 2024
Apr 2024
Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008