Replace Image in PDF

For DynaPDF we add new method to replace an image in a PDF:

With existing functions, you can query image information for all the images and export them to files. With the next plugin, you can use a new function in DynaPDF to replace each image with a new image. The display size and orientation is not changed, so your new image should match the size and aspect ratio.

With next plugin version, you can use the new function DynaPDF.ReplaceImage in FileMaker or DynaPDFMBS.ReplaceImage in Xojo. You can pass new picture as file on disk or with data in memory. The image can use it's own color space or be converted to one of the color spaces defined in the PDF or standard device colorspaces.

If you like to try, send me an email for an early preview copy.

Xojo Developer Conferences 2018

Just a few days left to register and get the early bird rate with $200 discount on regular price. Here a list of all dates for conferences:

2017-10-01 Until 1st October buy XDC ticket for $799 and save $200.
2017-11-09 Join us for our Xojo training day in London.
2017-11-10 Join us for our Xojo conference day in London.
2017-12-05 Until 5th December buy tickets for Munich Conference for 399 € and save 300 €
2018-02-15 Until 15th February XDC ticket for $899 and save $100.
2018-03-05 Until 5th March buy tickets for Munich Conference for 499 € and save 200 €
2018-04-25 On 25th April XDC 2018 starts in Denver!
2018-06-05 Until 5th June buy tickets for Munich Conference for 599 € and save 100 €
2018-09-05 Join us for our English training day in Munich.
2018-09-06 Join us for our European MBS Xojo Conference in Munich
2018-09-08 Join us for our German training day in Munich.

As you see conference organizers need people to sign up early to make sure they have the required minimum of attendees.
e.g. for MBS European conference, we need to decide six months before the conference on whether we need all the reserved space or cancel some of it.

MonkeyBread Software Releases the MBS Xojo Plugins in version 17.4

Nickenich, Germany (September 26th, 2017) -- Monkeybread Software releases version 17.4 of the MBS plug-in for Xojo.

The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo (Real Studio) development environment with 2,300 classes featuring over 60,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.4 update:

For this release we reorganized a our plugins. We merged a few plugin parts, so we have now have 39 instead of 65 plugins. We removed a couple of plugins including QuickTime plugin and a few other deprecated plugin classes.

The new plugin comes with classes for SoundFile handling, so you can read audio samples from various sound file formats. The new LibTag plugin classes allow you to read metadata from various audio file formats.

For macOS 10.13 High Sierra, we added new Core ML classes to use machine learning files and for example classify pictures. We also updated Core Image filters and added new CoreImage barcode classes. For WKWebViewControlMBS you can now take snapshots of the website.

If you like to use custom low level sockets, we added the RawSocketMBS class for you, which can be used to send build custom socket classes to send various protocols in your own data packets including custom headers.

On macOS you can now use CGEventTap to monitor low level events. We added 64-bit MapKit framework, so you can decide between Google maps and Apple maps for your map views. NSSpellCheckerMBS and SFPasswordAssistantMBS classes are updated to run on 64-bit.

If you use Linux, please enjoy GTK+ 3 in Xojo 2017r2. Our plugins will dynamically load GTK library in version 2 or 3 depending on the Xojo version.

For Windows we added new picture methods to WindowsClipboardMBS class to read/write DIB pictures. With DeleteTree and CopyTree methods on RegistryKeyMBS you can much easier work on the windows registry. In Textarea you can now strike through text beside doing super and subscript.

We added new key down events OverlayMBS class, echo property for StdInMBS, memory usage functions to SQLite3MBS class and a 128bit mode for our RegistrationEngineMBS class.

Finally we updated CURL Library to version 7.55.1, DynaPDF to, SQLAPI to 4.1.12, SQLite to 3.20.0 and LibXL to 3.8.1.

See release notes for a complete list of changes.

Bind database fields with fields array in Xojo

The last days for a project in Xojo we had a different idea for prepared statements to avoid using wrong indices.

As you may know the MBS SQL Plugin allows you to use field names in the Bind statement to avoid messing up with indexes for named parameters. For this project the database access is without MBS Plugin, but with Xojo's built in database classes. So we had several queries to update 20+ fields in same tables and mixing up the indices for all the Bind() and BindType() calls and all those question marks.

So I had the idea to put all the field names in an array first, build SQL statement using that field and use the field array later to find the index in code. Take a look on this function: (more)

MBS Xojo Plugins, version 17.4pr8

New in this prerelease of the 17.4 plugins:
  • Improved RawSocketMBS.CalcChecksum and added new example project.
  • Updated to LibXL 3.8.1.
  • Enabled XML for GraphicsMagick for Mac as it's needed for SVG.
Or ask us to be added to our shared Dropbox folder.

Xojo Training in Germany and Europe with me

I just returned from a three day training in a big cooperation. One of them visited my training day at the Berlin conference and was so happy that they hired me for three days in their office :-)

Well, if you like to get a Xojo training on site, let me know. We can arrange training days in our office, in your office or meet in a hotel nearby. Usually I prefer to get you a bit disconnected from your company so you can concentrate and not respond to email/phone while you are in the training.

Common topics include introduction to Xojo IDE, basic coding techniques, demonstration of various controls and framework classes. For example using XML, JSON, RegEx or sockets classes with example projects. For database access we usually write a contacts or image database to include adding records, retrieving them, use BLOBs and prepared statements. We can dig into advanced language features like threads, declares, delegates, exceptions, variants/auto data types and the debugger.
Usually the training starts with an introduction of the trainees where we collect topic wishes.

Beside on-site training, we do have regular group training days:
Previously we had trainings in London, Berlin, Munich, Zurich, Frankfurt and a few other places.
If you have a few people interested in your area, we could offer a group training day for your group or a public one.

Training can of course also include showing you plugin features and building little projects which you can use a prototypes for your own solutions, e.g. show you how a certain feature can be done which is the core of your next solution.

New Windows Framework for Xojo coming

Have you read the blog post The Short-Term Xojo Roadmap from Geoff Perlman, CEO of Xojo Inc.?

Looks like they feel sorry to change the priorities on a few projects. Xcode 9 requires them to use 64-bit debugger for iOS apps. So be aware not to install Xcode 9 too soon!
While they work with all engineers on 64-bit features, the Android, InterOps and the Xojo Library project type will be delayed.

Good thing is the work on the new/improved Windows framework makes progress and Geoff announced it in the blog post! There have been rumors about this and maybe it was mention before at conferences as one of the side projects they do. Details are to be seen. This could be anything from using layered drawing on Windows, embedding some .net controls, switching to .net framework for the GUI or even using Windows Presentation Foundation for this. FileMaker uses WPF as far as I know. I remember we talked about that some time ago and how plugins may be affected.

For the MBS Plugins, well, we have to see what Xojo Inc. delivers. It may be that all functions related to windows and controls on Windows will no longer work. If we still get a normal windows handle for the windows, some things may work. It may be a lot of work, to change plugins and declares, but getting rid of flickering, should be worth it!

MBS Xojo Plugins, version 17.4pr6

New in this prerelease of the 17.4 plugins:
  • Fixed bug with CURL's GetInfoCookieList function.
  • Fixed plugin options for CURL to pass empty C string for empty Xojo string. This helps with OptionCookieFile = "" to use in memory cookie engine.
  • Added StdInMBS.Echo property.
  • Added RegistryKeyMBS.DeleteTree and RegistryKeyMBS.CopyTree functions.
  • Added classes for CoreML.
Or ask us to be added to our shared Dropbox folder.

Bluetooth Vulnerability BlueBorne Impacts Android, iOS, Windows, and Linux Devices

Have you seen the details on the Blueborne attack?

Any device unless patched can simply be taken over via bluetooth by just being in range of a hacker!
If someone places a bot to hack all devices in range automatically in a subway station, they can get thousands of devices taken over and have a huge bot army.

This is one of the bugs, which renders all unpatched devices to be no longer used. So any Android and Windows without security patch installed, and iOS before version 10 should no longer be used. And for Android it's unlikely, that your phone has currently the September security patch installed, if it's available for your phone at all!

Another solution is to disable bluetooth on all devices.

Problems with killing Xojo threads with plugin calls.

While you can kill a thread in Xojo, you may think twice before doing it.
The kill command usually raises a ThreadEndException on the thread which with normal exception handling exists all methods and returns to the run event, which on exit ends the threads. So with normal Xojo code this should often work fine.

Now things are different when one of my MT methods in the plugin run. Kill command causes problems there including crashes and runtime assertions. In my MT methods the plugin will run a loop and yield time to other Xojo threads. The actual work happens on a preemptive thread in parallel. The plugin doing the loop has currently no way to know you called kill, so it will continue until the work is done on the preemptive thread and return with the result. But yielding time may cause the ThreadEndException to be processed. The thread can be released from memory, objects destroyed and that pulls the rug out from under the plugins feet. The plugin continues trying to get the work done and this causes major problems for some client.

The better way usually is to define a cancel flag on the thread class and set it to true, when thread should be considered killed. In the thread, you could regularly check the flag and exit code immediately when it's true. This way you can exit safely and do clean up which may not happen when using kill, e.g. delete temp files.

For the future, the new thread class has no kill method.

Here a list of MBS Plugin functions with preemptive threading:

Session List for Xojo Developer Conference 2018 posted

The session list is online with the first 26 sessions.
A few more will follow once they are ready:

This includes sessions about what is new Xojo in April including Android, Web Framework 2.0, Compiler changes and not yet released features. A few sessions talk about best practice like SQLite, project management, HTML5, REST APIs and object orientated programming. Interesting is always to learn from experience of other developers with their projects like the Baseball Team Stats application from Paul Lefebvre. As Xojo targets a lot of platforms, the sessions include all platforms from iOS and Android, Web and Desktop with Linux, macOS and Windows.

Just three weeks to register and get the early bird rate: Save $200 when you register by October 1st.

xDev Magazine Raffle winners

The raffle for a free Xojo Developer Magazine subscription ended.

What raffle?
Well, please read the last sentence in blog post.

Congratulations on the winners: Lewis, Markus and Mattias.

As three people commented and I couldn't decide on which random number generator to use, I spontaneously decided to give each one a subscription!

Happy programmers day to everyone!

TextInputCanvas for GTK3 and 64-bit

As you may know there is an open source project called TextInputCanvas. It provides some better text input events to Xojo apps using custom text control like the Formatted Text Control.

Recently Xojo 2017r2 was released which uses GTK in version 3.0 on Linux. Previous versions used GTK 2.

You can load a copy on my plugin download page.

This plugin is build with my plugin build system, so it has MBS in the name and includes libraries for Mac, Windows and Linux including ARM, so you can use it in all projects. If you find a bug related to the GTK3 or 64-bit port, please tell me.

A speciality of MBS Plugins with GTK is, that we built plugins to link dynamically to GTK and use either GTK 2 or GTK 3 depending on the Xojo version. This should help to have just one set of plugins to work with Xojo 2013 up to 2017r2.

MBS Xojo Plugins, version 17.4pr5

New in this prerelease of the 17.4 plugins:
  • Updated CoreLocation, Contacts and FSEvents for future.
  • Added more CoreImage Filter classes for the future.
  • Added new CoreImage Barcode classes for the future.
  • Changed Linux plugins to include build number in SONAME field so OS can distinguish different versions better.
  • Updated DynaPDF to version
  • Updated NSSpellCheckerMBS class for 64-bit.
  • Added more methods for UDPSockets to RAWSocketMBS class.
  • Fixed crash with WindowsClipboardMBS and Xojo 2015, introduced in pr3.
  • Changed CURL functions to explicit flush output files after Perform finished.
  • Added CGEventTapMBS class to catch events low-level on macOS.
  • Added CGEventMBS class.
  • Updated SFPasswordAssistantMBS for 64-bit.
Or ask us to be added to our shared Dropbox folder.

Xojo Stammtisch in Braunschweig oder Wolfsburg?

Da ich diesen Monat nach Wolfsburg muss, würde ich gerne wieder mal einen Xojo Stammtisch organisieren:

Wer hat Interesse an einem Xojo Stammtisch im September in Braunschweig oder Wolfsburg?

Einfach gemütlich zusammen sitzen und über Xojo Neuigkeiten, Konferenzen und die täglichen Probleme bei der Softwareentwicklung unterhalten.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Projekten. Einfach Computer mitbringen und was zeigen.

Wir treffen uns am 18. September in Braunschweig!

Dash help archives for Xojo and FileMaker

For browsing help files, the Dash application is very useful on Mac and iOS.

Here you can click to launch Dash and install our plugin help:
MBS Xojo Plugin and MBS FileMaker Plugin

You can download the archives manually on our website:
FileMaker and Xojo (Real Studio).

You can also add Xojo documentation itself to your dash set, see download in preferences dialog.
For FileMaker you find the docsets for v15 and v16 here: FileMaker Dash Docsets

Feedback is welcome.

Xojo Developer Conference 2018

Just three weeks to register and get the early bird rate:

Save $200 when you register by October 1st.

The Xojo Developer Conference is the best place for Xojo users to learn from the experts, network with other Xojo users from around the world and meet the Xojo engineers.

April 25 - 27, 2018
Magnolia Hotel
Denver, Colorado

With 20 speakers and 32 educational sessions, XDC is definitely an event you don’t want to miss! We'll have content for those who are just getting their feet wet, to topics for the most advanced Xojo developer, this conference promises to have something for everyone.

Register Now

Sessions will be announced soon, topics will include the following and more:

United testing, Design patterns, Debugging, Android, The compiler, Sqlite, iOS, Marketing apps, Web framework, Xojo + Aloe, Databases, Cross-platform, Windows, Linux and Best Practices.

What is XDC like?
Watch our highlights video to hear directly from attendees.

The Xojo Developer Conference
Education | Networking | Social
Learn more about XDC

Join now to meet 120 attendees on the biggest Xojo conference in 2018!

Got a new cabinet. Cube loves it!

We got a new cabinet and it's a nice place for my little Apple Museum: An original Apple Cube with 450 MHz from year 2000.

It still runs well with Mac OS X 10.4.11, can be remotely managed via screen sharing and used to be my testing computer for PPC applications. But since I dropped my PPC support this year, it may now stay on the cabinet and wait till we need it. There is always a chance you get an old document where the software is no longer available to convert them to a newer format.

The Apple mouse pad there is even older. Over 20 years a give away from one of the Apple Expos here in Germany!

One year till European MBS Xojo Conference in Munich

Just one year left till the European MBS Xojo Conference 2018 in Munich.

Monkeybread Software is pleased to announce the MBS Xojo Conference in metropolitan Munich, Germany. We meet in the lovely Maritim Hotel in the center of Munich. The hotel is near the main station and in walking distance to the city center. 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.

As date and location is set, we are now looking for interested speakers to join our conference. If you have an interesting topic, feel free to propose a session. We look for sessions to present applications made in Xojo, best practice, looking deeper on a Xojo features or presenting a product for Xojo developers.

The schedule:

Sep 5th: Xojo Training in English
Sep 6th: Conference, first day with dinner event
Sep 7th: Conference, second day
Sep 8th: Xojo Training in German

Registration is open. The early bird offer available till 6th January is just 399 Euro plus VAT. For the first 20 people we offer tickets for just 349 Euro plus VAT. Attending the conference costs regularly 699 Euro plus VAT, including food and beverage in the Maritim 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. If you like to hold a presentation, please contact us as soon as possible. Speaker receive discounted tickets.

See also conference in London this November and XDC 2018 in Denver next year.

xDev Magazine Issue 15.5

The September/October (15.5) issue of xDev Magazine is now available. Here's a quick preview of what's inside:
  • Improve WeakRef Performance by Thomas Tempelmann
    You can avoid circular references by using weakRefs, but that causes performance problems. What's the solution?
  • The Case of the Broken Upgrade by Mattias Sandstrom
    When a software upgrade breaks things that were working fine, finding the cause requires real detective work.
  • Touche by Marc Zeedar
    With the latest version of MacOS Sierra, Xojo apps that use the Macbook Pro's Touch Bar are finally possible. Marc demonstrates how to make them.
  • Sharing Data for Health, Part 3 by JC Cruz
    Jose explores using XML to export health data from his project.
  • Plus: Xojo 2017r2, custom code formatting, pg_dump, SQLBuilder and ActiveRecord, and more!
Not yet subscribed? Comment here this week for the chance to win a free six month subscription!

High Sierra Tester

For the 9th time I made a Tester app for for novice users to check if their Mac can run the next macOS version.

You can download and try it here:

The application does check a few parameters of your Mac to help you learn whether High Sierra will probably work on your Mac.
Be aware that the application is in German, but still it shows red, green or yellow icons for various parameters.

Your Mac must of course meet the minimum requirements from Apple and a few technologies only work if you have required hardware. e.g. HEVC decoding with hardware acceleration needs CPUs supporting it. External graphics adapters need Thunderbolt 3 port and APFS a SSD disk. I hope you see a lot of lights being green.

The application can also identify 32-bit kernel extensions which don't work any more.
Also we can find PPC applications (no longer supported for years) and also warn about 32-bit software, which may need an update for macOS 10.14.

Let me know what you think about it. I hope it helps you to decide whether installing macOS High Sierra makes sense.

See also: Macwelt Artikel

Xojo Training and Meeting Events in London, UK

Monkeybread Software is pleased to announce to host a little MBS Xojo Developer Conference. We meet once again in the nice Antoinette Hotel in Wimbledon for a meeting day and a training day.

We have a Xojo training day on 9th November 2017. We talk a close look on Xojo and show you in little projects how to work with advanced Xojo language features, databases, sockets and threads. Please bring your own ideas and topic wishes to be added to schedule.

On 10th November 2017, we meet with Xojo developers from all over UK to talk about Xojo on our conference day. We have a few nice sessions in the pipeline for you. Stephane Pinel will give his keynote and talk about what's new and coming in Xojo. Christian Schmitz from Monkeybread Software will update us on the latest plugin news. We will soon add more sessions, so keep an eye on the schedule. If you like to speak, please contact us soon.

If you like to join the events, please register with us. More than 20 people are already planning to join this event and we also hope to see a lot of people for the dinner on the evenings.

Also we would be happy to meet you on the big Xojo Developer Conference in Denver with over 100 attendees. Your chance to meet all the people from he forums and mailing lists!
The biggest plugin in space...


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