We celebrate in April 2020 the 20th anniversary of our company. Founded on 1st April 2000 as a sole proprietorship, we later upgraded in 2005 to a GmbH (limited) and over the years even got staff. As we trade as Monkeybread Software, we got a trademark for this name. Since 2001 we provide Xojo plugins and since 2006 we provide a FileMaker plugin.
Thanks to the thousands of customers around the world, who support us by buying licenses over the years. Thank you for the feedback, the greetings and the good testimonials we got.
Our party got moved to 2021 where we celebrate 20+1 years of the Monkeybread Software next year. Same party may also celebrate 15 years of MBS FileMaker Plugin, my 40th birthday and 20 years of our MBS Xojo Plugins.
As a thank you for all our existing and new customers, we offer for April a 20% discount on purchases for all our licenses. Coupon code 20years needs to be entered for web shop to get the discount. For links to PayPal directly from our website, we can just reduce the amount automatically.
If you need a license or an update, please enjoy the discount. This includes our licenses as well as DynaPDF licenses. If your license expires in the future, you can order this month and extend your license for up to five years in the future!
Otherwise have a great spring time at home, stay healthy and see you at the next conferences!
As you may have noticed the Xojo Inc. announced in the XDC 2020 keynote (see
Youtube playlist), that we'll get plugins for iOS later this year. For us it is time to update the build system to duplicate a lot of scripts for new targets.
First we tested how to build iOS dylibs from command line which worked quickly. The more difficult part will be to change code to use #if to enable it for iOS. And of course to later add iOS specific code to get functionality.
Next we worked on trying Linux ARM in 64bit. While not announced, we expect Xojo Inc. to do this someday when they see the need and an engineer has a few days to start the process. For us building ARM 64-bit seems to work fine. It's more or less just duplication of scripts and changing 32 to 64 for the bit count and using separate folder/file names for libraries.
To be prepared in case the Mac with ARM rumors turn up true, we added MacARM as possible build target. The scripts seem to work except that we get errors as the Mac SDK shipping currently does not support arm.
Finally we added the Android platform as target with both simulator and device modes. But we have not yet compiled anything this is a bit new for us. But we expect to learn from Xojo Inc. on how to setup a build environment as they need to do this for their own internal plugins, e.g. XML classes.
All the work is a bit preliminary and subject to change. Once Xojo comes with support for new targets, we can make sure we use the right compilation flags to produce matching libraries.
The new targets added here are:
- iOS Simulator 64-bit
- iOS Device 64-bit
- Linux ARM 64-bit
- Mac ARM 64-bit
- Android ARM Simulator 64-bit
- Android ARM Device 64-bit
Not sure if we get those targets all this year, but at least the build system is prepared. Over 20 libraries do compile for iOS and Linux 64bit already. Some plugins like the CURL and DynaPDF ones do compile for those platforms just fine.
Looking forward for the new targets and thanks to everyone who supports us by testing new functionality and keeping license current.
Christian Schmitz presents what is new in MBS Xojo Plugins since the last conference and what is coming soon.
Enjoy and if you have questions, please don't hesitate to contact us.
Stefanie Juchmes presents SceneKit and what coming soon for next plugin version:
Enjoy and if you have questions, please don't hesitate to contact us.
After long discussions we decide to move our 20 year party to the year
2021. Same location, same setup, but simply a year later.
In April 2020 our company will turn 20 years old and we celebrate a bit at home.
We'll plan to have a big party next year in Germany near our office with over 100 guests.
All people invited for this year will be asked to contact us in early 2021 whether they join the party in April 2021. We'll send new invitations next year to remind everyone.
The new date has the advantage that it's close to XDC 2021, so customers from America may extend their stay in Europe and join our party.
Please stay healthy and enjoy some time home with family.
In this article I want to introduce you the new functionalities from the
MBS Xojo Plugins in version 20.1.
Data from Images
The classes
JPEGImporterMBS,
GMImageMBS and
GM16ImageMBS got the new property ExifThumbnail. This property extracts an embedded thumbnail in EXIF data and return it as a string. With this string we can use the method getData method of the Picture class or our JPEG functions to decompress and display the thumbnail.
The class
JPEGImporterMBS got the ExifOrientation property that queries the orientation from the Exif data. We receive the orientation as an integer and you can use this number to determine and adjust the alignment if necessary.
The classes
GMImageMBS and
GM16ImageMBS include the new shared method FontMap. We can use this method to find out which fonts are currently available. The method can also help us to debug and find out the reason why a font is not loaded. The function returns a string with a XML structure.
(more)
For next plugin version we add four new properties to
TextArea class:
So you can control the background color of text for MacOS and Windows.
Coming soon for next plugin pre-release.
On Windows in a Xojo project if you have no menu bar on a window, the usual shortcuts like Control-C won't work. But if you like to get copy & paste to work, you may just handle the Control key plus various shortcuts yourself. So here some code you can copy & paste to your project if you have a window where textfields don't do the shortcuts. Best may be to put it in a
TextField subclass to have it working in multiple fields without duplicating the code a lot of times:
EventHandler Function KeyDown(Key As String) As Boolean
#If TargetWindows
Dim a As Integer = Asc(key)
If Keyboard.ControlKey Then
Select Case a
Case 1 // Control-A
Me.SelStart = 0
Me.SelLength = Len(Me.Text)
Return True
Case 3 // Control-C
Dim cl As New Clipboard
cl.SetText Me.SelText
Return True
Case 22 // Control-V
Dim cl As New Clipboard
Me.SelText = cl.Text
Return True
Case 24 // Control-X
Dim cl As New Clipboard
cl.SetText Me.SelText
Me.SelText = ""
Return True
Else
Return False // ignore?
End Select
End If
#EndIf
End EventHandler
If you have questions, please don't hesitate to contact us.
Looks like we were supposed to receive an Xojo Design Award at the cancelled Xojo.Connect conference:
Congratulations to the 2020 Xojo Design Award Winners!
Best Consumer App - HDRtist NX, Ohanaware
Best iOS App - PropertyMe Manager, PropertyMe
Best Lifestyle App - Crossword Wizard, Rush Software
Best Vertical Market App - qwireCast, qWire
Best Developer Tool - RegExRX, MacTechnologies Consulting
Best Vertical Market App - bMD Medical Software
Best Plugin - MBS Plugins, MonkeyBread Software
*Yes, there are 2 Best Vertical Market Apps, they were both so good we had no choice but to award them both!
View the winners here!
Thanks Xojo, Inc. and see you all next year in London for Xojo.Connect from 21st to 23rd April 2021.
Today a client asked if we could change the step count for number fields in a Xojo web app. As the HTML Input element offers a step feature, we could easily implement the step and also offer a min and max values, too. For example you can put this lines in an Open or Shown event of the
WebTextField object on your webpage:
Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').step=10;")
Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').min=0;")
Me.ExecuteJavascript("document.getElementById('" + Me.ControlID + "_inner').max=100;")
Optionally we could make this one call to
ExecuteJavascript, but for the client here, we subclass
WebTextField, add properties for the inspector in the IDE to set them and then run those lines in the Shown event to pass to the browser if they are set.
Due to the decision of the US government to ban us from coming to the USA (see
press release), we cancel our trips to the USA.
- For the FileMaker meeting on Thursday we'll try to join via WebEx.
- The Xojo meeting in New York in the steak house could take place, but just without us.
- For the Xojo.Connect conference we expect to find some solution. We'll probably provide our session as video on our website. Maybe we can hold it via video conferencing from today. This also offers the chance for Xojo Inc. to allow virtual attendance to the conference by streaming the sessions.
- The Claris Engage conference is in August and we hope the flu season is over by then. But we will not book/pay a booth and tickets until we know the ban is liften and doesn't get extended till summer.
PS: The Xojo.Connect conference is cancelled. Also the PauseOnError in St. Louis for FileMaker developers is cancelled.
We went to the party location for our 20 years Monkeybread Software event. Our mascot directly found a chair at the bar, but the bartender didn't show up that day.
In April 2020 our company will turn 20 years old and we celebrate.
We'll plan to have a big party here in Germany near our office with over 100 guests.
We hope for good weather and plan to do some barbecue and have a bouncy castle for the kids. They have a lovely terrasse for sitting outside, a big smoker for some great barbecue and be hired a DJ to entertain us.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost. Today we sent a few more invitations. In total something like 600 people invited, but most can't come. As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list. If you can't make it, please respond soon, so we don't need to contact you again later.
Nickenich, Germany - (March 10th, 2020) -- MonkeyBread Software today is pleased to announce
MBS Xojo Plugins 20.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 2600 classes and 68,000 documented features, and the versatile plugins have gained more new functions:
Since Xojo 2019r3 uses a newer version of Chromium Embedded Framework for the Webkit enabled HTMLViewer controls, we updated our classes to support this. You can use the
MBS Xojo Win Plugin with three different CEF versions depending on the version included with your Xojo version. For the
ChromiumBrowserMBS class we have a new RegisterExtension function to register JavaScript based extensions.
Our
JavaScriptEngineMBS class got upgraded to pass memoryblocks with copying in normal parameters, results and properties. The Memoryblock is available as UInt8 array in JavaScript. The new GlobalMemoryBlock function passes memory blocks to properties by reference to allow you to reference the same memory in Xojo and JavaScript. With our new MT methods you can call functions or evaluate code snippets on a preemptive thread to run them in background and keep your user interface responsive. Use
JavaScriptDateComponentsMBS class to work with dates in JavaScript.
In MacOS you can now support Airplay devices. Use
AVRouteDetectorMBS class to detect available devices and use
AVRoutePickerViewControlMBS control to display the standard user interface to pick a target device. When using our WebKit 2.x browser control, you can now configure it using
WKPreferencesMBS and
WKWebViewConfigurationMBS classes. Use
WKHTTPCookieStoreMBS to work with the cookies there.
For Windows check the new Navigate method in
IEWebBrowserMBS class. You can use it to load a website with GET or POST operation and include POST data, e.g. to send a form directly and show resulting webpage. Pass additional headers with the request including a different user-agent, e.g. to pass a browser check which does not like Internet Explorer.
Check our new Windows file dialog classes around
WinFileDialogMBS class. You can customize them including custom controls in the dialog like labels, buttons, checkboxes, textfields and popup menus. We provide a lot of events, so you can react to user interaction and enable/disable or query values.
For
JPEGImporterMBS and
GMImageMBS class we added EXIF thumbnail functions, so you can quickly get a thumbnail picture embedded in EXIF metadata. Use our new
LTCMBS class to generate or recognize time codes in audio streams. For our Encryption plugin we added a
BCryptMBS class to encrypt and hash passwords with bcrypt algorithm.
Finally we updated to CURL version 7.69.0, DynaPDF to 4.0.37.107, SQLAPI to 5.0.5 and SQLite to 3.31.0.
See
release notes for a complete list of changes.
Today we updated our WebPicture from PDF Page example project for Xojo to better handle HiDPI support when rendering PDF pages with
DynaPDFMBS class in
MBS Xojo DynaPDF Plugin.
The WebPicture class has a couple of constructors, but sadly none to provide both width and height and image data. So we need to create the WebPicture based on a low resolution version to get the right size in. Later we replace data with high resolution image data to get the sharp image to show in browser. Here is our sample code:
Function RenderPDFWebPicture(file as FolderItem, pageIndex as integer, width as integer, height as integer) As WebPicture
Dim pdf As New MyDynaPDFMBS
// create PDF environment and setup
If pdf.CreateNewPDF(Nil) Then
if pdf.SetImportFlags(pdf.kifImportAsPage + pdf.kifImportAll) then
// open source file
If pdf.OpenImportFile(file, 0, "") >= 0 Then
// import file
if pdf.Append then
If pdf.ImportPageEx(PageIndex, 1.0, 1.0) >= 0 Then
if pdf.EndPage then
// make a jpeg
If pdf.SetJPEGQuality(80) Then
// render 1x
If pdf.RenderPageToImage(pageIndex, Nil, 72, width, height, pdf.krfDefault, pdf.kpxfRGB, pdf.kcfJPEG, pdf.kifmJPEG) Then
Dim LowData As String = pdf.GetImageBuffer
// render 2x
If pdf.RenderPageToImage(pageIndex, Nil, 144, width, height, pdf.krfDefault, pdf.kpxfRGB, pdf.kcfJPEG, pdf.kifmJPEG) Then
Dim HighData As String = pdf.GetImageBuffer
// now build 1x picture
Dim w As New WebPicture(LowData, "page.jpg")
// and put in 2x data
w.data = HighData
// and return with HiDPI content
Return w
end if
end if
end if
end if
end if
end if
end if
end if
End If
End Function
As you can see, we create new MyDynaPDFMBS object, our subclass to fill error event and learn about why things may go wrong. The OpenImportFile function may fail to open the PDF file on the server. Otherwise use OpenImportBuffer to pass PDF as data block directly. We import first page, set JPEG quality and then render two versions of the image, one with 72 dpi and one with 144 dpi. Both are then combined into a WebPicture object.
Please do not hesitate to contact us if you have questions. The example will be included in MBS Plugin 20.1 download.
New in this prerelease of the 20.1 plugins:
- Updated CURL to version 7.69.0.
- Added BCryptMBS module.
- Added NSImageMBS.imageWithTintColor method.
- Fixed FileListMBS to not report logical file sizes correctly for newer Mac implementation.
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
The March/April (18.2) issue of xDev Magazine is now available. Here's a quick preview of what's inside:
More Fun with Comics by Marc Zeedar
Updating an old networking app for the modern era.
On the Scene Again by Stefanie Juchmes
More with Apple's 3D graphics toolkit, SceneKit.
From Oops to OOP by Markus Winter
An object-oriented approach to custom drawing into the Listbox control.
Your First Web App -- Part Five by Paul Budd
How to deploy the Web app as a standalone app.
Drawing PDFs by Stefanie Juchmes
Using MBS plugin to draw your own PDFs.
MapKit 3 by Markus Winter
More on getting MapKit to work with Xojo.
PLUS: Xojo Bookmarks, Backwards Compatibility, Managing Yourself, Xojo + Catalina, Best of the Web, and more!
New in this prerelease of the 20.1 plugins:
Download:
monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.
This year in April our company will turn 20 years old.
We'll plan to have a big party here in Germany near our office with over 100 guests.
We hope for good weather and look forward to get the bouncer castle we ever rented.
If you like to join and you miss an invitation, you can contact us and ask whether your invitation got lost. Today we sent a few more invitations. In total something like 600 people invited, but most can't come.
As people confirm they are coming, we'll add them to the guest list. If we run out of space, we may put people on the wait list. If you can't make it, please respond soon, so we don't need to contact you again later.