When I get a new Clarion release one of my favorite things to do is pull out Beyond Compare and see what changes have been made to the shipping product. That won't tell me much if anything about the compiled part of the product, but as Clarion ships with a lot of template and Clarion source those comparisons are often revealing. 

But first a quick note about using Custom Setup on install. Besides choosing an install directory, you can select up to five optional features. In the Clarion 9.0 install all but the Report Writer were selected by default. When I ran the 9.1 install all options were unselected by default. I manually chose the options I wanted. 

New (and moved) stuff

The first new file I spotted was data\options\CodeSnippets.xml, but it turns out this is SharpDevelop-templates.xml under a different (and more appropriate) name. The contents haven't changed significantly, but I think it's still worth remembering what's here. The original file no doubt had the VB and C++ snippets; SoftVelocity added Clarion (CLW) snippets:

and ClarionSharp (CLN) snippets:

Some code snippets require you to select some text first. For instance, type MyClass then highlight the text and press Ctrl-J. Select the class declaration snippet:

Tada!

MyClass                                         CLASS !, TYPE 
CONSTRUCT                                           PROCEDURE 
DESTRUCT                                            PROCEDURE 
                                                    !Properties 
                                                    !Methods 
                                                END

You'll still need to declare and write any method implementations, of course. 

If you don't select some text first you'll get a different result:

    CLASS !, TYPE 
CONSTRUCT                                       PROCEDURE 
DESTRUCT                                        PROCEDURE 
                                                    !Properties 
                                                    !Methods 
                                                END

But that's easily remedied - just stick a label in front of CLASS and reformat with Ctrl-I. 

The file structure code snippet is similarly pretty simple:

MyFile                                          FILE, DRIVER() 
                                                    RECORD 
                                                    END 
                                                END

I'm not sure I'll ever bother with snippets for IF statements and the like, and for classes I rely heavily on the ClarionLive Class Creator, But I'll keep an eye out for code I'm writing repeatedly that might fit the constraints of CodeSnippets.xml. 

There is a new toolbar color scheme called Win8Blue. You can choose it via Options | General | Appearance.

Email templates

There is a new template called SVCommunicationSupport. This template includes a global extension with options for sending email and text messages.

Both email and SMS are sent via SMTP. The two settings windows are almost identical:

There are matching control templates. Drop a Send Email button on a window and select Actions to fill in the remaining settings:

Here are the SMS settings:

Email classes

There are a bunch of new source files, which I'll cover in alphabetical order.

The email files include:

ClaMail.INC contains three class declarations:

The release notes indicate that classes were added to make it possible to send email without needed to generate code via the templates, so presumably these are the classes in question.

Touch support

Touch support is declared in the following files:

CWTouch.inc includes the following classes:

These classes are primarily data but each has a Next() method which, somewhat mysteriously, only returns NULL. 

The following COM interfaces are also defined:

H5 Builder

The H5 product, which was demonstrated in a very early form at the 2013 DevCon, promises to blend "the best features of Internet Connect (IC) and Web Builder (WB), joined with the jQuery family and HTML5/CSS". The idea is to allow you to deliver Clarion apps as private web apps to business users (as opposed to large scale web sites). 

web-mobi

The SoftVelocity blog has more information: http://clarionsharp.com/blog/clarion-h5/

Although H5 is not yet fully included with Clarion 9.1, a number of files are shipping. They include:

The H5 classes include:

BrokerClass                                 CLASS(WebDataSinkClass)
BrowserManagerClass                         CLASS
HtmlClass                                   CLASS(TextOutputClass),TYPE
HtmlFontClass                               CLASS,TYPE
HtmlItemClass                               CLASS,TYPE
HttpBaseClass                               CLASS
HttpClass                                   CLASS(HttpBaseClass)
HttpPageBaseClass                           CLASS
HttpPageBrowserClass                        CLASS(HttpPageBaseClass)
HttpPageJavaClass                           CLASS(HttpPageBaseClass)
JslEventsClass                              CLASS
JslManagerClass                             CLASS, TYPE
LayoutCellClass                             CLASS,TYPE
LayoutHtmlClass                             CLASS,TYPE
RangeClass                                  CLASS,TYPE
ReportImageClass                            CLASS(ReportItemClass),TYPE
ReportItemClass                             CLASS(HtmlItemClass),TYPE
ReportStringClass                           CLASS(ReportItemClass),TYPE
ShutDownClass                               CLASS
SubmitItemClass                             CLASS
TextOutputClass                             CLASS,TYPE
WebAreaClass                                CLASS(WebControlClass),TYPE
WebButtonClass                              CLASS(WebControlClass),TYPE
WebCaptionClass                             CLASS(WebAreaClass),TYPE
WebClientAreaClass                          CLASS(WebAreaClass),TYPE
WebClientManagerClass                       CLASS(WebClientManagerInterface)
WebClientManagerInterface                   CLASS(WebDataSinkClass)
WebControlClass                             CLASS(HtmlItemClass),TYPE
WebControlListClass                         CLASS,TYPE
WebDataSinkClass                            CLASS
WebFilesClass                               CLASS
WebFrameClass                               CLASS,TYPE
WebHotlinkClass                             CLASS(WebControlClass),TYPE
WebHtmlButtonClass                          CLASS(WebButtonClass),TYPE
WebHtmlCheckClass                           CLASS(WebControlClass),TYPE
WebHtmlCloseButtonClass                     CLASS(WebControlClass),TYPE
WebHtmlEntryClass                           CLASS(WebControlClass),TYPE
WebHtmlGroupClass                           CLASS(WebControlClass),TYPE
WebHtmlImageClass                           CLASS(WebImageClass),TYPE
WebHtmlItemClass                            CLASS(WebMenuBaseClass),TYPE
WebHtmlListClass                            CLASS(WebListClass),TYPE
WebHtmlMenuClass                            CLASS(WebMenuBaseClass),TYPE
WebHtmlOptionClass                          CLASS(WebControlClass),TYPE
WebHtmlPromptClass                          CLASS(WebControlClass),TYPE
WebHtmlRadioClass                           CLASS(WebControlClass),TYPE
WebHtmlRegionClass                          CLASS(WebControlClass),TYPE
WebHtmlSheetClass                           CLASS(WebControlClass),TYPE
WebHtmlStringClass                          CLASS(WebStringClass),TYPE
WebHtmlTabClass                             CLASS(WebControlClass),TYPE
WebHtmlTextClass                            CLASS(WebControlClass),TYPE
WebImageClass                               CLASS(WebControlClass),TYPE
WebJavaListClass                            CLASS(WebListClass),TYPE
WebJQueryButtonClass                        CLASS(WebControlClass),TYPE
WebJQueryCloseButtonClass                   CLASS(WebHtmlCloseButtonClass),TYPE
WebJQueryListClass                          CLASS(WebListClass),TYPE
WebJQueryStringClass                        CLASS(WebStringClass),TYPE
WebJQueryToolButtonClass                    CLASS(WebJQueryButtonClass),TYPE
WebListClass                                CLASS(WebControlClass),TYPE
WebLiteralClass                             CLASS(WebControlClass),TYPE
WebMenubarClass                             CLASS(WebAreaClass),TYPE
WebMenuBaseClass                            CLASS(WebControlClass),TYPE
WebNullControlClass                         CLASS(WebControlClass),TYPE
WebPageClass                                CLASS(WebControlClass),TYPE
WebReportClass                              CLASS,TYPE
WebServerClass                              CLASS
WebStringClass                              CLASS(WebControlClass),TYPE
WebToolbarClass                             CLASS(WebAreaClass),TYPE
WebWindowBaseClass                          CLASS(WebControlListClass),TYPE
WebWindowClass                              CLASS(WebWindowBaseClass),TYPE

64 bit functions

Also new in Clarion 9.1 is a new set of RTL functions for dealing with 64 bit signed and unsigned integers. The functions are declared in i64.INC and provide the following functionality:

Next time

That's it for the new files. Next week I'll take a look at some of the many changes to existing files in 9.1.