Test building of 2000 Xojo projects


The MBS Xojo Plugins come with over 2000 example projects. We want to make sure they all build and have no obvious problems like a syntax error. From time to time something in Xojo changes and the projects need to be adapted. For example last year the graphics property was removed from canvas control, so we had a need to check all projects for whether the graphics property is used somewhere. Sometimes things change in our plugins, like a method got another parameter and examples may need to be updated, too.



While Xojo lacks a command line compiler (Feedback case 3215), there is a IDE Communicator tool available (Documentation here). This tool shows you how to talk to Xojo and pass commands or IDE scripts. The IDE Scrips are scripts to run within the IDE and do various things like changing constants and trigger several builds with different configurations. For example we have for one project a script to build three variants of an application like a Demo, a Standard and a Pro version.

Our Test application gets the folder with all Xojo example projects for the plugin as input. It may take several hours to build them all, so a progress bar is really useful for us. If this runs in a virtual machine in the background, it doesn't even interfere with us using the computer for work.

We load each project by launching Xojo with the project file as document to open. If Xojo is running already, the project loads. We wait a second and then have an AppleScript to send ESC key press to Xojo in case there is a deprecation dialog showing. Next we call IDECommunicator command line tool via Shell class. We run our test script, which is just a text file with some commands for Xojo to do. This includes changing the app name, so all test builds have the same application file name. Next we build the project with BuildApp() function. We print the result in the script, so via shell class we can later read the output. Finally the script closes the script. When the shell finishes, we can write the result in a log file. If the result was success, we can delete the project and otherwise, we need to put it in the list to check later manually. We also check built apps what frameworks are used, so we can show that in the plugin documentation.

With the tests using Xojo 2019r1 we got projects updated to build in the newer Xojo version. We fixed a couple of things like changed syntax, graphics object access and removed Mac Carbon classes in our plugin for the upcoming 19.2 release. Enjoy!

MBS Xojo Plugins, version 19.2pr8


New in this prerelease of the 19.1 plugins:
  • Updated DynaPDF to version 4.0.27.80.
  • Moved CoreAnimation plugin part from AVFoundation to MacCG plugin to reduce dependencies.
  • Fixed problem with BigNumberMBS raising RuntimeException instead of BigNumberErrorExceptionMBS.
  • Added XMLValidatorMBS class.
  • Changed SystemInformationMBS.MacAddress for Windows to look for Ethernet port first, than for Wifi and than for other adapters.
  • Changed SystemInformationMBS.HardDiscSerial for Windows to make sure to ignore removable media.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

New XML Validator class for Xojo


For next Xojo plugin version we added a new class to validate XML text. Our XMLValidatorMBS class can take a XML scheme as text to initialize the validator. Then you can either validate a file or XML text in memory. With files, if you set the working directory to the right folder, we can even find references files int he XML or the schema text.

For error and warning messages, we provide them directly via Error and Warning events. We also collect them in an Messages array, which can be useful to check for errors later after validation.

The messages are in XMLValidatorMessageMBS objects, so we can provide the message and metadata like a line number and file name, if possible. Line numbers seem to be correct if you use Unix line endings. For Mac line endings, you get always line 1. So a call to ReplaceLineEndings(XML, endOfLine.Unix) may be useful.

To implement this class, we relay on libxml2 and the validator functions there. As Xojo has built-in XML classes, we have no need to reimplement all of that, but the validation was missing for a client.

XDC 2019


The Xojo developer conference in Miami was my first Xojo conference in America. I met a lot of interesting new people and saw many well known friends from various European conferences again. Every time the conference feels like a family reunion. You read a lot of the names in the forums and you have the chance to meet the person behind the posts.

After a good breakfast we had the keynote with the Xojo CEO Geoff Perlman. We experienced the newest inventions and get a lookout to future functions like the new platform for Android development and the APIs changes. One thing that I recognize very positive is that you can see the inspector and the library in the shown future version of the Xojo IDE at the same time and can work with it. In my opinion it is very practical for designing a window, without making a lot of clicks while switching between this two areas. (more)

Xojo Developer Magazine 17.3 Issue


The May/June (17.3) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Numbers Please! Part 2 by Markus Winter
Creating a numbers-only textfield sounds easy, but as Markus demonstrates, it's trickier than it looks. This time he explores various coding methods.

Coding in Paradise by Glen Newbury
If you're reading this, you're most likely a programmer, and in theory you can work anywhere there's a computer and an internet connection. So why not? Glen shows how you can rent a co-work space in an exotic location and work in paradise!

XDC 2019 Keynote by Marc Zeedar
Geoff Perlman's XDC Keynote is like a Xojo "State of the Union" address. This year he updates us on Android, API 2.0, the new Web app framework, and more. Find out what was announced -- just don't expect a timeline.

XDC 2019 by Marc Zeedar
It was a long trip to Miami, but it was a fun location for a conference. This year there were some amazing presentations raising the bar about what can be done with Xojo, from machine learning to creating a new language.

PLUS: Creating custom events, Xojo 2019r1, description field, Resource Folders, Time Management Tips, Best of the Web, and more!

MBS Xojo Plugins, version 19.2pr7


New in this prerelease of the 19.1 plugins:
  • Added scrollWheel and smartMagnifyWithEvent to CanvasGesturesMBS class.
  • Updated DynaPDF to version 4.0.27.79.
  • Changed Character Spacing for graphics with DynaPDFMBS to be closed to Xojo's behavior.
  • Changed WordFileMBS class to not reformat XML unless changed.
  • Updated SQLite to version 3.28.0.
  • Fixed a problem with FSEventsMBS class.
  • Fixed SQLSelect and SQLSelectMT methods in SQLConnectionMBS class to avoid hex encoding for BLOBs.
  • Fixed problem with cached recordsets and BLOB values converted to hex unintended.
  • Changed various controls and custom views to call beginGestureWithEvent, too.
  • Fixed endless loop in ArchiveEntryMBS.fileName getter in some cases.
  • Fixed problem with InsertRecord, DatabaseRecord and PictureColumn. We now treat text data with no encoding as BLOB to pass on picture data.
  • Change PNGReaderMBS to skip unknown blocks in PNG file.
  • Changed CanvasGesturesMBS to call beginGestureWithEvent, even if NSResponder doesn't call it on MacOS 10.11 or newer.
  • Changed DynaPDFMBS.PageGraphics to create new document and page if needed.
  • Tested all examples to build here for 64-bit with Xojo 2019r1. Fixed dozens of examples.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

News for European MBS Xojo Conference 2019 in Cologne


A few updates on our European Xojo Conference, 24/25th October in Cologne.
  • We now have over 50 attendees on the list.
  • The number of countries reached 12:
    🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦 and 🇪🇸.
  • Dana Brown, Director of Marketing at Xojo Inc. will join our conference and give a session about marketing your own apps.
  • Today we send reminders to previous attendees.
  • We got featured in the Xojo newsletter. Thanks Xojo Inc!
  • The schedule is now nearly complete and arranged. Speakers can still sign-up and then we can move things around a bit.
  • The offer for free-tickets for young developers is well received. The deadline is over, but we just got a query from a student to be added and we may grant an extra ticket there. If you know someone who may not be able to pay the ticket and should get the chance to attend, please let us know!
  • Recently we published two blog articles:
    Things to do in Cologne beside our conference and European Xojo Conference FAQ.

More details and registration on the conference website.


Xojo Stammtisch in Wien


Wer hat Interesse an einem Xojo Entwicklertreffen im Juni in Wien?

Einfach in gemütlicher Runde treffen in einem netten Restaurant und beim Abendessen was über Xojo reden. Vielleicht habt ihr ja auch Fragen und Probleme, wo ich helfen kann?

Zeit wäre ca. 18 bis 22 Uhr, so dass man auch später kommen oder früher gehen kann. So ungefähr einen Abend im Bereich von 23. bis 28. Juni.
Treffpunkt steht noch nicht fest.

Bei Interesse bitte in die Liste eintragen: Umfrage

Falls sonst noch Bedarf an Schulung, vor Ort Entwicklung oder FileMaker/Xojo Hilfe besteht, bitte wegen Terminfindung bald melden.

Create a PDF with PageGraphics and DynaPDF


Here a nice short example on how to draw a PDF with our new PageGraphics property in DynaPDFMBS class:

Dim pdf As New DynapdfMBS // please subclass DynapdfMBS to implement error event Dim f As FolderItem = SpecialFolder.Desktop.Child("DynaPDF Graphics.pdf") 'pdf.SetLicenseKey "Starter" // For this example you can use a Starter, Lite, Pro or Enterprise License // Create new PDF. Use f = nil for in-memory PDF Call pdf.CreateNewPDF(f) // append a new page, so we have an open page Call pdf.Append // get graphics object to draw on the page Dim g As Graphics = pdf.PageGraphics // draw as usual g.DrawString "Hello World", 105, 100 g.DrawRect 100, 80, 100, 100 // close page and file Call pdf.EndPage Call pdf.CloseFile // for in-memory PDF, use GetBuffer here to grab it. 'Dim PDFData As String = pdf.GetBuffer

You can put the actual drawing code into a method with g as graphics parameter and than call it on several places. e.g. call it from Canvas.Paint event to show it in a window, call it with graphics from OpenPrinterDialog to draw in printing context or call it with PageGraphics to draw into a PDF document.

Things to do in Cologne beside our conference


When you come to join the European Xojo Conference in Cologne in October, you may spend some time with sight seeing, so here a few ideas:

Kölner Dom
  • Visit Cologne's cathedral itself.
  • Take the steps up to the towers for a great view inside the structure and over the city
  • Visit the treasure chamber below the Cathedral
Old city
  • Walk though the small streets of the older city center
  • Enjoy a beer in one of the old tiny pubs or small breweries
  • Rathaus, visit the city hall and it's architecture
  • Several older churches show architecture from various centuries: St. Gereon with a spectacular 10 sided dome.
  • Hahnentor, one of the city gates from the city wall
Museums
  • Visit the Chocolate Museum
  • Museum Ludwig on the backside of the Cathedral shows modern art
  • Römisch-Germanisches-Museum, shows Roman history
  • Abenteuermuseum Odysseum, a museum for kids to learn about science
  • Wallraf-Richartz-Museum, an art museum from mid ages to modern times
  • Römisches Praetorium, see some Roman ruins in the city center
More in Cologne
  • Go to platform on KölnTriangle to have a great view on the city
  • Kölner Seilbahn, a cable car takes you over the Rhine to the other side. Connects Zoo with Rheinpark.
  • Kölner Zoo. The Zoo is within the city and next to the Flora, you can go there via tram.
Parks
  • Flora, the botanic garden
  • Volksgarten, a public park in Cologne
  • Rheinpark, a nice park on the other side of the Rhine
Visit Brühl, 20 km south of Cologne
  • Schlösser Brühl, vist the palaces and parks from 18th century
  • Phantasialand, a theme park with rollercoasters.
Visit Bonn, the former capital of Germany, 35km south of Cologne
  • Haus der Geschichte, museum about German history
  • Beethoven house, the birth place of the famous music composer
  • Drachenburg, a castle south of Bonn
  • Poppelsdorfer Schloss, the former palace which now hosts the botanic garden
Within the city, you can just get a day ticket for the subway & busses and get everywhere. From main station you can get local trains to Bonn and other places around. To go to Bonn, you may take one of the ships cruising the Rhine.

European Xojo Conference FAQ


We got a couple of questions related to the conference which I like to sum up here:

Is the conference in German?

No, it is in English, as most attendees don't speak German.
And everyone can speak English as otherwise reading Xojo's documentation would be hard for you.
For the training, we offer a day with English and one with German as language.

I don't use MBS Plugin, so should I go?

Yes, of course. The conference is hosted by Monkeybread Software. We do one session telling you what's new in the plugins, but otherwise content is similar to sessions at XDC.

Does Xojo Inc. show up?

Yes, Geoff Perlman, the CEO and founder, will come and speak. He will also talk about the technical changes like the progress in Android support or the new web framework.

Dana Brown, Director of Marketing at Xojo Inc. will join our conference and give a session about marketing your own apps.



Some sessions have same title as for XDC sessions?

Yes, some speakers like to use the same session again and update the content. For example they may present a version 1 at XDC in Miami and a version 2 in Cologne.

Why is the conference in Cologne?

First for handling VAT, we prefer to do it in Germany as that minimizes our paper work. Second, for a few years now we cycle through the cities in Germany with more than a million people. After Berlin in the east, Munich in the south, we now are in Cologne in the west part of Germany.

Why in October?

XDC is around April/May and we like to have five to six months distance between conferences. We look for September, October or November to find a date. Usually we ask a couple of hotels for a conference room on a Thursday/Friday with the required capacity of 50 to 100 seats. Other events take place, so we usually get only a few spots available. e.g. for Munich beside Oktoberfest, school holidays, trade shows, we only had to choose between the week in September and one in November. For Cologne we picked a week at the end of October.

Is dinner included?

The dinner for Thursday evening is included. For the other evenings, it may be self paid by attendees. If the finances allow it, we may organize a group dinner and pay it for you.
All the lunches and coffee breaks are included. If you don't get breakfast in your hotel, you may still find a snack and a coffee in the foyer near the conference area.

The Dorint Hotel is expensive, how about an alternative?

For the Dorint, we got a conference rate for 169 Euro/night with a single room and 204 Euro for a double room.
Within walking distance, there are over 20 other hotels. The nearby the Maritim is a 4 star hotel around 100 Euro/night. And the smaller Hotel Monte Christo is just a block away from the Dorint and charges around 70 Euro per night. In the old city of Cologne, you find plenty of small boutique hotels to have a great stay!
And if you stay farer away, you can take a train to the subway station Neumarkt, which is located in front of the Dorint Hotel.

Will there be a 2020 conference in Germany?

Not sure yet. First priority is to make the Cologne conference a success. Then we may decide for a follow up conference in 2020. Please make us happy by attending our conference!

If you have more questions, please don't hesitate to contact us.

MBS Xojo Plugins, version 19.2pr6


New in this prerelease of the 19.1 plugins:
  • Added ShellMBS class.
  • Added PageGraphics and PageGraphicsPicture properties to DynaPDFMBS class.
  • Added ClearPageGraphics method to DynaPDFMBS class.
  • Fixed ScreenshotMBS for Linux ARM.
  • Fixed problem with GTK and Linux ARM
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Graphics class for DynaPDF


We are integrating DynaPDF with the Graphics class in Xojo. You can get a graphics object to draw into the current page via normal graphics class methods. The code looks like this:

Dim g as graphics = pdf.PageGraphics

Technically we create a temporary picture with a subclassed graphics class and give you the graphics object from the picture. You can get the temporary picture with PageGraphicsPicture property. All draws go both into the picture and the PDF page:


Dim p as picture = pdf.PageGraphicsPicture


We support normal drawing commands in graphics class and the usual properties. Draw/Fill Oval/Rect/RoundRect/Line/Polygon will just work. DrawString draws text for single and multi line. StringHeight and StringWidth measure text via DynaPDF functions, so the result may be different than in a picture, but you get the right values needed for the PDF output. DrawPicture can draw picture with alpha channel and masks if needed. NextPage method will close current page and make a new one. Or you implement NextPage event to do this yourself. Then you can import existing page as background.

We support vector graphics classes (Object2D) and drawObject command. Most properties should work and this includes transparency and rotation.

As the report engine is built on Object2D, the report engine can output to PDF via our graphics class.

This works in all Xojo versions (And Real Studio), with all DynaPDF editions and come soon with next 19.2 prerelease.

MBS Plugin session at XDC


Welcome to XDC 2019!
Please join my MBS Plugin session 2nd May @ 1pm o'clock.
  • Learn all the features we got since last XDC.
  • Learn what is coming for DynaPDF 5.
  • Learn what great new feature we got in the DynaPDF plugin for you.
  • And learn what class got added to MBS Plugin in the flight to Miami...
See you all this morning at the keynote!

Archives

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