The year 2015 will end in around three weeks. Do you need some more licenses?
- Last chance to update licenses purchased in 2013.
- You can order licenses for 2016 or later and have delivery plus payment done in 2015.
- And of course you can order updates for several years in advance for all your MBS products.
- As all licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
- If you need a Xojo license (new or update), we can always check whether a bundle of Xojo offers an advantage for you.
- For FileMaker please check if you have enough license for the number of seats or servers you have in use.
Especially if you run on a budget and you want to spend some money in 2015, you can buy updates for several years in advance.

For the new year, I thought about whether I could drop something for Real Studio.
The downloads for Real Studio are down to about 10% compared to Xojo plugin downloads.
The users with Real Studio version capable of building PPC apps may be down to less than 1%, so I wonder if I still should spend time building PPC and Universal libraries.
When PPC support is no longer needed, it may be worth to move the minimum target for OS X from 10.4 to 10.6. For 64-bit, we already use 10.7 as target and for Cocoa 10.5. Using 10.6 for all of those could simplify coding.
Finally if downloads for Real Studio go down further, the rbx plugin format is at question. I considered already to write a converter to convert Xojo plugins to rbx plugins, so users in need of those plugins could do conversion themselves. I would no longer need to upload those plugins.
What do you guys think about such changes?
PS: If you still use Real Studio, please use latest 15.4 plugins. They still work with REALbasic 2006r4 and newer!

New in this prerelease of the 15.5 plugins:
- Fixed a bug in CGPictureContextMBS class.
- Added uuDecodeMBS and uuEncodeMBS functions.
- Added NSAttributedStringMBS.GeneratePDF function.
- Fixed problem with JSONMBS.SuffixObject method.
- Updated SQLAPI++ 4.1.7.
- Updated DynaPDF to version 3.0.46.140.
- Added CipherMBS.Padding property.
- Fixed an issue with registration plugin part and web app.
Download:
macsw.de/plugin/Prerelease . Or ask us to be added to our shared Dropbox folder.
Did you see our recent improvements to
WinDataObjectMBS class?
It is great for receiving drags on Windows. Especially we got a case with Microsoft Outlook here. When you drag and email and/or attachments to your Xojo app, you do not get all data normally. But with using our classes, you can get more details.
For a normal Explorer file drag, the GetPaths function will give you folder items. But with Outlook attachments, there are not paths. But GetFileDescriptors gives you metadata for those attachments and GetFileContents function can give you the data. For the actual email, the GetFileName function gives you a path.
The reason for all those different functions is that Microsoft invented over the years newer ways to handle drag & drop, especially for files.
With now three ways to receive files, we are happy to get data into Xojo app from Microsoft Outlook.
Frohe Weihnachten und ein gutes neues Jahr!
Merry Christmas & Happy New Year
Joyeux Noël et Bonne Année
Buon Natale e Felice Anno Nuovo
Sebastian, Michael, Monika & Christian Schmitz

New in this prerelease of the 15.5 plugins:
- Added noteHeightOfRowsWithIndexesChanged method to NSTableViewMBS class.
- Improved NSTableViewMBS to have more debugger visible properties.
- Updated DynaPDF to version 3.0.46.139.
- Added more LDAPMBS properties.
- Added more WinDataObjectMBS class methods.
- Fixed bug in HASPHLDMBS.HaspTimeToDateTime function.
- Deprecated HASPHLMBS and HASP functions. Please move to HASPHLDMBS classes for using HASP Sentinel dongles.
- Improved SignalMBS class to show better names in crash log.
Download:
macsw.de/plugin/Prerelease . Or ask us to be added to our shared Dropbox folder.
As I am going to Cleveland for a conference, I thought about organizing a few Xojo meetings there. So if you are in Cleveland or Chicago area, maybe you want to join me for a dinner event?
So we have two surveys here:
Chicago, Illinois
Cleveland, Ohio
Maybe you want to check the dates and join us in March?
Once we come closer, we can decide on a date. If someone wants to suggest a location, please email me.

We just got notice about the release of Xojo 2015r4.
This is a minor release fixing over 100 issues in Xojo. The planed features for retina support and high resolution aware applications has been moved to 2016r1 as it is not yet finished. Especially for Windows it seems to be harder than expected. Nevertheless you can already use the image sets in your projects to include assets in several resolutions. Be aware that those may be lost or not editable in older versions of the IDE.
Xojo 2015r4 is primarily a bug fix release. Some notable improvements include:
- Added CGFloat data type to make it easier to create Declares to iOS and OS X Cocoa frameworks.
- The Code Editor is now noticeably faster when working with large projects.
- You can use the TextAlign property to more easily set the alignment for web text controls.
- Added SecureAuth property to MySQLDatabase to allow connections to pre-4.1.1 authentication protocols.
You can download on the
xojo website.

We do have quite a few
printing classes in our
MBS Xojo Win plugin for Windows. You can query installed printers, learn about page formats and print jobs, show page setup and print dialogs, modify the device mode and create print jobs.
As we can enumerate printers, we can show them in a popupmenu. User can select one and we modify the printer setup string for a Xojo printerSetup object and than use normal Xojo printing functions to print:
// now we have nice setupstring
dim ss as string = ps.SetupString
'MsgBox str(len(ss))
// parse it in device mode, to retain settings there
dim d as WindowsDeviceModeMBS = WindowsDeviceModeMBS.FromSetupString(ss)
if d = nil then
// or start with a blank one
d = new WindowsDeviceModeMBS
end if
// change printer
if PopupPrinter.ListIndex >= 0 then
dim w as WindowsPrinterInfoMBS = PopupPrinter.RowTag(PopupPrinter.ListIndex)
// set device name
d.DeviceName = w.PrinterName
else
MsgBox "No printer selected."
Return
end if
// enable duplex
'd.Fields = BitwiseOr(d.Fields, d.DM_DUPLEX)
'd.Duplex = d.DMDUP_HORIZONTAL
// get back as setup string
dim da as string = d.SetupString
if da = "" then
MsgBox "failed to create setup string"
Return
end if
// assign back
ps.SetupString = da
// and print something
dim g as Graphics = OpenPrinter(ps)
g.DrawString "Page on "+d.DeviceName, 50, 50
PS: Works in Real Studio, too.

Today I want to introduce you to SetThreadNameMBS, a newer function you can use in our MBS Xojo and Real Studio Plugins (15.5pr2).
Our plugin calls the SetThreadName function already for all the preemptive threads like for CURL or SQL. In a crash report you see the thread name and you can identify what the thread does. For example we create a project in Xojo and run there two threads. We name the main thread, the first and second test thread. Now we let one thread crash with a NULL pointer easily. In the crash report we can now see which thread is doing what by seeing our names:
Thread 0:: This is my Main Thread Dispatch queue: com.apple.main-thread
0 libsystem_kernel.dylib 0x96d9c9ce mach_msg_trap + 10
1 libsystem_kernel.dylib 0x96d9ba70 mach_msg + 68
2 com.apple.CoreServices.CarbonCore 0x9a9d7f6a YieldToThread + 429
3 rbframework.dylib 0x001f6791 0x1d4000 + 141201
4 rbframework.dylib 0x001f7388 threadRun + 392
...
Thread 10:
0 libsystem_kernel.dylib 0x96da2e6a __workq_kernreturn + 10
1 libsystem_pthread.dylib 0x9963372a _pthread_wqthread + 939
2 libsystem_pthread.dylib 0x99630e0e start_wqthread + 30
Thread 11:: TestThread
0 libsystem_kernel.dylib 0x96d9c9ce mach_msg_trap + 10
1 libsystem_kernel.dylib 0x96d9ba70 mach_msg + 68
2 com.apple.CoreServices.CarbonCore 0x9a9d7f6a YieldToThread + 429
3 rbframework.dylib 0x001f6791 0x1d4000 + 141201
4 rbframework.dylib 0x00277684 0x1d4000 + 669316
5 rbframework.dylib 0x0027135f RuntimeBackgroundTask + 47
6 0x00170c14 MainWindow.MainWindow.Thread1_Run%%oo + 96
7 0x001739ff Delegate.IM_Invoke%%o + 110
8 0x00173a40 AddHandler.Stub.0%% + 51
9 rbframework.dylib 0x001f7450 0x1d4000 + 144464
10 com.apple.CoreServices.CarbonCore 0x9a9d7b88 CooperativeThread + 305
11 libsystem_pthread.dylib 0x99633c25 _pthread_body + 138
12 libsystem_pthread.dylib 0x99633b9b _pthread_start + 162
13 libsystem_pthread.dylib 0x99630e32 thread_start + 34
Thread 12 Crashed:: CrashingTestThread
0 0x00170d11 MainWindow.MainWindow.Thread2_Run%%oo + 117
1 0x001739ff Delegate.IM_Invoke%%o + 110
2 0x00173a40 AddHandler.Stub.0%% + 51
3 rbframework.dylib 0x001f7450 0x1d4000 + 144464
4 com.apple.CoreServices.CarbonCore 0x9a9d7b88 CooperativeThread + 305
5 libsystem_pthread.dylib 0x99633c25 _pthread_body + 138
6 libsystem_pthread.dylib 0x99633b9b _pthread_start + 162
7 libsystem_pthread.dylib 0x99630e32 thread_start + 34
The thread with number 10 is created by OS X and has no name. Out threads with indexes 0, 11 and 12 have names.
This does help debugging, because we often have several things running and just one instance crashes. The thread name allows us to pass a text value to the crash report. This can be the ID of a transaction, the name of the PDF we process or the file we upload. We may have ten threads with same code run in different instances, but the thread name in the crash report may give us the clue we need to find the problem.
Should work fine on OS X, Windows and Linux. Please try it.
As you may know there is an open source project called
TextInputCanvas.
Recently I did a 64-bit port for a client.
You can load a copy on my
plugin download page.
Updated source code is available for Xojo Inc. to update the official plugin soon. My plugin is build with my plugin build system, so it has MBS in the name and includes libraries for Mac, Windows and Linux including ARM, so you can use it in all projects. If you find a bug related to my 64-bit port, please tell me.

New in this prerelease of the 15.5 plugins:
- Added SetThreadNameMBS method.
- Fixed problem in pr1 with Registration for Windows.
- Updated SetApplicationDockTileImageMBS, RestoreApplicationDockTileImageMBS and OverlayApplicationDockTileImageMBS methods in Application class to work in 64-bit.
Download:
macsw.de/plugin/Prerelease . Or ask us to be added to our shared Dropbox folder.

The Xojo developers in Atlanta area meeting next monday:
Hello Xojo enthusiasts!
Please join us for this Xojo monthly meeting! We promise that you'll learn something new at each meeting!
Who: Everyone interested in developing in Xojo!
What: Monthly Meeting
Where: Las Palmas Mexian Restaurant, 2210 Holly Springs Pkwy, Holly Springs, GA :: 770-720-0062
When: Monday, December 14th, 2015 - 6pm to 9pm
Topic:
What a huge year for Xojo and Xojo developers. At this meeting we'll look back at the news highlights of the previous year. We'll also be looking into our crystal ball to speculate on what will occur in 2016.
We've got the latest Xojo news, reviews and announcements.
I hope to see you there!
Have a great time! (MBS will not be present)

New in this prerelease of the 15.5 plugins:
- Added CGColorSpace additions for OS X 10.11.2
- Updated our CoreImage Filters to OS X 10.11 El Capitan.
- Added more CoreImage classes and functions. e.g. for QRCode recognition.
- Fixed an issue with DynaPDF tables and haveMore returning true in where it should have returned false.
- Updated openssl to 1.0.2e.
- Fixed constructors taking handle for NSMenuItemMBS and NSMenuMBS to work.
- Fixed CallMethodLaterMBS time parameter. Now more precise.
- Added NSAppleEventDescriptorMBS.descriptorWithCurrentProcessSerialNumber and NSAppleScriptMBS.executeSubroutine.
- Updated DynaPDF to version 3.0.46.137.
- Added more FSEvents functions.
- Improved LDAPMBS constructors to work cross platform in both flavors.
- Changed CURLEmailMBS class to check whether you called Constructor when subclassing.
- Added SQLDatabaseMBS.ConnectMT method.
- Fixed a problem with escaping names in emails.
Download:
macsw.de/plugin/Prerelease . Or ask us to be added to our shared Dropbox folder.
The year 2015 will end in around three weeks. Do you need some more licenses?
- You can order licenses for 2016 or later and have delivery plus payment done in 2015.
- And of course you can order updates for several years in advance for all your MBS products.
- As all licenses are per developer, you should check if you got a new developer in your team this year and adjust licenses to match team size.
- If you need a Xojo license (new or update), we can always check whether a bundle of Xojo offers an advantage for you.
- For FileMaker please check if you have enough license for the number of seats or servers you have in use.
Especially if you run on a budget and you want to spend some money in 2015, you can buy updates for several years in advance.

Early registration for the 2016 Xojo Developer Conference is now open!
XDC will take place in Houston, TX October 5-7, 2016. It features sessions on best practices, special interests and other technical topics, with content for every level of Xojo developer. Educational sessions will cover topics like Xojo iOS, Raspberry Pi, database design, user interface design, debugging techniques, writing secure apps, and much more! Want to know what XDC is like? Watch our highlights
video!
Register now!
XDC Pricing:
Early Bird Registration
Now through March 21, 2016: $799
Advanced Registration:
March 22 - August 22, 2016: $899
Late Registration:
August 23 - Conference: $999
XDC will take place at the lovely boutique Hotel Derek in the Galleria area of Houston. It's right in the middle of two airports, giving you plenty of options (and time) to find a great flight! We have negotiated a hotel room rate of $164 a night. Rooms can be reserved
here.
If you have any questions about XDC, feel free to email or PM me on the forum.
More information, including the call for speakers, will be coming after the new year.

Eight 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.