DynaPDF Text Position Examples updated


We got a new example for Xojo on how to extract text from a page and know each position of each text chunk. We can even keep track of current state, so we have the fonts ready and can even draw the same text on top of the existing PDF with Xojo. So DynaPDF renders page with here with text in black and we draw in paint event the rectangles for text portions and than draw the same text with Xojo. New is the latest version of the example, where we can now split text per character to get the position of each character. As you can see we now draw each box in green and each character in blue on top of the PDF drawing:



This example uses the DynaPDFParseInterfaceMBS class from DynaPDF Pro to walk over all PDF commands drawing a page, so we get all the text output as well as matrix changes, font setting and state saving & restoring. We keep track of the current matrix with DynaPDFMatrixMBS class and collect the text records with DynapdfTextRecordWMBS class for Unicode or DynapdfTextRecordAMBS for font specific encodings. In latter case we convert the characters using current font to unicode text.

The example is included in 18.1pr4 pre-release.
To use this code in a shipping application, you need to order the DynaPDF Pro license from us for use with the MBS Xojo DynaPDF Plugin.

Older blog post: DynaPDF Text Position Examples

FileMaker Konferenz 2018 in Malbun


Die Anmeldung zur FileMaker Konferenz 2018 ist eröffnet.

Vom 17. bis 20. Oktober diesen Jahres findet die neunte deutschsprachige FileMaker Konferenz in Malbun, Liechtenstein statt. FileMaker Anwender und Entwickler können ihre Teilnahme ab sofort buchen. Anmeldungen bis zum 23. Juni 2018 erhalten einen Frühbucher-Rabatt auf die Konferenzpauschale.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2018 rund 180 Entwickler, Anwender, IT-Fachleute und Entscheidungsträger aus Wirtschaft, Bildung und Verwaltung. Rund um über 25 Fachvorträge und Workshops wird es viel Zeit zum Vernetzen in den gemeinsamen Pausen und beim Abendprogramm geben.

Eventuell gibt es auch 2018 wieder eine MBS Plugin Schulung bzw. Workshop. Hat da jemand Interesse?

Xojo Developer Meeting in Montreal


Due to my trip to Montreal for the Québec FileMaker conference, we have a Xojo developer meeting:

14th March 2018, starting 18:00 o'clock.

Already 7 developers on the list. If you like to join, please contact me soon.

I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in Xojo, upcoming conferences and what's new in plugins.

Of course it is possible to arrange private meetings for consulting while I am in the city.

MBS FileMaker Plugin, version 8.1pr4


New in this prerelease of version 8.1 of the MBS FileMaker Plugin:
  • Fixed SQL.InsertOrUpdateRecords function (broken in pr2).
  • Fixed Trace.AreErrorNotificationsEnabled.
  • Added timeout for ImageCapture.OpenDevice in case no answer comes from driver.
  • Added WebView.CreateOnPopover function.
  • Changed XML.GetPathValue to return CDATA section as text if possible.
  • Improved Sendmail functions to not encode subject, email names or attachment names, if it contains no special characters in more cases by reducing the characters which trigger encoding.
  • Added option to preferences to block ESC key on Touch Bar and use Option-ESC instead.
  • Changed preferences dialog to shrink on smaller screen resolution and allows scrolling through options.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 18.1pr4


New in this prerelease of the 18.0 plugins:
  • Improved DynaPDFMBS.TranslateRawCode with new variant with more parameters.
  • Added GetSpaceWidth and GetTextWidth functions to DynaPDFMBS.
  • Fixed EncryptMBS for 64-bit.
  • Added Files and URLs functions to NSOpenPanelMBS class to return array of selected files.
  • Improved CURLEMailMBS class to not encode subject, email names or attachment names, if it contains no special characters in more cases by reducing the characters which trigger encoding.
  • Added LibUSBDeviceMBS and related classes to use LibUSB for cross platform USB functions.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

WebViewer on Popover with MBS Plugin


You like to get a custom webview on a popover?

Popover with Webview

With next MBS Plugin, you can put a WebKit 1.x web view on the Popover and load whatever you like.
The WebView.CreateOnPopover function will place the web view there until you close it later with WebView.Close.
Do not hesitate to contact us if you like to try the new plugin on the weekend.

LibUSB for Xojo in next MBS Plugins


Quite a few Xojo developers use our MBS Xojo USB Plugin to connect to devices, do measurements, exchange data and query information for their applications. Wether this is a scale to weight items, barcode devices, various sensors or just a special label printer, we do provide classes to help you.

For some time now we got HIDAPI classes to replace the older MacHID, LinuxHID and WinHID classes to provide a cross platform interface for USB devices with HID protocol.
And now we replace MacUSBConnect and WinUSB classes with our new LibUSB classes.

The new plugin classes are based on the open source LibUSB library, which works on MacOS, Windows and Linux. With quite a few Linux distributions, it comes preinstalled. The library itself is licensed LGPL, so you can load it in commercial applications, but distribute it as DLL/so/dylib file.

The new LibUSBDeviceMBS class provides functions to list devices and query information. You can open a connection to a device and transfer data as needed. The example project lists all the devices and even works nice on Raspberry Pi.

Will be included in next prerelease or if you like to try now, please do not hesitate to contact us.

The ESC key on the Touch bar


Do you have a MacBook Pro with Touch Bar?
If yes, how often may you have pressed ESC key in FileMaker unintentionally?

Well, to keep you sane and not loose valuable custom functions by pressing ESC accidentally, we got a new option in MBS Plugin preferences dialog for you:


So optional the MBS FileMaker Plugin 8.1 and newer will be able to block ESC key presses without modifier keys. And if you press option key, we remove the flag for the option key from the event and pass it though to FileMaker. So ESC alone is blocked, but Option-ESC goes through as if you pressed ESC.

The feature only takes effect on MacBook Pros with TouchBar, only inside FileMaker application, only if enabled, and only if you use the internal keyboard.

If you like to try this today, please get in touch.

MBS Xojo Plugins, version 18.1pr3


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

MBS FileMaker Plugin, version 8.1pr3


New in this prerelease of version 8.1 of the MBS FileMaker Plugin:
  • Changed SendMail functions to replace NULL characters with space in email texts to avoid truncation of texts.
  • Updated LibXL to version 3.8.2.
  • Added DynaPDF.List and GMImage.List functions.
  • Improved CURL.SetupAWS method to work better with Amazon S3 and also with Dell ECS.
  • Added new Move cursor for DragDrop.SetCursor.
  • Updated LibTiff to version 4.0.9 including support for BigTiff format.
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

FileMaker, Inc. Launches New Events Web Pages


FileMaker Inc. announced on the community their new events page:

FileMaker, Inc. has created a dedicated web page highlighting upcoming in-person and virtual events submitted by FileMaker partners and enthusiasts around the world. Upcoming workshops, trainings, user group meetups, trade shows, and webinars can all be found in this new area in the Learn section of FileMaker’s website.

See upcoming events in your area and submit your own event by going to filemaker.com/events/.

Additionally, we will send out event notification emails periodically to help drive attendance. Manage your FileMaker email subscription here.


It's a great move to provide a gathering point for events. I do hope all the conferences and local meetings end up being there, so people can easily find them.

Currently, the events page lists over 190 events including 108 trainings, 44 workshops, 5 conferences.

See also MBS FileMaker Events page and our MBS Xojo Events page.

Xojo Meetings for Montreal and Toronto


As I travel to Montreal for the Québec FileMaker conference, I'd love to have some Xojo meetings with local developers:

If you live in this part of Canada, or you like to come over from the USA, please join those surveys to find the perfect date between 12th to 19th March 2018:

Survey for Toronto   Survey for Montreal

I know I have 15 Xojo developers using my plugins in Montreal alone and about 30 in Toronto. If you like to join, please contact me soon.

I reserve a table in a nice restaurant and I will be there. You can join and we can shop talk all night. Ask me plugin questions, bring your laptop and show projects.
And of course we discuss latest changes in Xojo, upcoming conferences and what's new in plugins.

Of course it is possible to arrange private meetings for consulting while I am in the city.

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)

Seven months till European MBS Xojo Conference in Munich


The early bird offer is set to expire in one month (6 months before conference) for our European MBS Xojo Conference 2018 in Munich. If you like to join for the best rate or become a speaker, please contact us soon.

Already 25 attendees are registered from six countries. Reserve your ticket and reserve your hotel room as soon as possible.
Invoices for registered attendees will be written in February.

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 March is just 499 Euro plus VAT if needed. 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 XDC 2018 in Denver in April 2018.

MBS FileMaker Plugin, version 8.1pr2


New in this prerelease of version 8.1 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.1pr2


New in this prerelease of the 18.0 plugins:
  • Updated JPEG library to version 9c.
  • Added MemoryStorageMBS.Constructor.
  • Fixed problems with CNContactMBS phoneNumbers and others having wrong return type.
  • Added NSEPSImageRepMBS.pdfImage.
  • Added last error properties to PHPMBS class.
  • Added callXojo function for PHP to trigger event in addition to the callRealbasic function name.
  • Fixed tools plugin to compile with Real Studio 2011.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Using ExecuteSQL with Parameters is important


Today we got a problem with SQL. It’s not the usual SQL injection worries, but more the convenience of building SQL statements containing values, which causes problem.

 

We see a lot of SQL queries to lookup values, but people love to include the

 

MBS( "FM.ExecuteFileSQL"; Get(FileName); "SELECT Name FROM Contracts WHERE ID=" & $ID )

 

Now if ID is a text, but $ID contains the number 1234, this causes an error: 

 

[MBS] ERROR: FQL0018/(1:32): An expression contains incompatible data types.

You would need to use quotes at least:

 

MBS( "FM.ExecuteFileSQL"; Get(FileName); "SELECT Name FROM Contracts WHERE ID= '" & $ID & "'" )

 

Although you don’t see the double quotes having single quotes easily here. This may work, until someone includes a single quote in that variable.

 

When you use parameters in the query, you can avoid this:

 

MBS( "FM.ExecuteFileSQL"; Get(FileName); "SELECT Name FROM Contracts WHERE ID = ?"; 9; 13; $ID )

 

You can pass parameter as text or number even if it does not the match the field type. FileMaker will converted the data type automatically to match.

 

 

Next, lets assume you have a variable containing a number and you make a query

 

Set Variable [ $x ; Value: 123.45 ] 

Show Custom Dialog [ MBS( "FM.ExecuteFileSQL"; Get(FillName); "SELECT Name, Price FROM Items WHERE Price= " & $x; 9; 13 ) ]

 

If $x is a number, it will be converted by FileMake to a text. Or it is a text already with some user entered number. Now if the field is empty, you get a syntax error, because your SQL ends in a = character. But you may have noted that the number is passed directly here without parameter. So a German user typing "123,45" with comma as decimal separator will cause a SQL error. SQL always uses dot as decimal separator, so the query fails in Germany with comma, but works in USA.

 

Show Custom Dialog [ MBS( "FM.ExecuteFileSQL"; Get(FillName); "SELECT Name, Price FROM Items WHERE Price = ?"; 9; 13; $x ) ]

 

Using parameters helps you to avoid problems here and this works for any locale. If needed, you can use GetAsNumber() to explicit convert text to number and use localized decimal separators to get a numeric value.

 

So please use parameters for SQL statements.


Windows Scripting


We do support running Windows scripts with both JavaScript and VBScript with our plugins for Xojo and FileMaker:

In Xojo, you can use the WindowsScriptMBS class. It allows you to add code, evaluate some expressions and run functions with parameters. Errors are reported and you can even define a timeout.

In FileMaker the WindowsScript functions to do the same. Our examples show how to use various scripts to use OS functions in FileMaker.

Microsoft did not port the ScriptControl to 64-bit, so by default the plugin functions only work properly in 32-bit. But the open source Tablacus Script Control 64 does work in 64-bit with our plugins. The source code is available here: github.com/tablacus/TablacusScriptControl.

Of course nowadays you can do a lot of things directly instead of using VBScript. But if you have existing scripts, it may be convenient to use the plugin functions to run it.

Drop area for Windows in FileMaker


For years people asked for our DragDrop functions to work on Windows too.
Due to a few technical difficulties, the feature was in development for a year and put on hold several times. But last week we found the missing piece for the puzzle to get it working.

So for next prerelease, the DragDrop functions will work on Windows, too. A few little details, will be different. First we accept currently text and file drops. The image view used for drop destination needs a picture as on Widows we can't have it transparent. But that is normally not a problem as we just add a picture there with a note to user for the drop area.



Drop data can be text, file paths or file data. So some files like the files from explorer come usually by file paths. But attachments from Outlook (as seen in video), come as file descriptor with on demand data. So there is actual file, but the data comes directly from the application initiating the drag operation.

If you like to try, download the 8.1pr2 version or contact us for a early copy of the plugin.

Adding custom icons for MacOS in Xojo


IconsRecently a client asked how to modernize the old icon setting code to work in 64-bit targets. We used to do this via Folderitem.AddCustomIconMBS function and IconFamilyMBS class. But those are primary using old Carbon code with GWorld and IconServices library. Now Apple deprecated that in favor of NSWorkspace's setIcon method.

So today we want to show you how to add a custom icon to a file with three sample snippets. First with an existing picture, second with creating a picture with alpha channel and third one with a masked image. Depending on what you do, all ways work, but if you have an image already or just compose one for the new file, one way may be better suitable.

First, with an existing picture in the project or a variable:

// write a file dim f as FolderItem = SpecialFolder.Desktop.Child("test.txt") dim t as TextOutputStream = TextOutputStream.Create(f) t.WriteLine "Hello" t.Close // use existing picture dim g as new NSImageMBS(SomePicture) dim b as Boolean = NSWorkspaceMBS.setIcon(g, f, 0) if not b then MsgBox "Failed to add icon" end if
Second, with alpha picture:
// write a file dim f as FolderItem = SpecialFolder.Desktop.Child("test.txt") dim t as TextOutputStream = TextOutputStream.Create(f) t.WriteLine "Hello" t.Close // create picture for icon with alpha dim p as new Picture(512, 512) dim pg as Graphics = p.Graphics pg.ForeColor = rgb(255,0,0) pg.FillOval 0,0,p.Width,p.Height // add icon dim g as new NSImageMBS(p) dim b as Boolean = NSWorkspaceMBS.setIcon(g, f, 0) if not b then MsgBox "Failed to add icon" end if
Third, with masked picture:

// write a file dim f as FolderItem = SpecialFolder.Desktop.Child("test.txt") dim t as TextOutputStream = TextOutputStream.Create(f) t.WriteLine "Hello" t.Close // create picture for icon dim p as new Picture(512, 512, 32) p.Graphics.ForeColor = rgb(0,0,0) p.Graphics.FillRect 0,0,p.Width,p.Height p.Graphics.ForeColor = rgb(255,0,0) p.Graphics.FillOval 0,0,p.Width,p.Height // add mask dim m as Picture = p.mask m.Graphics.ForeColor = &cFFFFFF // first all white m.Graphics.FillRect 0, 0, p.Width, p.Height m.Graphics.ForeColor = &c000000 // visible parts black m.Graphics.FillOval 0, 0, p.Width, p.Height // add icon dim g as new NSImageMBS(p) dim b as Boolean = NSWorkspaceMBS.setIcon(g, f, 0) if not b then MsgBox "Failed to add icon" end if
We hope those snippets help you and if you have questions, please do not hesitate to contact us.

PS: The Xojo project icon made with our QuickLook extension.

The Status of our PHP support


As you may know we provide PHP support in our Xojo and FileMaker plugins. You can load a precompiled PHP library, get/set variables and run PHP code. That is useful for reusing existing PHP code in your solutions. There is a wide variety of uses including processing JSON or XML, doing SOAP or REST requests for various web services, calculating hashes or tokens for authentication or using the same functions in Xojo/FileMaker for encryption as in the PHP code running on your website for the counterpart.

We added PHP support a long time ago. At least 9 years ago for Xojo (called REALbasic at that time) and later for FileMaker in the year 2012 with version 2.9, about 5 years ago. The code is mostly identical for both and even allows to call back to the host application. In Xojo you can call an event in your Xojo code. In FileMaker you can trigger scripts, use evaluate and SQL to query your database. It works quite well for a few customers. (more)

MBS Xojo Plugins, version 18.1pr1


New in this prerelease of the 18.0 plugins:
  • Changed MeasureRotatedTextMBS to not use HDC of graphics object to measure, but it's own HDC.
  • Fixed problems with connecting to SQL Anywhere database.
  • Added Options property to SQLDatabaseMBS, SQLConnectionMBS and SQLCommandMBS to inspect options.
  • Updated DynaPDF to version 4.0.16.43.
  • Improved Java loading code on Mac to find automatically newest Java version and load it.
  • Improved JavaVMMBS.SetLibraryPath function to work for Mac, too.
  • Improved Java loading code on Windows to find JRE 9.
  • Added WindowsDisplayMBS class.
  • Fixed problem with BigNumberMBS to currency conversion. Now rounding.
  • Fixed problem with notification receiving in CNContactStoreMBS.
  • Using WindowsFileCopyMBS now sets error mode to prevent error dialogs from system.
  • Fixed bug in DynaPDFMBS.WriteStyledText with extra new lines when switching alignment.
  • Fixed bug in DynaPDFMBS.WriteStyledText with switching font back to non-bold.
  • Updated CURL library to version 7.58.0.
  • Added support for SQL Anywhere API v1 in addition to v2.
  • Fixed problems with using SQLDatabaseMBS object after calling close method on it. Now you can reuse it for another connection.
  • Fixed SQLDatabaseMBS and SQLConnectionMBS to close an existing connections before starting a new one.
  • Updated SQLite to version 3.22.0
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 8.1pr1


New in this prerelease of version 8.1 of the MBS FileMaker Plugin:
  • For XML.SetPathValue and XML.SetPathXML you can now specify [] (Without index) to add new node on the end.
  • Added LastSettings option to PDFKit.GetPrintSetting function.
  • Added XML.SetPathXML function.
  • Added ReturnValues parameter for JSON.GetArrayItemsAsList function.
  • Improved idle time detection for touch screens.
  • Updated DynaPDF to version 4.0.16.43.
  • Improved Java loading code on Mac to find automatically newest Java version and load it.
  • Improved Java loading code on Windows to find JRE 9.
  • Improved Files.Launch to better handle passing flag as text.
  • Added option for second and third primary keys to SQL.InsertOrUpdateRecords.
  • Prepared plugin for next FileMaker version.
  • Updated CURL library to version 7.58.0.
  • Added support for SQL Anywhere API v1 in addition to v2.
  • On shutdown, the plugin now closes progress dialog, frees notifications and drag & drop areas to avoid later callbacks to unloaded plugin which would crash. Usually only happend when you had such a thing in use and updated plugin.
  • Updated SQLite to version 3.22.0
Download at monkeybreadsoftware.de/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

XDC 2018 in Denver to sell out soon


Xojo Inc. just announced that the Xojo Developer Conference 2018 in Denver may sell out soon as there are only 11 tickets left.

If you haven't registered yet, the time is now!
Save $100 by Feb. 16, but register soon to guarantee you'll have a spot!
The 2014 conference sold out before. Looking forward to even more Xojo developers this time.

Hotel rooms are available here.

I am looking forward to see you all in Denver!

See also Things to do in Denver beside XDC and MBS Xojo Conference in September 2018 in Munich.

FileMaker Stammtisch Ulm


Am 8. Februar treffen sich interessierte FileMaker Entwickler in Neu-Ulm zum Austausch von Neuigkeiten, Erfahrungen und Tipps & Tricks.

Diesmal bin ich dabei, also eine Gelegenheit sich über das neue MBS Filemaker Plugin 8.0 zu unterhalten bzw. über FileMaker Konferenzen.

Wo: Ristorante Pizzeria Capri, Maximilianstraße 28, 89231 Neu Ulm
Wann: 8. Februar 2018, ab 19 Uhr
Kosten: Nur die eigenen Getränke und Abendessen

Anmeldung am Besten beim Swen Bauer und Fabrice Ricker. Die können euch dann auch in Zukunft über weitere Termine informieren.

Würde mich freuen Euch dort zu sehen.

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

PS: Noch sind Plätze zur MBS Schulung frei bei der Denkform am 1. März, anschließend FileMaker Stammtisch Rhein-Main.

Archives

Feb 2018
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