EngageU - FileMaker Conference

We signed up to sponsor the EngageU conference. ClickWorks and Square Moon continue to organize a pan-european conference for Claris FileMaker developers from all over the world.

EngageU - FileMaker Conference
12th - 14th of November 2023, Antwerp, Belgium




After the conference in Malmö last year, we see the second conference coming to Belgium. This may be the largest in-person European FileMaker conference this year with about 250 participants. Claris is expected to join and all presentations will be in English.

Please mark the date in the calendar to join the conference later this year.
And it's great reason for people from all around the world to do a business trip to see Belgium.

Delayed start of FileMaker Pro

Sometimes we get queries about whether our plugin may slow down FileMaker Pro starting and we like to show you various ways the startup of FileMaker may be slower than usual:

Certificates

FileMaker tries to verify the code signature of the plugin via Windows API calls. Windows itself wants to refresh the certificates every week and does a network query to do so. This fails and after a few seconds, it gives up and continues doing the verify with the certificates on disk. If you turn the Wifi/LAN off and start FileMaker offline, it may be much faster to do so. In that case you may want to check firewall to let Windows contact it's update server to refresh the certificates once. Then the start time should be back to normal for a while.

(more)

FileMaker and MongoDB

In the past we may have connected a FileMaker solution to push data to a web server with a MySQL database. But nowadays, we prefer MongoDB for a lot of things. No hassle dealing with defining the schema upfront and enjoying a lot of built-in features like audit logs and scaling via a cluster.

 

With MongoDB we can setup a cluster and link a few servers together as a cluster. Within the cluster the MongoDB servers synchronize themselves automatically eventually. You may connect for example a server in America with one in Europe and one in Asia. This distributes the load to this servers and makes the whole access more responsive. If needed, we can later add more servers. Like for USA have a server in California, in Texas and one in New York to distribute load within the USA better. The cluster can grow as you need more servers to handle the load. You may even add a local on-premise server to that cluster, so you have a local copy of the MongoDB and work when your office is offline.

 

Let us draw this for you:

Once you have the cluster, you could connect to it. We may have several web servers to show a website and have it access the MongoDB cluster to query the data. Since the web servers are distributed to be close to the customer, they can connect to the cluster and end up connecting to the closest server. That may show data on the website.


(more)

Regular Expressions in FileMaker

While we have our advanced RegEx functions in MBS FileMaker Plugin using RegEx.Compile and RegEx.Execute, we got a set of easier functions:


RegEx.Match

 

This function can simply tell you whether there is a match, e.g. when you like to check if some text is contained in a piece of text.

 

You can play with the data viewer and just evaluate it. e.g.

 

MBS( "RegEx.Match"; "H(.*)o"; "Hello")

 

Or use it to check if for example a text is a number by using a pattern like this:

 

MBS( "RegEx.Match"; "^(\d+)$"; "12345")

 

The ^ means the beginning of the line (if multi line is enabled) or beginning of the input text. The $ is the end of the line (in multi line) or the end of input in the default mode with single line.

 

Of course you can pass in flags. You can pass compilation and execution flags. A compiler flag may be something like Caseless vs. CaseSensitive, Multiline or SingleLine, Greedy or Ungreedy, or something for end of line like NewlineAny. Here is a sample where we ask for case insensitive comparison:

 

MBS( "RegEx.Match"; "H(.*)o"; "hello"; "caseless")

(more)

More Scintilla questions

Scintilla is very powerful, but finding something in the documentation can be troublesome. let's summary a few questions from you guys around ScintillaControlMBS control:

How to show whitespace?

Please check ViewWS property and use the constants:

  • kWhiteSpaceVisibleOnlyInIndent
  • kWhiteSpaceVisibleAlways
  • kWhiteSpaceVisibleAfterIndent
  • kWhiteSpaceInvisible

e.g.

c.ViewWS = c.kWhiteSpaceVisibleAlways
(more)

Search relationship graph for Windows improved

Since we added the search box for the relationship graph for Windows, a lot has improved. We fixed bugs and added more functionality, so checkout the version as in version 13.1 of the MBS Plugin for both FileMaker Pro and Claris Pro:

As you may notice the look changed a bit and it is no longer a text field, but a combo box, so you can popup the control and see the choices. We populate the choices when the dialog opens, so if you just added a new table, it doesn't yet show up. But next time you open the window, it should be in the list:

We hide the field, if you move to another tab. And when we create the field, we generate two hotkeys: Control-F and Control-G. You can press Control-F to move focus to the search field. Type something and press return. Then you can press Control-G to search again.

(more)

Different variations to make a JSON in Xojo

Today we had a bit of fun with JSON coding in Xojo and through what different ways we have to make a JSON in Xojo with different ways.

Let's start with Xojo's built-in ways. So let us use JSONItem class:

Sub Xojo1() Dim root As New JSONItem Dim arr As New JSONItem arr.Add(16) arr.Add(42) arr.Add(128) root.Value("RootA") = "Hello world" root.Value("ArrayOfNumbers") = arr root.Compact = False TextArea1.Text = root.ToString End Sub

This makes a JSON like this:


{
    "RootA": "Hello world",
    "ArrayOfNumbers": [
        16,
        42,
        128
    ]
}
(more)

MBS @ FMTraining.TV - MBS Plugin 13.1

Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch.

A few days ago Christian Schmitz from Monkeybread Software joined a live episode to talk a bit about the MBS FileMaker Plugin. Watch it on YouTube.

We talk about what is new in MBS FileMaker Plugin 13.1 including MongoDB, WindowsOCR, CURL, new checkboxes in preferences and more.

(more)

Xojo Licenses and XDC Tickets on sale

Xojo Inc. runs a sale for Pi day (14th March).
If your license expired or will expire later in March, please use this offer to buy a new one:

All Xojo licenses and XDC tickets are 14% off for the next 3 days!
Get this special discount in the store today through Thursday only!

xojo.com/store/

Sale Ends Thursday, March 16 11:59PM CT
All Xojo license purchases come with a 90-day money back guarantee. If your license is set to auto-renew during the dates of the sale the discount will be automatically applied.


Also if you waited for a XDC ticket, you can now grab it at a discount.

New in MBS FileMaker Plugin 13.1

In this article we want to introduce you the new functions from the MBS FileMaker Plugin in version 13.1.

Archive

With the new functions of the Archive component you can easily create your own archives. First, you create a new archive with the Archive.Create function. In this function you define the format in which your archive should be written. The following formats are available: 7zip, ar, arbsd, argnu, arsvr4, bsdtar, cd9660, cpio, gnutar, iso, iso9660, mtree, mtree-classic, newc, odc, oldtar, pax, paxr, posix, raw, rpax, shar, shardump, ustar, v7tar, v7, warc, xar and zip. Then we have to choose a filter that fits the format. Optionally, we can then specify a storage location with a file path. You can pass specific information about a format in further parameters and specify a password for the archive, which must be entered by the user when opening it. You can then use the Archive.AddFile, Archive.AddText and Archive.AddContainer functions to add the appropriate files to this archive. When you are done, close with Archive.Close. If we expect a container value back it will be in the output of this function. For a file that has been saved on disk, we get an OK. Here we see a script in which first the zip archive is created and then a text file, a file from a container and two files from a folder are added to the archive. After that the archive is closed again and stored on the desktop.

Set Variable [ $Path ; Value: MBS("Path.AddPathComponent"; MBS("Folders.UserDesktop"); "abc.zip") ] 
Set Variable [ $r ; Value: MBS("Archive.Create"; "zip"; "deflate"; $Path; ""; "Hello") ] 
Set Variable [ $r ; Value: MBS( "Archive.AddText"; "Hello World"; "UTF-8"; "Hello.txt" ) ] 
Set Variable [ $r ; Value: MBS( "Archive.AddContainer"; Tabelle::Container ; "Image.png"  ) ] 
Set Variable [ $r ; Value: MBS("Archive.AddFile"; "a.png¶b.pdf"; MBS("Path.AddPathComponent"; MBS("Folders.UserDesktop"); "testA")) ] 
Set Variable [ $r ; Value: MBS("Archive.Close") ] 

MongoDB

The new functions from the MongoDB component should make your work with Mongo DB much easier. We added aggregate functions for you to query data by applying a filter, sorting rules and grouping either to the whole database or only to a specific collection. Also, we can query the TLS status of the database to see if it is encrypted. With the function MongoDB.GetOptions we can query the options from the URL as a JSON document.

(more)

New in MBS Xojo Plugins in version 23.1

In this article I want to introduce you to the new functionalities from the MBS Xojo Plugins in version 23.1.

MongoDB

The new methods in MongoDB should make your work with Mongo DB much easier. We have added aggregate functions for you to query data by applying a filter, sorting rules and grouping either to the entire database or only to a specific collection. Also, we can query the TLS status of the database to see whether the connection is encrypted. Using the property Options from the class MongoURIMBS we can query the options of a URL. It fetches a JSON document containing all the options provided after the ? of a URI.

DynaPDF

Also in the DynaPDF section we have 2 new methods for you. You can rename named destinations with the method ChangeNamedDest in the DynaPDFMBS class. In the parameters you first specify the type of the object, then the object handle and finally the new name of the destination. The other method is the CreateStructureTreeEx method. Already since version 8.2 there is a related method CreateStructureTree, which creates a global structure tree that is required to create tagged PDF files. The new method has the additional possibility that we can specify the type of the root node. Otherwise the two methods work identically. DynaPDF added support for writing PDF/UA-1 files and update the DynaPDF library to 4.0.72.208

(more)

FileMaker Konferenz 2023 in Basel

Noch einen Monat Zeit für den Frühbucherrabatt.

Vom 21. bis 23. Juni 2023 findet die zwölfte deutschsprachige FileMaker Konferenz in Basel, Schweiz statt. Das ODELYA Hotel liegt zentral neben der Baseler Altstadt und ist fußläufig vom Bahnhof erreichbar, so dass sich die Anreise per Bahn empfiehlt. FileMaker Anwender und Entwickler können ihre Teilnahme seit dem 1. Januar 2023 buchen.

FileMaker Konferenz.com

Viele Konferenzen haben eine Mindestteilnehmerzahl und ein Absagedatum. In der Regel gibt es mit dem Hotel eine Vereinbarung für ein kostenloses Stornieren bis zu einem Datum. Wenn sich bis zu dem bestimmten Datum zu wenig Leute anmelden, wird die Konferenz abgesagt ohne dass der Organisator große Verluste macht. In den letzen Jahren kam das ja durchaus mal vor. Für die Teilnehmer ist der Frühbucherrabatt eine Möglichkeit ein paar Euro zu sparen und auch beim Hotelzimmer eine günstige Rate zu bekommen.

Möchten Sie Sponsor oder Sprecher werden?
Aktuell sucht der FMK Verein Vorschläge für interessante Vorträge.

Die Veranstalter vom Verein FM Konferenz erwarten auch 2023 rund 150 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.

Monkeybread Software ist als Platin Sponsor mit Stand und Session vor Ort. Bitte kommen Sie mit Ihren Fragen vorbei!

MBS Plugin 13.1 for Claris FileMaker

Nickenich, Germany - (March 7th, 2023) -- MonkeyBread Software today is pleased to announce MBS FileMaker Plugin 13.1 for Claris FileMaker for macOS, iOS, Linux and Windows, the latest update to their product that is easily the most powerful plugin currently available for Claris FileMaker produce line. As the leading database management solution for Windows, macOS, iOS and the web, the Claris FileMaker Pro Integrated Development Environment supports a plugin architecture that can easily extend the feature set of the application. MBS FileMaker Plugin 13.1 has been updated and now includes over 7000 different functions, and the versatile plugin has gained more new functions:

Our new WindowsOCR functions allow you to use the built-in OCR engine in Windows 10 or newer. You can pick a language for initialization, load an image from file or container and perform OCR recognition on it. The result can be requested either as text or as JSON with individual lines and words separated. The Vision.RecognizeText function is adapted to use the same OCR technique on Windows.

We continue on the MongoDB functions and add aggregate functions to query data applying a filter, sort rules and grouping on either the whole database or only a given collection. You can run custom commands on the database and query TLS status.

The Archive functions got new functions to create a new archive. Then you can call functions to add text, container values or files to the archive before you store it on disk or in a container.

We rewrote the WindowsUserNotification functions to use better APIs from Windows. We added a couple new properties to set to allow notification grouping, set priority and expiration on reboot.

The WebKit JavaScript engine can now be used on Windows and Linux in addition to MacOS and iOS. This includes using it server side for evaluating JavaScript. For Windows and Linux you have to use JavaScript.LoadLibrary function to load your copy of the JavaScriptCore library.

For WebView functions we implemented the WebView.AllCookies function for Windows. You can use it to query the current cookies set in the web viewer and use them for CURL functions. We implemented WebView.PrintToFile for Windows to save a website as PDF file.

The XL functions for reading and writing Excel documents got updated to include 45 new functions for handling form controls. Other functions can check for write protection, handle default row height and active cell or selection range.

We added regular expressions to our script search in the Script Workspace. If enabled via preferences dialog or SyntaxColoring.ScriptSearchBox.SetRegEx function, you can use regular expressions in your search strings. Multiple search terms are still separated by space character.

For iOS we got functions to allow you to capture swipe gestures with iOSApp.AddSwipeGestureRecognizer function. You can set a script to trigger when the plugin detects a swipe gesture and then react by switching layouts.

DynaPDF added support for writing PDF/UA-1 files. The new DynaPDF.CreateStructureTreeEx function can be used to create the required tag structures for your PDF documents. The DynaPDF.ChangeNamedDest function can now rename named destinations. And with DynaPDF.SaveAndSignFileExt1 and DynaPDF.SaveAndSignFileExt2 functions, you can sign a PDF using an external PKCS7 signature provider.

For Windows we updated Clipboard functions for PDF handling on Windows as well as the Container.ReadImage functions to read HEIF files. The relationship search box on Windows is now a combobox with a popup containing table names. The Process.SetDllDirectory function can help on Windows to load various DLLs from a given folder.

Finally we updated the CURL library to version 7.88.1, DynaPDF to 4.0.72.208, LCMS2 to 2.15, LibXL to 4.1, libxml to 2.10.3, openssl to 1.1.1t, SQLite to 3.41.0, and tiff library to version 4.5.0.

See release notes for a complete list of changes.


MonkeyBread Software Releases the MBS Xojo Plugins in version 23.1

Nickenich, Germany - (March 7th, 2023) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 23.1 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 3000 classes and 80,000 documented features, and the versatile plugins have gained more new functions:

Our new WindowsOCREngineMBS class allows you to use the built-in OCR engine in Windows 10 or newer. You can pick a language for initialization, load an image from file, string or picture and perform OCR recognition on it. The result can be requested either as text or as objects with individual lines and words.

We continue on the MongoDB plugin and add aggregate functions to query data applying a filter, sort rules and grouping on either the whole database or only a given collection. You can run custom commands on the database and query TLS status.

The LibXL library got updated and we enjoy new functions. The XLSheetMBS class got functions to better handle selection, active cell and tab colors. The XLBookMBS class got a IsWriteProtected function. Finally the XL classes now work on Windows 64-bit on ARM.

We rewrote the Windows store classes, a set of classes to help you perform in-app purchases in your Windows app through Microsoft's Store. For this we added new video, license and image classes. The delegates have an ErrorCode parameter to report status better and you need to adapt your handlers. On the way we got new methods like GetAppLicenseSync.

The WebKit JavaScript engine can be used on Windows and Linux in addition to MacOS and iOS. This includes using it in web or console projects for evaluating JavaScript. For Windows and Linux you have to use LoadLibrary function in JSContextMBS class to load your copy of the JavaScriptCore library.

For our WebView2 control we added the WebView2CookieManagerMBS and WebView2CookieMBS classes for Windows. You can use it to query the current cookies set in the web viewer and use them e.g. for CURL functions. We implemented a PrintToPdf method for Windows to save a website as PDF file.

DynaPDF added support for writing PDF/UA-1 files. The newer CreateStructureTreeEx function can be used to create the required tag structures for your PDF documents. The ChangeNamedDest function can rename named destinations.

We added a yield option to LCMS2TransformMBS class, added offset and length parameters to ReadFileMBS function and provide CallDelegateOnPreemptiveThreadMBS to try preemptive threading. The RequestScreenCaptureAccess method on CGSWindowListMBS can query for permisions to capture the screen on macOS.

Finally we updated CURL library to version 7.88.1, DynaPDF to 4.0.72.208, LCMS2 to 2.15, LibXL to 4.1, libxml to 2.10.3, openssl to 1.1.1t, SQLite to 3.41.0, tiff library to version 4.5.0.

See release notes for a complete list of changes.


Neues MBS Plugin 13.1 für Claris FileMaker

7. März 2023 - Monkeybread Software veröffentlicht heute das MBS FileMaker Plugin für Claris FileMaker in Version 13.1, mit inzwischen über 7000 Funktionen eines der größten FileMaker Plugins überhaupt. Hier einige der Neuerungen:

Unsere neuen WindowsOCR-Funktionen ermöglichen es Ihnen, die integrierte OCR-Engine in Windows 10 oder neuer zu verwenden. Sie können eine Sprache für die Initialisierung wählen, ein Bild aus einer Datei oder einem Container laden und eine OCR-Erkennung darauf durchführen. Das Ergebnis kann entweder als Text oder als JSON ausgeben werden. Im JSON sind dann die einzelnen Zeilen und Wörtern getrennt aufgelistet mit Koordinaten. Die Funktion Vision.RecognizeText benutzt unter Windows intern die gleichen Funktionen.

Wir erweitern unsere MongoDB-Funktionen und fügen Aggregatfunktionen hinzu, um Daten abzufragen, indem wir einen Filter, Sortierregeln und Gruppierungen entweder auf die gesamte Datenbank oder nur auf eine bestimmte Sammlung anwenden. Sie können benutzerdefinierte Befehle in der Datenbank ausführen und den TLS-Status abfragen.

Die Archivfunktionen haben neue Funktionen zum Erstellen eines neuen Archivs erhalten. Anschließend können Sie Funktionen aufrufen, um dem Archiv Text, Containerwerte oder Dateien hinzuzufügen, bevor Sie es auf der Festplatte oder in einem Container speichern.

Wir haben die WindowsUserNotification-Funktionen umgeschrieben, um bessere APIs von Windows zu verwenden. Wir haben ein paar neue Eigenschaften hinzugefügt, um die Gruppierung von Benachrichtigungen zu ermöglichen, die Priorität festzulegen und den Ablauf bei Neustart zu bestimmen.

Die WebKit-JavaScript-Engine kann jetzt nicht nur unter MacOS und iOS, sondern auch unter Windows und Linux verwendet werden. Dies schließt die serverseitige Verwendung für die Auswertung von JavaScript ein. Für Windows und Linux müssen Sie die Funktion JavaScript.LoadLibrary verwenden, um Ihre Kopie der JavaScriptCore-Bibliothek zu laden.

Für WebView-Funktionen haben wir die Funktion WebView.AllCookies für Windows implementiert. Mit ihr können Sie die aktuell im WebViewer gesetzten Cookies abfragen und für CURL-Funktionen verwenden. Für Windows haben wir WebView.PrintToFile implementiert, um eine Website als PDF-Datei zu speichern.

Die XL-Funktionen zum Lesen und Schreiben von Excel-Dokumenten wurden um 45 neue Funktionen zum Umgang mit Formularsteuerelementen erweitert. Andere Funktionen können den Schreibschutz prüfen, die Standardzeilenhöhe und die aktive Zelle oder den Auswahlbereich verändern.

Wir haben reguläre Ausdrücke zur Skriptsuche im Skriptarbeitsbereich hinzugefügt. Wenn sie über den Einstellungsdialog oder die Funktion SyntaxColoring.ScriptSearchBox.SetRegEx aktiviert ist, können Sie reguläre Ausdrücke in Ihren Suchstrings verwenden. Mehrere Suchbegriffe werden weiterhin durch ein Leerzeichen getrennt.

Für iOS gibt es die iOSApp.AddSwipeGestureRecognizer um auf Wischgesten zu reagieren. Sie können ein Skript starten, wenn das Plugin eine Wischgeste erkennt und entsprechend reagieren indem Sie zum Beispiel das Layout wechseln.

DynaPDF unterstützt nun auch das Schreiben von PDF/UA-1 Dateien. Mit der neuen Funktion DynaPDF.CreateStructureTreeEx können Sie die benötigten Tag-Strukturen für Ihre PDF-Dokumente erzeugen. Die Funktion DynaPDF.ChangeNamedDest kann nun benannte Ziele umbenennen. Und mit den Funktionen DynaPDF.SaveAndSignFileExt1 und DynaPDF.SaveAndSignFileExt2 können Sie ein PDF mit einem externen PKCS7 Signaturanbieter signieren.

Für Windows wurden die Funktionen der Zwischenablage für die PDF-Verarbeitung unter Windows sowie die Funktionen von Container.ReadImage zum Lesen von HEIF-Dateien aktualisiert. Das Beziehungssuchfeld unter Windows ist jetzt eine Combobox mit einem Popup, das Tabellennamen enthält. Die Funktion Process.SetDllDirectory kann unter Windows helfen, verschiedene DLLs aus einem bestimmten Ordner zu laden.

Schließlich haben wir die CURL-Bibliothek auf Version 7.88.1, DynaPDF auf 4.0.72.208, LCMS2 auf 2.15, LibXL auf 4.1, libxml auf 2.10.3, openssl auf 1.1.1t, SQLite auf 3.41.0 und die tiff-Bibliothek auf Version 4.5.0 aktualisiert.

Alle Änderungen in den Release Notes.


SFTP Upload with temporary file

A client asked about uploading via SFTP and using rename command with MBS FileMaker Plugin. There is a trick to use quote commands to rename the file when the uploaded finished. We like to avoid having a half uploaded file, so we upload to a temporary file first and then rename it.

 

Take a look on this script:

 

Set Variable [ $curl ; Value: MBS("CURL.New") ] 

Set Variable [ $result ; Value: MBS( "CURL.SetOptionURL"; $curl; CURL Test::URL & "temp.jpg") ] 

# login via password

Set Variable [ $result ; Value: MBS( "CURL.SetOptionPassword"; $curl; CURL Test::Password) ] 

Set Variable [ $result ; Value: MBS( "CURL.SetOptionUsername"; $curl; CURL Test::Name) ] 

Set Variable [ $result ; Value: MBS( "CURL.SetOptionSSHAuthTypes"; $curl; 2+8 ) ] 

# data to upload from container field

Set Variable [ $result ; Value: MBS("CURL.SetOptionUpload"; $curl; 1) ] 

Set Variable [ $result ; Value: MBS("CURL.SetInputFile"; $curl; CURL Test::Image) ] 

# Require TLS 1.2 for FTP over SSL:

Set Variable [ $result ; Value: MBS( "CURL.SetOptionUseSSL"; $curl; 3 ) ] 

Set Variable [ $result ; Value: MBS( "CURL.SetOptionSSLVersion"; $curl; 6 ) ] 

# download existing file, rename after upload

Set Variable [ $result ; Value: MBS( "CURL.SetOptionPostQuote"; $curl; "*rm image.jpg"; "rename temp.jpg image.jpg" ) ] 

# see progress in debug messages

Set Variable [ $result ; Value: MBS( "CURL.SetDebugWithProgress"; $curl; 1 ) ] 

# perform it

Set Field [ CURL Test::Result ; MBS("CURL.Perform"; $curl) ] 

Set Field [ CURL Test::debug ; MBS("CURL.GetDebugMessages"; $curl) ] 

Set Field [ CURL Test::Output ; MBS("CURL.GetResultAsText"; $curl) ] 

Set Variable [ $result ; Value: MBS("CURL.Release"; $curl) ] 

(more)

WebView2 and Cookies in Xojo

You may use the HTMLViewer in Xojo for your desktop projects. It uses on Windows either Chromium CEF in some version or the older Internet Explorer component. While the IE component is certainly old and outdated, the CEF version coming with your Xojo may also be older and considerably increases your application size. For CEF you carry about 200 MB of DLLs with you. Looking for an alternative, we got a WebView2 control in MBS Plugins:

We got our WebView2ControlMBS for Xojo based on the WebView2 control from Microsoft.

(more)

Using JavaScript with WebKit on FileMaker Server on Linux

You may know our JavaScriptWebKit functions for macOS and iOS. But with the upcoming 13.1 release, you can use those functions on Windows and Linux, too. It's up to you to provide the library, so we go through this step by step for Linux. Here is the screenshot with the trace output on Linux:

You should have a recent FileMaker Server installed on Linux with Ubuntu in a recent version. Please open a terminal connection either by doing so on the server directly or via ssh connection.

(more)

Xojo Tips

Let us show you a few tips with the Xojo development, which we found to be helpful in the last weeks:

CType

The CType() function allows you to convert a value to a different type and we found it helpful to convert from boolean to integers. We use it here to shrink our code for counting how many boolean variables are set. Please read this snippet:

Sub Test() Dim FirstNameMatches As Boolean Dim LastNameMatches As Boolean Dim CompanyMatches As Boolean Dim EmailMatches As Boolean Dim PhoneMatches As Boolean Dim ProductMatches As Boolean // customer bought this before // evaluate here and set booleans Dim MatchPoints As Integer If FirstNameMatches Then MatchPoints = MatchPoints + 1 end if If LastNameMatches Then MatchPoints = MatchPoints + 1 End If If CompanyMatches Then MatchPoints = MatchPoints + 1 End If If EmailMatches Then MatchPoints = MatchPoints + 3 End If If PhoneMatches Then MatchPoints = MatchPoints + 1 End If If ProductMatches Then MatchPoints = MatchPoints + 1 End If If MatchPoints > MaxMatchPoints Then // best match so far MaxMatchPoints = MatchPoints End If End Sub

This is for matching a new order to existing customer database. The new order may have the same name, email, phone and we look for best match in existing table. For this we match the values and set these boolean variables. Then we count points on how many are set. For the email match we count three points as a special case. This usually finds us the right customer in a lot of cases, even if they changed name, email, company name or phone, but keep one or two values equal.

(more)

MBS Xojo Plugins, version 23.1pr6

New in this prerelease of the 23.1 plugins:
  • Updated LCMS2 library to version 2.15.
  • Applied SQLAPI patch for Oracle fix in memory leak.
  • Added Offset and Length parameters for FolderItem.ReadFileMBS function.
Download: monkeybreadsoftware.de/xojo/download/plugin/Prerelease/ or from DropBox.
Or ask us to be added to our shared DropBox folder.

MBS FileMaker Plugin, version 13.1pr6

New in this prerelease of version 13.1 of the MBS FileMaker Plugin:
  • Changed plugin to ignore Registration calls with older keys if a newer license was already set to avoid complaining dialogs when opening older solutions.
  • Added PKCS12.SignData function.
  • Updated LCMS2 library to version 2.15.
  • Changed SQL functions to log SQL statements when trace is active.
  • Applied SQLAPI patch for Oracle fix in memory leak.
  • Fixed ScreenshotRect, Container.Screenshot and WebView.Screenshot for Windows to better use right DPI for high DPI screens.
  • Added Process.GetDllDirectory and Process.SetDllDirectory functions.
  • Fixed a crash in trace function.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/, in DropBox folder or ask for being added to the DropBox shared folder.

xDev Magazine 21.2 Issue

The March/April (21.2) issue of xDev Magazine is now available. Here's a quick preview of what's inside:

Xojo Installer Fix by Marc Zeedar
Have you noticed that when you install a new version of Xojo, it doesn't copy over your previously installed plugins and scripts? That can cause things to not work as you expect if you don't remember to fix it manually. This simple app solves that problem.

Lessons from Legos by Marc Zeedar
In January, Marc worked on a retro Lego project and the experience prompted a lot of thoughts about the simlarities between Legos and programming.

Xojo Wordle Solver by Marc Zeedar
Wordle's a simple word-guessing game, but sometimes it can be a frustrating case of dumb luck. Marc wondered if Xojo could help, so he took up the challenge to write an app to help solve Wordles.

Exploring Steganography, Part 5 by Eugene Dakin
In this conclusion to his series, Eugene shows how to retrieve hidden text from a picture, as requested by xDev readers.

Plus: Topics such as running Xojo on Windows 11 Arm on Apple Silicon, Attributes, MBS XML, Group By function, and more!

Email and MBS Plugin

Recently we got asked what we can do for emailing in MBS FileMaker Plugin and MBS Xojo CURL Plugin. While we recommend not to try and replicate a full Mail client, you can do a lot with our plugins and so let us sum up what we can do:

SMTP

We provide CURL functions and SendMail functions to send emails with more options than what is built-in to FileMaker.

Send Email

Our plugin can send emails via SMTP protocol. Port is 25 by default, but alternatively you can use port 587 if a firewall blocks port 25. Or for smtps:// protocol we use port 465. When you send an email, you retain the protocol from curl, so you can see what happens. This may show errors like invalid credentials, hitting the email size limit and on the end an OK message from the server for accepting the email.

(more)

Archives

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