Our Blog, Filemaker only, Xojo only, Archive (older), Follow us on Twitter, Xing, LinkedIn or Facebook.


Xojo 2017 Release 2


Xojo Inc. released today Xojo 2017 Release 2. You can download it on their website.

This update adds more than 250 improvements, with a focus on 64-bit enhancements, Linux GTK+ 3 and HiDPI, and iOS Launch Screen support..

Xojo 2017 Release 2 features:
  • 64-bit support for XojoScript
  • 64-bit string handling is faster and more consistent
  • 64-bit support for Windows icons and version information
  • GTK3 for Linux
  • HiDPI for Linux
  • iOS Launch Screen support
  • Additional drag & drop events for ListBox
  • IDE and web improvements
The complete list of improvements in Xojo 2017 Release 2 can be found in the release notes.

If you use MBS Plugins and the GTK classes, please update to 17.4pr2 or newer plugins.
This includes GTK Window class, OpenDialogMBS, Linux WebKit classes and window functions.
But some changes to picture handling for GTK3 affect all plugins using pictures.

MBS Xojo Plugins, version 17.4pr2


New in this prerelease of the 17.4 plugins:
  • Updated CURL Library to 7.55.1.
  • Added convenience properties Name, Model, Manufacturer and DisplayName for MidiObjectMBS class.
  • Improved GTK classes for future.
  • Modernized GetInfoCertInfo for newer CURL version.
  • Added MemoryUsed and MemoryHighwater properties to SQLite3MBS class.
  • Reorganized plugins. From 65 down to 39.
  • Merged Nikon and Canon plugins into Cameras Plugin.
  • Merged LCMS2, OCR, GIF, PNG, LargeImage, JPEG and Tiff plugins into Images plugin.
  • Merged PHP, CUPS, markdown, RegEx and Tidy into Tools plugin.
  • Merged Twain into Picture plugin.
  • Merged DirectShow, WIA, WinDragDrop, TAPI and WinICM plugins into Win plugin.
  • Removed SQLAnywhere plugin part as that functionality is now available in SQL Plugin.
  • Removed imedia, TCMPortMapper and FTPParse plugin parts as those were really outdated.
  • Removed ImageMagick, LCMS, QTKit and QuickTime plugins. They are archived now.
  • Removed QuickDraw based classes: MacPictMBS, PaletteMBS and related graphics methods.
  • Removed old MacOS Classic classes: WindowGroupMBS, ClickThroughMBS, NumberFormatMBS, DateFormatMBS, AFPURLMBS and InternetConfigMBS.
  • Changed LDAP functions to default to protocol version 3 with UTF-8 as default encoding.
  • Fixed NSPipeMBS class to no longer crash app for broken pipes. We set the signal to be ignored in Constructor.
  • Fixed bug in SKProductsRequestMBS which could lead to crash if you use the class and release instances before you got the event.
  • Updated SQLite to version 3.20.0.
  • Added more constructors for CFURLMBS class.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

URL scheme handling in Xojo


Handling URL schemes in both Mac and Windows can be tricky.
For Mac you need to define plist entry to declare the URL scheme and later handle the AppleEvent.
For Windows it is more difficult. First you edit registry to declare your URL scheme. Than you need to handle the URL as start parameter. But as a second copy of your app may be launched, you need to talk yourself to the first instance via IPCSocket and pass URL command to main app.

Robert Beier from Dibomedia GmbH in Leipzig recently implemented a helper class to handle this and put it on githup:

github.com/CranberryStackCookie/xojo-url-scheme

Feel free to send feedback including bug fixes to him. And next time you meet him at a Xojo conference, you can of course invite him for a drink!

Special Complete Upgrade offer for MBS Xojo Plugins


For next plugin release 17.4, we will have some reorganization in the plugins. Some smaller plugins get merged, some older stuff dropped and some parts move to other plugins. There may some change needed for people who don't have the Complete license key.

As over 80% of our users have the Complete set instead of individual parts, we make a special offer to all users with individual parts:

Buy the Complete Update in August 2017 to go from whatever part you have to the complete set.
Depending on what part you have, you save up to 50% this way: Order now

We will not stop selling individual parts right now, but as of today we remove QuickTime, Controls, Lion & Leopard from the price list.

Please do not hesitate to contact us for questions.

MBS Xojo Plugins, version 17.4pr1


New in this prerelease of the 17.4 plugins:
  • Updated DynaPDF to version 4.0.12.32.
  • Fixed memory leak in XL Plugin for Windows (leak of GDI handles).
  • Added RAWSocketMBS class.
  • Changed DynaPDFMBS.HighlightPattern to create highlight annotations instead of drawing rectangles.
  • Fixed bug in BarcodeGeneratorMBS class with generating barcode without text.
  • Added exceptions for NSImageMBS constructors. You'll get an UnsupportedOperationException if image creation fails.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MySQL with SSL in MBS Xojo SQL Plugin


Today an example on how to connect to MySQL via MBS SQL Plugin in Xojo:

dim con as new SQLConnectionMBS try // Specify SSL key file Dim keyFile As FolderItem #If TargetMacOS Then // pick from inside budnle keyFile = App.ExecutableFile.Parent.Parent.Child("Resources").Child("client-test-key.pem") #Else // pick next to exe file keyFile = GetFolderItem("client-test-key.pem") #EndIf con.Option("MYSQL_SSL_KEY") = keyFile.NativePath // Specify SSL certificate file Dim certFile As FolderItem #If TargetMacOS Then // pick from inside budnle certFile = App.ExecutableFile.Parent.Parent.Child("Resources").Child("client-test.pem") #Else // pick next to exe file certFile = GetFolderItem("client-test.pem") #EndIf con.Option("MYSQL_SSL_CERT") = certFile.NativePath // set where to find the MySQL client library #If TargetMacOS Then // pick from inside budnle con.SetFileOption con.kOptionLibraryMySQL, App.ExecutableFile.Parent.Child("libmysqlclient.18.dylib") #elseif TargetWin32 then // pick next to exe file con.SetFileOption con.kOptionLibraryMySQL, App.ExecutableFile.Parent.Child("libmysql.dll") #elseif TargetLinux then // pick next to exe file con.SetFileOption con.kOptionLibraryMySQL, App.ExecutableFile.Parent.Child("libmysql.so") #EndIf dim server as string = "myuser@mydb" dim DBLogin as string = "xxx" dim DBPassword as string = "xxx" con.Connect(server, DBLogin, DBPassword, SQLConnectionMBS.kMySQLClient) If Not con.Error Then MsgBox "We are connected!" Else MsgBox con.ErrorMessage End If catch r as RuntimeException MsgBox r.message end try

If the options MYSQL_SSL_KEY, MYSQL_SSL_CERT, MYSQL_SSL_CA, MYSQL_SSL_CAPATH or MYSQL_SSL_CIPHER are set, the plugin calls mysql_ssl_set function to pass those to MySQL client library.

Good bye Phoenix!


Leaving soon from Phoenix airport.
I enjoyed a great week in Phoenix with the FileMaker DevCon and seeing so many developers:



I look forward to come back in one of the next years. There is still plenty left to see.
The picture above is from Dobbins Lookout in the South Mountain Park, a viewing place you can drive to south of downtown up on the hill (700m high).

And thanks to the Xojo developers who came to my Xojo developer meetings in Tucson and Phoenix.

The big cleanup for our Xojo plugins


There is something I’d like to talk about. Fewer people are using Real Studio and as we approach the end of live for 32-bit on all operation systems, the days of Real Studio are counted. Everyone should move this year to Xojo in order to support 64-bit later this year.

For my Xojo and Real Studio plugins, I do consider dropping Real Studio versions. Old plugins stay of course available for a long time, but download rates on current plugins in the Real Studio format are far down (<3%). Would someone miss newer plugins not being available in Real Studio format?

Second I may do a big cleanup and remove old stuff like everything related to QuickTime, FSSpec, GWorld pictures and maybe a few more like the older overlay window class. We could even consider dropping Carbon for Mac. Wait, I think this is still used for console projects, so we may need to keep it around.

On the plugin itself, we may merge some to reduce the number of plugins we deliver and make it easier to manage them. Or otherwise split them more into individual ones, so you can easier sort out the parts you don’t need. Not sure yet.

Otherwise I could really cleanup more aggressive and remove some parts. For example the ImageMagick plugin is not well maintained by me as I favorite the GraphicsMagick one for my own projects. Same for the PHP plugin which is not the best thing in the world as the php code misses usually extensions and the apache environment. Next to drop could be LCMS Plugin for the older 1.x version of the library. Everyone should have moved to 2.x already.

In general unless a lot of people relay on something, the cleanup could make my life easier, the build processes and deployment faster and finally with less plugins to load actually give faster Xojo startup times.

What do you think?

Raw Sockets for Xojo


As you may know Xojo has a TCPSocket and an UDPSocket class for taking TCP and UDP protocol with other applications and define your own protocol on top. In our plugin we have a UDPSocketMBS class for more options and even an UDPSocket class for iOS. If you need high level application protocols like HTTP, FTP, SMTP or IMAP, you can always use our CURL Plugin.

Now recently someone asked for a raw socket to go more low level. So I implemented RAWSocketMBS, which allows you to specify in detail the address family, socket type and protocol you like to use. And this includes using raw sockets where you can provide your own headers for IP packets. For a truly raw socket, your app needs root permissions on a computer as you can mess up a lot by sending wrong IP packets, so be careful!

So our new RawSocketMBS class can be simply used to make your own UDP/TCP socket, one for ICMP to ping or any of the other 30 protocols. You can decide if you let the OS create the headers for your packets or you create them yourself.

If you like to try, either wait for 17.4 prerelease plugins or email me for an early beta.

MonkeyBread Software Releases the MBS Xojo Plugins in version 17.3


Nickenich, Germany (July 18th, 2017) -- Monkeybread Software releases version 17.3 of the MBS plug-in for Xojo.

The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo development environment with 2,400 classes featuring over 62,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets.

Some of the highlights on the 17.3 update:

If you are interested in using SNMP (Simple Network Management Protocol) queries to check status of your network devices, you can now use our NetSNMPMBS class.

To select fonts on Windows you can now use the WindowsFontDialogMBS class. The dialog can be preset, provides an apply button with an event to live show the new font in your document and various other events to know its state. With various properties you can customize the appearance of the dialog.

While the next macOS version is in beta, we already implemented new functions to support newer image and video formats there. This plugin also fixes a few issues, so you can now use our plugins on the latest macOS beta.

For our XL functions to read and write Excel documents, we can now load and save partial documents. If you have huge documents, using a temporary file can reduce the memory requirements. And if you only need data from one sheet inside a big document, loading only that one sheet can speed up processing a lot.

For CipherMBS class we changed CipherInit, EncryptInit and DecryptInit methods to return a boolean and indicate whether they were successful. You may need to update your code.

Our WindowsDeviceModeMBS class is updated for handling setup strings better in Xojo 2017r1. This is important as the format changed and you may want to avoid trouble.

We got PNG library with SSE2 for Mac enabled, context menu in overlayMBS, better handling of emails, better PDFKit annotations, CURL form data inspection and much more.

Finally we updated SQLite to 3.19.3, PostgreSQL to version 9.6.3, OpenSSL to 1.1.0f and 1.0.2l, libPNG to version 1.6.30 and DynaPDF to 4.0.11.31.

See release notes for a complete list of changes.

MBS Xojo Plugins, version 17.3pr7


New in this prerelease of the 17.3 plugins:
  • Added WindowsDeviceModeMBS.ApplyToSetupString method.
  • Updated WindowsDeviceModeMBS class methods for SetupString to handle 2017r1 SetupString format.
  • Added XLBookMBS methods to load partially and load/save with temp file.
  • Added GMImageMBS.PNGLibVersion function.
  • Changed Contacts, CoreLocation and MapKit plugin parts to better load on macOS 10.13 and not crash.
  • Added check to CGPDFDocumentMBS to raise out of memory exception in low memory conditions to avoid crashes later.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS Xojo Plugins, version 17.3pr6


New in this prerelease of the 17.3 plugins:
  • Enabled SSE2 extension for libPNG for macOS as all Macs with Intel CPU should have SSE2.
  • Updated libPNG to version 1.6.30.
  • Updated DynaPDF library to version 4.0.11.31.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Summer Sale in Xojo Store


Xojo Inc. announced a sale in their store for add-ons to Xojo:

Sale in the Xojo Add-On Store - 20% off!

Beat that summer heat, stay inside with Xojo! Between today and July 16th, shop our add-on store and save 20%, sale includes XDC Videos! Simply use discount code SPLASH when you check out in the store!

Shop the Xojo Add-ons store to find third party products that will help you develop faster and do more! The store includes developer tools, user interface add-ons, database extensions, distribution tools and learning materials, like training videos and magazine subscriptions.

Get access to the 2015 or 2016 Xojo Developer Conference session videos (plus slides) for 20% off. And don't forget, you can still save $200 on your XDC 2018 registration when you sign up now!

Shop now!

If you like, you can get MBS licenses there or contact us directly for the same discount on new licenses.
Same coupon code should work for MBS Orders via Share-It.

MBS Xojo Plugins, version 17.3pr5


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

New Country and Territory promotion


As you may know our MBS Plugins are used in over 55 countries (FileMaker) and 74 countries (Xojo).

But still there are a lot of countries left, so we’d like to offer a promotion:

Get a second year of updates for free when purchasing a new license from us in July when the order comes from a country we not yet have customers from. For some bigger countries, new state/province is also fine.

After a purchase, we can definitive say whether you are from a not yet listed country, so please contact us before/after purchase to check.

You may wonder which countries we don’t have clients from?

FileMaker:
In Europe for example Poland, Ukraine, Serbia and Bulgaria.
In North America for example Alaska, New Mexico and Maine in USA, Ontario in Canada.
In South America for example Peru, Ecuador, Panama and Guyana.
In Asia for example Vietnam, Indonesia or Pakistan.
In Africa there is a lot of space between Egypt and South Africa.

Xojo:
In Europe for example Lithuania, Montenegro or the islands Sardinia and Corsica.
In North America for example Alaska and South Dakota.
In South America for example Peru or Nicaragua.
In Asia for example Vietnam, Bangladesch and Papua-Neuguinea.
In Africa anything between Namibia and Egypt.

So if you like to get a license and contact us and we give you a free update if you add an entry to our country list or at least live somewhere we have no customers yet.

xDev Magazine Issue 15.4 Issue


The July/August (15.4) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Shrink Your Apps by Mattias Sandstrom
Mattias with some techniques to make your built apps smaller.

Windows Fast Listbox Updating by Eugene Dakin
If you want your listboxes updated quickly, you can run into flickering on Windows. Eugene shows how to solve that with some handy routines.

Berlin, Here I Come by Marc Zeedar
Marc went overseas for the first time in years for the MBS Xojo Conference in Germany in May. Here's what happened, with gobs of photos.

Sharing Data for Health, Part 2 by Jc Cruz
Jose concludes the data sharing project he started last issue.

Optimizing Xojo Apps by Christian Schmitz
Xojo is great at handling many technical details for you, but some of that management costs performance. Christian shows how to avoid the slowdowns with these tips.

Plus: Xojo and WWDC, initializing controls, pg_dump, and more!

Linux Loader Trouble


The last week we once again run into an issue with the Linux shared library loader. In a Xojo app you may end up having several libraries several times in different versions. For example the system provides the zlib library in some version, e.g. 1.2.3 on an older Linux installation. The MBS Compression Plugin uses zlib in version 1.2.8 while DynaPDF uses a custom patched 1.2.7 for the PDF compression. Also the Xojo runtime may come with its own version.

Now it seems like there can be a problem. All those versions of the library may or may not export publicly their functions and you may have several deflateInit functions around. Now when resolving the functions references in a shared library (e.g. plugin), the loader will pick one by name to solve it. And for us this was catastrophic a few times. Because you end up getting a different version of the library than expected. DynaPDF brings 1.2.7, but may end up getting tied up to 1.2.3 or 1.2.8. For PNG, JPEG, zlib and other libraries, there are checks in place to make sure the header files and the library matches in version. If versions won’t match data structures may have different sizes or parameters to functions have different meanings.

In DynaPDF the resulting error from a different zlib version is:

'EndPage: Error compressing stream!' (code:14, type:536870912)


This is solved for MBS Plugin 17.3pr4 by setting all non-exported symbols to local symbols. This should make all functions to resolve within the library take precedence over functions from other libraries.

For DynaPDF we added GetPNGVersion, GetJPEGVersion, GetTIFFVersion and GetZlibVersion functions. They allow you to query the jpeg, png, tiff and zlib versions used in the DynaPDF library.

PS: For FileMaker Cloud we do the same fix next prerelease.

MBS Xojo Plugins, version 17.3pr4


New in this prerelease of the 17.3 plugins:
  • Fixed crash with 64-bit for Execute methods in AuthorizationMBS class.
  • Changed linux linking to avoid loader to connect function to wrong library if several versions of the library exists.
  • Added MinY, MinX, MidY, MidX, MaxY and MaxX for NSRectMBS class.
  • Updated DynaPDF library to version 4.0.11.30.
  • Added OverlayMBS.menuForEvent event.
  • Turned properties for PDFKit annotation classes into real properties so you see them in debugger.
  • Fixed bug with DynaPDF and optimize command when using ICC based JPEG pictures.
  • Fixed problem with PDFAnnotationMarkupMBS not setting QuadrilateralPoints.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

JavaScript callback in HTMLViewer on Mac


Did you know you can register you own javascrpt callbacks for a HTMLViewer on Mac?

 

The WebScriptCallbackMBS class helps to handle such methods calls in JavaScript and redirects them to an event. In the Open event of the window, we add the WebFrameLoadDelegate to the HTMLViewer:

 

wui=new MyFrameEvents

web.InstallWebFrameLoadDelegateMBS wui

 

We need to subclass WebFrameLoadDelegateMBS in order to catch the windowScriptObjectAvailable event and add our MyBrowser object to the JavaScript name space:

 

Class MyFrameEvents Inherits WebFrameLoadDelegateMBS

EventHandler Function windowScriptObjectAvailable(windowScriptObject as WebScriptObjectMBS) As boolean

// Install an Object called "MyBrowser" on the javascript document object

// Any function call inside will tricker callback event

windowScriptObject.setWebScriptCallback "MyBrowser", app.callback

End EventHandler

End Class

 

Next we need to subclass WebScriptCallbackMBS class and fill the Callback event and do whatever our method should do:

 

Class MyScriptCallback Inherits WebScriptCallbackMBS

EventHandler Function Callback(Name as string) As variant

System.DebugLog "Function: "+name

Select case name

case "MsgBox"

MsgBox me.ArgumentValue(0)

case "PrintDialog"

call MainWindow.web.PrintDialogMBS

case "SetText"

MainWindow.Output.text=ArgumentValue(0)

end Select

End EventHandler

End Class 

 

As you our event can be called giving the name of the method called and the parameters can be queried via ArgumentValue function. The JavaScript call looks like this:

 

MyBrowser.SetText('Hello');

 

Sadly we can't provide the same for Windows so far. But Mac this is great already.


Xojo meetings in Arizona


As you know I come to attend the FileMaker DevCon 2017 in Phoenix, Arizona.

As I stay a few extra days in Phoenix, we will have two Xojo developer meetings:

22nd July 2017 in a restaurant near Phoenix.
28th July 2017 in a restaurant near Tucson.

I know I have over 20 Xojo developers using my plugins in Phoenix alone.
If you like to join, please contact me soon.

I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in Xojo, upcoming conferences and what's new in plugins.

Older blog entries:

2017-06-22 OmegaBundle final extension
2017-06-21 MBS Xojo Plugins, version 17.3pr3
2017-06-20 XojoTalk podcast 2^5
2017-06-15 Virtual Xojo User Group - June 2017 Meeting Is Today
2017-06-13 Playing with CoreML in Xojo
2017-06-13 OmegaBundle 2017 ends on weekend
2017-06-11 Plugin wishes for macOS 10.13 and iOS 11?
2017-06-10 Looking for speakers for XDC 2018
2017-06-09 MBS Xojo Plugins, version 17.3pr2
2017-06-09 Developer Meeting in Nuremberg
2017-06-08 Save the date: MBS Xojo Developer Conference
2017-06-07 Austin Xojo Meetup in July - With Geoff Perlman & Others
2017-06-06 Xojo Meeting in Netherlands
2017-06-05 MBS Xojo Plugins, version 17.3pr1
2017-06-03 Windows Task Monitor written in Xojo
2017-05-31 Job Offer: Xojo Developer to work with Light Blue Software
2017-05-30 Xojo Conference planning 2018
2017-05-30 Xojo Versions used
2017-05-30 Enable Web Inspector for WebViewer
2017-05-29 Show progress in task bar on Windows

Archives

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
XML: RSS Feed XML: Atom Feed