Custom Xojo Plugin Development

As I spend the last week a lot of time on custom plugins, I'd like to let you know what we offer there:
  • Wrap a static library or interface a DLL
  • Wrap some C/C++/Objective-C code you may want to use
  • Proper memory handling with correct cleanup of allocated objects
  • Exception handling for NSException, C++ Exception or setjmp and raising Xojo Exceptions.
  • Proper thread handling with mutex and redirecting event calls to main thread.
  • Checks in methods to avoid crashes and raise exception early
  • Threaded functions for Xojo to perform work on preemptive thread.
  • Matching class hierarchy for Xojo with subclasses
  • Returning subclasses C++ object with correct subclass in Xojo
  • Object cache to return always the same Xojo object for the same C++ object.
  • Automatic conversion of Xojo objects to matching C++ objects, e.g. Dictionary to CFDictionary/NSDictionary.
  • Automatic conversion with Xojo arrays to/from C arrays
  • Using Xcode 10.3 for 64-bit MacOS
  • Using Xcode 9.4 for 32-bit MacOS
  • Using gcc in various versions for Linux in 32-bit and 64-bit for x86 as well as ARM 32-bit for Raspberry Pi and similar computers.
  • Using Visual Studio 2008, 2010, 2012 or 2017 for Windows, all with 32 and 64bit. By default we use VS 2008 for compatibility down to Windows XP. But we can also use VS 2017 with universal runtime.
  • Optionally support for older Xojo, Real Studio or REALbasic versions.
If you have a project requiring a custom Xojo Plugin, please get in touch. Beside our big plugin collection for the public, we made several dozens of custom plugins over the years.

MBS Xojo Plugins, version 19.4pr4

New in this prerelease of the 19.4 plugins:
  • Improvements for next Xojo version.
  • Added more methods to CVPixelBufferMBS to create them with data, copy data and use more pixel types.
  • Changed SelectSQL method in SQLPreparedStatementMBS to return type RowSet and made it private.
  • Updated ChartDirector to a newer version which loads fonts on MacOS Catalina.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

ChartDirector Fonts and MacOS Catalina

We got an updated ChartDirector plugin to work with MacOS 10.15 Catalina and show fonts as usual.

ChartDirector is our solution for Xojo to create professional charts:
  • 29 types of charts including gantt, box-wisker and 3D charts
  • Per developer royalty free license for Mac OS X, Windows and Linux
  • Full Unicode support
  • No external DLLs
  • One year of free updates
  • Create vector graphics as PDF and SVG files.
  • Export chart as PNG, JPEG, GIF, WMP and BMP.
  • Track cursor movements with a dynamic layer.
  • Use custom fonts.
The fix will be included with next MBS Xojo Plugin prereleases.

Two months till European MBS Xojo Conference 2019 in Cologne

Just two months left before our conference & training for Xojo starts. Order a conference ticket now for 100 Euro off and get a room at the conference hotel. A few spots are still available in August!

Monkeybread Software is pleased to announce the European MBS Xojo Conference in metropolitan Cologne, Germany. We meet in the lovely Dorint Hotel in the center of Cologne. The hotel is in the city center and in walking distance to the main station. Beside our two conference days we have accompanying social programme with our dinner event and optional two training days. For the evenings we have casual get-together in the hotel bar or beer garden.

To give you an update, we have already over 50 attendees signed up from 15 countries:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.



The schedule:

Oct 23rd: Xojo Training in English
Oct 24th: Conference, first day with dinner event
Oct 25th: Conference, second day
Oct 26th: Xojo Training in German

Registration is open. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Dorint Hotel as well as an accompanying social program.

Sessions are to be held in English. Our conference is conceived as a networking event for the Xojo community. The conference is an ideal opportunity for sharing your thoughts and your own development experience with fellow users and developers.

See also conference website, Things to do in Cologne beside our conference and European Xojo Conference FAQ.

MBS Xojo Plugins, version 19.4pr3

New in this prerelease of the 19.4 plugins:
  • Improvements for next Xojo version.
  • Notarized the disk image for MacOS Catalina.
  • Patched ChartDirector to load fonts on MacOS Catalina.
  • Fixed bug in GraphicsMagick font mapping with font names containing spaces (GMImage.Annotate function).
  • Added HMAC function to SHA512MBS class and rewrote it for SHA256MBS, SHA1MBS and MD5MBS classes.
  • Added exceptions to CipherMBS to report if de/encryption fails instead of silently return no or garbage data.
  • Added authorization property for CBManagerMBS class.
  • Added CopyFileMBS class for low level Mac file copy API.
  • Updated to Xcode 10.3.
  • Added PID parameter to CGEventTapMBS constructor to watch only a specific process.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Playing with SpeechRecognition

With MacOS 10.15 Catalina Apple includes some new classes for Speech Recognition. We started with a Xojo plugin to use the classes and do speech recognition:

We add this new SpeechRecognition classes for our plugin:
You can already load a file with SFSpeechURLRecognitionRequestMBS class, initialize a SFSpeechRecognizerMBS object for the designed language and run the request. The example above shows the results in a listbox for inspection.
Coming soon in a beta of MBS Xojo Plugins to be used with a beta of MacOS Catalina. We hope to be ready in time for the fall release!

Windows DLL Loading errors

When you try to load a DLL on Windows via our plugins, you may get back an error message on failure.

Error 126: The specified module could not be found.

You passed an invalid path to the DLL or you tried to load a DLL and it refers to another DLL, which could not be found. For example several DLLs belong together and they should all be in same folder, so Windows can find them. Or a Visual Studio Runtime DLL is missing for the version of the C runtime needed by this DLL.

You can use Dependency Walker application to figure out which DLL is missing.

Error 127: The specified procedure could not be found.

The DLL was loaded, but then an expected function was not found. This could happen if you load the wrong DLL, which doesn't have the functions at all. Or if you have an older DLL, which does not yet export the required function.

Error 193: This is not a valid Win32 application.

Either this is really not a DLL or you mixed 32 and 64bit platforms and got the wrong one. Please make sure you use 32-bit DLL for a 32-bit application and a 64-bit DLL for a 64-bit application.

Error 998: Invalid access to memory location.

The path passed may be invalid and cause a memory access error.

Error 1114: A dynamic link library (DLL) initialization routine failed.

The DLL got loaded, but the initialization routine returned an error message. This may happen with Visual C libraries, if you try to load more statically linked libraries, then you have handles available. Memory may be available, but some handles have a limited list and loading too many DLLs (over 500) can run into a limit.

Connect to Oracle via MBS Xojo SQL Plugin

We recently had a client asking how to connect to Oracle database with MBS Xojo SQL Plugin. So first install Instant Client. For that download it, unzip the folder and put it somewhere you like to have it, e.g. in a C:\Oracle folder. Next you need to add the folder to the PATH variable, so you go to My Computer -> Properties -> Advanced -> Environment Variables -> PATH and add in the list as first item the path to the folder with the instant client libraries, e.g. C:\Oracle\instantclient_19_3.

Now you can use SQLDatabaseMBS or SQLConnectionMBS classes to connect. You may need to specify the database connection string. As we use Oracle, it starts with "Oracle:", so SQLDatabaseMBS knows which driver to use. Next you specify hostname with optional port and service name in format <hostname>[:<port>][/<service_name>]. Please also set option with kOptionLibraryOracle constant to the path pointing to the DLL file. You can either use SetFileOption with folder item, Option() with file path or just let it away and the plugin will look for oci.dll itself. Here some example code:

Dim db As New SQLDatabaseMBS // where is the oci.dll library? Dim fa As FolderItem = GetFolderItem("C:\Oracle\instantclient_19_3\oci.dll", FolderItem.PathTypeNative) DB.SetFileOption(SQLConnectionMBS.kOptionLibraryOracle, fa) DB.DatabaseName = "Oracle:" + "localhost:1521/XE" DB.UserName = "zEPI" DB.Password = "root" if DB.Connect then MsgBox "We are connected. Server Version: " + db.ServerVersionString else MsgBox db.ErrorMessage end if
Please do not hesitate to contact us with your questions.

Under the Radar Podcast

Once again Xojo Inc. sponsors an episode of the Under the Radar podcast.

Originally pointed to by Paul Lefebvre's tweet, I quickly subscribed as they talk about various topics for independent app developers and those episodes are very interesting. They face similar issues as myself and so I like to hear their solutions.

Thanks to David Smith and Marco Arment for their apps and the podcast.

Thanks to Xojo Inc. for supporting the shows.

Do you like this podcast? Or any other good podcasts not to miss?

Combine PDFs 5.4

Monkeybread Software today is proud to announce Combine PDFs 5.4, an update to their popular PDF merge and split tool for Mac OS. With a focus on ease-of-use, Combine PDFs is a lightweight utility which allows anyone to merge PDF files and images into a single PDF file. The user need only drag & drop files onto the program icon. The main window appears, allowing the user to set the order in which the files are joined.

Changes in Version 5.4:
  • Requires MacOS 10.10 or newer.
  • Upgraded to Xojo 2019r1 for dark mode support.
  • Notarized.
Combine PDFs Website

Requires MacOS 10.10 or newer for 64-bit. Older 32-bit version stays available and still works very well.

This application is made with Xojo 2019r1.

MBS Xojo Plugins, version 19.4pr2

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

Vision Framework for Xojo

For the next MBS Xojo Plugins, we worked on including the Vision framework from Apple. Our new vision plugin part (in MacFrameworks) covers the whole framework with all 49 classes and one module for globals. We even include the new features coming with MacOS 10.15 Catalina release. All functions can be used asynchronously with delegates for the callbacks. The plugin makes sure those callbacks execute on main thread to avoid threading issues in Xojo.

The Vision framework performs face and face landmark detection, text detection, barcode recognition, image registration, and general feature tracking. Vision also allows the use of custom Core ML models for tasks like classification or object detection.

With Catalina you also get classification, text recognition, attention and object based saliency, animal and human detection.

You can read Apple's documentation here.

Here our new classes:
A few examples are in the make, but please let us know what you'd like to see.

Find Xojo Consultants and Jobs

Looking for someone to hire?

Please visit the Find a Developer website on Xojo.com to submit a job offer or a consultation request. Your job offer is forwarded to a list of Xojo developers, who may contact you for details and make an offer to help.

Looking for work?

If you are professionally working with Xojo as a development tool, you probably already have a Xojo Pro license. With that license comes access to a special forum section for consulting leads, where the requests from the find a developer form above are posted as well as any direct inquires to Xojo's customer support.

An official Xojo Consultants list

We made recently the case in Feedback for an official Xojo consultants list. See Feedback Case 55135. We see the benefits of the FileMaker Business Alliance and would enjoy a similar program for Xojo to increase visibility of the thousands of Xojo developers out there. We tried ourselves to make such a list for Germany, but it needs to be integrated with the Xojo website and accounts.

For example it could be that there is a checkbox in the Xojo account to request being listed on a consulting list, just like the checkbox for the beta program. Xojo Inc. could ask you to provide details for a listing if they accept your wish. By making it dependent on having an active Pro license, they could make sure you can serve all customers as you can use all product features. It may be a good idea to ask for an example of your work to see if you are indeed doing development on a professional level. And if you quit Xojo and stop updating your license, you would automatically be delisted. Great way to avoid having outdated entries in the list.

If you check the FBA requirements, you may see that beside the fee to pay and having a postal address, you need to be one year in business, show customer references and show a sample of custom app work. In the FBA program, you can improve your listing with taking the certification test, but that may be a different topic for Xojo.

One month left for early bird offer to Xojo Developer Conference 2020

Just one month left for the early bird offer to XOJO.CONNECT event hosted by Xojo Inc.
Tickets are available for $799 USD till 15th September 2019.



It will be held March 25-27, 2020 in Nashville, TN at the Sheraton Music City Hotel. Registration is currently $200 off full price till 15th Sep 2019 ($799 instead of $999). Please sign up early to get the best deal.

Check out our conference highlights video if you want to see what it's like - or ask one of the many attendees from the forum!

Looking for a conference this year? Join the European Xojo Conference 2019 in Cologne, October 24-25th.

CURL Up 2020

The CURL conference for 2020 is announced:

curl up 2020 will take place in Berlin, Germany in mid May.

When: May 9-10, 2020
Where: Berlin, Germany
Venue: Co.up Community

Anyone interested in the CURL project is welcome to join the conference!
For details, please check the website.

Maybe we can arrange some developer meeting with our Xojo and FileMaker clients, too?

MBS Xojo Plugins, version 19.4pr1

New in this prerelease of the 19.4 plugins:
  • Improvements for next Xojo version.
  • Implemented own FSRef/FSSpec conversion for Xojo 2019r2 to use older code paths, e.g. for our ResourceFork class for Mac 32-bit.
  • Fixed a crash with DarwinGroupMBS when using UserName function with negative index and a crash with too small array allocated internally.
  • Deprecated CarbonEventsScrapMBS, CarbonApplicationEventsMBS and CarbonWindowsEventsMBS classes.
  • Fixed crash with nil folderItem passed to Read, Constructor or Ping methods in GMImageMBS class.
  • Upgraded KindMBS method in FolderItem class to use newer API.
  • Fixed problem with LaunchServicesFindApplicationForInfoMBS function.
  • Deprecated ApplicationFileMBS and ApplicationCreatorCodeMBS in Application class.
  • Duplicated some Application class extension to ConsoleApplication class.
  • Fixed TextArea.RTFDataMBS declaration for console app.
  • Changed to Application extensions for Xojo 2019r2.
  • Fixed declaration for WinSendMessage in RemoteControlMBS module.
  • Added more constants to NSAppearanceMBS class.
  • Renamed BindedValues and BindedTypes properties in SQLPreparedStatements to BoundValues and BoundTypes.
  • Fixed a problem with loading LDAP.framework on Mac for use in CURL.
  • Added CACertFile property for LDAPMBS class.
  • Rewrote VolumeSizeKBMBS and VolumeSizeMBS for FolderItem class to use newer APIs on MacOS.
  • Added NativePath property to FolderItem for Real Studio.
  • Fixed title property for NSSavePanelMBS to avoid NSException for empty string.
  • Improved pretty formatting for JSON arrays for JSONMBS class.
  • Updated DynaPDF to version 4.0.30.89.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MonkeyBread Software Releases updated Xojo Kits

Nickenich, Germany (August 6th, 2019) -- Monkeybread Software releases new versions of their Xojo Kits, powerful add-ons to Xojo with additional functionality provided as source code.

We offer six kits aiming to provide additional functionality for iOS projects in Xojo: Addressbook, Events, Audio Player, Encryption, Network and UDP Socket. Our desktop kits Updater, Bugreporter and WebStarter provide valuable code to add to your projects, but may require additional plugins from us.

All Kits have been updated to make sure they work in Xojo 2019.
If you have a current license, bought within the last 12 months, you can use the updates for free.
Otherwise you can order licenses on our websites or in the Xojo store as needed.

The webshop offers the iOS related kits in a discounted bundle named iOS Kit Set. (more)
The biggest plugin in space...

Archives

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