Our Blog, FileMaker only, Xojo only, Archive (older)     Follow us on Twitter, Xing, LinkedIn or Facebook.

MBS Xojo Plugins, version 20.4pr2


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

Moving to Visual Studio 2019


For years we build the DLLs for Windows with Visual Studio 2008 for our plugins. The reason we didn't upgrade for a long time was Windows XP. But now we can skip that behind and move to a newer Visual Studio version. Now the minimum is Windows 7 and we relay on the universal runtime. That is a newer version of the Visual Studio Runtime since Visual Studio 2015, which is automatically installed on Windows 10 and used by FileMaker Pro and Xojo.
See Windows App Requirements in Xojo blog and Windows Universal Runtime in Xojo developer guide.

If Windows update didn't install it for you, you can install it manually. The installers are included with the FileMaker or Xojo download, but you can also load it on the Microsoft website as redistributable installers.

By switching from a 10 year old compiler to current one, we gain a lot of new features, so we hope to extend our plugins in the next months with a couple of new Windows based features.

There is a little new feature in Visual Studio 2019, which reduces the space needed for the metadata used for exception handling. But that causes an extra dependency to VCRuntime140_1.dll, which is new since 2019. But as that DLL may be missing on client computer, we disable this feature. This removes the dependency and allows us to relay on the DLLs you already need to have. If FileMaker Pro or your Xojo application runs, the plugin should also load just fine.

For developers the dependency is for __CxxFrameHandler4 function in VCRuntime140_1.dll. You can disable it by using -d2FH4- as a compiler option and -d2:-FH4- for linker option. Also it looks like you have to not use std::nothrow as that also depends on that DLL.

The important thing: Please try one of the pre-releases soon and let us know if you see anything not working. We'll try ourselves 100s of example projects, but you can help to try a few more things.

PS: The MBS Xojo XMP Plugin may have the VCRuntime140_1.dll dependency as we can't build it without currently.

News from the MBS Xojo Plugins Version 20.3


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

Dynamic Declares

The classes of this topic handle the loading of dynamic C libraries and calling functions within them. Currently there are three classes. 

The DeclareLibraryMBS class Allows you to load a DLL on Windows, a dylib on MacOS and shared object on Linux. It inspects the available functions and load functions by name. You can enter a path or pass a folderItem when you create an instance of this class.

The DeclareFunctionMBS class give you the possibility to call C functions. In comprehension to the built-in declares in Xojo, those functions allow a much more dynamic calling of functions with various calling conventions. We support also the possibility to define declares at runtime. 

With the DeclareCallBackMBS class you can create callback functions dynamically. In the parameters you pass the function pointer to a C function which later calls back your callback.

 

Java

In the JavaVMMBS class we have two new methods, named DefineClass, that allow us to load a class with raw class data from the buffer. In the parameters, we specify the class name and the data either as a string or a memory block.


(more)

Omegabundle for Xojo 2020 ends 31st July


Get the top developer tools and third party components for the Xojo cross-platform development platform at a huge savings until 31st July August 2020.

Omegabundle for Xojo 2020 is a collection of the most useful tool sets, add-ons, digital books and components for use with Xojo Inc's Xojo development environment. If purchased separately and not including any additional offers, the total cost would be over $3,711.00. Omegabundle for Xojo 2020 costs $399. Buy now on the Paradigma Software store.



Xojo is an award-winning, cross-platform development tool for the Desktop (macOS, Windows, Linux), Web, iOS (iPad/iPhone) and Raspberry Pi. With Xojo, you can create native applications by using drag-and-drop to build your user interface and then one straight-forward programming language to enable the functionality. Xojo is powerful and modern, yet easy to use and learn. (more)

MBS Xojo Plugins, version 20.4pr1


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

Improvements for MBS Xojo DynaPDF Plugin


Our MBS Xojo DynaPDF Plugin is quite popular and we try to improve it regularly.

In the current version 20.3 we added support for ClearRectangle and FillPath methods, one of the changes for API 2.0 in Xojo. We set Helvetica 12 in point as default font for every new PDF document. If you change the font, this font reference will be discarded on saving as DynaPDF cleans up the object tree when writing the PDF. But new users may not run into an error, because no font is set.

Earlier in 20.2 we added support for ignoring ClearRect calls in graphics class to be able to draw over an existing PDF page and not fill all the space with white color. With our own DynapdfGraphicsPathMBS class we got even support for drawing paths with the new Xojo methods to do so. In DynaPDFPageMBS class we got properties visible in the debugger, so you can directly inspect the boxes for the page. The SetCellPicture method for DynaPDFTableMBS class takes directly a picture to make this easier for developers to pass pictures. In DynaPDFMBS class we deprecated all the Ansi versions of the functions. Unicode support got better over the years and nobody should need those any more. And when you call SetFont without passing an encoding, we default to unicode.

Changes like the above may help to make use of the plugin more easier. For next version 20.4 we have a few more little changes to improve the plugin. First we have the problem that not everyone implements an Error event to catch problems. We add DynaPDFErrorExceptionMBS class to raise an exception if either the Error event is missing or you return the new constant kErrorEventRaise in the Error event. The error event can be implemented by subclassing DynaPDFMBS class or by using addHandler command. By using exceptions, you will not miss an error. But you may still want to use the Error event to ignore warnings, which could raise an exception otherwise.

Another change we thought about is to add more properties. A first one to add is ActiveFontInfo as DynaPDFFontInfoMBS to the properties. This allows you to see the current font set in the debugger. Let us know if you have ideas for properties we could add to make your live easier.

A DynaPDF Starter license is included in OmegaBundle and can be updated to DynaPDF Lite license at a discounted price.

PostgreSQL Libraries 12.3


For everyone using MBS Plugins with PostgreSQL can now get the library in version 12.3 on our website:

Libraries Download

Please use option on connection to point to the libpq.dylib for MacOS or libpq.dll for Windows.
You can just include the dylibs/DLLs in same folder as the application and point to them. For macOS you may need to code sign for redistribution as we just signed it with our code signature. The macOS libraries are changed to look for the crypto and ssl libraries in same folder as libpq.dylib file.

MonkeyBread Software Releases the MBS Xojo Plugins in version 20.3


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

As Apple announced their move to Apple Silicon processors, we are already working on an update to our plugin to support it. For now we already defined function SystemInformationMBS.isBigSur to return whether the newer macOS version 11.0 is running. The SystemInformationMBS.isARM function returns 1 if you run on an ARM based CPU and this currently returns 0 everywhere, but will in future return 1 if your application runs natively on newer Mac hardware with Apple Silicon. And the function SystemInformationMBS.isTranslated will tell your solution whether it runs Intel code on Apple Silicon in emulation.

With our new DeclareLibraryMBS class you can load shared libraries written in C/C++ and list their functions. You pick a function and use the DeclareFunctionMBS class to prepare a call and then run the function. Parameters are automatically converted to the right datatypes and the result converted to a variant. The new DeclareCallBackMBS class allows to define a callback, which can be thread safe. While the functions do similar things like the declare statement in Xojo, they are more dynamic and you can define the function call at runtime, specify calling conventions and support variable arguments.

For Windows we added a set of classes to acquire photos from various devices like cameras or scanners. Check the WinPhotoAcquireMBS class for the acquire functions. Use standard dialogs with WinPhotoAcquireDeviceSelectionDialogMBS and WinPhotoAcquireOptionsDialogMBS classes to find devices and set options.

Since Xojo uses direct draw for drawing in a picture or canvas, we now have DirectDrawGraphicsMBS class to offer you more options. Currently you can draw dashed lines for vector graphics. Let us know for future versions what new methods you like to have here.

The WKWebViewMBS class for working with WebKit 2.x got new methods to get the PDF or a web archive of the current page. You can do select all, paste, copy and cut via methods and query HTML and plain text for the website. If the page is a PDF itself, you can now query the data for the PDF document via MainResourceData directly. If needed, you can adjust the page zoom or media type for CSS.

Our encryption plugin got upgraded to allow SHA3 hashes with 224 to 512 bits in length. We added functions for Base64 URL encoding an a new example to show JWT RS 256 signature creation and verification.

For Windows we added support to load DebugBar into a HTMLViewer. This is a third-party add-on for Internet Explorer to inspect the DOM tree, run JavaScript and see CSS properties. Use our ShowDebugBar method in the IEWebBrowserMBS class to load DebugBar and use it in your Xojo application.

The XLSheetMBS class can now use WriteStringAsNumber to write a number passing it a string, SDAVAssetExportSessionMBS class allows more control on exporting videos in AVFoundation, DynaPDF got support for ClearRectangle and FillPath methods in Graphics class, the JavaVMMBS class can now define a class at runtime, examples are upgraded to use 64-bit as targets and WindowsGraphicsDeviceContextMBS class allows to get the HDC for a graphics object with proper cleanup later.

Finally we updated CURL library to version 7.71.1, DynaPDF to 4.0.40.116, LCMS to 2.11, LibXL to 3.9.1, SQLAPI to 5.1, SQLite to 3.32.0, Xcode to 11.5, VLC to version 3.0.11.

See release notes for a complete list of changes.

Chart Diagrams with Xojo


With the MBS Xojo ChartDirector Plugin and an ChartDirector license you can create charts in Xojo. These diagrams can then be displayed on the user interface, integrated into a PDF document or saved as an external file. With ChartDirector you have many different chart types and a wide range of design options at your disposal. You can create diagrams according to your wishes. For example, you can specify axis colors, data colors, data labels, or backgrounds. Select fonts, use gradient or transparent colors and decorate charts with symbol pictures. The X, Y and a second Y axis on the right can be designed separately. You can also add and customize a legend for your chart. There are almost no limits to your imagination. Here are a few examples of charts created using the Chart Director and the MBS Xojo ChartDirector Plugin on Xojo. ChartDirector license must be purchased separately from the plug-in license and one is included with the OmegaBundle 2020. Below eight examples:


CDXYChartMBS on the left with three data sets and CDPieChartMBS on the right with 3D effect and custom label formatting.

(more)

MBS Xojo Plugins, version 20.3pr10


New in this prerelease of the 20.3 plugins:
  • Upgraded examples to use 64-bit targets. This was made automatically to enable 64-bit targets, HiDPI and dark mode for all projects. Thanks to Arbed!
  • Added NSAppearanceNameDarkAqua shared method to NSAppearanceMBS class for dark mode.
  • Added flipped parameter to RenderImage method in NSViewMBS class.
  • Changed NSURLSessionMBS classes to only load on Xojo 2015 or newer.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Save Xojo report to PDF


If you use Xojo reporting and you like to output them to a PDF, get the MBS Xojo DynaPDF Plugin, currently in the OmegaBundle 2020 to implement this feature in your application:

// new PDF environment Dim pdf As New MyDynapdfMBS // create a new PDF file Dim f As FolderItem = SpecialFolder.Desktop.Child("report.pdf") Call pdf.CreateNewPDF(f) // get graphics for a page Dim g As Graphics = pdf.PageGraphics // now get report Dim rpt As New NameReport // and a printer setup Dim ps As New PrinterSetup // run report If rpt.Run(PrintableListBox, ps) Then If rpt.Document <> Nil Then // let it output to PDF rpt.Document.Print(g) End If End If // close it Call pdf.CloseFile

By using PageGraphics as Graphics, you can easily use Xojo's drawing commands for PDF pages and have your application output it's drawing not just to printer, but also to PDF files.
See blog post: Code above is intentionally kept brief as all error checking is skipped. If used in real world, you may need to check e.g. if CreateNewPDF returns an error as the file could not be created.

Please do not hesitate to contact us with your questions.

MBS Xojo Plugins, version 20.3pr9


New in this prerelease of the 20.3 plugins:
  • Removed old RegisterMBSPlugin function taking integer parameter.
  • Added ValidNotBefore and ValidNotAfter properties for X509MBS class.
  • Updated VLC to version 3.0.11.
  • Fixed crash in Tracks function in VLCMediaMBS class.
  • Added EncodeBase64URLMBS and DecodeBase64URLMBS functions.
  • Added JWT RS 256 example project to sign or verify.
  • Added GetFileContents with isPath parameter to WinDataObjectMBS class.
  • Fixed a crash with cleanup of SQL clients for SQLConnectionMBS and SQLDatabaseMBS.
  • Added SubTitle, toolbarStyle and titlebarSeparatorStyle properties to NSWindowMBS class.
  • Added mediaType and pageZoom properties to WKWebViewMBS class.
  • Added PDFData method to WKWebViewMBS class.
  • Updated DynaPDF to version 4.0.40.116.
  • Added kcoResetAnnotAppearance constant to DynaPDFMBS class.
  • Added FlushPagesEx and ResetAnnotAP methods to DynaPDFMBS class.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

Omegabundle for Xojo 2020 ends 31st July


Get the top developer tools and third party components for the Xojo cross-platform development platform at a huge savings until 31st July August 2020.

Omegabundle for Xojo 2020 is a collection of the most useful tool sets, add-ons, digital books and components for use with Xojo Inc's Xojo development environment. If purchased separately and not including any additional offers, the total cost would be over $3,711.00. Omegabundle for Xojo 2020 costs $399. Buy now on the Paradigma Software store.



Xojo is an award-winning, cross-platform development tool for the Desktop (macOS, Windows, Linux), Web, iOS (iPad/iPhone) and Raspberry Pi. With Xojo, you can create native applications by using drag-and-drop to build your user interface and then one straight-forward programming language to enable the functionality. Xojo is powerful and modern, yet easy to use and learn. (more)

Xojo Stammtisch in Wien


On my next visit to Vienna, we plan another developer meeting:

Wer hat Interesse an einem Xojo Entwicklertreffen nächste Woche in Wien?
ca. 18 bis 21 Uhr.

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

Wer noch dabei sein möchte, bitte bei der Umfrage eintragen.

JWT RS256 authentication in Xojo


Recently a client asked about JWT signatures. So we created an example project to create and verify JWT RS256 signatures in Xojo. This includes new EncodeBase64URLMBS and DecodeBase64URLMBS functions in MBS Xojo Encryption Plugin. We use SignData function in OpenSSLMBS class to sign the data and later use VerifyData function to verify the signature.

Create Signature

This example code takes values from fields on the window and creates the signature to show it in another field:

Sub Create() // take values from fields and make sure encoding is right and line endings Dim Header As String = Self.Header.Text.ConvertEncoding(encodings.UTF8) Dim Payload As String = Self.Payload.Text.ConvertEncoding(encodings.UTF8) Dim PrivateKey As String = ReplaceLineEndings(Self.PrivateKey.Text, EndOfLine.UNIX).ConvertEncoding(encodings.UTF8) Dim Password As String = Self.Password.Text.ConvertEncoding(encodings.UTF8) // now prepare string to sign Dim EncodedString As String = EncodeBase64URLMBS(header) + "." + EncodeBase64URLMBS(Payload) // sign it with RSA key and SHA 256 hash Dim Signature As String = OpenSSLMBS.SignData(EncodedString, PrivateKey, Password, OpenSSLMBS.kAlgorithmSHA256) // encode signature Dim SignatureEncoded As String = EncodeBase64URLMBS(Signature) // and build JWT RS 256 signature Dim result As String = EncodedString + "." + SignatureEncoded output.Text = result End Sub
(more)

MBS Xojo Plugins, version 20.3pr8


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

Using DebugBar in Xojo for IE HTMLViewer


We found DebugBar, an extension for Internet Explorer and it still works in Windows 10, so we worked on an integration into Xojo as DebugBar doesn't do that as is.

For next MBS Xojo Plugins we add the new ShowDebugBar function for IEWebBrowserMBS class. Our plugin will look for the HTMLViewer in the window, then create a new window and host there the DebugBar component. Looks like this:



We have four tabs there. The first one allows you to inspect the DOM and you can use the green picker to select an element on the web site. If you move the mouse over one of the elements in the DOM tree, the element highlights on the website. You can also inspect styles and modify all in the text field below.
The HTTPs tab currently doesn't work, so check the Script tab, where you can see all JavaScripts, adjust them and execute some JavaScript right in the window.

There are a few issues and we'll see if we can resolve a few with the developers from DebugBar to make this as useful as possible for you. And they certainly appreciate if you buy a DebugBar license.

See   DebugBar website   Download   Features   Order

Please don't hesitate to contact us with your questions.

Xojo Developer Magazine 18.4


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

Introducing PowerXS (Part 1) by Marc Zeedar
Marc unveils his new framework cloning tool for XojoScripts that he was going to speak about at XOJO.CONNECT this year.

OOP Listbox (Part 2) by Markus Winter
Markus continues creating his object-oriented Listbox.

On the Scene Again (Part 3) by Stefanie Juchmes
More SceneKit, this time exploring solving and animating a popular brain teaser.

Porting a Mac App to iOS by Tom Baumgartner
How hard is it to port your Mac app to iOS? Tom recently did it and shows what it took.

MapKit (Part 5) by Markus Winter
Markus continues in his quest to draw maps with Xojo, this time going deeper into finding and displaying addresses.

PLUS: WWDC 2020, Xojo on Android, Web 2.0, Drag and Drop, Best of the Web, and more!

Mehrwertsteuersenkung


Vorübergehend bis zum Jahresende wurde in Deutschland die MWSt. von 19% auf 16% gesenkt.

Wenn Sie eine MBS Plugin Lizenz kaufen und aus Deutschland kommen, aber nicht vorsteuerabzugsberechtigt sind, können Sie ca. 2.5% sparen beim Einkaufspreis.

Für alle Geschäftskunden ändert sich effektiv nichts, weil Sie die Steuer ja verrechnet bekommen beim Vorsteuerabzug.

[English] VAT rate in Germany changed temporarily from 19% to 16%. While we appreciate a tax reduction, it's a hassle to implement for everyone with a shop, doesn't save much money for tax payers, but creates a big hole in the budget for the government.

Using WolfSSL and custom CURL functions


The fine people at WolfSSL have a few impressive products around SSL, Encryption and SSH with an emphasis on the performance and on a small footprint. Since CURL already offers multiple SSL backends, we could build our plugins using wolfSSL.

CURL is doing well and we are using it now for over 10 years in our plugins for various tasks including HTTP, FTP, SFTP and email via IMAP or SMTP protocols. See the state of CURL video where Daniel explains the progress.

Compared to the OpenSSL library we use currently for most things, wolfSSL has a lot to offer:
  • If you are concerned about memory usage, check wolfSSL as it uses less memory.
  • When you need a cross platform SSL library, it offers latest TLS 1.3 with DTLS 1.2.
  • They include hardware support for encryption, so if you have acceleration hardware in your computer, they can use it.
  • While wolfSSL has its own interface, they also have a compatibility interface matching OpenSSL, so a transition would be easy.
  • You may benefit from additional progressive ciphers such as ChaCha20, Curve25519, NTRU, and Blake2b.
  • wolfSSL can be used for free with the GPL license option or used with commercial license and they offer paid support.
If you have a need for use of wolfSSL, please let us know. We can offer to use CURL functions using wolfSSL as SLL backend for your projects in Xojo and FileMaker.

Together with wolfSSL, we can offer customization to CURL library itself. We corodinate with Daniel Stenberg from wolfSSL to get changes made for you in CURL and then integrate those into our plugin functionality to get you the features you need the most.

See also wolfSSL vs. OpenSSL and CURL at wolfSSL.

Please contact us if you are interested in some special CURL modifications or use of wolfSSL and related products in FileMaker or Xojo.

Older blog entries:

2020-06-29 Xojo like properties with parameters in C++
2020-06-29 Inside Delegates
2020-06-28 MBS Xojo Plugins, version 20.3pr7
2020-06-25 Windows Photos Acquire
2020-06-25 MBS Xojo Plugins, version 20.3pr6
2020-06-25 MBS and OmegaBundle 2020
2020-06-24 Apple Silicon
2020-06-21 Ten months till Xojo.Connect 2021 in London
2020-06-20 MBS Xojo Plugins, version 20.3pr5
2020-06-20 Moved to macOS Catalina
2020-06-19 ChartDirector PDF Output
2020-06-17 Convert office documents to PDF with LibreOffice
2020-06-16 MBS Xojo Plugins, version 20.3pr4
2020-06-16 Omegabundle for Xojo 2020
2020-06-15 Drawing with DirectDraw in Xojo
2020-06-12 Xojo reports with backgrounds on PDF
2020-06-12 MBS Xojo Plugins, version 20.3pr3
2020-06-09 Watch Xojo Conference videos on Youtube
2020-06-08 MBS Xojo Plugins, version 20.3pr2
2020-06-07 Xojo Meeting in Atlanta

Archives

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