CrossToolbarKSW - Toolbar Customization on Mac OS X!

Josh Hoggan from Koingo Software, Inc. just released CrossToolbarKSW, a cool toolbar class where I helped him over the last months with a few issues. Certainly worth taking a look:

If you're waiting for Real Studio to get Cocoa toolbar customization, you may be waiting a while! We've been using this internal solution for a while to manage our toolbars. It is a wrapper class for toolbars in Real Studio that makes use of the MonkeyBread Software plugin set. It focuses on bringing a basic toolbar to Windows, but giving a fully fleshed out toolbar for Mac OS X including customization! Don't be stuck creating two sets of code for a toolbar for each platform any longer. There are a couple features here which don't work (ie. setting the pushed state of a toggle button to False instead of True manually), but they're easily added. Completely open-source and free to use and distribute without restriction.

Grab it here: crosstoolbarksw.zip


DynaPDF Basics

Here are a few basic things you should know and use in your code like the instances, fonts, error event, the color management and character maps.

Instances

Initializing a DynaPDFMBS object is time consuming as some initialization code needs to run like finding the fonts on the system. As initialization is costly, you should reuse the object. You call CreateNewPDF again to start a new PDF on the same instance. Of course you should call CloseFile and FreePDF before to cleanup.

Fonts

On Mac OS X and Windows we automatically load fonts from system font folder. But for other font folders or on Linux, you need to call AddFontSearchPath yourself to scan a folder for font files. That is important to know for people using web apps. Because we have users from time to time which have a web app working well on Mac or Windows, but they see no fonts on Linux.
This standard fonts are always available: Courier, Helvetica, Times, Symbol and ZapfDingbats.

Error Event

You should use the error event. This is an event where you are informed about all errors. While most functions return false or an error code in case of an error, the event gives you a way to decide if you want to ignore an error or handle it. Like when you set a font and the font can't be used. In that case you get error type being kE_WARNING and ErrorCode being 16. In that case you could simply ignore the error and call SetFont again with a different font name. So in error event depending on the error type (kE_FATAL_ERROR, kE_FILE_ERROR, kE_FONT_ERROR, kE_SYNTAX_ERROR, kE_VALUE_ERROR or kE_WARNING), you can decide if you want to display error to user or not.

Color Matching

Please take some time to learn the basics about color matching. If you want DynaPDF to correctly raster PDFs, you need to make sure color matching is initialized properly and used correctly. For that you call InitColorManagement method and pass some profiles. Create a new DynaPDFColorProfilesMBS object and set its properties. You can define a screen profile, a soft proof profile and default profiles for CMYK, RGB and grayscale colors. While RGB and gray profiles are really optional, you should always provide a screen profile for the target color space. If you render an image, this should be a the output color space for that image. If you render for displaying on screen, you should use the profile of your display. Also it is important to provide a default CMYK profile. As separation colors are normally defined with an alternative color in another color space (usually CMYK), this default CMYK profile is important to render them correctly to RGB.

Character Maps

You need to use SetCMapDir. Included with DynaPDF Examples you get a folder called CMAP with character mapping files. Those files are needed for mapping asian character correctly. So if you want to extract text correctly from any PDF, please use SetCMapDir to inform DynaPDF where to find the CMap files. They are needed to map back glyph IDs to actual unicode characters which is required for extracting, deleting or replacing them.

Real Studio Meeting in Paris

The next meeting of the Paris Real Studio developer group will take place Friday, January 18th, 2013 from 8h30 to 17h in Paris.
Save the date and join this meeting. The location has been announced: Espaces reunion, 43 rue de Dunkerque, 75010 Paris.

There will be presentations by Stéphane Thiroux, Stéphane Pinel (RealSoftware), Jeremiah Leroy, Valdemar de Sousa and Christian Schmitz (MBS).

Attendance at this meeting is free (but if you want to donate to the organization, you're welcome). WIFI is available on site.

For more details, please visit: realstudio-fr.com/prochaine-reunion-du-groupe-pur-paris-utilisateur-realstudio/

PS: I booked my trip today, so I'll be there.

RecordSet news

For our SQL plugin, we have an existing function CloneRecordSetMBS to clone a recordset. Now we also add a function BuildRecordSetMBS to create a RecordSet from scratch with an array of field names and an array of values. Currently string only, but I think this is enough to fill the Report functions in Real Studio on the fly with data.

Also to make use of our SQL plugin easier, we add a SQLCommandMBS.AsRecordSet function to get a RecordSet for an existing SQLCommandMBS. So you can do your query with our command object, set all flags and later get a RecordSet to run your normal code. So you can pass the RecordSet to the report functions, too.

This will be included in the next prerelease of 13.0 plugins.

LibXL 3.4.0 has been released

  • Added support of xlsm files
  • Added UTF-8 support (mode is activated with book.setLocale("UTF-8"))
  • Fixed bugs with loading some xls and xlsx files
  • Fixed compatibility issues with Numbers for Mac
  • Added support of empty cells in Sheet.cellFormat()
  • changed format picture property from "Move but don't size with cells" to "Move and size with cells"
  • Fixed Sheet.setNamedRange(), Sheet.setPrintArea() and Sheet.setName() methods for sheet's names with spaces (xlsx)
  • Fixed bugs with some formula expressions with IF and AND functions (xls)
  • Fixed bug with saving multi formatted cells in xlsx files
  • Fixed bug in Book.delSheet() for xlsx files
  • Fixed bug with reading some kind of error values
  • Fixed issues with adding pictures into preloaded workbooks with pictures (xls)
  • Fixed bug in Book.saveRaw() method (xls)
  • Fixed possible memory leaks due to mismatched malloc/free functions (xlsx)
  • Fixed bug in Sheet.cellFormat()
  • Fixed bug with format/font inheritance for xlsx files
  • Fixed Sheet.setPrintRepeatCols() method for xlsx files
This will be included in next plugin prerelease.

Merry Christmas


Frohe Weihnachten und ein gutes neues Jahr!
Dieses Jahr hat Michael fleißig mitgeholfen beim Backen :-)

Merry Christmas & Happy New Year
This year Michael helped a lot with backing cookies.

Joyeux Noël et Bonne Année

Buon Natale e Felice Anno Nuovo


Sebastian, Michael, Monika & Christian Schmitz

MBS Real Studio Plugins, version 13.0pr5

New in this prerelease of the 13.0 plugins:
  • Added NSAppleScriptMBS Constructor taking array of source code lines.
  • Improved NetworkIntefaceMBS class to show more details.
  • Added UUIDMBS.randomUUID, UUIDMBS.UUID and UUIDMBS.Validate.
  • Added parameter to ValidateUUIDMBS for checking GUID version and new mode to fix formatting.
  • Added RectControl.InvalidateThreadSafeMBS and RectControl.RefreshThreadSafeMBS.
  • Changed win plugin to have more parts initialize completely only if not loaded in the IDE.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Real Studio Personal Edition on sale

For just $40 you can get a new license from Real Software today. Due to time zone differences, I think full 22 hours are left.
go here: tinyurl.com/realstudiosale

My Hamburg Trip cancelled

Just to inform you. The filemaker meeting moves to 15th January and so I can't go to both Real Studio and Filemaker meeting in one run. For that reason, I will probably not drive to Hamburg that week.

PS: Of course if a client asks for a meeting in Hamburg for that time, I would be present. So if someone needs a session with me for training or development together for Filemaker or Real Studio, you can contact me.

Realsoftware website down

Don't worry. Just a problem with a software update.
In general if they are offline with website and you need something, you can email support (custserv@realsoftware.com) directly, check the blog or read the mailing lists.

Update: It's back online.

Real Studio Meetings

  • Today, 17th December in Atlanta (USA). 6pm to 9pm in Aldo's Italian Restaurant. See website.
  • Tomorrow, 18th December in Zurich (Swiss). 7pm in Positano restaurant.
  • 9th January in Hamburg (Germany). 18:30 in Block House Wandsbeck. See our website.
  • 18th January in Paris (France). Full day event. See website for details.
You can meet me in Zurich, Hamburg and Paris and ask your Real Studio questions :-)

MBS Real Studio Plugins, version 13.0pr3

New in this prerelease of the 13.0 plugins:
  • Added Label.SetTextThreadSafeMBS, Progressbar.SetMaximumThreadSafeMBS, Progressbar.SetMinimumThreadSafeMBS, Progressbar.SetValueThreadSafeMBS, RectControl.SetEnabledThreadSafeMBS and RectControl.SetVisibleThreadSafeMBS.
  • Added AudioPlayThruMBS.Volume and CAPlayThroughMBS.Volume properties.
  • Added Mode parameter to SystemInformationMBS.ProcessorCount to query either logical or physical cores.
  • Added RecursionLimit and RecursionMaxLevel for DirectorySizeMBS class.
  • Updated curl to version 7.28.1 on Mac OS X and Windows.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Thread GUI Access

You may have read that accessing GUI elements in a thread is a bad idea. In the Real Software blog have been articles like Doing Progress Right and Detecting UI Access from Threads.
But well I don't like this thing with running a timer to update GUI. I want to update the GUI from the thread. There even was somewhere a feature request to make some methods like progressbar.value working well on a thread.
As this is still missing and setting progressbar.value on a thread still makes trouble, I added a few utility methods to our plugins:
  • Label.SetTextThreadSafeMBS
  • Progressbar.SetMaximumThreadSafeMBS
  • Progressbar.SetMinimumThreadSafeMBS
  • Progressbar.SetValueThreadSafeMBS
  • RectControl.SetEnabledThreadSafeMBS
  • RectControl.SetVisibleThreadSafeMBS
I hope those help people to move their code more easier to Cocoa, make it work right and thread safe.

MBS Real Studio Plugins, version 13.0pr2

New in this prerelease of the 13.0 plugins:
  • Fixed rare crash in internal text functions where an empty string converted to UTF32 would cause a crash in internal text class destructor.
  • Fixed PDFDocumentMBS attributes so you can now assign empty string to clear them.
  • Added FormatMBS function.
  • Added LocaleMBS class.
  • Added NetworkInterfaceMBS class.
  • Updated SQLAPI++ 4.0.3b1. This includes new informix unicode support.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Real Studio Meeting in Paris

The next meeting of the Paris Real Studio developer group will take place Friday, January 18th, 2013 from 8h30 to 17h in Paris.
Save the date and join this meeting. The location will be announced in the next days, but will be close to Gare du Nord in Paris.

There will be presentations by Stéphane Thiroux, Stéphane Pinel (RealSoftware), Jeremiah Leroy, Valdemar de Sousa and Christian Schmitz (MBS).

Attendance at this meeting is free (but if you want to donate to the organization, you're welcome). WIFI is available on site.

For more details, please visit: realstudio-fr.com/prochaine-reunion-du-groupe-pur-paris-utilisateur-realstudio/

Real Studio News


Error with Real Studio 2012r2 and older plugins

If you see this message:



You can either remove the Mac plugin part or update plugins to newer version. This error is due the missing resourcefork class in Real Studio 2012r2 in Cocoa targets.

Update: Resourcefork is also not available in Cocoa and gives an error when you use it.

ResourceFork class

As Real Studio 2012r2 removes the ResourceFork class for Cocoa target (strange idea, isn't it?), we decided to create our own resourcefork class for our plugins. It will be available with next prerelease.
And while we spend time on this, we can add a few additional goodies. if you have ideas or wishes, please do not hesitate to contact us.

Real Studio 2012 Release 2 Now Available

Real Studio 2012 Release 2 is now available! With more than 100 improvements and 7 new features, this release includes:
  • 30+ OS X Cocoa updates
  • 20+ Web updates
  • 10+ Windows updates
  • 10+ Linux updates
  • A new Web Control SDK that allows you to create web controls for use in Real Studio web applications using HTML/CSS/JavaScript. This makes it possible to use JQuery and other web frameworks in Real Studio web apps.
  • Faster remote debugging for improved cross-platform support
  • A WebCanvas for easily creating graphical, interactive custom controls
  • Crypto module (Hashing) with support for MD5, SHA1, SHA256, SHA512, HMAC and PBKDF2 for 1-way encryption.
  • Web applications can now easily be localized to support multiple languages in exactly the same way you localize desktop applications.
  • PostgreSQL SSL support for improved security
To download 2012 Release 2, visit realsoftware.com/download.

MBS Real Studio Plugins, version 13.0pr1

New in this prerelease of the 13.0 plugins:
  • Added CoreFoundation support for Windows using QuickTime 7: CFArrayMBS, CFBinaryDataMBS, CFBooleanMBS, CFCharacterSetMBS, CFDictionaryMBS, CFMutableArrayMBS, CFMutableBinaryDataMBS, CFMutableCharacterSetMBS, CFMutableDictionaryMBS, CFMutableStringMBS, CFStringMBS and CFURLMBS work now on Windows if QuickTime 7 is installed.
  • Added GTKWindowMBS class.
  • Added MouseWheel, MouseExit or MouseEnter event to OverlayMBS class.
  • Fixed OutOfBoundsException from Plugin on Windows to also show informative message.
  • Fixed crash with DarwinRUsageMBS.IntegralMaxResidentSetSize property.
  • Added picture parameter to ThreadedTransformMBS and TransformColorsMBS for better performance.
  • Added CGDisplayMBS.SetRotation.
  • Added folderitem.VolumeUUIDMBS.
  • Fixed overflow bug in PictureConvolutionMBS class (dark pixels in white areas) and edge case (black pixels on left and right side)
  • Fixed resize bug with lock properties on CocoaControlMBS on Cocoa targets.
  • Fixed possible crash in MacUSBMBS.Connect.
  • Fixed crash in GZipFileMBS.CloseForString on Linux.
  • Fixed CocoaControlMBS function.
  • Added BacktraceMBS function.
  • Fixed some constants on NSWindowMBS like NSWindowDidEnterFullScreenNotification.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

CoreFoundation on Windows

CoreFoundation is one of the Apple frameworks included with MacOSX. But it is also included with QuickTime 7 on Windows. So with next plugins theplugin parts CF, CFURL, CFCharacterSet and CFDictionaryArray are updated, so they work on Windows, too.
If no QuickTime is installed, we raise an exception on most functions.
You can try it soon in 13.0pr1 and if you have need for more CF classes on Windows, please contact us.

Real Studio Meetings in Switzerland

We can offer two Real Studio meetings:

18th December 2012 in Zurich
19th December 2012 in Bern

Both around 7pm to 10pm in a restaurant near the main station.
If you are interested, please email me so I can keep you informed about the exact time and location.
See also the Swiss User Group.

Display Rotation

Do you see picture on the side?
This is a cinema display rotated to 90° with the content. One of the fun things you can do nowadays with modern Macs.
With next plugins we'll have a SetRotation method on the CGDisplayMBS class to do this.

Code looks like this in our example project:
  dim d as CGDisplayMBS = CGDisplayMBS.MainDisplay
  dim e as integer = d.SetRotation(90)
  
  if e<>0 then
    MsgBox "Error: "+str(e)
  end if

Speed of Microsoft SQL Access

We just got a nice compliment from a customer. They started with Real Studio and did some testings with connecting to Microsoft SQL Databases. In their tests the plugin from Real Software to connect to MSSQL was much too slow. It app was frozen with processing a 100 records. They even considered dropping Real Studio, but luckily they discovered our SQL plugin.

A speed comparison with same database and same hardware with MSSQL 2008 for processing 32,000 records shows this results:

Real Studio MSSQL Plugin: 2.5 hours if it does not crash!
MBS Real Studio SQL Plugin: 14 minutes

So this client is happy and enjoys our plugin and continues with Real Studio.
Your milage may vary as those benchmarks depend on a lot of parameters. But at least you should keep your database code able to switch so you can compare between various plugins.

PS: With MBS Real Studio SQL Plugin we also connect to Mircosoft SQL Server from Mac and Linux using freetds library which is not supported by Real Software's plugin.

Real World Sessions announced and training

Real World 2013 is less than five months away and Real Software announced today the session list:
  • Advanced Object Oriented Design in Real Studio, Seth Verrinder
  • Advanced Topics in Web Apps, Greg O'Lone
  • Basics of Object Oriented Design in Real Studio, Seth Verrinder
  • Cloud Sync Without iCloud, Stephen Dodd
  • Creating Smart Apps Using Real Studio, Trisha Duke
  • Database Code Hoarders: Buried Alive, Jared Zelek
  • Database Design 101, Norman Palardy
  • Design Patterns, Jared Zelek
  • Designing Cross-Platform Apps, Paul Lefebvre
  • Developing Linux Apps, William Yu
  • Developing Windows Apps, William Yu
  • How to Succeed in Business Using Real Studio, Richard Duke
  • Intermediate Database Coding Techniques, Bob Keeney
  • Introduction to the Web Control SDK, Greg O'Lone
  • Introduction to Web Applications, Greg O'Lone
  • iOS Basic, Joe Strout
  • iOS Advanced, Joe Strout
  • MonkeyBread Software Plugins Overview, Christian Schmitz
  • New Framework: What, When and Why, Joe Strout
  • New IDE Tips and Tricks, Thom McGrath
  • Optimizing Code, Kem Tekinay
  • Reporting Tools, Bob Keeney
  • Scaling Web Apps, Travis Hill
  • SQL 101, Norman Palardy
  • Unit Testing: What and Why, Scott Boss
  • Using 3rd Party Web Services, Paul Lefebvre
  • Using Source Control, Paul Lefebvre
  • Wifi Sync, Stephen Dodd
Also available is a Pre-Conference Training Day from BKeeney Software. So see you on the conference and maybe I even come to the training to say Hello and answer some questions.

Arbed 1.6

We got this press release today:

Arbed is a tool to perform advanced editing operations with Real Studio projects, such as:

  • Comparing two projects, seeing and merging them in a structured manner much better than what an be achieved using plain text files (such as xml and rbvcp).
  • Greatly assist in preparing an existing app for localization by turning strings in your code into dynamic ones, all in one go.
  • Advanced search & replace functions, even scriptable.
Version 1.6 adds the following features:
  • Reads and writes VCP (.rbvcp) projects, too
  • String Obfuscation lets you conveniently hide your texts (e.g. SQL statements) from hackers.
For more information see tempel.org/Arbed

We use it a lot here at Monkeybread Software, so we can recommend it to everyone for special tasks which the Real Studio IDE can't do. For example we use it to produce the HTML versions of the example projects which we include in our documentation.

MonkeyBread Software Releases the MBS Real Studio plug-ins in version 12.5

NICKENICH, Germany (December 4th, 2012) -- Monkeybread Software releases version 12.5 of the MBS plug-in for Real Studio.

The MBS plug-in comprises a collection of several plug-in parts which extend the Real Studio development environment with 1,700 classes featuring over 44,000 documented functions. Our plugins support all three platforms Mac OS X, Windows and Linux with all project types desktop, web and console.

Some of the highlights on the 12.5 update:

For our ChartDirector plugin we updated the ChartDirector library to version 5.1.1 and added a couple of new functions related to tracking cursors. Please try the new amazing examples for tracking cursors in various charts.

We updated DynaPDF to version 3.0.21.55 and added a few new classes like DynaPDFEditTextMBS for editing page text. The new function ExtractPageText helps you to query the text of a page easily. And with the DynaPDFPageStatisticMBS you can quickly check if a page has images or vector graphics.

The new Mac USB class can connect to an USB device on a Mac. For Windows we have the WinUSBMBS class. This way you can read and write data to USB devices cross platform and integrate various devices from your clients.

For our SQL plugin we have several new features. First you can connect now to SQL Anywhere Servers in version 10, 11 and 12 from Sybase. For our regular SQLDatabaseMBS class we added SQLExecuteMT and SQLSelectMT methods for threaded queries in background. We also got an utility function CloneMBS to create a copy of a RecordSet and a few more utility functions like the new functions in our MySQLMBS class.

With the new ExtendedAttributesMBS module you can read and write extended attributes on Mac OS X like Finder comments and add your own metadata to each file.

Finally we have more additions like new picture functions, improvements to our Cocoa classes, improvements to PDFKit classes and the Twain plugin.

See release notes for a complete list of changes. If you have questions, please don't hesitate to contact us. Also you can ask questions at Real World in Orlando next year.

Fixed examples

Fixed 1600 examples for our Real Studio plugins and checked most of the 160 databases coming with the FIlemaker plugin.
Even a half automated process takes endless hours, but it is done now! :-)

MBS Real Studio Plugins, version 12.5pr13

New in this prerelease of the 12.5 plugins:
  • Added RecordSet.CloneMBS method and CloneRecordSetMBS function.
  • Added SQLExecuteMT and SQLSelectMT to SQLDatabaseMBS for threaded queries.
  • Added DynaPDFMBS.PageStatistic.
  • Added DynaPDFPageStatisticMBS class.
  • Added mode 10 for CombineMBS function.
  • Added support to BMPStringtoPictureMBS for BMP files with BI_FIELDS compression.
  • Fixed bug in GMGraphicsMBS.Ellipse.
Download: macsw.de/plugin/Prerelease. Or ask us to be added to our shared Dropbox folder.

Cloning RecordSets

We all use a lot of databases, I presume?
Well, from time to time I had the idea that it would be useful to clone a recordset. And with the new plugin function CloneMBS on the RecordSet class, this is indeed possible. The plugin makes an in memory copy of all records with all the values, so you can throw away the original RecordSet and even close the database connection.
This can be useful for various debugging things and I even considered some more functions, but I'm not sure how useful they'd be. Like creating a recordset on the fly in RB code providing an array of column names and and an array of values. Could you use such a dynamic created recordset?
Maybe something for Studio Stable Database in order to use it with normal RecordSet? This way we could send a record set from SSD to report functions.
Well, if you have an idea, don't hesitate to contact us.

Birthday of our video page

Five years ago we started created tutorial videos and today our video page has birthday. Enjoy a video and learn about our plugins.

Over the years we collected more than 60 videos. We hope you enjoy them!

We know we could make more videos. So what wishes do you have?
Please email us or post a comment here.
The biggest plugin in space...

Archives

Mar 2024
Feb 2024
Jan 2024
Dec 2023
Nov 2023
Oct 2023
Sep 2023
Aug 2023
Jul 2023
Jun 2023
May 2023
Apr 2023
Mar 2023
Feb 2023
Jan 2023
Dec 2022
Nov 2022
Oct 2022
Sep 2022
Aug 2022
Jul 2022
Jun 2022
May 2022
Apr 2022
Mar 2022
Feb 2022
Jan 2022
Dec 2021
Nov 2021
Oct 2021
Sep 2021
Aug 2021
Jul 2021
Jun 2021
May 2021
Apr 2021
Mar 2021
Feb 2021
Jan 2021
Dec 2020
Nov 2020
Oct 2020
Sep 2020
Aug 2020
Jul 2020
Jun 2020
May 2020
Apr 2020
Mar 2020
Feb 2020
Jan 2020
Dec 2019
Nov 2019
Oct 2019
Sep 2019
Aug 2019
Jul 2019
Jun 2019
May 2019
Apr 2019
Mar 2019
Feb 2019
Jan 2019
Dec 2018
Nov 2018
Oct 2018
Sep 2018
Aug 2018
Jul 2018
Jun 2018
May 2018
Apr 2018
Mar 2018
Feb 2018
Jan 2018
Dec 2017
Nov 2017
Oct 2017
Sep 2017
Aug 2017
Jul 2017
Jun 2017
May 2017
Apr 2017
Mar 2017
Feb 2017
Jan 2017
Dec 2016
Nov 2016
Oct 2016
Sep 2016
Aug 2016
Jul 2016
Jun 2016
May 2016
Apr 2016
Mar 2016
Feb 2016
Jan 2016
Dec 2015
Nov 2015
Oct 2015
Sep 2015
Aug 2015
Jul 2015
Jun 2015
May 2015
Apr 2015
Mar 2015
Feb 2015
Jan 2015
Dec 2014
Nov 2014
Oct 2014
Sep 2014
Aug 2014
Jul 2014
Jun 2014
May 2014
Apr 2014
Mar 2014
Feb 2014
Jan 2014
Dec 2013
Nov 2013
Oct 2013
Sep 2013
Aug 2013
Jul 2013
Jun 2013
May 2013
Apr 2013
Mar 2013
Feb 2013
Jan 2013
Dec 2012
Nov 2012
Oct 2012
Sep 2012
Aug 2012
Jul 2012
Jun 2012
May 2012
Apr 2012
Mar 2012
Feb 2012
Jan 2012
Dec 2011
Nov 2011
Oct 2011
Sep 2011
Aug 2011
Jul 2011
Jun 2011
May 2011
Apr 2011
Mar 2011
Feb 2011
Jan 2011
Dec 2010
Nov 2010
Oct 2010
Sep 2010
Aug 2010
Jul 2010
Jun 2010
May 2010
Apr 2010
Mar 2010
Feb 2010
Jan 2010
Dec 2009
Nov 2009
Oct 2009
Sep 2009
Aug 2009
Jul 2009
Apr 2009
Mar 2009
Feb 2009
Dec 2008
Nov 2008
Oct 2008
Aug 2008
May 2008
Apr 2008
Mar 2008
Feb 2008