MonkeyBread Software releases SOAP Kit 2.3 for Xojo and Real Studio

NICKENICH, Germany (February 26th, 2013) -- Monkeybread Software releases version 2.3 of the MBS Xojo SOAP Kit.

With this SOAP Kit, you can parse the webservice description file (WSDL) and generate source code for all the methods, constants and classes defined in your webservice. You add this code to your project together with additional source code provided from MBS. Now you can call the web service methods like any other method in your code.

The new versions adds a new sample project for VAT service of European Union, improves handling of arrays and some keywords. The generated code now contains Clone methods, Copy and Value constructors for easier usage.
  • Complete SOAP solution for professional Xojo (Real Studio) users
  • Parses the description of your webservice as WSDL.
  • Out SOAP Utility generates for you:
    • Classes for each data type in the WSDL
    • Modules with constants defined in the WSDL
    • Modules with methods to call WSDL functions synchronously and asynchronously
  • Includes shared code for common tasks:
    • Error handling
    • Verify WSDL matches between Client and Server.
    • XML creation and parsing
  • All source code generated for your application is not locked or encrypted.
More Information on the SOAP Kit website.

FileMaker Meeting in Colonge

FileMaker Stammtisch Köln

5th March, 19:00 Uhr in the Pohlhof restaurant.

Pohlhofstr. 3, 50765 Köln,

Let's talk about what's new in FileMaker. And who is going to San Antonio?

Print to PDF File on Mac OS X with Xojo

Today I found a way to print to PDF file in Cocoa app with Xojo. Next plugin prerelease will have the required functions to have this code work:

Sub Action() // print to PDF in Xojo Cocoa app // change print info to go to dim s as NSPrintInfoMBS = NSPrintInfoMBS.sharedPrintInfo dim d as MemoryBlock = // save old s.SetSaveDestination SpecialFolder.Desktop.Child("test.pdf") // now print something dim g as Graphics = OpenPrinter If g <> Nil Then g.DrawString "Hello World PDF", 20, 20 End If = d // restore original settings // now print something to regular printer g = OpenPrinter If g <> Nil Then g.DrawString "Hello World Printer", 20, 20 End If End Sub

PS: New plugin is in dropbox.

New universal Hash and Encrypt functions for MBS FileMaker Plugin

With latest prerelease we add two very universal hash and encryption functions:

MBS( "Hash.Digest"; Algorithm; InputType; InputData; InputEncoding; OutputType; OutputInfo )
MBS( "Encryption.Cipher"; Direction; Algorithm; KeyType; KeyData; KeyEncoding; InputType; InputData; InputEncoding; OutputType; OutputInfo; IVType; IVData; IVEncoding )

The Hash.Digest function can calculate hashes. For Algorithm we support MD4, MD5, SHA, SHA1, MDC2, RIPEMD160, SHA224, SHA256, SHA384 or SHA512. You pass input data and receive the hash in the requested output format.

The Encryption.Cipher function is a little bit more complex. First you pass direction which can be "encrypt" or "decrypt". Than you pass algorithm. We have a lot of combinations of algorithms, bit depths and block cipher mode as you below in the list. Finally you pass input data and receive the encrypted data in the requested output format.

Supported encryption algorithms:


Input data

For input, initial values or key, you pass input with type, data and info. Type can be one of several types: Text, Container, Image, Path, PDF, Data, base64 or Hex. For example you can pass type "text", the actual text with the data parameter and the text encoding to use with the info parameter. If you prefer to pass in a hex string as data, than please pass "hex" as type. You can also pass a file path if type is "path" to read a file. Finally you can pass container values. As type you can pass "Data" to read main stream of container, "Image" to accept any image in the container or "FILE", "PDF", "JPEG", "PNG", "TIFF" or "GIF" for a specific stream in container. If you pass "Container" as type, the container is packed and passed with all streams, so after decrypting you will have the same container back.

For output you can select between various formats: Base64, Hex, Text, File, Path, GIF, TIFF, PNG, PDF, JPEG or Container. So if you encrypted something you can output it to a file on disk (type path), as base64 or hex encoded text or as a container with a FILE stream. After decrypting the data you can return it as text with a specific encoding, write it to a file (type path) or return as container with a specific stream, FILE stream or an unpacked container.


Calculate MD5 from text:
MBS( "Hash.Digest"; "MD5"; "Text"; "Hello World"; "UTF-8"; "Hex"; "" )

Calculate SHA512 from image in container and encode it as base64:
MBS( "Hash.Digest"; "SHA512"; "Image"; MyTable::MyContainer; ""; "Base64"; "" )

Encrypts some text with AES:
MBS( "Encryption.Cipher"; "encrypt"; "AES-128-CFB"; "Text"; "Test Key"; "UTF-8"; "Text"; "Hello World"; "UTF-8"; "Hex"; "" )

Encrypts a container:
MBS( "Encryption.Cipher"; "encrypt"; "AES-256-ECB"; "Hex"; "1234567812345678"; ""; "Container"; MyTable::MyContainer; ""; "FILE"; "data.dat" )

and decrypt the container:
MBS( "Encryption.Cipher"; "decrypt"; "AES-256-ECB"; "Hex"; "1234567812345678"; ""; "FILE"; MyTable::MyEncryptedContainer; ""; "Container"; "" )

MBS Xojo / Real Studio Plugins, version 14.1pr2

New in this prerelease of the 14.1 plugins:
  • Added more CoreImage functions.
  • Improved CFBookmarkMBS module with new overloaded methods using CFURLMBS.
  • Added RenderPageToImageMT function to raster PDF pages in preemptive thread.
  • Fixed an issue where plugin would call QuickTime function on Windows where no QuickTime is available.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 4.1pr2

New in this prerelease of the 4.1 plugins:
  • Added new functions Encryption.Cipher and Hash.Digest with a lot of options.
  • Fixed a build problem on Windows where some parts where not probably recompiled for 4.0 release (plugin still reported version 3.5).
  • Added Dialog functions for showing message dialogs.
  • Improved Form Utility. New menu command to open file. If field or form names are not unique, we use index, not name. Retina is now supported and last 10 URLs are saved in preference file.
Download at or ask for being added to the dropbox shared folder.

German Xojo Evangelist & Italian Xojo Evangelist Positions

Today was a new forum post with a job offer from Xojo, Inc:

Xojo, Inc. is looking for two qualified and enthusiastic individuals to join our global marketing team as a German Xojo Evangelist and an
Italian Xojo Evangelist. The ideal candidates would be passionate about Xojo and software development, comfortable answering technical and sales related questions, have some experience with other development tools to better enable them to answer technical questions (such as xcode, Live Code, Visual Studio, etc.) and be versed in social media.

Duties include:

  • Conduct Xojo webinars for international audience modeled after English language webinars;
  • Localize website into target language and maintain regularly for changes and new content;
  • Localize provided Google Adwords to increase search traffic;
  • Grow Xojo community by engaging with users on Twitter, Facebook, Google + and other social media websites;
  • Localize press releases; and
  • Assist with other activities unique to language.
This position is not a full-time position, estimate spending ~10 hours week.

While I like the idea of having more Xojo staff living in Europe, I fear that breaking up contracts with local distributors in German and Italian could have negative effects. We already lost translation of the IDE and still wait for the Xojo manuals in German. Also some people prefer to buy without credit card from a local company instead of buying from Xojo directly. Finally I hope the 10 hours per week is quickly extended because I bet you need more time just for answering support questions...

Plugin Decision Graph

Just created a plugin decision graph for which plugin file to use for which FileMaker version for Pro or Server.

The rules are here:
  • For FileMaker Pro you need the 32bit version.
  • For FileMaker Server 12 with WebPublishing and for Filemaker 13, you need 64bit plugin.
  • For FileMaker Server 12 with scheduled scripts you need 32 bit plugin.
  • But for FileMaker Server 11 you need 32bit version.
Now as you know which you need, you can pick the right plugin from our archive.

For Mac the plugin in the server folder has 64bit and 32bit code, so you can use it for all FileMaker versions on Mac with Pro and Server.
For Windows, you either need the fmx file or the fmx64 file.

Download image: plugindecision.jpg

MBS Xojo / Real Studio Plugins, version 14.1pr1

New in this prerelease of the 14.1 plugins:
  • Changed GammaMBS for Mac, so you can have one GammaMBS object for each screen.
  • Updated GammaMBS class to work on newer Macbooks with 1024 entries in the gamma table.
  • Fixed issue with HTMLViewer.PrintDialogMBS function, so it actually prints a second time.
  • Updated LCMS2 library to version 2.6.
  • Added LCMS2ContextMBS class for context information. Now you need to pass objects of this class instead of variant.
  • Updated DynaPDF library to version
  • Added SQLDateTimeMBS Constructor, DateValue and Set method to work better with normal date objects.
  • Fixed bug with printing on HTMLViewer. PrintingPageMBS function returned nil.
  • Added CFProxyMBS class to detect proxy on Mac.
  • Added WinHTTPClientMBS class to detect proxy on Windows automatically.
  • Improved event handling for CFSocket, Bonjour classes, FSEvents, Mac HID classes, IOIOPowerSourcesMBS and SleepNotificationMBS so it works better if you run it on a thread.
  • Fixed problem with Graphicsmagick, so JPEG 2000 works again on Mac and Linux.
Download: Or ask us to be added to our shared Dropbox folder.

MBS Filemaker Plugin, version 4.1pr1

New in this prerelease of the 4.1 plugins:
  • Fixed bug with Mac file path handling for our text functions. String.ReadTextFile for example failed.
  • Fixed problem with DynaPDF.OpenPDFFromContainer crashing if you passed empty container.
  • Changed Trace command to no longer show serial number.
  • Added WebViewer functions to zoom page or text.
  • Added DynaPDF.FindText function.
  • Fixed caching issue with calendar and addressbook script notifications.
Download at or ask for being added to the dropbox shared folder.

Training Day Before XDC

BKeeney Software is happy to announce that we are offering our 2nd annual training day before the Xojo Developer Conference 2014 in Las Vegas, Nevada. Ask questions and meet the entire BKeeney Software staff. Learn from Xojo experts with over a decade of producing high quality desktop and web applications for clients all over the world! This full day of training consists of:
  • Morning Session: It's all about Xojo desktop apps and some of the tricks and techniques that we use to make high quality applications
  • Lunch
  • Afternoon Session: It's all about Xojo web applications and how to make high quality web apps.
This year the training is more interactive and hands on. We also are asking you what topics you want us to cover (we ask at purchase checkout) so we can incorporate that into what's turning out to be a very full day of Xojo training.

All attendees get a complimentary three month subscription to our Real Studio and Xojo video training series. That's over 42 hours (and growing) of video and hundreds of project files.

For more information on the BKeeney Software training day please visit For more information on the Xojo Developer Conference, please visit

This Friday is the last day to get our discounted price so save yourself some money by signing up sooner rather than later.

I look forward to seeing all of you in Las Vegas!

WebTextField autocomplete trouble and fix

There is a problem with WebTextField. On certain browsers the user may have the field being autofilled and no event is triggered, so the Xojo runtime does not notice the change and the text property in code has not the new text.

For that there are two Feedback cases: 30289 and 30875.

Now a fix is possible like this:

dim s as string
s = "document.getElementById('"+TextField1.ControlID+"_inner').onchange = "+_
"function () { Xojo.controls['"+TextField1.ControlID+"'].fireAction(); };"
ExecuteJavaScript s
s = "document.getElementById('"+TextField1.ControlID+"_inner').onpropertychange = "+_
"function () { Xojo.controls['"+TextField1.ControlID+"'].fireAction(); };"
ExecuteJavaScript s

As you see we install onchange and onpropertychange event handlers in javascript and fire the action event for the control which causes the TextChange event to fire later. This way the xojo runtime knows something happened in the textfields. You can run this in a shown event, so the control is setup in the browser and you modify it early.

As far as I got the feedback, it seems to fix the problem here for a client.

Xojo Developer Conference sold out!

Wow, the first Xojo developer conference to sell out.

PS: if you cancel, please let people know via xojo forum, so others can take the chance to get your seat.

MonkeyBread Software Releases the MBS Xojo / Real Studio plug-ins in version 14.0

NICKENICH, Germany (February 4th, 2014) -- Monkeybread Software releases version 14.0 of the MBS plug-in for Xojo and Real Studio.

The MBS plug-in comprises a collection of several plug-in parts which extend the Real Studio development environment with 1,900 classes featuring over 50,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console.

Some of the highlights on the 14.0 update:

Our new SSH plugin allows you to remotely login to a computer. For the connection you can let the plugin connect a socket or pass an already connected TCPSocket to the plugin. This plugin is supported on Mac OS X, Windows and Linux and allows better integration into your app than running ssh via shell class.

For Cocoa we added a new NSButtonCellMBS class. For various control classes we got new events like TextDidBeginEditing, TextDidEndEditing and TextDidChange. Our OpenDialogMBS class now has a Cocoa implementation and for OverlayMBS class the WindowHidden and WindowShown events work now on Cocoa target.

We updated our AVFoundation plugin for Mac OS X 10.9 Mavericks. This adds more than 400 new functions and 18 new classes. For the events, we now can pass variant tags everywhere. This way you can pass context information to the events. With AVFoundationMBS.WriteCGImageToFile method you can save images in background for even better performance extracting frames from a video.

The SQL Plugin now has be updated to use properties instead of methods, so you see more values in debugger. The new fields and parameters dictionaries in the SQLCommandMBS class allow you to see parameter and field values in the debugger. If you set our new RaiseExceptions property to false, you will not see SQLErrorException, but you can check the Error properties.

For Linux we added support for the window transparency functions. The GTKWindowMBS class can now be used to assign a new Icon to a window. Also we fixed some linker issues on Linux with plugins and no longer optimize away stack frames for better crash reports.

The PictureMBS class now handles 16bit grayscale images for some operations. The new InputData property in CURL classes allows providing data for upload without using Read event. The GetVariantArrayMBS function allows casting any array of objects to an array of variants. With CallDelegateOnMainThreadMBS method you can run methods on the main thread from any other thread. The VerifyEmailMBS function can check emails for syntax and query if the domain has a valid mailbox server. Finally the SignalHandlerMBS class can set a flag and ignore signals, so you can handle them later, e.g. catch Control-C in a console app and gracefully exit your app.

DynaPDF has been updated to version and can now highlight text with ignoring case and accents. LibXL is updated to version 3.5.4 and the XMP Toolkit to version 5.5.

See release notes for a complete list of changes.
If you have questions, please don't hesitate to contact us.

MBS FileMaker Plugin 4.0 for OS X/Windows - More than 2200 Functions In One Plugin

Nickenich, Germany - MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 4.0 for Mac OS X or 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, Mac, 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 4.0 has been updated and now includes over 2200 different functions, and the versatile plugin has gained more new functions:
  • For PDFKit on Mac OS X we added functions to print PDFs directly without dialogs to a printer. If that printer is a fax, you may also be able to fax the PDF. Various options can be controlled like the target printer, page format or the fax number.
  • With new functions for QuickTime on Mac OS X you can open movie files, query metadata and create preview pictures. Also you can play sound files directly.
  • For Mac OS X we have a new function for the webviewer. You can directly print the current website to a PDF file and archive it.
  • For DynaPDF, our cross platform PDF engine, we have new functions related for form fields. You can query field information, get and set form values. Functions for bookmarks help you manage the list of content. You can add clickable link areas in your PDF to point to a website (URL) or to a page of your current PDF. For Windows we can generate previews for PDF files for showing them in a container. Our text highlighting function got improvements to handle case insensitive searches and ignore accents for better search results. Finally we have parse content function so you can extract the commands needed to draw a page.
  • The CURL functions for upload, download or email sending can now handle PDFs much easier. The function Process.IsRunning can check if a certain application is running. For our global variables defined by the plugin you can now get the list of all variables.
  • New JSON functions allow the querying of objects much easier. You can now create SHA512/256 HMAC hashes much easier, often used for passwords on web services.
More details in the release notes. Please take the time to check our 200 example databases and check where you can use our plugin features in your solutions.

Xojo Training Days in Konstanz, Germany

For our German speaking customers, we offer training days:

Für unsere deutschsprachigen Xojo Entwickler bieten wir dieses Jahr auch wieder eine Schulung an. Am 22. und 23. Mai 2014 im Viva Hotel in Konstanz. Lernen Sie neues über Xojo kennen, vertiefen Sie ihre Kenntnisse und tauschen Sie sich mit anderen Entwicklern aus. Das genaue Schulungsprogramm hängt natürlich davon ab, ob iOS am Tag der Schulung verfügbar ist in Xojo und welche Wünsche die Teilnehmer haben. Bitte bringen Sie Ihre Fragen mit.

Herzlich sind Sie auch eingeladen am 22. Mai abends vorbei zu schauen zu einem Xojo Stammtisch.

Das Programm aktuell:

21. Mai
ab 18:00 Abend vorher, Gemütliches Beisammensein.

22. Mai
ab 9:00 Xojo Schulung: Xojo Grundlagen für Einsteiger um Umsteiger.
ab 18:00 Xojo Stammtisch. Jedermann ist herzlich willkommen andere Xojo Entwickler kennen zu lernen.

23. Mai
ab 9:00 Xojo Schulung: Xojo für Fortgeschrittene

Treffen Sie andere Xojo bzw. Real Studio Entwickler und lernen Sie neues kennen aus Ihrer Lieblingsentwicklungsumgebung.

Für die Schulung haben wir folgende Themen im Angebot:

* Einführung in Xojo, Rundgang durch die Entwicklungsumgebung.
* Entwicklung einer Beispiel Anwendung mit Datenbank sowohl mit Desktop als auch für das Web.
* Programme ausliefern: Web Apps installieren, Build Scripte nutzen, Programme signieren.
* Anpassung von Web Anwendungen an Mobile Geräte.
* Falls iOS verfügbar ist bis zur Schulung: iOS App Einführung (erster Tag) bzw. iOS Client/Server Anwendung entwickeln (zweiter Tag)
* Und vieles mehr nach den Wünschen der Teilnehmer.

Mehr Informationen und Anmeldung auf unserer Webseite.

Tip of the day: Invisible WebFileUploader with select file button

Compared to the thing I found this morning, this one is even much better. We hide the whole WebFileUploader and move the invisible file selection area over a normal button. This way the file uploader works, but is invisible. This is a solution for feedback case 18068 and I hope Xojo, Inc. can make an official way to do this soon.

So here is the code for the shown event of the file uploader:

// connect + from FileUploader1 to Button1

js = "document.getElementById('"+FileUploader1.ControlID+_
"var chooser=document.getElementById('"+FileUploader1.ControlID+_
"_form').getElementsByClassName('chooser')[0];" +_
"var input = chooser.getElementsByTagName('input')[0];"+_
" = 'position: absolute; left: 0px; bottom: 0px; width: "+str(button1.Width)+_
"px; height: "+str(button1.Height)+"px; overflow: hidden;';"+_
" = 'position: absolute; left: 0px; bottom: 0px; background-color: #FFFFFF;opacity: 0;filter: alpha(opacity=0);width: 100%;height: 100%;';"+_

ExecuteJavaScript js

As you see it's not that difficult. We find the button and the input item from the uploader. Than we assign some css to keep the styles working and add the input area as a child to the button.

Example project:

Tip of the day: WebFileUploader File Types

If you like to limit what file types can be accessed in a file uploader, you can set it like this:

dim js as string = "document.getElementById('" + FileUploader1.ControlID+ _
"').getElementsByTagName('input')[0].accept = 'image/jpeg';"
ExecuteJavaScript js

Put this code in a shown event if you like. It will lookup the file uploader control in javascript, look inside of the input element and set the accept parameter there to image/jpeg. Now you can only select jpeg images. Works of course only for the mime types known on the given PC running the app.

See also Feedback case 32040 for this topic and find there an example project.

New way to obfuscate plugins

In the last days I worked on updating the obfuscate plugin app for Xojo. We had some success with the xojo plugins, but there are still the internal plugins and the runtime library. But instead of changing the files inside the xojo app, we got another idea:
We simply post process the built app, changing all the library names.
Take a look on this screenshot:

As you see we renamed all libraries and also changed all the library references to the new names. So the app is still running perfectly.
Please try it. Project is here: or included with next plugins.

(for Mac app I copied the Frameworks folder out of the app so you see it on the screenshot)

MBS Xojo / Real Studio Plugins, version 14.0pr6

New in this prerelease of the 14.0 plugins:
  • Added SQLValueMBS.setAsBytes method taking string.
  • Added Fields and Parameters dictionary properties to SQLCommandMBS. This way you can inspect field and parameters in debugger.
  • Fixed bug with SQLConnectionMBS and SQLCommandMBS and new Tag property.
  • Changed methods to properties for NSCellMBS class.
  • Changed methods to properties for AVMetadataItemMBS class.
  • Added NSButtonCellMBS class.
Download: Or ask us to be added to our shared Dropbox 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