Xojo 2021r1


In a good tradition to inform about a new Xojo release, please let me point to what's new and special. My point is different than the official announcement and I look forward to see other fellow Xojo developers to publish blog articles about their views.

Announcement   Release Notes   Download   Announcement in Forum

The new release brings a few well needed bug fixes, a few new items and a few nice goodies for us. First the IDE itself is built for Apple Silicon, so you can enjoy native speed on the new Macs from Apple. On the way to this goal, the XojoScript plugin got updated for Apple Silicon and helpers are now built with Apple Silicon support. Xojo Inc. got their own LLVM based compiler to output code for Apple Silicon, update the linker and also the just-in-time compiler in XojoScript. Kudos to Xojo Inc. as they are one of the first to fully support the new CPUs.

A big change is the rewrite of JSONItem class. Under the hood they now use a C++ library alle yajl internally. This makes the JSON processing a lot faster in Xojo, but has a bit different behavior. Some of the subtile changes may cause trouble, so please try with your projects and see the improvements. Testers found and reported a few possible issues and Xojo Inc. already fixed them. There should be a big upside on performance with a little downside of smaller behavior changes. Web 2 benefits greatly from this change and gets a performance boost internally. Speaking of Web 2, the WebLocation control is back. Hurray!

If you do iOS, you may be happy to see that Apple no longer complains about some bundle identifiers used for the plugins. Now you can submit your Xojo app to the App Store once again including various plugins. Plugins enabled for iOS include the XML, SSL Socket, SQLiteDatabase, RegEx, Encodings and Crypto ones within Xojo itself.

The new UserAuthentication class looks interesting to do authentication via face or finger print on supported devices. But as far as I see it uses the same API as we do for our LAContextMBS class, which works for macOS and iOS.

The Web 2 framework got a lot of attention with new controls, a lot of bug fixes and small improvements. We still have to wait for something like a style editor and a way to get old projects migrated preserving the custom styles for individual controls. And we still have a couple of leaks in the web framework, but looks like they are not yet found and fixed. For the time being you may enjoy an improved WebFileUploader performance and the JSON speed-up.

MBS Plugin 20.5 and newer should work fine. Older versions may run into issues. Please check release notes for our plugin to learn what we changed over time. For iOS development with our plugins, please use version 21.1. Remember that our current 21.1 plugins support Xojo from version 2006r4 to 2021r1.

Nevertheless, this is a solid release and we used it for a few things the last weeks and had no issues with our projects. Please try it and report feedback to Xojo soon. What have you noticed?

RealTimeViewPort in ChartDirector


We have a new video with a quick demonstration of a new example project for our MBS Xojo ChartDirector Plugin.

All Xojo movies   Watch on YouTube.

The new MBS Xojo Plugins 21.2 are coming early April 2021 and include the new CDViewPortControlBaseMBS class to build a control based on ChartDirector with two connected views.


Combined Components with MBS FileMaker Plugin


When using MBS FileMaker Plugin, you may need to combine a lot of functions together to get some work done. That makes our toolbox of functions so flexible to use for your needs. Let us show you four examples:

Regularly import files from hot folder

  • First you start with Schedule functions to run a script regularly every few minutes in FileMaker Pro. Independent of SetTimer script step, so you can have multiple of them.
  • You look into a file path with Files.List to get a list of file names in the folder.
  • By using our List functions you compare the current file list to the one from last run. For example List.And would find similar files in both files, while List.FindUnequals would find the ones different.
  • Next you use Path functions to build file path by taking folder path and the file name. Use Path.AddPathComponent to not care about slash vs. backslash.
  • A function like Hash.DigestFile may quickly get you a SHA512 secure hash of the file.
  • You can do a search in FileMaker to check whether the hash is known. Or use our FMSQL functions to do the check with a FM.ExecuteFileSQL call to do a "SELECT COUNT(*) WHERE hash=?" SQL query to count the records and either get back 0 or 1.
  • To read the file you may use Container.ReadFile function and get it in a variable first.
  • You can then create a new record for the file with FileMaker script steps. Or you use FM.InsertRecord to create record for it without switching layout.
  • If you do a document database, you may go for a PDF document and use our PDFKit functions or DynaPDF functions to extract text for PDF, maybe split the PDF and make preview pictures for the pages.
  • For image files, you may use GraphicsMagick functions or CGImageSource functions to extract metadata for image files like camera model or GPS coordinates.
(more)

Bringing RabbitMQ to Xojo


For next MBS Xojo Plugins we add a new RabbitMQ plugin part to wrap the open source RabbitMQ C library and bring the functionality to Xojo.

RabbitMQ itself is an open-source project implementing a message-broker software. It's a server software to do message queues and then there are various clients available to use the services.

We got a couple of classes for you:
The connection class allows to connect and then use the services. This includes managing queues and exchanges, so you can declare a new queue if needed. Then you can send messages to the queue or receive messages. We already got 10 example projects made for you to try the various things by translating a few C examples. Since you can install RabbitMQ yourself on a local VM, you can just try it locally.



We built the plugin for all platforms we support, which includes macOS, iOS, Windows and Linux for both 32/64 and Intel/ARM targets. We include OpenSSL library, so you can use with and without SSL options. As usually the plugin handles memory and error management and hides a couple of low level stuff, especially all the value serialization with arrays, tables and variants.

Coming soon for 20.2 pre-release for you to test. Let us know if you have questions.

Dash help archives for FileMaker 19.2


For browsing help files, the Dash application is very useful on Mac and iOS. We just uploaded newer dash files for FileMaker 19.2 for you.

For FileMaker you find the docsets for version 19.2 and older here: FileMaker Dash Docsets

[Archive] FileMaker 19.2 de.zip
[Archive] FileMaker 19.2 en.zip
[Archive] FileMaker 19.2 es.zip
[Archive] FileMaker 19.2 fr.zip
[Archive] FileMaker 19.2 it.zip
[Archive] FileMaker 19.2 ja.zip
[Archive] FileMaker 19.2 ko.zip
[Archive] FileMaker 19.2 nl.zip
[Archive] FileMaker 19.2 pt.zip
[Archive] FileMaker 19.2 sv.zip
[Archive] FileMaker 19.2 zh.zip
[Dir] FileMaker 15/
[Dir] FileMaker 16/
[Dir] FileMaker 17/
[Dir] FileMaker 18/
[Dir] FileMaker 19/ 

Feedback is welcome. The conversion process creates an index of functions, script steps and guides. We also remove some JavaScript to make it work better.

For Windows and Linux, you can use Zeal application.


How you can Start with DynaPDF


Let me explain how to get started with MBS Xojo DynaPDF Plugin.

But first what is DynaPDF?
The DynaPDF library is a full featured PDF library for C developers and we provide you a Xojo integration as a plugin. With DynaPDF you get functionalities to create, edit, merge, analyze or sign PDF files within your Xojo application. With DynaPDF you can e.g. write an invoice for your customer in which you integrate a barcode with payment information and attach the always same terms and conditions to the PDF document. This invoice can also be converted to PDF/A for archiving purposes.

While your users can open a PDF and do some operations in Acrobat Reader (or the full Acrobat product), our plugin allows you to do things automatically in your code. You write the code to use the plugin to apply changes to many PDFs. Like process a folder of 100 invoices, extract text from each and look for vendor names in them to tag them automatically. Or use regular expressions to find the bank account and amounts.

Different Licenses
If you want to use the MBS Xojo DynaPDF Plugin, you need a suitable license of DynaPDF and the MBS Xojo DynaPDF Plugin. You can of course just test the plugin without a license and try all functions before you order. There are four different license levels available for DynaPDF. Which license you need depends strongly on which methods you plan to use. For example, if you only want to insert links in a new PDF document, a starter license is sufficient. If you also want to add a page to an existing PDF document, you need a Lite license for the import feature. If you want to read images from existing PDF files or import single PDF pages from another PDF document, you need a Professional license. Same applies for rendering pages for display or printing. With the additional PDF/A converter license, you get the possibility to convert already existing documents from PDF to PDF/A. All MBS DynaPDF licenses can be used for Xojo, FileMaker, C/C++, C#, Delphi, Lazarus, PHP, VB, VBA, and VB .Net with the appropriate DynaPDF versions. (more)

Welcome to the new agile world


Seems like Claris Inc. is running like crazy and got much more productive the last months.

Instead of waiting a year for changes to show up, things are now going much more quickly. New stuff shows up every few weeks.

Looks like they have dozens of projects running in parallel. We saw a few things publicly announced in the vision webinar recently. Since we are taking part in testing and we develop plugin, we can already try a few things coming closer to release. Keep an eye on the announcements and future roadmap videos from Claris. Although at the current pace, a release may come before that.

What does agile development mean?
Projects are run with parallel developments in various area, separated in source code branches. Usually every 2 weeks a sprint ends and the project managers prioritize items for the next sprint. They schedule the work for the developers and review progress. When things are ready, they get merged in the main branch and go in the next release. Otherwise they stay in the backlog and may get more attention in the next sprint. Instead of having features planned a year in advance, Claris can now go within a few months from planning to shipping.

A consequence of that is that new features are not as old as they used to appear. You may see things labeled preview over several versions until the feature is completed. Be sure to try new features and report issues as soon as possible, so you can get a bug fix for the next release. With 3 or 4 releases a year, we may get used to upgrade your FileMaker installations much more often.

For a plugin developer, we may see more often changes to the plugin interface. A new SDK may now come for every new release within a year. And you may need to follow closer with the plugin versions to the releases as we can't make sure our current plugin may load in a future release. Often not a bug directly, but more likely, the plugin may make assumptions about the environment, which may no longer be true. We fix those things as we notice them, but we may not put them in the release notes beside some note like "Updated to newer plugin SDK". Don't expect old plugins to work and enjoy the new versions coming!

And now we wait for the next FileMaker version to enjoy our plugin even more.

12th birthday of MBS SQL Plugin


Our MBS SQL Plugin turns 12 years old today.

Over the years we got requests for alternative database plugin classes for use with Xojo (formerly REALbasic). In 2009 a client requested a native plugin for Microsoft SQL Server, so we started writing a SQL Plugin and got a deal with SQLAPI to use this C++ library as the base of the plugin. Over the years, we contributed lots of changes and bug fixes and helped funding adding CubeSQL and SQL Anywhere support to SQLAPI.

As of today, we support CubeSQL, Centura SQLBase, DB2, Firebird, Informix, InterBase, MariaDB, Microsoft Access, Microsoft SQL Server, MySQL, ODBC, Oracle Database Server, PostgreSQL, SQL Anywhere, SQLite, SQLCipher and Sybase. Well received features include using named parameters for prepared statements, full unicode support, threaded connect & execution, bulk row transfer, streaming blob values, and offering database specific options for advanced features. And recently we got even edit/update support for RecordSet and newer RowSet classes. Yes RowSet is supported!

You can use our plugin with one of two interfaces and even mix them. SQLConnectionMBS is our native interface for using all the nice features. This includes SQLCommandMBS class for doing both statement preparation and handling the result set. With SQLDatabaseMBS class, we have a database subclass, which makes transition easier for existing Xojo developers and use PreparedStatement interface and RecordSet class.

If you like to try the plugin, please check the website. Watch SQL Plugin presentation and read Xojo Developer Magazine article in issue 14.1.

See also

Two new books about FileMaker in 2021


Recently I was happy to see that two books are listed for FileMaker on the book stores. And as both arrived within a few days, I had the luck to read in both of them.



If you like to have a book handy for some free time to sit on your couch in the garden and read something, you may want to get both:They are very different in their style and content, while both covering FileMaker. Mark walks over all the aspects in FileMaker, talking about every feature, going through the dialogs, discussing the options and it's a great reference manual to quickly dip into a topic. On the other side Richard has a very open and direct approach and will not just talk about FileMaker, but includes topics about the business aspect of development. How to best handle projects, clients, tools and add-ons. The little anecdotes in-between are very entertaining and show you easily what to do and what to not do.

On the way through the book Mark not just shows features in FileMaker, but also builds an example with the reader. Great for a bigger to follow this step by step. When you dip deeper later in the book, you get comprehensive guides on topics like ExecuteSQL, which shows the FileMaker specifics there.

While Richard works his way through various features in FileMaker, he has an eye for what can go wrong. For a few ancient features in FileMaker, he simply recommends to not use them for new developers creating newer solutions. As he explains why not to use them, the reader may learn the downsides and concentrate on newer features doing the same job, but better. And of course Richard shows how to do things, especially to keep them future proof and avoid possible trouble later.

Since FileMaker went into agile mode and now releases frequently, the books will get updated regularly with newer content. So we expect to buy fresh copies every year. And even if you know FileMaker well, it may be worth reading them. You always find something new you didn't know!

Have you read them? Your thoughts?

Xojo Developer Magazine Year Books


Last week the new books arrived from XDevMag.
Always great to have all the articles from one year of the Xojo Developer Magazine in one book, where you can just browse through when you have some time in your hammock.



We'll give away a few over the year at various Xojo meetings, once they start to take place again.
If you like to get one yourself, you can order them in the XDevMag book store.
When you consider ordering them, better pick several years and let them ship together at a package price. There are also academic and subscriber discounts available.

DynaPDF 4.0.49 for iOS


We rebuild the the DynaPDF library for iOS, so you can use the current version of DynaPDF with your FileMaker iOS SDK apps when using the MBS FileMaker Plugin.

We include four variants in our download:
  • DynaPDF for iOS Device
    armv7 and arm64
  • DynaPDF for iOS Simulator
    x86_64, i386 and arm64
When building your iOS app, just include the dynapdf framework file in the frameworks folder inside the app and call DynaPDF.Initialize in the start script passing the framework name and your license key.

The result should be OK if everything worked. If you get an error message including "mach-o, but wrong architecture", well you did copy the wrong framework file.
You can use lipo command line utility to remove the architectures you don't need.

Download: DynaPDF iOS 4.0.49.dmg or DynaPDF iOS 4.0.49.zip

PS: You need to sign the frameworks with your code signature.

MBS @ FMTraining.TV


Check out the FMTraining.tv website. Richard Carlton and his team do a daily free live stream about FileMaker to watch. And they have a huge library of FileMaker training material to watch and learn all about the Claris FileMaker product family.

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.



Do you like this video?
Please let Richard know and send him your wishes or ideas for future live broadcast as well as topics for training videos. And check out the FileMaker Training bundles as well as their new book for FileMaker, updated for2021.

SQLite and ICU Extension for Xojo


You may know that SQLite can use ICU extension to use the International Components for Unicode library to handle unicode properly. If the extension is enabled, you get unicode aware functions. For our InternalSQLiteLibraryMBS module, we add the capability to automatically use the libraries.

Upper and Lower

To map between lower and upper case, you can use those function and they should work perfectly for all unicode characters. But there are some language differences and so you may want to pass the locale specification with the function call.

lower('I') returns 'i'
lower('I', 'en_us') returns 'i'
lower('I', 'tr_tr') returns 'ı' (small dotless i)

If the second argument is omitted, NULL or empty text, you get the general case mapping for all languages.

SELECT UPPER('äüöß')

This shows ÄÖÜSS as output. (more)

Seven things to add to your FileMaker solution today with MBS Plugin


Let us show you a few things to use in MBS FileMaker Plugin and add to your solutions quickly today. Give your users a few new possibilities. From easy to complex, you may be able to copy a few scripts and adjust them to your field and layout names and get instantly new functionality for your solution. Let us show you a few things related to container fields in your solution:

Continuity Camera

If you have containers fields on a layout for images or PDF containers, how about adding a little button next to the field to let the user take a picture with their iOS device and insert it to the container?

The button may be hidden, if it's not FileMaker Pro on a Mac. But when clicked, you call ContinuityCamera.SetScriptTrigger and ContinuityCamera.PopupMenu function to show the popup menu to pick the device to use. The user then takes picture. Your script is trigged to take the result and place it in the container.

See blog article: Continuity Camera for FileMaker

(more)

Xojo checks self for nil


Recently I translated a C++ project to Xojo. To not confuse between property names and variables names, I prefixed a lot of properties with self within a class. This clearly shows that we access a property and not a local variable with the same name. Is this a good idea, what do you think?

Later I was curious whether Xojo's compiler takes the self really just like a scoping indicator or really does some more. A little test project built and then inspected with lldb shows me what is happening:

In the method, the rax is a register containing the reference to the object, named self. That is non nil always in a method as one of the pre-conditions of using methods. If self would be nil, there would be no way to find the right method since all methods in Xojo are virtual ones and go through a dispatch table.

Sample code is like this:

a = 1

Where a is a property of the class. The disassembler shows, that Xojo compiler does well and just moves the value into the right spot:

0x100133ef0 <+128>: movq $0x1, -0xe8(%rax)

Now use self.a = 2 and we get this:

0x100133f06 <+150>: cmpq $0x0, %rax
0x100133f0a <+154>: je 0x100133f62 ; <+242>
0x100133f0c <+156>: movq -0x8(%rbp), %rax
0x100133f10 <+160>: movq %rax, %rcx
0x100133f13 <+163>: addq $-0xe8, %rcx
0x100133f1a <+170>: movq %rcx, -0x18(%rbp)
0x100133f1e <+174>: movq $0x2, -0xe8(%rax)
0x100133f29 <+185>: movq -0x38(%rbp), %rax

In code the compiler asks the CPU to compare the value in the rax register (containing self) to zero. If that is equal, it jumps to another code block, which raises a NilObjectException! (more)

Watching for Errors with MBS Plugin


When you use our MBS FileMaker Plugin, you will make a lot of calls to the plugin. Most will succeed, but some will fail. Do you notice when something fails?

IsError function

We see a lot of clients coding without checking for error state. But not all function calls succeed and our MBS FileMaker Plugin keeps a last error state for you. Even on server with multiple scripts running in parallel, we keep an error state per script. You can query it with MBS("IsError") to see if the last function call returned an error.

You may do an error check each time you call a function with an If script step and handle the script. You may even write a log entry in a text file (Text.AppendTextFile) or database (FM.InsertRecord). We have a nice custom function for this in this blog article to log Get(LastError) results, but you can adapt it to MBS FileMaker Plugin with using IsError function: Looping over records in FileMaker with error checking (more)


FileMaker Pro 19.2.2 released


As you may have seen, Claris Inc. released the new version 19.2.2 of its FileMaker product family.
This update brings a lot of improvements to the quick start experience, but also a couple of very welcome bug fixes and a few new features.
Read more in the releases notes.

MBS Plugin has been updated in version 11.1 to take advantage of the latest FileMaker Plugin SDK for version 19.2. Since we changed a few things in the last months to adjust to the ongoing changes in FileMaker, we highly recommend to update. Older versions with 10.2 or newer may also work, but we can't guarantee it.

See
Claris FileMaker Pro 19.2.2 Release Notes
Claris FileMaker Go 19.2.2 Release Notes
Claris FileMaker Cloud 2.19.2.2 Release Notes
What’s new in Claris FileMaker 19.2.2

To download the new version, you may use the download page for your licensed software (see your license email for a link) or use the in-product updater next week.

News from the MBS Xojo Plugins Version 21.1


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

BiggerNumber and BigNumber
With BigNumber you can already process very large numbers with a high accuracy, but for some applications it can be important to have an even higher accuracy and therefore we have now BiggerNumber too. Objects of the BiggerNumberMBS class can have a floating point number with 2560 bits. They have a precision up to 617 digits behind the decimal point. Compared to a normal double value we have 5 times as many bits available. If BiggerNumberMBS is so accurate, why would you need BigNumberMBS class at all?
The answer is, if the speed of your applications is more important to you than the accuracy, use BigNumber, but if you need high accuracy, use BiggerNumber. If you use large integer numbers, use LargeNumberMBS. This class provides integer numbers up to 1200 digits long. With the innovation of BiggerNumberMBS also some mathematical formulas are added, like the calculation of cosines, sinus and tangent. There are over 30 new methods available for BiggerNumberMBS and BigNumberMBS classes.

(more)

MBS FileMaker Plugin 11.1


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

Archive
With the new Archive.CompressContainer function you can compress the content of a container into an archive. In the parameters you can specify in which format your archive should be. The following formats are available for this purpose: 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 you can additionally specify a filter at e.g. for zip format it can be store or deflate. We also need to specify the destination path, as well as the container from which the data is used. Furthermore we can specify other options like the compression level.

DynaPDF
Also in the DynaPDF component there is a new function that brings even more style into your tables. The DynaPDF.Table.SetCellStyledText function inserts the specified styled text into the cell. To do this, we first specify in the parameters the table ID, as well as the row and column. Now we can specify the alignment of the text horizontally and vertically, using the values left/bottom, center or right/top. Then we can set the text with the styles to be inserted into the cell. Optionally, you can specify the leading factor. If this factor is greater than 0, then the plugin will add \LD[] commands to styled text to set leading relative to font size. This way you define the spacing between lines.

An example of function usage may look like this:
Set Variable [ $r ; Value: MBS("DynaPDF.Table.SetCellStyledText"; $table; $rowNum; 0; "left"; "bottom"; TextColor ( "Hello World" ; RGB ( 65535 ; 0 ; 0 ) ) ) ] (more)

FileMaker Developers in Southern California


The recording of the MBS Plugin presentation from FMDiSC meeting from 12th March 2021:

ThumbnailFileMaker Developers in Southern California

(English)

55:08 minutes

Watch on Youtube

Content

00:00 Introduction to developer goodies and syntax coloring.
30:30 fmSyntaxColorizer database
35:50 FileMaker Snippet Storage database
36:40 Script WorkSpace Context Menu Commands database
39:20 JSON functions like JSON.Colorize
41:00 XML functions like XML.Colorize
42:40 WIA functions, DynaPDF functions and GraphicsMagick functions together.
44:40 OCR functions and DynaPDF functions together
45:30 RegEx functions, especially RegEx.DataDetector
47:30 iOS example for QuickLook functions to markup a document.
50:30 The combination of various components to a solution
53:40 Automatic installation and the Plugin License Decision Graph

Please do not hesitate to contact us if you have questions.


Vier Monate bis zur Deutschen FileMaker Konferenz 2021 in Malbun


Noch vier Monate bis zur FileMaker Konferenz 2021 in Malbun (Liechtenstein) und zur MBS Plugin Schulung Schulung am Mittwoch vorher.

Vom 22. bis 24. Juli 2021 findet die elfte deutschsprachige FileMaker Konferenz in Malbun, Liechtenstein statt.

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

Für den Deutschsprachigen Raum ist diese Konferenz das Treffen des Jahres. Hier finden Sie vom Anfänger bis zum Profi Kontakte zu anderen Entwicklern. Lernen Sie was es neues gibt, nehmen Sie Impulse mit für die eigene Arbeit und erfahren Sie mehr zu FileMaker von deutschsprachigen Experten!



Die MBS Plugin Schulung vorher findet voraussichtlich am statt im gleichen Hotel am 21. Juli 2021.

Bitte planen Sie wenigstens einen extra Tag ein für ihren Besuch in Liechtenstein, damit Sie die Natur in dem schönen Tal geniessen können. Den Aufstieg auf den Sareis können Sie bequem zu Fuß vom Hotel aus starten und die Turnastraße hinauf spazieren bis zum Restaurant am Gipfel. Oder alternativ die Seilbahn nehmen. Wir empfehlen die Anreise Montags, Dienstag etwas Zeit zum Wandern und Mittwochs dann die MBS Schulung als Vorprogramm zur Konferenz. Abreise Sonntags, damit Sie nicht den Samstagabend verpassen.

Hoffen wir, dass sich im Frühjahr die Corona Lage verbessert und die Konferenz stattfinden kann.

Seven months till XDC 2021 in London


Just seven months till the XDC 2021 in London, England. Tickets are still available for $750 USD till 1st April 2021 instead of $950 later.

It will be held October 13-15, 2021 in London, England at the Holiday Inn Bloomsbury. This conferences is the best place to meet Xojo developers from around the world in real live, make contacts, present yourself as expert and learn what is new in Xojo. Tickets are available in the Xojo store and if you bring your partner, you can order an extra guest ticket for the dinner events.

Check out the conference highlights video if you want to see what it's like - or ask one of the many attendees from the forum!

Wether you are full or part time Xojo developer, this is your chance to learn all about the Web 2.0 framework, the Android progress and what's new in the Xojo world.

To get there, please use public transportation. The piccadilly line brings you right from Heathrow Airport to Russell Square Station, just next to the hotel. That trip should cost about 3 £ and you may just pay by tap in/out with your NFC enabled credit card or phone. Otherwise buy an Oyster card and load money on it if you don't have such a card. If you come by Eurostar train through the tunnel from France, you can exit Pancras station and just walk to the hotel. Otherwise take one station via subway to Russell Square Station. That station is right behind the hotel block.

See you soon there!

Video about MBS FileMaker Plugins 11.1


Let us show you a few of the new features in the version 11.1 of our MBS FileMaker Plugin:

ThumbnailMBS FileMaker Plugins 11.1

(English)

17:23 minutes

Watch on Youtube

Some links for the video:

00:15 Installation
00:50 Preferences dialog
01:30 RegEx.DataDetector
02:30 QuickLook functions with new Markup
06:00 EPC Barcode project and Barcode functions
07:20 Enhancements for Calculation Dialog
09:00 Enhancements for Custom Functions Editor
12:15 Enhancements for Debugger

Please do not hesitate to contact us if you have questions.


Video about MBS Xojo Plugins 21.1


Let us show you a few of the new example projects included with the 21.1 version of our Xojo Plugins:

ThumbnailMBS Xojo Plugins 21.1

(English)

23:12 minutes

Watch on Youtube

Some links for the video:

00:30 NSDataDetectorMBS class
03:50 NSCollectionViewControlMBS shown
07:40 Leak Finder example project
13:00 BigNumberMBS and BiggerNumberMBS classes
16:00 iOSPictureMBS module
21:10 NSNetServiceMBS class

Please do not hesitate to contact us if you have questions.


MBS FileMaker Plugin 11.1


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

We have new IBAN functions to validate bank account numbers. You can format the IBANs for printing with spaces or get the in compact style. We can calculate the checksum and provide example IBANs for various countries. You can query a regular expression to find IBAN within some text with our RegEx functions.

For macOS and iOS we have new functions for data detectors. That is the feature Apple provides for applications like Safari or Mail to identify data within the text. With our RegEx.DataDetector function you can detect phone numbers, email addresses, URLs, postal addresses and dates in FileMaker.

If you use FileMaker on macOS you can enjoy new buttons for calculation dialogs to evaluate expression and check for syntax errors. In custom functions editing dialog you can check your functions and define a test case using comments to run your custom functions with a specific set of parameters. Links to MBS functions in calculations can now also be links to Dash application.

For DynaPDF we added DynaPDF.Table.SetCellStyledText function to fill tables with styled text from FileMaker easily. The styled text conversion now includes super- and subscript styles. DynaPDF can be used with ZUGFeRD in newer version 2.1.1.

We added a couple of utility functions: The Archive.CompressContainer function to quickly archive a container. Use Math.FormatNumber to format a number with desired decimal separator and number of decimals. With Math.NormInv you can calculate the NormInv function like in Excel.

For dictionary functions we added a new Dictionary.AddDictionary function to add one dictionary to an existing one. Use Dictionary.ToJSON to convert to JSON and the new Dictionary.FromJSON function to convert back to a dictionary. In List functions you can search lists with List.Find and QuickList.Find functions.

The FileMaker Pro on Windows we implemented PKCS12.ShowDialog and X509.ShowDialog functions to show certificate in standard dialogs. We implemented WebView.StopLoading for Windows.

For iOS we improved the QLPreviewPanel functions to allow editing of documents. You can show a PDF document or image and have the user annotate documents with the built-in markup tools. Then you can save the modified PDF document back in the container. Use iOSApp.InstallOpenURLHandler and related functions to catch URL requests to your custom FileMaker iOS SDK application.

Finally we updated CURL library to version 7.75.0, DukTape to 2.6, DynaPDF to 4.0.49.139, dyncall to 1.2, LCMS to 2.12, LibXL to 3.9.4, LibXML to 2.9.10, LibXSLT to 1.1.34, openssl to 1.1.1i, SQLAPI to 5.1.4b5, Xcode to 12.4 and the plugin SDK for version 19.2.

See release notes for a complete list of changes.

MonkeyBread Software Releases the MBS Xojo Plugins in version 21.1


Nickenich, Germany - (March 9th, 2021) -- MonkeyBread Software today is pleased to announce MBS Xojo Plugins 21.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 2800 classes and 72,000 documented features, and the versatile plugins have gained more new functions:

For macOS and iOS we have new functions for data detectors. That is the feature Apple provides for applications like Safari or Mail to identify data within the text. With our NSDataDetectorMBS class you can detect phone numbers, email addresses, URLs, postal addresses and dates in Xojo. On that way we implemented NSRegularExpressionMBS class to do regular expressions using Apple's frameworks.

You may know our BigNumberMBS class, a 320bit floating point number. For scientific math we were asked for a something bigger, so we created BiggerNumberMBS class. The new class provides a 2560bit floating point number with a 512 bit exponent and a 2014 mantissa. This provides about 600 digits of precision. For both classes we added 30 new trigonometry functions.

To use high level APIs for macOS and iOS applications we got NSNetServiceMBS and NSNetServiceBrowserMBS classes. You can publish a service and find other services, e.g. have your iOS app find the companion macOS app.

Recently we found DuckDB, an open source database engine similar to SQLite, but with column based data storage (instead of row based like SQLite). Depending on what you do with the database, this implementation may be much faster since it is optimized to quickly walk over values in a column. Check out DuckDatabaseMBS class in Xojo to use both in-memory or file based databases.

We upgraded our PDFKit classes to have over 200 additional methods and properties to work with annotations. We added PDFAppearanceCharacteristicsMBS class to specify more options for appearance streams.

For Windows we got HTMLText or PlainText methods for WebView2ControlMBS control. The WindowsShellExecuteAsAdminMBS function may help to run an executable with admin privileges.

We improved the DeclareCallBackMBS class to work on Windows and Linux for callbacks received in a thread. The plugin routes them to main thread and calls your delegate there. We improved DirectShow plugin and added DirectShowAMVideoControlMBS class. The DirectShowCaptureGraphBuilderMBS class now got a FindPin function and GetStreamConfig can accept an GUID to identify the category for a pin.

For our SQL Plugin, we implemented Edit/Update for SQLDatabaseMBS class. We added ErrorMessage property for iOS. To embrace RowSet we added more methods related to it: SQLSelectAsRowSetMT and SQLSelectAsRowSet for SQLConnectionMBS class and BuildRowSetMBS global function.

To help debugging memory leaks we got a new MemoryStatisticsMBS class and the Leak Finder example project. With AllObjectsOfClassMBS function you can quickly find all objects of a class.

We upgraded NSCollectionViewControlMBS control to work better and improved the example. Please try the control to get a grid control in your solution to show various container based controls.

For iOS we got a new iOSPictureMBS module with helper functions specific for iOS. You can export an image or video to the camera roll and get an event when the export finshed from the plugin.

We added more properties to JSONMBS class, added SetLogEventMask to GMImageMBS class to enable logging in GraphicsMagick, a new ReadFromPkcs7 function for X509MBS class and an extra version number line to CURL debug output. Use the NormInvMBS function to calculate NormInv like in Excel. The new IncludeDataInDebugMessages property for FMConnectionMBS class helps debugging your requests. And enjoy high resolution drag images on macOS with InstallDragImageMBS function.

Finally we updated CURL library to version 7.75.0, DukTape to 2.6, DynaPDF to 4.0.49.139 including ZUGFeRD 2.1.1, dyncall to 1.2, LCMS to 2.12, LibXL to 3.9.4, LibXML to 2.9.10, LibXSLT to 1.1.34, openssl to 1.1.1i, Rockey4ND, SQLAPI to 5.1.4b5 and Xcode to version 12.4.

See release notes for a complete list of changes.

Neues MBS FileMaker Plugin 11.1


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

Wir haben neue IBAN Funktionen zur Validierung von Bankkontonummern. Sie können die IBAN für den Druck mit Leerzeichen formatieren oder sie in kompakter Form formatieren. Wir können die Prüfsumme berechnen und Beispiel-IBAN für verschiedene Länder bereitstellen. Mit unseren RegEx-Funktionen können Sie einen regulären Ausdruck abfragen, um IBAN innerhalb eines Textes zu finden.

Für macOS und iOS haben wir neue Funktionen für Datendetektoren. Das ist die Funktion, die Apple für Anwendungen wie Safari oder Mail bereitstellt, um Daten innerhalb des Textes zu identifizieren. Mit unserer Funktion RegEx.DataDetector können Sie Telefonnummern, E-Mail-Adressen, URLs, Postadressen und Datumsangaben in FileMaker erkennen.

Wenn Sie FileMaker unter macOS verwenden, können Sie sich über neue Schaltflächen für Berechnungsdialoge freuen, um Ausdrücke auszuwerten und auf Syntaxfehler zu prüfen. Im Bearbeitungsdialog für benutzerdefinierte Funktionen können Sie Ihre Funktionen überprüfen und mit Hilfe von Kommentaren einen Testfall definieren, um Ihre benutzerdefinierten Funktionen mit einem bestimmten Satz von Parametern auszuführen. Links zu MBS-Funktionen in Berechnungen können nun auch Links zu Dash-Applikationen sein.

Für DynaPDF wurde die Funktion DynaPDF.Table.SetCellStyledText hinzugefügt, um Tabellen einfach mit formatiertem Text aus FileMaker zu füllen. Die Konvertierung von formatiertem Text beinhaltet nun auch hoch- und tiefgestellte Textstile. DynaPDF kann mit ZUGFeRD in der neueren Version 2.1.1 verwendet werden.

Es wurden einige Utility-Funktionen hinzugefügt: Die Funktion Archive.CompressContainer archiviert einen Container. Mit Math.FormatNumber können Sie eine Zahl mit dem gewünschten Dezimaltrennzeichen und der Anzahl der Nachkommastellen formatieren. Mit Math.NormInv können Sie die NormInv-Funktion wie in Excel berechnen.

Bei den Dictionary Funktionen haben wir eine neue Funktion Dictionary.AddDictionary hinzugefügt, um ein Dictionary zu einem bestehenden hinzuzufügen. Mit Dictionary.ToJSON können Sie nach JSON konvertieren und mit der neuen Funktion Dictionary.FromJSON wieder zurück in ein Dictionary konvertieren. In den List Funktionen können Sie Listen mit den Funktionen List.Find und QuickList.Find durchsuchen.

In FileMaker Pro unter Windows haben wir die Funktionen PKCS12.ShowDialog und X509.ShowDialog implementiert, um Zertifikate in Standarddialogen anzuzeigen. Wir haben WebView.StopLoading für Windows implementiert.

Für iOS haben wir die QLPreviewPanel Funktionen verbessert, um die Bearbeitung von Dokumenten zu ermöglichen. Sie können ein PDF-Dokument oder ein Bild anzeigen und den Benutzer mit den eingebauten Auszeichnungswerkzeugen Dokumente annotieren lassen. Anschließend können Sie das geänderte PDF-Dokument wieder im Container speichern. Verwenden Sie iOSApp.InstallOpenURLHandler und verwandte Funktionen, um URL-Anfragen an Ihre eigene FileMaker iOS SDK-Anwendung abzufangen.

Schließlich haben wir die CURL-Bibliothek auf Version 7.75.0, DukTape auf 2.6, DynaPDF auf 4.0.49.139, dyncall auf 1.2, LCMS auf 2.12, LibXL auf 3.9.4, LibXML auf 2.9.10, LibXSLT auf 1.1.34, openssl auf 1.1.1i, SQLAPI auf 5.1.4b5, Xcode auf 12.4 und das Plugin SDK auf Version 19.2 aktualisiert.

Alle Änderungen in den Release Notes.

NSCollectionView for Xojo


Have you tried our NSCollectionViewControlMBS control in Xojo?
We got it new in 21.0 and improved it for 21.1 version, so please try it in the next days with the upcoming plugin version.



You can have a resizable grid of containers controls for macOS here. Great as it allows you to use it with a thousand items and containers are created on the fly when you scroll or resize the control. Since we use ContainerControl in Xojo, you can put whatever control you like on them. The example uses an ImageWell with a Label.

The layout is controlled by the NSCollectionViewLayoutMBS class. You can configure it with NSCollectionViewFlowLayoutMBS, the items will nicely flow within the available area. That allows you to set the spacing between items, item size and section sizes.

Please do not hesitate to contact us with questions.

The different FileMaker Clouds


We see confusion about the different Cloud offerings. Some features are Cloud only or not available on one Cloud, but maybe another. Why?
Because it depends what Cloud you are talking about. Like who runs what FileMaker Server in what data center in what configuration and with what operation system.

If you see a little piece of information, you may not get the full picture. Let us show you few examples:

Do Plugins run in the Cloud?
Yes, of course they run on the FileMaker servers in the Cloud, just not in the current FileMaker Cloud offering from Claris Inc. itself. But other Cloud vendors do support plugins on the server side. MBS FileMaker Plugin is available for server usage on macOS, Windows and Linux.

OData support is limited to Claris FileMaker Cloud?
No, for OData you need the Linux version of FileMaker Server, which can be used via both Claris FileMaker Cloud and other Cloud offerings using Linux. As long as your hosting company uses Linux for FileMaker Server, you can use OData. Learn more about OData here. OData is great as it includes schema modifications, something you can't do otherwise by scripts.

Can we use Custom Web Publishing?
Yes, but the FileMaker Server in the Cloud must use FileMaker Server with Windows or macOS. The Linux version does not support Custom Web Publishing with PHP and XML. Thus you can't use those features in the Claris FileMaker Cloud, but go with a hosting company using macOS or Windows.

Can I buy a FileMaker team license with the Cloud server?
Yes, most vendors are happy to sell the license. Please note that for Claris FileMaker Cloud you have to buy the license with the server. Although it may be worth to call Claris Sales and ask if they would provide some discount when you trade in the existing license. Other vendors allow you to bring your own license, which helps to move an on-premise server to the cloud.

What Cloud offerings are available?
When you need to decide on a Cloud offering, please note that there are multiple things and FileMaker Cloud is not an unique name. We list the offering from Claris Inc. as Claris FileMaker Cloud here:
  • Claris FileMaker Cloud, great for novice users, who have to just make a brand new solution available to a team.
  • Many Claris Partners offer traditional FileMaker Server hosting with MacOS, Linux or Windows on dedicated servers. The Claris Partner search lists dozens of hosting companies.
  • FMCloud.fm or similar provides FileMaker Server running via Docker on Linux servers. Using Docker is a bit more efficient than running separate VMs for each server with a full virtualized OS.
  • You can rent your own server with a hosting company like AWS EC2, Microsoft Azure, Host Europe or whatever you prefer and install your own copy of FileMaker Server. That may go with macOS, Windows or Linux version FileMaker Server.
As you may see I pointed out FMCloud.fm, because that is a service with a free trial and you don't need to call someone and ask for a hosting or price. You can click your server, get it running and have your solution running in less than an hour. The great thing on the Cloud is that it is automated, available right away without delays. A fascinating development!

If you know another Claris Partner offering similar service, please let us know. Please do not hesitate to contact us with your questions.

MBS Xojo Plugins, version 21.1pr9


New in this prerelease of the 21.1 plugins:
  • Fixed a problem with a crash in CURL with SFTP with empty password or username.
  • Added BiggerNumberMBS to have 2560 bit floating point number for even bigger range and precision. 512 bit exponent and 2048 bit fraction.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 11.1pr9


New in this prerelease of version 11.1 of the MBS FileMaker Plugin:
  • Fixed rounding error with Time.Sleep function.
  • Fixed a problem with a crash in CURL functions with SFTP with empty password or username.
  • Updated plugin SDK for version 19.2.
  • Reduced number of exported symbols in Windows DLLs.
Download at monkeybreadsoftware.com/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

MBS Xojo Plugins, version 21.1pr8


New in this prerelease of the 21.1 plugins:
  • Added iOSPictureMBS module with methods and delegates to export video or image to camera roll.
  • Deprecated SetLicenseKey function for DynaPDFMBS class. Please use SetLicenseKeyGlobal instead.
  • Fixed an issue with OpenDialogMBS class not returning folderitems properly for alias files.
  • Updated DynaPDF to version 4.0.49.139.
  • Enabled math functions for internal SQLite library for next SQLite version. (see InternalSQLiteLibraryMBS module)
  • Added isObject, isArray, isNumber, and isBoolean to JSONMBS class.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 11.1pr8


New in this prerelease of version 11.1 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

LibXL Extras for Xojo


You may have seen that we wrap LibXL into a plugin for Xojo: The MBS Xojo XL Plugin. We support all the built-in features from LibXL like read/write Excel documents. That includes older XLS or newer XLSX format as well as templates. But we add a few of our own developments related to Xojo around that. Let us show you.

We have eight classes for you:
  • XLBookMBS is the base class for a document.
  • XLSheetMBS describes the individual sheets in an Excel document.
  • XLFormatMBS defines the formatting of a cell, which may include a font definition.
  • XLFontMBS defines a font specification. That may be as simple as bold or a color.
  • XLFilterColumnMBS defines filter options for a column.
  • XLAutoFilterMBS provides the properties for auto filter options.
  • XLCopyOptionsMBS are used for our copy functions to define what to copy.
  • XLRichStringMBS allows access in detail on styled text.
Styled Text

We don't just provide you functions to use rich text with XLRichStringMBS class. We got further and allow you to convert the rich text in Excel into the styled text as Xojo uses it. StyledText function on the class will convert the content to StyledText and return it, so you can directly assign it to a TextArea control. With the AddStyledText method you can add text from a TextArea control into a new XLRichStringMBS object.

For your convenience the XLSheetMBS class has a method WriteStyledText, where you can directly pass StyledText from TextArea control to assign styled text to a cell. Our ReadStyledText function will read a cell containing rich text and translate to StyledText object for Xojo. (more)

LibXL for FileMaker with extras


For a few years we have worked on integrating the LibXL library and making functionality available for FileMaker. Beside all the standard built-in features from LibXL to read/write Excel files, we have some extra functionality developed ourselves:

Copy Cells

LibXL comes with a copy cell command, see XL.Sheet.CopyCell. Beside that we added XL.CopyRow to copy content of a row. Similarly XL.CopyColumn copies a column. As you can pass different book reference numbers, you may even copy from one document to another one or copy from one sheet to another sheet within the same document.

The XL.CopySheet function can copy the content of a sheet to another document, great if you like to extract one sheet from one document and copy it to a new document. Finally we made XL.CopyContent to copy the content of all sheets into a new document. That helps to convert between XLS and XLSX, older and newer Excel formats in both directions.

TimeStamps

Since FileMaker uses timestamps, we have XL.Date.DoubleToTimeStamp and XL.Date.TimeStampToDouble functions to convert the numeric time values in Excel to/from timestamps in FileMaker.

The XL.Sheet.CellWriteDate function writes a timestamp or date from FileMaker directly into a cell. You still need to pass a format parameter referencing the date format to show the value later. (more)

xDev Magazine 19.2


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

Deja Vu by Marc Zeedar
Are you getting tired of API and technology transitions? Does it seem like you're always having to redo perfectly good code because of an OS update?

Getting Started with DynaPDF by Stefanie Juchmes
If you need more PDF power than you can get with Xojo's built-in PDF classes, you should check out Monkeybread's DynaPDF plugin. Stefanie will show you how!

Shake It! by Markus Winter
You know how when you enter an incorrect password on the Mac the dialog will shake to show you it's wrong? Markus has figured out how to do that with pure Xojo.

Maps Part 9 -- Putting GPS Data on the Map by Markus Winter
This time Markus helps a reader by showing how to plot GPS coordinates on a map.

Application Instance by Christian Schmitz
Did you know you can tag an application download with a unique identifier? It's a little tricky, but Christian shows you exactly how to do it.

Plus: Creating a web service with Xojo, picture fills, scrolling pictures, and much more!

MBS Xojo Plugins, version 21.1pr7


New in this prerelease of the 21.1 plugins:
  • Added HTMLText or PlainText methods to WebView2ControlMBS class.
  • Added IsNull function to JSONMBS class.
  • Added IncludeDataInDebugMessages for FMConnectionMBS class.
  • Improved DeclareCallBackMBS class to handle asynchronously dispatch on Windows and Linux.
  • Added SetLogEventMask and IsLoggingEnabled shared methods to GMImageMBS class.
  • Fixed an issue with LZ4MBS decompression failing.
  • Fixed problem with DynaPDFMBS where an empty password was not passed as nil in OpenImportFile.
  • Updated SQLAPI to version 5.1.4b5.
  • Updated DynaPDF to version 4.0.49.137.
  • Added ResolutionUnit constants to JPEGExporterMBS class.
  • Fixed issue for iOS where Transporter complains about __INFO_PLIST segment in plugin library.
Download: monkeybreadsoftware.com/xojo/download/plugin/Prerelease/.
Or ask us to be added to our shared Dropbox folder.

MBS FileMaker Plugin, version 11.1pr7


New in this prerelease of version 11.1 of the MBS FileMaker Plugin: Download at monkeybreadsoftware.com/filemaker/files/Prerelease/ or ask for being added to the dropbox shared folder.

Archives

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