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.

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.

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.

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...

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.

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.

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.
The biggest plugin in space...


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