We celebrate in April 2020 the 20th anniversary of our company. Founded on 1st April 2000 as a sole proprietorship, we later upgraded in 2005 to a GmbH (limited) and over the years even got staff. As we trade as Monkeybread Software, we got a trademark for this name. Since 2001 we provide Xojo plugins and since 2006 we provide a FileMaker plugin.
Thanks to the thousands of customers around the world, who support us by buying licenses over the years. Thank you for the feedback, the greetings and the good testimonials we got.
Our party got moved to 2021 where we celebrate 20+1 years of the Monkeybread Software next year. Same party may also celebrate 15 years of MBS FileMaker Plugin, my 40th birthday and 20 years of our MBS Xojo Plugins.
As a thank you for all our existing and new customers, we offer for April a 20% discount on purchases for all our licenses. Coupon code 20years needs to be entered for web shop to get the discount. For links to PayPal directly from our website, we can just reduce the amount automatically.
If you need a license or an update, please enjoy the discount. This includes our licenses as well as DynaPDF licenses. If your license expires in the future, you can order this month and extend your license for up to five years in the future!
Otherwise have a great spring time at home, stay healthy and see you at the next conferences!
As you may have noticed the Xojo Inc. announced in the XDC 2020 keynote (see Youtube playlist), that we'll get plugins for iOS later this year. For us it is time to update the build system to duplicate a lot of scripts for new targets.
First we tested how to build iOS dylibs from command line which worked quickly. The more difficult part will be to change code to use #if to enable it for iOS. And of course to later add iOS specific code to get functionality.
Next we worked on trying Linux ARM in 64bit. While not announced, we expect Xojo Inc. to do this someday when they see the need and an engineer has a few days to start the process. For us building ARM 64-bit seems to work fine. It's more or less just duplication of scripts and changing 32 to 64 for the bit count and using separate folder/file names for libraries.
To be prepared in case the Mac with ARM rumors turn up true, we added MacARM as possible build target. The scripts seem to work except that we get errors as the Mac SDK shipping currently does not support arm.
Finally we added the Android platform as target with both simulator and device modes. But we have not yet compiled anything this is a bit new for us. But we expect to learn from Xojo Inc. on how to setup a build environment as they need to do this for their own internal plugins, e.g. XML classes.
All the work is a bit preliminary and subject to change. Once Xojo comes with support for new targets, we can make sure we use the right compilation flags to produce matching libraries.
The new targets added here are:
iOS Simulator 64-bit
iOS Device 64-bit
Linux ARM 64-bit
Mac ARM 64-bit
Android ARM Simulator 64-bit
Android ARM Device 64-bit
Not sure if we get those targets all this year, but at least the build system is prepared. Over 20 libraries do compile for iOS and Linux 64bit already. Some plugins like the CURL and DynaPDF ones do compile for those platforms just fine.
Looking forward for the new targets and thanks to everyone who supports us by testing new functionality and keeping license current.
Recently I got a client complaining about a crash in FileMaker Server with a script using plugin functions. A look on the trace output from our plugin via MBS("Trace"; $path) function call to write a log file showed the problem. The loops where running endless. And an endless loop eventually causes trouble when some resource is limited, e.g. available memory.
Looking on the script we basically found this a couple of times:
Go to Layout [ “MyTable” (MyTABLE) ; Animation: None ]
Perform Find [ Restore ]
Go to Record/Request/Page [ First ]
Loop
# process record
#
# next
Go to Record/Request/Page [ Next ; Exit after last: On ]
End Loop
For privacy reasons, I removed the code to process the record and renamed the layout and file here. But otherwise the script contains a few of those loops and not all loops work well. Does the script look fine? Look and decide before you continue to read.
After long discussions we decide to move our 20 year party to the year 2021. Same location, same setup, but simply a year later.
In April 2020 our company will turn 20 years old and we celebrate a bit at home.
We'll plan to have a big party next year in Germany near our office with over 100 guests.
All people invited for this year will be asked to contact us in early 2021 whether they join the party in April 2021. We'll send new invitations next year to remind everyone.
The new date has the advantage that it's close to XDC 2021, so customers from America may extend their stay in Europe and join our party.
Please stay healthy and enjoy some time home with family.
In this article I want to introduce you the new functionalities from the MBS Xojo Plugins in version 20.1.
Data from Images
The classes JPEGImporterMBS, GMImageMBS and GM16ImageMBS got the new property ExifThumbnail. This property extracts an embedded thumbnail in EXIF data and return it as a string. With this string we can use the method getData method of the Picture class or our JPEG functions to decompress and display the thumbnail.
The class JPEGImporterMBS got the ExifOrientation property that queries the orientation from the Exif data. We receive the orientation as an integer and you can use this number to determine and adjust the alignment if necessary.
The classes GMImageMBS and GM16ImageMBS include the new shared method FontMap. We can use this method to find out which fonts are currently available. The method can also help us to debug and find out the reason why a font is not loaded. The function returns a string with a XML structure.
(more)
In this article I want to introduce you to the new functions from the MBS FileMaker Plugin in version 10.1.
JavaScript
In the last plugin version we introduce the new JavaScript component. With those functions it is possible to use JavaScript without the help of a web viewer. In this version we have added some features, that simplify the work with JavaScript functions.
Times and dates in JavaScript are passed as floating pointer numbers. The function “JS.Now” returns us the number of milliseconds since the 1st January 1970. So we can determine the current time in combination with the “JS.TimeToDateComponents” function. This function returns us a JSON object with the individual specifications like year, month, day, hours, minutes, seconds, milliseconds, weekday, timezone and weekday
Here you see an example script: Set Variable [ $JS ; Value: MBS( "JS.New" ) ]
Set Variable [ $time ; Value: MBS("JS.Now";$JS) ]
Set Variable [ $Res ; Value: MBS( "JS.TimeToDateComponents"; $JS;$time) ]
Set Variable [ $r ; Value: MBS( "JS.Free";$JS ) ]
If you combine this function with the “JS.UTCDateToTime” function you can get such a JSON of a FileMaker timestamp. “JS.UTCDateToTime” convert a FileMaker timestamp to the time format that the function “JS.Now” uses. Additionally there is a function that converts the millisecond output back to a FileMaker readable timestamp. This function is called JS.TimeToUTCDate.
We have also added counting functions that count the number of objects and global strings. In an empty JavaScript environment there are already about 1000 strings and about 400 objects. So if you want to find out how many objects and strings are added, you have to subtract the basic amounts.
(more)
On Windows in a Xojo project if you have no menu bar on a window, the usual shortcuts like Control-C won't work. But if you like to get copy & paste to work, you may just handle the Control key plus various shortcuts yourself. So here some code you can copy & paste to your project if you have a window where textfields don't do the shortcuts. Best may be to put it in a TextField subclass to have it working in multiple fields without duplicating the code a lot of times:
Today a client asked if we could change the step count for number fields in a Xojo web app. As the HTML Input element offers a step feature, we could easily implement the step and also offer a min and max values, too. For example you can put this lines in an Open or Shown event of the WebTextField object on your webpage:
Optionally we could make this one call to ExecuteJavascript, but for the client here, we subclass WebTextField, add properties for the inspector in the IDE to set them and then run those lines in the Shown event to pass to the browser if they are set.
Due to the decision of the US government to ban us from coming to the USA (see press release), we cancel our trips to the USA.
For the FileMaker meeting on Thursday we'll try to join via WebEx.
The Xojo meeting in New York in the steak house could take place, but just without us.
For the Xojo.Connect conference we expect to find some solution. We'll probably provide our session as video on our website. Maybe we can hold it via video conferencing from today. This also offers the chance for Xojo Inc. to allow virtual attendance to the conference by streaming the sessions.
The Claris Engage conference is in August and we hope the flu season is over by then. But we will not book/pay a booth and tickets until we know the ban is liften and doesn't get extended till summer.
PS: The Xojo.Connect conference is cancelled. Also the PauseOnError in St. Louis for FileMaker developers is cancelled.
Heute findet der FileMaker Stammtisch Braunschweig virtuell statt via Zoom: Mittwoch, 11. März um 19:00 Uhr.
Die Chance für alle deutschsprachigen FileMaker Freunde drumherum diesmal live dabei zu sein.
Marcel Moré erzählt bestimmt was zum neuen Claris Connect und den anstehenden Konferenzen.
Vermutlich zeige ich was wir neues im MBS Plugin dieses Jahr haben mit diversen Beispielen (keine Folien).
We went to the party location for our 20 years Monkeybread Software event. Our mascot directly found a chair at the bar, but the bartender didn't show up that day.
In April 2020 our company will turn 20 years old and we celebrate.
We'll plan to have a big party here in Germany near our office with over 100 guests.
We hope for good weather and plan to do some barbecue and have a bouncy castle for the kids. They have a lovely terrasse for sitting outside, a big smoker for some great barbecue and be hired a DJ to entertain us.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost. Today we sent a few more invitations. In total something like 600 people invited, but most can't come. 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.
Nickenich, Germany - (March 10th, 2020) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 10.1 for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for FileMaker Pro. As the leading database management solution for Windows, macOS, iOS and the web, the FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 10.1 has been updated and now includes over 6100 different functions, and the versatile plugin has gained more new functions:
Optimized syntax highlighting for MacOS to be faster on scrolling. You can now pick a font via preferences dialog or via SyntaxColoring functions to use a custom font for script workspace and calculation dialogs. The MBS Plugin now remembers column widths for themes, custom menus, data sources, security and privileges and value lists dialogs in FileMaker. We added new context menu entries for several lists in FileMaker to sort entries, e.g. to sort layouts or fields by name.
For Windows check the new WebView.PostURL function. Use it to load a website with GET or POST method and include POST data, e.g. to send a form directly and show resulting webpage. Pass additional headers with the request including a different user-agent, e.g. to pass a browser check which do not like Internet Explorer. Our preferences dialog for Windows can take your license key directly.
With SharedMemory functions you can store named values in memory shared with other applications on the computer. The content persists till a reboot or when you delete it and can be read even when FileMaker is quit in-between.
In GraphicsMagick functions we can now extract thumbnail from EXIF data in a JPEG image. And you can check the font map used for annotating with text using GMImage.FontMap.
The CLGeocoder functions can now return result as JSON block. For Windows Media Foundation Player, you can now take screenshots and play the video/audio as loop. With DynaPDF you can now use the Windows certificate store to pick a certificate using a standard dialog when signing a PDF document. Using FM.SetDisableContextualMenus you can now disable context menus for FileMaker.
Our JavaScript functions got new functions to convert time to/from JavaScript. We got an automatic type detection mode for FileMaker XML on the clipboard. Our styled text handling on MacOS can now handle strikethrough attribute. Using ScriptWorkspace.StyledScriptText and ScriptWorkspace.CopyScriptText you can automate to save scripts.
Finally we updated to newer Plugin SDK, CURL version 7.69.0, DynaPDF to 4.0.37.107, SQLAPI to 5.0.5 and SQLite to 3.31.0.
Nickenich, Germany - (March 10th, 2020) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 20.1 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins have been updated and now includes over 2600 classes and 68,000 documented features, and the versatile plugins have gained more new functions:
Since Xojo 2019r3 uses a newer version of Chromium Embedded Framework for the Webkit enabled HTMLViewer controls, we updated our classes to support this. You can use the MBS Xojo Win Plugin with three different CEF versions depending on the version included with your Xojo version. For the ChromiumBrowserMBS class we have a new RegisterExtension function to register JavaScript based extensions.
Our JavaScriptEngineMBS class got upgraded to pass memoryblocks with copying in normal parameters, results and properties. The Memoryblock is available as UInt8 array in JavaScript. The new GlobalMemoryBlock function passes memory blocks to properties by reference to allow you to reference the same memory in Xojo and JavaScript. With our new MT methods you can call functions or evaluate code snippets on a preemptive thread to run them in background and keep your user interface responsive. Use JavaScriptDateComponentsMBS class to work with dates in JavaScript.
For Windows check the new Navigate method in IEWebBrowserMBS class. You can use it to load a website with GET or POST operation and include POST data, e.g. to send a form directly and show resulting webpage. Pass additional headers with the request including a different user-agent, e.g. to pass a browser check which does not like Internet Explorer.
Check our new Windows file dialog classes around WinFileDialogMBS class. You can customize them including custom controls in the dialog like labels, buttons, checkboxes, textfields and popup menus. We provide a lot of events, so you can react to user interaction and enable/disable or query values.
For JPEGImporterMBS and GMImageMBS class we added EXIF thumbnail functions, so you can quickly get a thumbnail picture embedded in EXIF metadata. Use our new LTCMBS class to generate or recognize time codes in audio streams. For our Encryption plugin we added a BCryptMBS class to encrypt and hash passwords with bcrypt algorithm.
Finally we updated to CURL version 7.69.0, DynaPDF to 4.0.37.107, SQLAPI to 5.0.5 and SQLite to 3.31.0.
10. März 2020 - Monkeybread Software veröffentlicht heute das MBS Plugin für FileMaker in Version 10.1, mit inzwischen über 6100 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:
Wir haben die Syntaxeinfärbung für das Scrollen unter MacOS optimiert. Sie können über den Voreinstellungsdialog oder über die SyntaxColoring Funktionen eine eigene Schrift auswählen, die das MBS Plugin dann für Berechnungen oder Skripte verwendet. Unser Plugin kann sich jetzt die Spaltenbreite für mehr Listen merken bei externe Datenquellen, Designs, Eigene Menü, Sicherheit und Wertelisten. Über einen neuen Eintrag im Kontextmenü können Sie mehrere Listen in FileMaker automatisch sortieren lassen, z.B. die Liste der Layouts oder Felder.
Für Windows probieren Sie bitte die WebView.PostURL Funktion um eine Webseite mit GET oder POST aufzurufen. Übergeben Sie optional POST Daten, z.B. um ein Formular abzuschicken und direkt das Ergebnis zu sehen. Mit zusätzlichen Header Einträgen können Sie beispielsweise einen anderen User-Agent angeben. Damit überlisten Sie die ein oder andere Browser Überprüfung, die vielleicht den Internet Explorer nicht mag. Für Windows haben wir einen Voreinstellungsdialog um direkt die Lizenzdaten einzugeben.
Mit den neuen SharedMemory Funktionen können Sie Daten im Arbeitsspeicher ablegen und mit anderen Programmen austauschen. Der Inhalt bleibt auch im Arbeitsspeicher, wenn FileMaker zwischendurch beendet wird.
Für Kontakte haben wir die CNContact.DeleteValue Funktion um leichter Werte zu löschen. Nutzen Sie CNContact.Show um einen Kontakt auf dem Bildschirm anzuzeigen. Mit CNContactPicker.Show rufen Sie, für MacOS und iOS,einen Dialog auf um einen Kontakt aus dem Adressbuch zu wählen.
Die GraphicsMagick Funktionen können ein Vorschaubild aus den EXIF Daten eines JPEG Bildes laden. Sie können die Schriften Liste mit GMImage.FontMap einsehen, die wir für Annotationen verwenden.
Für DynaPDF können Sie jetzt per Dialog aus dem Windows Certificate Store ein Zertifikat zum Signieren eines PDF Dokumentes auswählen. Per FM.SetDisableContextualMenus können Sie Kontextmenüs für FileMaker deaktivieren.
Unsere JavaScript Funktionen können jetzt Zeitwerte von/nach JavaScript konvertieren. Für unsere XML Funktionen, betreffend FileMaker Daten in der Zwischenablage, haben wir jetzt die automatische Erkennung von Inhalt eingebaut. Die Funktionen für Texte mit Stilelementen für MacOS unterstützen “durchgestrichen” als Attribut. Mit ScriptWorkspace.StyledScriptText und ScriptWorkspace.CopyScriptText können Sie automatisiert den Text des aktuellen Skripts abfragen. Die CLGeocoder Funktionen können das Ergebnis jetzt als JSON Block zurück geben. Beim Windows Media Foundation Player können Sie jetzt, vom aktuell gezeigten Bild, Fotos erstellenund den Film oder Ton als Schleife laufen lassen.
Außerdem haben wir das Plugin SDK aktualisiert, CURL auf Version 7.69.0, DynaPDF auf 4.0.37.107, SQLAPI auf 5.0.5 und SQLite auf 3.31.0.
Today we updated our WebPicture from PDF Page example project for Xojo to better handle HiDPI support when rendering PDF pages with DynaPDFMBS class in MBS Xojo DynaPDF Plugin.
The WebPicture class has a couple of constructors, but sadly none to provide both width and height and image data. So we need to create the WebPicture based on a low resolution version to get the right size in. Later we replace data with high resolution image data to get the sharp image to show in browser. Here is our sample code:
As you can see, we create new MyDynaPDFMBS object, our subclass to fill error event and learn about why things may go wrong. The OpenImportFile function may fail to open the PDF file on the server. Otherwise use OpenImportBuffer to pass PDF as data block directly. We import first page, set JPEG quality and then render two versions of the image, one with 72 dpi and one with 144 dpi. Both are then combined into a WebPicture object.
Please do not hesitate to contact us if you have questions. The example will be included in MBS Plugin 20.1 download.
We'll have a presentation to whatever is new in the MBS FileMaker Plugin 2020. And Vincenzo Menanno presents about InspectorPro.
Looking forward to see a few FileMaker developers there!
If you are interested in private time for consulting, training or discussion MBS or FileMaker topics, we can of course schedule a meeting. Please contact me directly interested.
Did you notice that FileMaker does not remember what column width you set for several dialogs?
We had this feature for some time for 3 dialogs: fields, tables and layouts. Today we extend this to include value lists, themes, custom menus, custom functions, external data sources, security and privileges.
This feature will be included in next MBS Plugin prerelease. If you like to try it now, email us.
Added GlobalMemoryBlock property and MemoryBlocks dictionary to JavaScriptEngineMBS class.
Improved JavaScriptEngineMBS to accept Memoryblocks passed as buffers to JavaScript. JavaScript code can work on memoryblock and later you pass it back to Xojo.
Fixed a problem with returning dates in Xojo which affects XLBookMBS.UnpackDate function and others.
This 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.
We hope for good weather and look forward to get the bouncer castle we ever rented.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost. Today we sent a few more invitations. In total something like 600 people invited, but most can't come.
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.