Our Blog, Filemaker only, Xojo only, Archive (older)

Follow us on Twitter, Xing, LinkedIn or Facebook.

MBS Xojo Plugins, version 18.5pr6

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

Fix for missing accessibilityIsAttributeSettable function

For one of our Xojo app, we got crash reports for missing accessibilityIsAttributeSettable function in various classes:

-[NSMenuItem accessibilityIsAttributeSettable:]: unrecognized selector sent to instance 0x600001ffea00
Please report to the application developer.

0 CoreFoundation 0x00007fff3cc54fa5 __exceptionPreprocess + 256
1 libobjc.A.dylib 0x00007fff68d4befb objc_exception_throw + 48
2 CoreFoundation 0x00007fff3ccd2c8d -[NSObject(NSObject) __retain_OA] + 0
3 CoreFoundation 0x00007fff3cbf65de ___forwarding___ + 1468
4 CoreFoundation 0x00007fff3cbf5f98 _CF_forwarding_prep_0 + 120
5 AppKit 0x00007fff3a7aea33 NSAccessibilityPerformEntryPointBOOL.llvm.11937614488442194757 + 16
6 AppKit 0x00007fff3a545d63 NSAccessibilityEntryPointIsAttributeSettable + 86
7 AppKit 0x00007fff3a61a460 -[NSCarbonMenuImpl _carbonIsAccessibleAttributeSettableEvent:handlerCallRef:axElement:] + 185
8 AppKit 0x00007fff3a409778 NSSLMMenuEventHandler + 1009
9 HIToolbox 0x00007fff3be26b79 _ZL23DispatchEventToHandlersP14EventTargetRecP14OpaqueEventRefP14HandlerCallRec + 1502

The name of the class and functions related in the stack trace changes, but the problem is always the same. Same function in Apples framework wants to call deprecated accessibilityIsAttributeSettable function, but that one is no longer implemented in Apple's own classes. It's a code path which doesn't happen for all users, so only a few get the crash and maybe this is related to some accessibility setting.

Anyway, via a new InstallNSAccessibilityPatchMBS function in our plugin, we'll patch it and install a accessibilityIsAttributeSettable function to just return false every time. If the class has such a method, the class method is preferred, but we install a fallback to avoid the crash.

So when you see such a crash, you can soon try our MBS Xojo Plugins in version 18.5 and call InstallNSAccessibilityPatchMBS method on start of the application.

Write formatted text with DynaPDF

As you may know you can use MBS Plugins with Xojo and FileMaker to write PDFs with DynaPDF functions. The WriteFText functions accept formatting commands in the text, so you can create various formats. We got a few examples in the following Xojo source code:
  • Change text rise and size to get footnote references
  • Change font to get e.g. a bold font
  • Change color
  • Create lists with hierarchies, numbered entries or multiline entries.
Check the sample code here:

// set font call pdf.SetFont "Helvetica", 0, 12.0, true, pdf.kcpUnicode dim y as Double = 50 // change font size and raise for foot note references text = "\FS[12]Hello World\FS[6]\TR[6]123\TR[0]\FS[12] Just a test." call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // change font to get bold text = "\FT[Helvetica]Hello \FT[Helvetica-Bold]World \FT[Helvetica]everyone." call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // change color in the text text = _   "\FC[" + str(DynaPDFMBS.RGB(255, 0, 0)) + "]Red "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 255, 0)) + "]Green "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 0, 255)) + "]Blue "+_   "\FC[" + str(DynaPDFMBS.RGB(0, 0, 0)) + "]Black " call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text) y = y + 20 // make list text = _   "\LI[0]First"+EndOfLine+"with two lines\EL#"+_   "\LI[0]Second\EL# "+_   "\LI[0]Third\EL#" call pdf.WriteFTextEx(50, y, 200, -1, pdf.ktaLeft, text)
The same formatting texts can be used in FileMaker, Xojo and any other development tool supported by DynaPDF like C++, VB, PHP and Delphi.

ChartDirector 6.3 Released

We got the announcement of an update to ChartDirector:

Advanced Software Engineering is pleased to announce the immediate availability of ChartDirector 6.3.

ChartDirector 6.3 adds support for embedded resources in executables. As embedded resources are mostly used in desktop GUI applications (as opposed to web or command line scripts), so ChartDirector 6.3 is only released for C++ and .NET (C#, VB).

ChartDirector can use images for the chart background, pattern colors, scatter symbols, CDML icons, … In previous versions of ChartDirector, these images have to be provided using file system paths. ChartDirector 6.3 allows these images to be embedded in executables as resources, and uses "resource paths" to access them. This eliminates the need to redistribute image files with the executable.

Apart from images, font files can also be embedded as resources.

More details can be found in the ChartDirector 6.3 Release Notes.

We'll update our MBS Xojo ChartDirector Plugin soon, when we get the libraries and header files.

IconFamilyMBS class deprecated

In our Xojo plugins we have the IconMBS and IconFamilyMBS classes. They use Apples frameworks with icon functions, but those are not well maintained the last few MacOS releases and we see more and more issues. Probably as a lot of functions are based on the deprecated QuickDraw framework. So we deprecate IconFamilyMBS class for the next prerelease plugin.

So please change code and move to newer functions. For example instead of IconFamilyMBS class to get an icon in various sizes, you can use NSWorkSpaceMBS class methods. IconForFile functions returns the icon for a file and than you can use NSImageMBS class to scale down. With the following code you can quite easily get a 2x picture for a FolderItem:

const SizeWanted = 256
dim file as FolderItem = SpecialFolder.Desktop.Child("test.rtf")

dim n as NSImageMBS = NSWorkspaceMBS.iconForFile(file)
// set size we want
n.setSize SizeWanted*2, SizeWanted*2

// make picture
dim p as Picture = n.CopyPictureWithMask

// make 2x picture here:
dim q as new Picture(SizeWanted, SizeWanted, array(p))

If you need an icon for a file type, you can use the IconForFileType function. If you need to add an icon to a file, please use SetIcon method in NSWorkSpaceMBS class.

The folderItem.IconMBS function is still working well and was upgraded in MBS Xojo Plugins in version 14.2 to use NSWorkspace methods to get the icon.

By the way, NSWorkspace's icon functions internally use the same functions as our IconMBS class, which is not deprecated!

Xojo Stammtisch in Zürich, Schweiz

On my next visit to Zurich, I'd love to make another Xojo developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen am 21. November in Zürich?

Einfach gemütlich zusammen sitzen und über Xojo schnacken.
Gerne zeige ich auch neue Pluginfunktionen oder helfe bei Problemen mit Xojo Projekten. Einfach Computer mitbringen und was zeigen.

Bei Interesse bitte anmelden: Anmeldung

Wer Interesse hat an einem Termin mit mir für Softwareentwicklung, Schulungen, Entwicklungshilfe, Plugin Empfehlungen, assistierte Fehlersuche, Code-Review und IT-Beratung, der darf sich gerne melden für eine baldige Terminfindung.

MBS Xojo Plugins, version 18.5pr5

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

xDev 16.6 Issue

The November/December (16.6) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Munich 2018 by Marc Zeedar
The MBS Xojo Conference in Germany gets bigger every year. This fall it was held in Munich and Marc went so you could stay home and read all about it.

Upgrading Xojo by Jim Meyer
No doubt you have a few older Xojo projects you haven't upgraded to the current version. How much trouble will it be to get them working in the latest IDE? Will it be worth it? Jim shares his experience.

Road Work by Marc Zeedar
These days, programmers can work almost anywhere there's Internet. Marc spent a few weeks in France testing the theory and has tips for working on the road.

Building a Controller by JC Cruz
Jose shows how to build a data-entry controller.

PLUS: Clipboards, database rules, database transactions, Xojo 2018r3, and more!

MBS FileMaker Plugin, version 8.5pr4

New in this prerelease of version 8.5 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 18.5pr4

New in this prerelease of the 18.4 plugins:
  • Updated ChartDirector control examples.
  • Fixed bug in CDPieChartMBS class and setExplode method with HiDPI.
  • Added delegates to documentation.
  • Fixed SystemInformationMBS.UserName for Windows.
  • Updated ChartDirector for Mac to newer build.
  • Improved handling of extra quotes in CSV text for SplitCommaSeparatedValuesMBS function.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

ChartDirector Plugin with HiDPI

We got updated ChartDirector control example projects for HiDPI and Xojo 2018r3 coming with next MBS Plugins:

When using our plugin, you can set CDBaseChartMBS.ScaleFactor to 2 to get our plugin to multiply all numbers by 2 and get you a higher resolution of the graph. This makes it easy to adapt an application for higher resolutions.

Xojo 2018 Release 3

The new version of Xojo was released this week. You probably read the announcement on the Xojo website. Improvements include Dark Mode (see blog article) and IDE enhancements (see blog article).

For MBS Plugin there is a little change we will apply to next plugin release: The list of data types for SQL in the Xojo plugin SDK was extended and now includes all variants of integer from 8 to 64-bit and signed/unsigned. We''ll update our MBS Xojo SQL Plugin to make sure we can pass right data type to Xojo for UInt16 and others. The plugin will stay with old behavior for older Xojo versions.

This Xojo release looks great so far and we are moving a lot of projects from older versions to the new Xojo 2018r3 release. The labels on Windows are a big improvement as well as the other changes to reduce flicker on Windows. And the new Xojo version works with Xcode 10, which we need for MacOS 10.14 Mojave.

There is a move in software development to get us 64-bit only on Mac. We like to avoid the annoying dialogs for 32-bit for our customers and soon start implementing the notarization for our apps. There is an AppWrapper update (3.9) coming to help there. But usually it will be a shell script to do the signing, the notarization and build a dmg. We want to automate the build process as much as possible.

For old Real Studio, it may come the time to say good bye. MacOS 10.15 may no longer support 32-bit and not run it.

See also review from Bob Keeney: Xojo 2018 R3

Strange looking PDF in Microsoft Edge and Apple Preview

Have you received PDF documents like this?

This is a PDF preview in Microsoft Edge. The PDF in question uses an OpenType font with postscript outlines with the variant without CID Font operators and this format is not supported by the Microsoft Edge PDF viewer.

For MacOS, the preview app shows the PDF, but when you print it, you get an empty paper.

We got a workaround for using this type of font with DynaPDF functions in our FileMaker and Xojo Plugins. So if you like to use such a font and get a working preview above, you need to not use the unicode encoding, but pick one of the 8-bit code pages like 1252.

Query the properties for font via GetSysFontInfos (Xojo) or DynaPDF.SysFontInfo (FileMaker) and check what you get back for BaseType. If the base type is OpenType. If it is open type and CIDOrdering property is empty, please don't use unicode code page for loading that font.

Or as I assume most clients do, is to trash the font and use one with proper character collection information. Otherwise having a checkbox to fall back to 1252 code page could be a checkbox to include for PDF output.

MBS Xojo Plugins, version 18.5pr3

New in this prerelease of the 18.4 plugins:
  • Added SCNCameraMBS, SCNLightMBS and SCNCameraControllerMBS classes.
  • Updated SQL Database plugin for changes in Xojo 2018r3.
  • Deprecated Account types for ACAccountTypeMBS class as Apple deprecated them for MacOS 10.14.
  • Changed SSH2TunnelMBS class to stop thread in destructor.
  • Added ReadFile method to SmartCardMBS class to read data from various smartcards (e.g. Swiss Health Insurance Card or Belgian Identity Card).
  • Added NSTextFinderMBS class.
  • Added find bar methods with NSScrollViewMBS class.
  • Added find bar methods with NSTextViewMBS class.
  • Added NSColorSpaceMBS.File property.
  • Added NSProcessInfoMBS.operationSystemVersion method and properties.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

New functions for smart card reading

In the last two weeks I worked on new functions to read smart cards. We got a client interested in reading Belgian national identity card via CryptoTokenKit functions in our plugins and a FileMaker client interested in reading Swiss Health Insurance cards. We got both working with our latest MBS Plugins.

For testing, we used both the Smart Card Reader from König (left) and the SmartTerminal ST-1144UB from Cherry (right). Both do the job with a little difference. For the left device, you can connect and query status, even if there is no card. The right one only allows to connect when you have a card inserted. Other readers work probably as this uses a standard interface and drivers are built into the operation system.

For Xojo we got the new CryptoTokenKit classes in MBS Xojo Mac64bit Plugin for the modern way Apple likes to handle this with asynchron operation and delegates. Beside this, we also go the older cross platform way via PCSC API and the ReadFile method in and SmartCardMBS class.

For FileMaker, we added a new SmartCard.ReadFile function for Mac and Windows in the upcoming MBS FileMaker Plugin version 8.5.

Whatever function you use, you can pass the right file ID and read the files you need from the smart cards. We also got a function to split the data into the parts. See SmartCard.SplitValues for FileMaker and SmartCardMBS.SplitValues function for Xojo.

MBS Sale for Conferences

In the last week and the coming week, we have seven FileMaker conferences in Europe. Five are sponsored by Monkeybread Software. For three conferences, I will attend and present about our plugin.

We like to reward people coming to the conferences, so we make a special conference offer:

20% on all licenses including updates.

If you like to use that offer, just order via web store and use coupon code FMK2018. Add first to shopping cart and than put the coupon code in the field.

Enjoy the conferences and see you soon!

Reading Belgian national identity card

As you may know all Belgians have an identify card. We recently added classes for CryptoTokenKit framework on Mac and translated a sample project from Swift to Xojo to read those card. Works very well to get basic information, address details and the picture of the person.

The same could have been done with our SmartCard classes. And as those classes use the PCSC interface on MacOS, Windows and Linux you could even get it done cross platform.

But for newer development on MacOS Apple prefers to use their own frameworks, so we got the CryptoTokenKit plugin part in the Mac64bit plugin.

URLs without UserName and Password please

With last plugin release we enabled the option for CURL to disallow you passing user name and password. As URLs are sent to proxy and may be logged at the web servers, we prefer to not include credentials in the URL. And if you use the email address for user name, the name in the URL never worked.

So for the future, please separate them and put the credentials in the relevant options:

In FileMaker:

Set Variable [ $curl ; Value: MBS("CURL.New") ]
Set Variable [ $r ; Value: MBS("CURL.SetOptionURL"; $curl; $URL) ]
Set Variable [ $r ; Value: MBS("CURL.SetOptionUsername"; $curl; "xxx") ]
Set Variable [ $r ; Value: MBS("CURL.SetOptionPassword"; $curl; "yyy") ]

In Xojo:

dim curl as new CURLSMBS
curl.OptionURL = URL
curl.OptionUserName = "xxx"
curl.OptionPassword = "yyy"

If you still use URLs with username and password, please move to passing them with the username and password properties.

If you really can't change your solution, you can still use CURL.SetOptionDisallowUserNameInURL (FileMaker) and OptionDisallowUserNameInURL property in CURLSMBS/CURLNMBS and CURLMBS classes (Xojo) to enable username and password in URLs.

MBS Xojo Plugins, version 18.5pr2

New in this prerelease of the 18.4 plugins:
  • Updated DynaPDF to version
  • Fixed issues with printer settings for DynaPDFMBS print methods on Windows.
  • Improved RemoveAccentsMBS to include greece characters.
  • Changed CDBaseChartMBS.MakeChartPicture to set resolution of picture to ScaleFactor * 72 dpi.
  • Changed SQLDatabaseMBS to return RecordSet where you can query names of columns even if you have no rows.
  • Fixed bug in PaletteCalculatorMBS.GetNearestIndexOfColor with color parameter.
  • Fixed FinderUpdateMBS for 64-bit to work by calling internally NSWorkSpaceMBS.noteFileSystemChanged.
  • Added more NSErrorMBS methods to create custom error objects.
  • Fixed a bug to avoid crash with RegisterMBSPlugins with wrong license key.
  • Fixed bug in SSL initialization introduced in pr1.
  • Updated to zlib 1.2.11.
  • Fixed bug in DynaPDF print functions (made white pages) and fixed example (printed only one page).
  • Fixed bugs in WindowsMidiOutputMBS and WindowsMidiInputMBS for 64-bit.
  • Fixed SystemInformationMBS.SystemFont for Mac.
  • Added new plugin part to Mac64bit plugin for CryptoTokenKit from Apple.
  • Fixed problem with SystemInformationMBS.Computername and MBS.ComputerName returning extra characters.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

CURL Up 2019

The CURL conference for 2019 is announced:

curl up 2019 will take place in Prague, the Czech Republic the last weekend of March.

When: March 29-31, 2019
Where: Prague, Czech Republic
Venue: Charles University

For details, please check the website.

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

Older blog entries:

2018-10-07 Call stored procedures with output parameters
2018-10-02 MBS Xojo Plugins, version 18.5pr1
2018-09-28 XDC 2019 Call for Speakers
2018-09-27 Moving to Xcode 10
2018-09-25 MonkeyBread Software Releases the MBS Xojo Plugins in version 18.4
2018-09-24 Xojo Stammtisch in Zürich, Schweiz
2018-09-23 Bitsundso Download
2018-09-21 How to plan a conference
2018-09-21 Under the Radar Podcast
2018-09-21 MBS Xojo Plugins, version 18.4pr10
2018-09-19 Missing LSSupportsOpeningDocumentsInPlace for iOS Apps
2018-09-19 Xojo job offer in France
2018-09-18 Meetings at Consumer Electronics Show CES 2019 in Las Vegas?
2018-09-17 MBS Xojo Plugins, version 18.4pr9
2018-09-16 Use Machine Learning for detecting porn images
2018-09-14 MBS Plugin Keynote 2018
2018-09-13 MBS Xojo Plugins, version 18.4pr8
2018-09-13 Videos from MBS Xojo Conference
2018-09-10 Omegabundle 2018 ends 10th September
2018-09-08 Winners at MBS Xojo Conference


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