MBS Xojo Plugins, version 19.5pr8

New in this prerelease of the 19.5 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 9.5pr8

New in this prerelease of version 9.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

AbsolutePath for Xojo

As you may know Xojo deprecated AbsolutePath a few years ago and removed it in Xojo version 2019r2. Now we have projects ranging from old Real Studio versions to latest Xojo versions. I currently have 12 difference Xojo versions installed, three Real Studio versions and two REALbasic versions. We use the QuickLook plugin from us to have each project show version number in the icon.

Recently we added NativePath to FolderItem class for REALbasic and Real Studio. Newer code using NativePath now compiles even in Real Studio. For projects in Xojo 2019r2 we now add AbsolutePath function for FolderItem, so older code using it can still be built. For some projects we even switch between various versions. For example develop on Windows with Real Studio and just use Xojo for building the 64-bit version.

Of course we know that we should get rid of AbsolutePath. But the problem is in compatibility and in the detail. Older projects put file references as AbsolutePath into documents to find related files. Newer versions of the applications now use NativePath or GetSaveInfo functions. But we still want to read old documents with old paths and resolve them. It would be a support nightmare if clients call support about projects not finding their files.

For MBS Plugin 19.5 we add AbsolutePathMBS to folderItem class for all versions of Xojo and Real Studio. We got NewFolderItemFromAbsolutePathMBS function to resolve the absolute path. This even works fine in MacOS Catalina as far as we see.

Network share access from script on FileMaker Server

Recently a couple of users asked how to access network shares on a FileMaker Server. The built in commands from FileMaker are all limited to documents and temporary directory. But with the MBS FileMaker Plugin (and other plugins) you can access other places on the server.

A common use case is to put a second hard disk on the server, create a backup folder there and have a scheduled script copy over some files regularly from the documents folder to the external hard disk. You may get a permissions errors. But you can simply solve this by explicitly giving right permissions to the folder to make it accessible for FileMaker server scripting process executing plugin functions.

So let's talk about those accounts. There are various accounts used on a FileMaker Server when working with network shares or folders on disks.
  1. The account your script is logged in to the FileMaker Server, e.g. admin account. Or let's say better a limited account named "backup", which may not need to access all tables in all files. You can query this name with Get(AccountName) in your script.
  2. The account the FileMaker server runs on the system. For MacOS this is usually a separate user named fmserver. You can query this name with MBS( "SystemInfo.UserName" ) function.
  3. The account you login to a remote file server to mount the network share. This may just be a normal login name or with a domain controller something like "SRV2012\bob".
  4. The account of the local admin, who logs into the server to see the desktop.
Now the admin on the machine may use his account (4) to login and see the desktop. He can use FileMaker admin console in the browser and use his account on the file server (3) to mount a network share and optionally attach it to a local drive letter, e.g. Z.

If a script running under the account "backup" (1) on the FileMaker server tries to write to the network share, it only has the permissions of the FileMaker Server scripting process (2). Access is denied as the network share is mounted exclusively for the local admin (4).

There are two solutions:
  1. You can mount a network share both on MacOS and Windows to allow access for all users. This can be tricky and there are various tutorials on the web.
  2. You can use MBS Plugin with Files.Mount function to have your script mount the network share itself, do its business and then unmount it via Files.Unmount function.
We do prefer the second way as it's more secure. The network share is only mounted for a short time period and only accessible to the FileMaker server while mounted. Even if someone is using the computer, they may see the drive letter, but not access it.

If you have questions, please do not hesitate to contact us.

libjpeg-turbo for Xojo

For our MBS Xojo Images Plugin we added support for libjpeg-turbo. The new JPEGTurbo plugin part encapsulates the libraries for MacOS, Windows and Linux, all built with SIMD instructions for better performance.

In Xojo the JPEGTurboMBS module provides the API pointer, which you can pass via SetAPI functions in JPEGImporterMBS or JPEGExporterMBS classes. Then the next load or save uses the new functions which work with higher performance.

Speed improvements are notable, but of course depend on your test images and computer configurations. We have seen speed increase by factor 2 to 5 here.

Please try the classes soon and report any feedback you have. Included in 19.5pr7 upload.

MBS FileMaker Plugin, version 9.5pr7

New in this prerelease of version 9.5 of the MBS FileMaker Plugin:
  • Fixed problem with finding windows in runtime app on Windows.
  • Improved WordFile.GetXML function to work with rels parts in the Word file.
  • Fixed problem with WebView.FindByName function not finding right web viewer on MacOS.
  • Added SelectedOnly parameter for ScriptWorkspace.ScriptText function.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 19.5pr7

New in this prerelease of the 19.5 plugins: Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Tip of the day: Shell Execute as one Let statement

You can create a shell, run a command and get the result all in a Let statement or a custom function:

Let ( [

// new Shell

shell = MBS( "Shell.New" );

// run command with parameters

r = MBS( "Shell.Execute"; shell; "/bin/ls"; "/");

// wait for a result up to 5 seconds

r = MBS( "Shell.Wait"; shell; 5);

// read output

error = MBS( "Shell.ReadErrorText"; shell; "UTF-8");

output = MBS( "Shell.ReadOutputText"; shell; "UTF-8")

// free shell

r = MBS("Shell.Release"; shell)



; output & error ) 

This may be handy to keep this in mind when you need to run a command line tool next time.

PS: We used Command-Option-C shortcut in data viewer to copy formula with styles.

20 Years Monkeybread Software Party

Next year in April our company will turn 20 years old.
We'll plan to have a big party here in Germany near our office with over 100 guests.

Invitations are going out this month in several batches.

If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost.

As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list.
If you can't make it, please respond soon, so we don't need to contact you again later.

MBS FileMaker Plugin, version 9.5pr6

New in this prerelease of version 9.5 of the MBS FileMaker Plugin:
  • Changed trace functions to log name of script and file if changed from last MBS call.
  • Changed DLL loading for DynaPDF.Initialize and XL.Initialize functions to look for given DLL path, try 32/64 DLLs. If only file name is given, we look into plugin folder, too. If no file name is given, we try default file name.
  • Fixed bug in CURL.SetInputFile with error message "Uploaded unaligned file size".
  • Improved code for SmartCard.ReadFile to work for more cards.
  • Consolidated debug and release plugin into one, where we can switch on debug logging to help clients.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 19.5pr6

New in this prerelease of the 19.5 plugins:
  • Added ClearStringContentMBS function.
  • Added ExecuteSQL and SelectSQL methods for SQL Plugin to support API 2.0.
  • Updated SQLPreparedStatementMBS for changes in Xojo 2019r2.1.
  • Changed ParentID property for iTunesLibraryPlaylistMBS class to 64-bit.
  • Added path variants for CreateMTDebugOutputFile, CreateMTHeaderOutputFile, CreateMTOutputFile and OpenMTInputFile methods in CURLSMBS, CURLNMBS and CURLMBS classes.
  • Added path variants for CreateICCBasedColorSpace, InsertImageEx, OpenImportFile, OpenOutputFile and OpenOutputFileEncrypted in DynaPDFMBS class.
  • Added path variants for copyItem, copyItemMT, linkItem, moveItem, trashItem in NSFileManagerMBS class.
  • Added path property to JPEGExporterMBS and JPEGImporterMBS classes.
  • Added path variant for OpenFile method and new SourcePath property to PNGReaderMBS class.
  • Added path variants for OpenWriteDestination method to PNGWriterMBS class.
  • Added path variants for Create and Open methods for TiffPictureMBS class.
  • Fixed bug in ReadFile function in SmartCardMBS class.
  • Fixed crash in PrintPDFFile method in DynaPDFMBS class with nil PageRect in DynaPDFPrintParamsMBS object.
  • Added click and willValidate methods to DOMHTMLButtonElementMBS class.
  • Added SetInvertAlpha method and InvertedAlpha property to PNGReaderMBS class.
  • Added OriginalColorType property to PNGReaderMBS class.
  • Added AllowGray option to ApplyOptions class.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

FileMaker Conferences in 2020

Recently I discussed with a client about FileMaker conferences next year. Currently I know about four conferences to take place in 2020:
dotfmp.berlin English 4th to 6th June 2020 Berlin, Germany dotfmp.berlin
FileMaker Konferenz German 17th to 20th June 2020 Meilen, Liechtenstein filemaker-konferenz.com
Claris Engage USA English 3rd to 6th Aug 2020 Nashville, USA filemaker.com
Claris Engage Europe Multilingual 26th to 28th Oct 2020 Lisbon, Portugal filemaker.com

Those conferences are very different in location, cost, language and what to expect, so lets compare them a bit:


SceneKit @ European XDC 2019

Stefanie recorded a new video of her presentation about SceneKit Plugin classes from the European Xojo Developer Conference 2019 in Cologne.

Enjoy the video and see you at the coming Xojo.Connect in USA!

Xojo Developer Magazine 17.6

The November/December (17.6) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Numbers Please! Part 5 by Markus Winter
Supporting decimals, precision, and exponents.

Xojo In Cologne by Dana Brown
A report -- with photos -- from the MBS Conference in Germany.

Maps (Part 2) by Markus Winter
When example projects fail, it's tough to make progress.

Your First Web App -- Part 3 by Paul Budd
Adding editing, plot lookup, searching, and more.

Big Numbers and Large Numbers by Stefanie Juchmes
Learning how the MBS Plugins support big and large numbers.

Designing for Error Tolerance by JC Cruz
Writing software that anticipates errors.

PLUS: Xojo 2019r2, API 2.0, DateTime, planning, Best of the Web, and more!


Nov 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