Clarion 9 Beta First Look

The first Clarion 9 beta has gone out to third party folks, at least in part to allow those vendors who ship binary code to get current releases out the door. The Clarion 9 RTL has changed enough that recompiles are required. 

As with previous releases, the Clarion 9 IDE has undergone some UI changes. There's a new logo and the default blue backgrounds have been replaced with gray. 

There are some new appearance options, which let you select one of several default color schemes for the IDE. You can also create custom schemes. 

There are also options for using small icons on toolbars, specifying font sizes for four main areas of the IDE, and an easy way to customize shortcut keys. 

The /ConfigDir command line parameter, which lets you specify a different configuration directory, is now documented. If you use /ConfigDir without specifying a folder name then the IDE settings are kept under the Clarion bin folder. You can use /ConfigDir with ClarionCL and ResetIDE. 

There are five slightly ambiguous buttons above the AppGen tree, which you can use to change display mode.  Although this is more efficient than using the drop list, one could argue that they should be on the right, in place of the drop list.  It would also be helpful if they had hot keys for keyboard aficionados:

There's an image viewer in the IDE which works with various image types including icons and PNG files. 

There are some enhancements to file dialogs which now remember the last place they were opened or use the redirection file to find possible matching files on first use. In the editor you can search the current document directory, and you can exclude generated source from searching while in the embeditor. 

In general the IDE has a bunch of little improvements, including manually clearing ABC cache files, copy and select buttons on errors, output and search pads, GUID generation, filtered properties locator, dictionary search improvements, and many more. 

There is a new SQLite driver (with example app). SQLite is a highly popular database primarily intended for single use situations such as personal application data. There is also a new SQLExecutorClass that makes it easier to create and execute SQL scripts made up of multiple statements. 

For all SQL drivers there is a new PROP:SQLRowSet "that can be used to execute SQL statements that return result sets, but are not SELECT or CALL statements."

There is a JSONDataClass to convert Clarion variables and structures (including queues) into JSON objects. 

There is ABC support for enforcing single instances of applications and single instances of threaded procedures. 

A new SystemString class provides extensive string manipulation functionality including compression, blob conversion and much more. There are over 80 methods in the class. 

There are also a couple of new classes in support of reusable user-defined controls; it will be interesting to see how this pans out as control reuse (think browses, for instance) has been something of a holy grail for Clarion devs. 

I've really just skimmed over the new features - there are rather a lot of these, and I want to get on to a few more specifics. 

Comparing releases

Any time I get a new release of Clarion I like to compare the install directories to look for things that are new and which may not yet be noted in the docs. 

Things that went away in Clarion 9 include the blue gradient image file (presumably used in the IDE), CommonUtils.tpw which contained procedure parameter list code (presumably this has been replaced by the previously announced improvements in how the AppGen displays prototypes and parameter lists), and clazlib.lib (I'm guessing compression/decompression is now baked into the RTL). Various files under the bin directory also seem to have been moved or replaced. 

There is a new ABUserControl.tpw which is clearly in support of the new user controls functionality. It includes some procedure templates, which perhaps are where the controls are declared, as well as an extension template to attach user controls to a window. 

New source files include the aforementioned user control, string, JSON, SQLite and SQL script classes. There are also a couple of new INC files. ClaTALK.inc has prototypes for SendMail and SendSMS library procedures (the matching lib appears to be missing, however), and ClaIMG.inc has prototypes for image file to PNG conversions. 

H5 Builder

The help doesn't contain any mention of H5 Builder, SoftVelocity's announced multi-platform web development tool. But there are number of web-related files in this install that weren't in the last Clarion 8 version. Some of these are old Internet Connect-era files, and H5 builds on Internet Connect and Web Builder, SoftVelocity's previous web development products.  I'll touch on these a bit more below. 

Template changes

Template changes include the removal of a separate Parameters prompt, most welcome since it's been years now that prototypes and parameter lists can (and should be) the same, with the exception of the return type (if any). 

There are a few new embed points here and there. File lists now typically include a %TableSchematicsDescription variable. Triggers have grown a bunch of new embed points. There are a number of changes to support single instances of applications and procedures, also previously mentioned. 

Source changes

WindowExtenderClass has some new methods. I'm a little embarrassed to say that I don't think I even knew this class existed, but it's in Clarion 8. New methods include GetEXEFileName, IsInstanceRunning and RestoreInstanceRunning. Many of the other class methods deal with system tray icon handling. 

There are a number of IC* files that have been updated, and I think it's safe to assume that IC stands for Internet Connect.  So again that argues for progress being made on the H5 front.

Touch friendly?

While looking through the changed files I came across a couple of new calendar windows that were labelled with this comment:

!! Window structure for the Small popup Calendar Touch Friendly

There are also some matching classes.

If you feel like speculating, there's a SoftVelocity post from January that mentions touch-enabled software. 

Reports

There are substantial changes to the source that supports report generation targets. It looks like a new IOutputGeneratorTarget interface has been abstracted out of the IReportGenerator interface. 

Summary

There are a number of intriguing new and changed bits in this first Clarion 9 beta. Tops on my list are the SQLite driver, the SystemString class, the SendMail and SendSMS functions, the removal of the separate parameters prompt from the AppGen, JSON support, SQL improvements, and support for user-defined controls. As I said earlier there are other little nuggets awaiting discovery; if there's something in Clarion 9 that you're particularly happy to see (or something you were expecting that isn't there), please post a comment below.