NativePath vs. AbsolutePath


For years Xojo had three types of paths on the folderItem class:
  • AbsolutePath
    For Mac the old MacClassic style for paths with semicolon as divider. For Windows and Linux this is native path.
  • NativePath, the native path for the OS, so you get the POSIX style path on MacOS. Same as absolute path for Linux and Windows. Introduced with Xojo 2013.
  • ShellPath, the escaped path for use in shell commands with shell class.
AbsolutePath has been deprecated for a while and may finally go with the next Xojo version. Time enough for us to look through thousands (Sic!) of examples and code snippets to find all places with AbsolutePath. Often we had code like this already:

#If RBVersion < 2013 Then
MsgBox "Failed to create file " + f.AbsolutePath
#Else
MsgBox "Failed to create file " + f.NativePath
#EndIf

But it is very annoying to write #If into hundreds of projects.

We got a nice idea to keep projects compiling in Real Studio (doesn't know NativePath) and the future Xojo versions (doesn't know AbsolutePath): Via plugin we add NativePath for Real Studio. All our projects can use NativePath and compile in older/newer versions.

So if you have AbsolutePath in the projects, it may be a good idea to replace it! Same for PathTypeAbsolute.

Hotel rooms for European MBS Xojo Conference 2019 in Cologne


We extended our hotel contingent for August, so you can still get a few rooms for Dorint Hotel.

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.

Notarized MBS Xojo Plugins


When loading our plugin for Xojo on MacOS 10.15 Catalina, you may have seen such a dialog.

We now made a notarized version of the download: MBS-Xojo-Plugins193-notarized.dmg

This plugin download is notarized. We removed a few old examples with compiled code, but otherwise the same.
We hope to be able to notarize all downloads in the future for our 19.4 release to avoid friction.

Three months till European MBS Xojo Conference 2019 in Cologne


Just three months left before our conference & training for Xojo starts. The hotel contingent has been extended for another month.

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.

MonkeyBread Software Releases the MBS Xojo Plugins in version 19.3


Nickenich, Germany - (July 24th, 2019) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 19.3 for macOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin collection currently available for Xojo. MBS Xojo Plugins have been updated and now includes over 2500 classes and 65,000 documented features, and the versatile plugins have gained more new functions:

For DynaPDF we got support for ZUGFeRD 2.0 and Factur-X. Our new example project shows you how to create invoices in PDF format with embedded XML invoices. The Optimize function in DynaPDFMBS got new flags to convert existing images to grayscale, RGB or CMYK color spaces. With kofReplaceJP2KWithJPEG option, you can convert JPEG 2000 images into regular JPEG Images. Calls to our Graphics class integration can now be logged to text file with our trace feature. Drawing strings can now be multi line.

For MacOS we implemented the OpenDirectory framework from Apple, so our new ODQueryMBS, ODRecordMBS, ODNodeMBS and ODSessionMBS classes allow you to query LDAP and Active Directory servers. We still provide LDAPMBS class for a cross platform solution.

We got a new sort method in JSONMBS class. It allows you to sort your values in the array including numbers, booleans and text. The Convert method to convert between JSONMBS and dictionaries, arrays and variants can now include JSONMBS objects in the variants.

In our OpenSSLMBS module we got a new PKCS7SignedData function to read content of P7M files. In Italy digitally signed e-invoices in CAdES format include an embedded XML payload in a signed P7M file.

Our SQL Plugin got new BindedValues and BindedTypes properties for SQLPreparedStatements class, so you can inspect bindings in debugger for your prepared statements. We added constants for CubeSQL libraries. We still provide a built-in CubeSQL library.

With NSWorkspaceMBS.requestAuthorization you can request an authorization for a file manager operation. You may receive an event later with the NSWorkspaceAuthorizationMBS object. Then with NSFileManagerMBS.fileManagerWithAuthorization you request the authorized file manager, which can be used to do privileged function like replacing a system file. Please code sign your app with the right entitlement to use this feature.

Our BarcodeGeneratorMBS class got an upgrade to a newer library version. New barcode types are added for MailMark, UPNQR and Vin. The new WindowsADSystemInfoMBS class allows you to query Active Directory details for current user. For SceneKit on MacOS we got new classes for geometry source, geometry tessellator and level of detail.

Finally we updated CURL to version 7.65.3, DynaPDF to 4.0.30.87, libcpuid to 0.4.1, libiconv to 1.16, libPNG to 1.6.37, libxlst to 1.1.33, libxml2 to 2.9.9, libzint to 2.6.3, OpenSSL to 1.1.1c, PCRE to 8.43, SQLite to 3.29.0, WinSparkle to 0.6.

See release notes for a complete list of changes.

MBS Xojo Plugins, version 19.3pr7


New in this prerelease of the 19.3 plugins:
  • Changed NSColorMBS constructor and colorValue property to always use generic RGB for compatibility to Xojo.
  • Updated DynaPDF to version 4.0.30.87.
  • Updated CURL to version 7.65.3.
  • Fixed HTML tags for JSONMBS.ToHTML function.
  • Patched a bug in Optimize method of DynaPDFMBS class.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

DynaPDF Manual online updated


DynaPDF has it's own documentation, which you can find included with our plugin: dynapdf_help.pdf.

In order to read it in a browser and for search engines to soon index it, I put the manual online as a webpage version:

monkeybread.net/DynaPDF-Manual/

Maybe it helps people. From time to time I can update it with current PDF file.

Embedded links with MBS and DynaPDF in Xojo


Perhaps you have a PDF document and want to add some links to the PDF. You want to add some page links to navigate inside the PDF Document and jump to the right pages or websites. Maybe you want to change the target of a linked url in the document. With the MBS Xojo DynaPDF Plugin for Xojo you can do it in an easy way. Now I want to show you how to do it.

Initialize and load PDF
At first we need to initialized DynaPDF and put, if you have one, the license key in the document:

Dim pdf As New MyDynapdfMBS

Then we call the open dialog for choosing the PDF for import. Next we ask the user where to store the final PDF file. If the saving dialog is canceled (outFile=Nil) the script return.

Dim f As FolderItem = GetOpenFolderItem(MyFileTypes.Pdf)
Dim outFile As folderitem = GetSaveFolderItem(MyFileTypes.Pdf, "PDF with links.pdf")
If outFile = Nil Then Return


Now we create a new and empty PDF at the given file. Pass nil instead to create an in-memory PDF:

Call pdf.CreateNewPDF(outFile)

We subsequently set flags for the import. We want pages (not templates) and get all parts of the pages. By asking to use visible coordinates, our coordinates are relative to pages crop box (if existent) and honors the orientation of the page.

dim flags as integer = Bitwise.BitOr(pdf.kifImportAsPage, pdf.kifImportAll)
Call pdf.SetImportFlags(flags)
Call pdf.SetUseVisibleCoords(True)


kifImportAsPage constant set the import options for import the page as pages and not as a template. With the setting kifImportAll all elements of the source PDF are imported. For example you can only import the bookmarks or all elements except the annotations.

After that we open our import file and import it page wise to our pdf:

Call pdf.openimportFile(f, pdf.kptopen, "")
Call pdf.ImportPDFFile(pdf.GetPageCount + 1, 1.0, 1.0)
call pdf.CloseImportFile


pdf.GetPageCount+1 define the destination page number. We use this to be able to call import in a loop and import new pages after existing ones. (more)

MBS Xojo Plugins, version 19.3pr6


New in this prerelease of the 19.3 plugins:
  • Updated CURL to version 7.65.2.
  • Added LinuxWebViewMBS.IsLoading function.
  • Fixed geometrySourceWithData function in SCNGeometrySourceMBS class.
  • Implemented WebKit2 support for Linux partially.
  • Updated SQLite to version 3.29.0.
  • Updated DynaPDF to version 4.0.30.86.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Customer Distribution


for our MBS plugin users, we have this distribution:

Japan: 2%
Australia: 3%
Canada: 3%
France: 3%
Netherlands: 4%
Italy: 4%
Switzerland: 5%
United Kingdom: 6%
Germany: 19%
United States: 33%

and just a few in Afghanistan, Argentina, Armenia, Austria, Bahrain, Belgium, Brazil, Burkina Faso, Cayman Islands, Chile, China, Columbia, Costa Rica, Croatia, Cyprus, Czech republic, Denmark, Dominican Republic, Ecuador, Egypt, Estonia, Finland, Georgia, Greece, Guadeloupe, Guernsey, Haiti, Honduras, Hong Kong, Hungary, Iceland, India, Indonesia, Ireland, Israel, Jamaica, Jordan, Kuwait, Latvia, Liechtenstein, Lithuania, Luxembourg, Macau, Madagaskar, Malaysia, Malta, Mexico, Mosambik, Namibia, Nepal, Netherlands Antilles, New Caledonia, New Zealand, Norway, Pakistan, Panama, Peru, Philippines, Poland, Portugal, Puerto Rico, Romania, Russia, Serbia, Seychelles, Singapore, Slovakia, Slovenia, South Africa, South Korea, Spain, Sri Lanka, Sweden, Taiwan, Thailand, Turkey, Uganda, Ukraine, United Arab Emirates, Uruguay and Venezuela.

In general plugin users are living where a lot of people live, who speak some english (to read documentation) and have enough knowledge to do software development and know about Xojo or FileMaker.

MBS Xojo Plugins, version 19.3pr5


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

Hotel rooms for European Xojo Conference 2019 in Cologne


Our hotel room contingent "Xojo" will expire in two weeks, about three months before the conference. If you plan to join the conference, but you don't yet have a hotel room in Dorint Hotel, please reserve your room as soon as possible.

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:
🇩🇪, 🇬🇧, 🇳🇱, 🇫🇷, 🇨🇭, 🇺🇸, 🇬🇷, 🇸🇮, 🇦🇹, 🇮🇹, 🇺🇦, 🇪🇸, 🇯🇴, 🇧🇪, & 🇨🇦.

We extended our last offer: Save 100 € till 24th July and pay 599 instead of 699 Euro for the ticket (+VAT if needed).



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. The early bird offer available till 24th July is just 599 Euro plus VAT. 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.

SMTP Server Settings


Sending Emails with various servers can be a challenge. In this blog article we like to collect the settings needed for using our SendMail functions in FileMaker or CURLEmailMBS class in Xojo to send emails. As you see we always prefer to use encryption.

Bei checking certificates, we can detect and avoid giving our password to a transparent proxy. And we enable TLSv1.2 for all here and require encrypted connection. It's important to test and verify this, as I once run into a hotel reading my emails to count them and prevent spamming. (more)

RecordSet to JSON and back


Today I want to show you two useful methods to convert from a RecordSet in Xojo to a JSON string and back. We combine BuildRecordSetMBS function (in MBS Xojo SQL Plugin) with JSONMBS class (from MBS Xojo Util Plugin) and the new Convert method helps a lot!

Here the function RecordSetToJSON:

Function RecordSetToJSON(r as RecordSet) As String // adds data in recordset to a JSON Dictionary Dim FieldNames() As String Dim Values() As String // Query list of field names Dim c As Integer = r.FieldCount For i As Integer = 1 To c Dim d As DatabaseField = r.IdxField(i) FieldNames.Append d.Name Next // get all fields from all records into values array While Not r.EOF For i As Integer = 1 To c Values.Append r.IdxField(i).StringValue Next r.MoveNext Wend // make new Dictionary with the values and field names Dim j As New Dictionary j.Value("FieldNames") = FieldNames j.Value("Values") = Values // Convert to JSON Dim v As Variant = j Dim json As JSONMBS = JSONMBS.Convert(v) // return as JSON string Return json.toString End Function
(more)

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.

We just rebuild a copy to avoid problems with code signing on MacOS.

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

European Xojo Conference Planning Update


Planning a conference is hard. You have a couple of variables from hotels and restaurants like conference room rent, delegate rates, hotel room rates, costs for buffets and refreshments. Sometimes you have to commit to a minimum number of attendees to get a nice room, which may lead to pay extra unused seats. A restaurant may impose a minimum revenue so you can be the only group that night. The big unknown left is how many attendees you have.

In Berlin we had 80 people attending the conference. The room was nice and big with possible space for over 100 attendees. We planned last year for Munich with 2 conference rooms. Just in case we got more people and would like to have two tracks. Six months before the event, we cancelled the second room as we only had around 30 people on the list that early. It doesn't make sense to have two tracks and only 20 people in each room.



For our Cologne event we planned a nicer conference with a ballroom and a lot of space to host even over 100 people. We started planning the schedule for two tracks and invited speakers.

Sadly the attendee numbers don't add up as much this year. We are just about 50 people and far away to fill two rooms for running with two tracks. The contract with the hotel allows to cancel 4 months in advance and we are have reduced to half of the space. We informed the speakers and attendees that we move all sessions in one room and reduce sessions to about 45 minutes each. The improvement for you is that you can now listen to all sessions. We still plan to record them and if you have to make a call or talk to someone in the foyer while a session, you can later watch it.

If you like to help the conference planner, please commit early for the conference and sign-up as early as you can. Don't wait for the last months as the conference size is reduced or enlarged months before the conference takes place. Such a conference is usually planned a year in advanced and adjusted about 4 to 6 months before to make sure we don't have too many empty seats.

xDev 17.4


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

Numbers Please! Part 3 by Markus Winter
What is a number? And just how do you tell a program to detect a number?

TextField with Warning Sign by Markus Winter
For his Numberfield, Markus needed a new control with a warning sign.

Husband + Wife + Xojo by Richard and Trisha Duke
Richard looks back on 30 years in the computer business.

Creating Barcodes in Xojo by Stefanie Juchmes
With the MBS barcode plugin, you can create over 80 types of barcodes.

Curves Ahead by Marc Zeedar
Predicting the future is tough. All we really know is that everything will change.

Your First Web App by Paul Budd
Never created a Web App? Now is your chance!

PLUS: Computed properties, WWDC, Xojo Podcast, Client Communication, WeakRefs, Best of the Web, and more!

Archives

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