Every Xojo developer should have it in his tool chain and enjoy the features. It has many features and depending on your needs, you may decide which feature is worth the price. For myself i mostly use it to automatically convert my example projects to HTML files to include them in the documentation. In other cases Arbed helped to recover corrupted project files and to compare two versions of a project which have been modified independently without version tracking software. It is also useful to bundle a project with all required files if you need to send a project to a client.
Arbed is highly automatable and can be scripted. You can call it from command line in your shell scripts to do various actions in batch operations. If you need, you can use it to obfuscate strings (e.g. SQL queries) in your application or prepare it for localization. Anything automated which saves a few hours is worth the money.
Arbed is available on tempel.org for $29 or $89 USD.
While we had SQL connectors for our SQL Plugin before to use in Shorts, we now got official support in Shorts for the MBS SQL Plugin. You can now report with using our plugin to interface various databases:
MBS SQL Plugin supports:
Centura SQLBase, DB2, Firebird, Informix, InterBase, MariaDB, Microsoft Access, Microsoft SQL Server, MySQL, ODBC, Oracle Database Server, PostgreSQL, SQL Anywhere, SQLite, SQLCipher and Sybase.
We know some users already use Shorts heavily with Informix databases and we appreciate this addition.
See blog post and Shorts Website.
Next we got a function to get a subtree (XML.SubTree). So you may have a big XML with a smaller chunks and we can query nodes inside a bigger tree. This includes getting the nth entry like the nth record in a list of records.
The XML.ExtractText extracts the text inside an XML tree. So all text portions are returned as a list. You can first use the subtree function to get a part of a XML to only get a portion of the texts.
We got a few functions to handle attributes. XML.GetAttribute returns the value for the attribute.
Now we got something special for FileMaker Scripts.
We parse an XML with the XML.SetVariables function, identify all nodes with text values and create variables for you automatically. The plugin sets those variables and returns a list of the names. Later you can pass the list to XML.ClearVariables to clear them for another run.
For example the script looks like this:
Set Variable [$XMLVariables; Value:MBS( "XML.SetVariables"; test::input; 1)]
Set Variable [$otherVariable; Value:1]
#See Variables in Data Viewer
Set Field [test::output; MBS( "XML.ClearVariables"; $XMLVariables)]
Set Variable [$someVariable; Value:1]
The test XML:
<?xml version="1.0" encoding="UTF-8"?>And in the debugger all the variables may look like this for a test XML:
<Comment>Just a test.</Comment>
So you can have an input XML, split the values into variables using our plugin and process them in your script. I hope this is handy for you. What do you think?
Plugin will be available soon. If you like to test today, you can email me.
The question to be answered is where the conference will take place. Until the next newsletter (subscribe here) in January tells us, we can enjoy betting where it could be.
Austin is not easy to reach, but convenient for Xojo Inc. as they have a couple of people living there who won't need any airplane ticket. Houston for 2016 was similar easy for Xojo Inc. with just a few hours drive from Austin. Dallas could fill a similar role with a big airport and in drivable distance from Austin.
We know that it will be USA and probably somewhere with direct flights internationally.
I would expect New York, San Francisco, Boston, Miami and and a few others to be too expensive.
And with the list of direct flights available from Paris and Frankfurt, I would bet on Seattle.
What is your guess?
There is no XDC 2017, so if you like to join a conference before 2018, please consider our conference in Europe:
The MBS Xojo Developer Conference will take place 4th/5th May 2017 in Berlin, Germany. An optional training day is available.
Merry Christmas & Happy New Year
Joyeux Noël et Bonne Année
Buon Natale e Felice Anno Nuovo
Franziska, Sebastian, Michael, Monika & Christian Schmitz
For years I hated it when accidentally voice control turned on with iPhone in my pockets. Depending on what the iPhone recognized, it dialed people or played music. I did disable voice calling and Siri, but the voice control for music stayed on. Now Apple added the switch we needed for at least 5 years!
For me the best feature of 10.2 and a reason to upgrade immediately.
Anyone else so happy?
Sometimes one like -2147221499 or 80040005 and you have no clue what it is?
You can lookup error codes on Microsoft Website:
But that list is only for regular error codes.
The COM/OLE functions return different error codes called HRESULT. They can be decoded, see Structure of COM Error Codes and there are various lists for HRESULT values.
Which brought me last year to write a little tool to collect errors from various header files and put them in a big table:
Windows Error Codes
There you can quickly lookup the error codes, in both decimal and hex notation.
We even had some guests from Swiss and Frankfurt/Main coming. Topics included using SVGs to display complex layout information of print jobs with creating the SVG data on the fly in a script, access to web services, FileMaker news/licensing, developing business apps and of course using MBS FileMaker Plugin.
|Goodies for FileMaker|
Learn about the syntax coloring, error highlighting, context menus, script and relation graph search.
Check the SyntaxColoring functions.
To see notifications for wrong variables, please enable the variable checks and enable notifications for FileMaker in system preferences.
- MBS Xojo Conference, English, 4th/5th May 2017 in Berlin, Germany, see monkeybreadsoftware.de/conference
In case you want to check out Xojo.
- .fmp[x]Berlin, English, 1st to 3rd June 2017 in Berlin, Germany, see dotfmp.com
The biggest english speaking FileMaker conference in Europe.
- FMValencia, Spanish/English, 17th June 2017 in Valencia, Spain, see fmvalencia.com
The FileMaker group from Valencia is meeting again.
- FileMaker DevCon, English, 24th to 26th July 2017 in Phoenix, USA, see filemaker.com/developers/devcon/
The conference in USA with 1500+ attendees.
- FileMaker Konferenz, German/English, 12th to 14th October 2017 in Salzburg, Austria, see filemaker-konferenz.com
The German conference with around 200 people usually.
Is there one I missed? Please let me know. Especially when you have dates.
This update fixes a bug I reported with plugins using pictures in bitmap format on Windows:
46158: Windows: REALUnlockPictureDescription now cleans up the memory allocated when REALLockPictureDescription was called
This fix is for an enormous memory leak with handling pictures. Good, that it got fixed!
Now this fix is for plugin functions using the HBITMAP type to access pixels which some functions need, e.g. to put picture on the Windows clipboard.
Other functions have been updated to use the newer DirectDraw pixel access for pictures.
We recommend to use MBS Plugins in version 16.5 or newer with Xojo 2016r4.
You can download them here: MBS Plugin Download.
Older plugins can behave different or crash when using pictures.
Download Xojo and see Release Notes
Es empfiehlt sich etwas früher zu kommen und eine Runde durch den Park zu machen und den Bären zuzuschauen.
Der Eintritt in den Park ist obligatorisch und kostet 5 €.
Ich versuche selber dabei zu sein bei diesem Termin. Wer kommt noch?
siehe Stammtischseite beim FileMaker Magazin und baer.de.
- You can order licenses for 2017 or later and have delivery plus payment done in 2016.
- And of course you can order updates for several years in advance for all your MBS products.
- As all licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
- If you need a Xojo license (new or update), we can always check whether a bundle with Xojo offers an advantage for you.
- For FileMaker please check if you have enough license for the number of seats or servers you have in use.
The MBS plug-in comprises a collection of several plug-in parts which extend the Xojo and Real Studio development environment with 2,400 classes featuring over 61,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console including 64-bit and ARM targets.
Some of the highlights on the 16.5 update:
If you do math and you need more precision than a double or currency data type can offer, you may want to check our new BigNumberMBS class. This is a 320bit floating point number, but it can also be used as a 256bit integer. Precision is excellent with over 100 digits before the dot.
For macOS 10.12 we added several TouchBar classes. You can offer normal buttons, but also advanced controls like sliders, popovers or groups. The plugin provides functions to check if TouchBar is available and events so you know whether your items are visible.
For DynaPDF we added new StyledText functions. You can convert from a Xojo StyledText to the formatting commands used by DynaPDF. And you can pass StyledText directly to our WriteStyledText method to draw on a PDF page.
For editing Excel documents with our XL Plugin, we provide now more methods and new copy functions. You can copy sheets from one book to another, or the content from one sheet to another, even across books. If needed you can also copy single rows from one document to another. And in case LibXL updates quicker than our plugin, you can now optionally load the LibXL libraries directly from disk.
If you use Xojo 2016r4 or newer, please update to this release. This plugin is built using the latest SDK, but with backwards compatibility down to REALbasic 2006r4. For Windows we added support for DirectDraw pictures. Older plugins may not work correctly in Xojo 2016r4.
Our barcode generator learnt two new types: DotCode and HanXin, we added tabbing features to NSWindowMBS, XFA stream support in DynaPDF and time code reading for AVAsset.
We updated CURL library to version 7.51.0, DynaPDF to 220.127.116.11, libSSH2 to 1.8, libXL to 3.7.0, OpenSSL to 1.0.2j, PortAudio, SQLAPI++ to 4.1.10, SQLite to 3.15.0 and zint to 2.5.
See release notes for a complete list of changes.
If you have questions, please don't hesitate to contact us.
For this release we now include a Linux version. This plugin file can be used with FileMaker Cloud, or on any FileMaker Server running under 64-bit Linux. Over 2200 functions are instantly available for Linux, others may follow later. Please let us know what features you'd like to see for FileMaker Cloud in the future.
We rewrote our Audit function. It's now much faster, eliminates duplicate log entries and only records one log entry for a new record to reduce the amount of log records. You should see a big performance gain when using tables with a lot of fields and a FileMaker Server for hosting.
The menu commands have been reimplemented for Windows. Now we support all the font styling we had on Mac before. You can now use custom fonts, bold/italic/underline/strikeout styles, font sizes, colors and a background color. Instead of simple checkmarks, you can use bullet, diamond or mixed marks.
For macOS 10.12 we added several TouchBar functions. You can define one app wide and per window touch bars. Each can have buttons which trigger scripts or evaluate expressions. This way you can offer contextual commands on the keyboard and react in FileMaker. You can even define buttons to use in FileMaker itself, like a button to show/hide the debugger.
To interface existing Java classes, the plugin can now optionally talk to Java. From older Java 6 to latest Java version 8, you can load whatever Java version you like. Than you can create objects from classes and call both class and object methods. You can set and query properties on those classes or objects and exchange data directly. Containers can be passed/returned to/from Java as byte arrays for efficient data exchange.
For those using flatbed/feeder scanners, we can now interface them on Windows via native drivers. We use the official WIA interface from Microsoft which most scanners nowadays support. You can either use system dialogs to scan or send scan commands directly. On Mac we now provide optionally windows to select scanner or perform scans. In total, we now provide three ways to scan: 1st TWAIN for macOS and Windows, 2nd ImageCapture for macOS and 3rd WIA for Windows. All three ways can get your scans with or without a dialog to an image file.
For the Script Workspace we provide an enhanced contextual menu. We provide copy/cut/paste/delete commands at your finger tips and commands to enable/disable script steps. For perform script steps we now provide a way to jump directly to the target script.
On Windows you can now control the print dialog. Our plugin can automatically select printer, paper format, paper tray and other options. You can query available printers, paper formats and trays. For Mac, please use our existing PrinterDialog functions.
We added more DynaPDF functions: You can now directly draw styled text from a field in your layout to a PDF. The plugin internally converts the styles to DynaPDF formatting commands. You can now process data from XFA forms automatically and when printing PDFs on Windows, you can now optionally show a print dialog.
On Mac you can workaround the printing issues with FileMaker and macOS Sierra. If you don't like the scrolling elasticity in your layouts, you can disable it. The plugin can now list and trigger commands on the FileMaker windows directly. For example in a table view, we can trigger the dialog to customize which fields are shown. Via plugin functions you can control the updater in FileMaker, trigger update search or change various options.
For editing Excel documents, you can copy sheet content from one sheet to another, even across books. You can copy rows from one sheet to another. When writing formulas you can now include the pre-calculated result as number, text or boolean value.
You can now calculate the width of a text with a given font. So you can automatically cut text and add dots via custom functions in your layouts.
Our barcode generator learnt two new types: DotCode and HanXin. You can query the memory used by FileMaker, clear recent files in preferences on Mac, list mounted volumes, change orientation for images in EXIF metadata, send text attachments in emails and get/set the current working directory.
We updated CURL library to version 7.51.0, DynaPDF to 18.104.22.168, libSSH2 to 1.8, libXL to 3.7.0, OpenSSL to 1.0.2j, SQLAPI++ to 4.1.10, SQLite to 3.15.0 and zint to 2.5.
More details in the release notes. Please take the time to check our 450 example databases and check where you can use our plugin features in your solutions.
Keep an eye open for the new version coming in a few days!
As usual, suggestions are welcome to improve the automated generated documentation.
Our plugin uses the FileMaker 7 plugin format. So until FileMaker 6 the way of writing plugins was different and changed for version 7. When I started writing a FileMaker plugin, the version 8 was current and so I started there and quickly made sure my plugin works on 7 and 8. Over the years we continue with the same interface to FileMaker. All newer functions are weak linked, so our plugin loads in older versions.
For Mac you can use FileMaker 8.5 (Released 2006) to current one. That is due to the switch to Intel CPUs by Apple in 2006 and 8.5 was the first version to support x86 CPUs. We later dropped PPC support and you still can get a copy of our plugin in version 2.4 for PPC support. Current plugin requires Mac OS X 10.6 and newer.
With Windows you can even go back to FileMaker 7 if you like, 12 years back! Current plugin works fine there as well as with newer versions of FileMaker. The picture above shows FileMaker 8 on Windows 10 (Server 2016) with current MBS Plugin from earlier today. We support Windows XP and newer.
If you are lucky to be a member of FileMaker's beta testing, you an even try our plugin with the next FileMaker version and find some new features.
Finally please keep your plugin installation up to date to benefit from bug fixes and improved features. Don't waste hours figuring out details about a bug in an ancient plugin version, which has been fixed last year.
So today we emailed people from 2014 to remind them to update before the end of 2016.
The key idea is that we offer discounted license prices for renewing licenses to honor you staying up to date.
Thank you for supporting Monkeybread Software.
- Added support for DirectDraw picture type in Xojo 2016r4.
- Added CopyRow and CopySheet to XLSheetMBS class.
- Copy rows/sheet in XL functions now copies also merge cells.
- Added LoadLibrary functions to XLBookMBS class.
- Fixed bug with some controls which did not draw on correct spot in the IDE.
Or ask us to be added to our shared Dropbox folder.
- Added Windows support for AVRecorder.CaptureStillPhoto function.
- Added XL.CopyRow and XL.CopySheet.
- Copy rows/sheet in XL functions now copies also merge cells.
The minimum is REALbasic 2006r4 as that is the version introducing 64-bit numbers. Plugins without 64-bit integers may even work in older versions.
And as far as I know a lot of a couple of developers still need older versions:
- REALbasic 2007r3, the last one to build for Mac OS 9.
- REALbasic 2008r1, the last one to build single file exe for Windows.
- Real Studio 2011r3, the last one to build for Mac OS X with PowerPC.
- Real Studio 2011r4.3, the last one to build for Mac OS X 10.4.
- Real Studio 2012r2.1, the last one to build for Mac OS X 10.5 and the last one before Xojo IDE started.
- Xojo 2013r3.3, the last one to build for Mac OS X 10.6.
- Xojo 2015r2.4, the last one to build for Windows XP.
- Xojo 2015r4, the last one to not use universal runtime on Windows.
Technically you can use an older Real Studio version from 5 years ago and build a Mac app to use the latest plugins and add TouchBar support for latest MacBook Pro.
We modified the plugin interface to make sure we use the right data structures for each SDK version as well as use different SDK functions depending on the versions. Some things changed over years and we love to keep things working. So we have quite a few switches which check the Xojo/Real Studio version to decide what to do.
The Ellington Hotel where the conference takes place is close to the Kurfürstendamm which used to be the Berlin boulevard during cold war times. While the Kudamm (the „official“ abbreviation) has lost its position which was taken by the East Berlin boulevards, it is still home of expensive boutiques, and as such you probably will not find much cheaper hotels in the close vicinity. If you want to look, however, here’s a list of some situated close enough to take a walk: kurfuerstendamm.de/berlin/hotels/
If you are looking for night life after the conference, you might want to look a bit more to the east. Mitte, Friedrichshain-Kreuzberg and Prenzlauer Berg offer food, music, dance and drinks all night (well, there is no closing hour in all of Berlin, but in these districts you won’t have to search more than a few minutes).
If you want some nostalgic flair the https://www.ostel.eu mimics a East Berlin (GDR) hotel during cold war times ;)
In general, public transport is quite good in Berlin, and you can expect bus, subway or railway waiting times not longer than a few minutes in these core districts, but I would advise you not to choose a district too far away from the center. Berlin’s public transport is a mixture of subway, S-Bahn (public railway), tram and buses. All share the same tariff, which means usually a ticket for 2,80 € (tariff AB) allows you to travel once from Berlin’s eastern to its western outbounds. See ticket shop and the journey planner. You’ll find a map of the transportation system here too.
You may buy a week ticket at the airport when arriving. Tegel is within AB range and a week ticket costs only 30 Euro and you can take U/S-Bahn, tram and busses anywhere.
And places to go? There’s simply too many of them. This site gives a good overview.
If you should be taking a walk around the Ellington, you will inevitably find the Tauentzienstraße which leads to the famous Kaiser-Wilhelm-Gedächtniskirche. Strolling around the Kurfürstendamm might lead you to the Story of Berlin museum (if you are interested in German history): story-of-berlin.de, and if you want some recreation and are into excellent tea I would very strongly recommend you to sip a cup of Berlin tea at kingsteagarden.de.
If you still can stand technology after two days of technobabble, the Deutsches Technikmuseum shows reconstructions of the first computers, Z1 and Z3, explained by the son of computer pioneer Konrad Zuse himself.
The historical core of Berlin is the Nikolaiviertel with the Fernsehturm, the Alexanderplatz and the Museumsinsel (island of museums) close by. IF you stay longer, taking a ship tour along the Spree allows a very different view of Berlin.
Nightly places to visit for dancers and young tourists are the arena-berlin.de (which is close to where I live, so if you want some guidance, join me after conference day’s end) and several clubs along the Warschauer Straße like the matrix-berlin.de. View the areas on Google maps – there’s literally something for every taste around.
Missing something? Just tell me!
Looking forward to see you in May
This little function can be called anywhere to optimize a PDF. Of course you should initialize DynaPDF in startup script of your solution. But than you can call OptimizePDF function everywhere and pass in a PDF container value. The PDF is optimized and returned.
If you like add further parameters to decide what optimization to do. The example be low uses a good default setting to reduce PDFs for email delivery.
# Custom Function OptimizePDF(InputPDF)
# Optimizes PDF and returns either new one or old one in case of error.
PDF = MBS("DynaPDF.New");
OpenResult = MBS("DynaPDF.OpenPDFFromContainer"; PDF; InputPDF);
OpenError = MBS("IsError");
ImportResult = MBS("DynaPDF.ImportPDFFile"; PDF);
ImportError = MBS("IsError");
Options = "FlattenLayers DeleteInvPaths ScaleImages NewLinkNames DeletePrivateData IgnoreZeroLineWidth DeleteAlternateImages DeleteThumbnails";
OptimizeResult = MBS("DynaPDF.Optimize"; PDF; Options; 50; 50; 50; 150; 150; 150; "JPEG"; "JPEG"; "JPEG");
OptimizeError = MBS("IsError");
OutputPDF = MBS("DynaPDF.Save"; PDF; GetAsText(InputPDF));
SaveError = MBS("IsError");
ReleaseError = MBS("DynaPDF.Release"; PDF);
Result = If(
// all okay?
OpenError = 0 and ImportError = 0 and OptimizeError = 0 and SaveError = 0 and MBS( "Container.GetSize"; OutputPDF; "PDF " ) > 0;
// than return new PDF
// return old PDF
As the new release changes graphics on Windows to use DirectDraw instead of GDI/GDI+, the plugins need to adapt. The handling on graphics ports (HDC) and for bitmap access changes a bit.
We recommend to use MBS Plugins in version 16.5 or newer with Xojo 2016r4. You can download pr9 now or wait for the release next week.
Download Xojo and see Release Notes. Review by Bob Keeney
- Updated DynaPDF to 22.214.171.124.
- Fixed issue with SplitCommaSeparatedValuesMBS. Last element is now returned, even if empty.
- Changed SQLCommandMBS.Parameters to optionally return numeric values as SQLNumericMBS and not converted to double.
- Added BigNumberMBS class, a 320bit floating point number.
Or ask us to be added to our shared Dropbox folder.
- Updated DynaPDF to 126.96.36.199.
- Rewrote Audit functions. Now quicker due to more optimization.
- Audit filters duplicate log entries and for new empty records only writes one log entry.
- Added GMImage.GetEXIFOrientation and GMImage.SetEXIFOrientation.
- Added Container.DecodeFromHex and Container.GetHex.
- Improved XPath Query to cache parsed xml tree for faster speed.
- Fixed an issue on Windows with storing registration.
- Fixed issue with screenshot on Windows.
- Added WIA.ItemPropertyKeys, WIA.ItemPropertyValue, WIA.ListItems, WIA.Scan and WIA.SetItemPropertyValue for automated scans.
- Added Window.ListCommands, Window.RunCommand and Window.ShowTableViewDialog.
- Added Webview.GetSilent and Webview.SetSilent functions to hide errors in Webviewer on Windows.
- Added expression parameter to TouchBar.AddButton.
- Added Preferences.ClearRecentFiles function.
- Updated DynaPDF to 188.8.131.52.
- Added SyntaxColoring.ScriptIfLoopHighlight.GetEnabled and SyntaxColoring.ScriptIfLoopHighlight.SetEnabled functions.
I just looked and the current 16.5 beta has 61000 documented features!
That is a new record and a 1000+ increase to 16.4 release. Alone in 2016 I added over 5000 new things. Main driver for recent additions are CloudKit and TouchBar classes.
And thanks for Xojo Inc. for increasing once again the number of plugin functions that can be used in one app.
PS: The MBS FileMaker Plugin is doing well with currently over 4300 functions.
Thanks to Mikael and enjoy our plugins.
I have been working as a full time FileMaker developer in my one-man company since 1986, and have stumbled on the MBS plugin from time to time over the years but never taken the time to dive into it. But now I needed to upload via SFTP, and that made me download and start learning the plugin - and I was totally blown away!
I have spent about two days writing and rewriting Custom Functions with the MBS plugin as the base, and I will from now on ONLY use this plugin for more or less everything. I also love the Trace, Notifications and Dialogs that I can run from calculations, and I now understand that the MBS plugin is like a sphere surrounding and enhancing FileMaker in a way I didn't thought possible. And for the SFTP...? It works like a charm and was very easy to implement.
I started to work with software development in the 1980's, so the "toolbox" that the MBS plugin is supplying me with is perfect for my way of thinking and building solutions.
I am also very happy for all the example databases, for without them I wouldn't have realized the potential of the plugin but just have focused on the SFTP
HuConn - Human Connection
Grown over 10 years the MBS FileMaker Plugin features over 4200 functions.
And our MBS Xojo plugins cover over 60000 documented features.
More or less all the things we needed for consulting projects with clients over the years.
Over 35 attendees are here already this morning
We had fun, excellent dinner and I brought a few presents for them. See you in Berlin next year!
Javier is the Xojo engineer doing localization and support for Spanish speaking Xojo developers.
The main problem with double variables is the lack of precision with 15 or more digits.
With 16.5 plugin we introduce a new class called BigNumberMBS. This class uses 320 bits and can easily represent 100 digits long values. You can use it easily for doing floating point math with more precision. Or if you need a 128 or 256 bit integer, this one will also fit. Just use this class without fractions. You can even wrap it and make a replacement for currency by multiplying all values by 10000 internally.
For all math operations, we may raise an exception in case of an error. The BigNumberErrorExceptionMBS class tells you about overflows, division by zero or other mistakes.
The class features operator overloading, so you can simply add values with + or assign one to another. In general values are read only, except for a few methods or properties which do not return a new object.
We have accessors for string, int64, currency and double values, so you can easily query those values. Via string you can of course pass much bigger values compared to double or int64.
Due to a few bugs with Xojo's overload handling, we may not offer Operator_Convert beside strings. It would be nice to directly assign double or integer values or to use them for plus or multiplication. Maybe future Xojo versions fix it and we can add those without causing ambiguous compiler errors.
Will be available next week with new prerelease. If you like to test now, send me an email.
PS: You can try with 16.5pr9 plugins and newer.
The conference is in total four days, but first one is training and keynote, last day is FBA only. This is a change from previous conferences and the reduced cost for FMI could lead into cheaper tickets which may bring more new faces to the conference.
If you like to speak, you can apply for a session. Please make your FM 15 certification first if you are not yet certified. Speaking has the advantage of 4 free hotel nights and a free ticket to the conference.