We are very proud to announce a start of the beta cycle for the next Smart Mobile Studio release – 2.2. Amongst many other news (a full list of changes can be found at the end of this article), we are also presenting new distribution mechanism, a SmartUpdate program.
With SmartUpdate you can follow different Smart Mobile Studio distribution channels. At the moment, Beta is the only distribution channel but this will most probably change after the 2.2 is released. We plan to introduce at least a Stable channel that would distribute stable releases.
Of course, you’ll still be able to use the standard distribution mechanism – the installer – for stable releases but betas will only be released via the SmartUpdate.
Another big change in the 2.2 beta is that you can install it into a single folder. You can also run it from that folder and it will not interfere with other (stable) Smart installation on the same computer. This will greatly simplify the testing. Also, if you want to test Smart on different computers, you can just make a copy of that folder.
Disclaimer
Please keep in mind that this is beta quality software and that problems are expected. Don’t open you production projects directly in Smart Mobile Studio 2.2 beta, but always make a copy first! As the beta is installed in a separated folder, it will not mess with your existing installation, but it may corrupt any project you open in the IDE. (We are pretty sure that it won’t, but such things have happened before and can happen again. That’s why we are beta testing before the release.)
Installation
To install Smart Mobile Studio 2.2 Beta, you need the SmartUpdate client application, freely available on our server. We recommend that you store it in the folder which will contain the downloaded Smart 2.2 beta installation.
To download Smart Mobile Studio 2.2 Beta, start the SmartUpdate program.
Click Next>, then select the folder that will be used for the installation.
Select the release channel. Currently, Beta is the only available channel.
SmartUpdate will contact the server and prepare the list of files to be downloaded.
Click Next> and download will start. It could take some time as the full download measures around 122 MB.
At the end, a list of downloaded files will be shown.
Click Next> and Finish to close the program.
To update your installation to a current Beta state, you can restart the SmartUpdate program at any time and repeat the steps. Only the list of changed files will be downloaded.
Currently, Smart Mobile Studio does not check if an update is available. This will be fixed in the near future.
Registration
To start using Smart Mobile Studio, execute SmartMS.exe from the download folder. The first time it will greet you with a license prompt.
If you are a registered Smart Mobile Studio user, you can enter your license number. Otherwise, you can click the Register trial license button and you’ll be redirected to a web page where you can request a trial license, valid for 35 days. It will be sent to you via an email.
After that, Smart Mobile Studio will start and you can start using it.
Please report any bugs that you encounter to bugreport@smartmobilestudio.com.
List of changes
Compiler
- improved Date/Time handling
- DateTimeZone scoped enumeration (.Default, .Local, .UTC).
- FormatSettings.ShortDateFormat, LongDateFormat, ShortTimeFormat, LongTimeFormat, Zone.
- An extra “utc” parameter of DateTimeZone type on many DateTime functions.
- A new ParseDateTime function, which acts as a reverse FormatDateTime
- ISO8601 functions (were declared but missing from the codegen)
- FormatSettings.Zone allows setting the default behavior between Local & UTC, and the utc parameter of DateTime functions allows to override that.
- FormatSettings does not yet expose short/long day/month names, but these are used for Formatting & Parsing dates.
- Fixed date/time rounding issues in the JS RTL.
- Added VarIsArray & VarIsClear.
- Supports “export” qualifiers for functions (use in libraries).
- Added support for ‘~’ in asm sections.
- Added option to generate RTTI for objects in the implementation section.
- Added missing error message for an invalid lambda syntax.
- Stricter enumerations type checks.
- Integer operators are now more “strongly” typed, facilitates use of helpers over aliased integer types.
- Case..of type matching is now more tolerant with variants.
- Made code suggestions in a local scope more resilient to syntax errors in that local scope.
- Compiler displays a hint about empty then/else blocks.
- Fixed: Source files with the UTF BOM header $FEFF are supported.
- Fixed array add type-checks for classes & sub-classes.
- Fixed array assignment typechecks.
- Fixed an issue which caused a slight increases in memory usage after each compilation (a leak that was not strictly a leak).
RTL
- Redesigned component management resulting in much faster redraw.
- All visual elements now has a new procedure: ObjectReady() which you should override and use to adjust and set object values.
- Added the property “ComponentState” as used by Delphi and FreePascal.
- Added Indexed Database API W3C.IndexedDatabase (http://www.w3.org/TR/IndexedDB/).
- Added System.Memory.
- Marshaled pointer support, combined with support for Move, FillChar and all the other “memory” methods.
- Added System.TypeCon containing data conversion classes.
- Added System.Streams.
- Added System.DateUtils.
- Added System.FileUtils.
- Added System.Dataset unit containing in-memory database.
- Added System.IO.
- Added message API System.Messages.
- Added SmartCL.Legacy.pas containing Delphi-style TCanvas, TBitmap, and file path functions.
- Added SmartCL.PageDiv unit, for managing a fixed buffer of abstract elements divided into pages. This is used by database navigators, thumnail viewers and anything which displays a fixed number of items out of a large whole.
- Added simple label control SmartCL.Components.SimpleLabel.
- Added TSimpleButton, a simple, rounded iOS standard button without gradients.
- QTX Effects added to SmartCL.Effects.pas
- Screen API wrapped in the TW3Screen class (accessible through the TApplication.Screen property).
https://developer.mozilla.org/en-US/docs/Web/API/Screen - Improved TW3Image.
- Defined ‘file’ input type for TEdit.
- Added “Element” property (exposes the JXMLHttpRequest object) to TW3HttpRequest.
- Added ResponseToMemory and ResponseToStream to TW3HttpRequest.
- Added TW3WebSocket to SmartCL.Inet.
- Added mousewheel support to scrollbars.
- Fixed: touch events must not prevent default handler.
- Fixed Scope confusion with CTRL + Click (namespace unit was opened instead of implementation unit).
- Fixed modal dialog handling.
- Fixed: Problem with ClientWidth & ClientHeight in document->body.
- Fixed: Scrollbar math.
- Fixed: Removed bug in ToggleSwitch where we used a “hack” to invoke a resize. This is no longer needed with the new system, so the bug and insertion of was removed.
CSS
- Added ‘None’ theme to allow CSS free simple demos using browser default.
- New theme for Scrollbars.
- Added CSS for TSimpleButton
- Fixed: CSS3 form-background for Internet Explorer
- Fixed: focus rectangle is now GONE for all themes.
IDE
- Added: Metrics
- Added: Project statistics
- Added configuration option “Legacy support for IE9 (and below)”.
- Added IDE setting to automatically save the project every N number of minutes (N is settable from 1 to 60).
- Uses DCEF3 version 3.1750 (equals to Chrome 33 as released in Feb. 2014) for built-in browser.
- Improved UI with new (more) icons and a more consistent usage of fonts (now uses Segoe UI for all dialogs)
- Improved JSON support.
- JSON files can be added to the project.
- Unit map shows JSON structure.
- JSON files are available in the project generator API.
- Improved Snippets management
- Sort snippets after insertion
- Renaming snippets
- Snippets are not trimmed anymore (-> may contain leading spaces for indention)
- (Incremental) search feature added
- Doubleclick now pastes the snippets into the source code
- Added: Close all tabs to the right
- Added: Open file (tab) in explorer
- Added: Only compile if necessary (when the project has been modified).
- Added: Source code export tool.
- Added: Search text highlighting.
- Added SynEdit keystroke configuration to the IDE Settings/Keyboard page.
- Redesigned IDE Settings dialog.
- Redesigned Project Options dialog.
- Color is shown next to clXXX constants in the Code Insight window.
- Implemented incremental searching in Project Manager.
- Pressing Escape closes the Goto Line dialog.
- Monitoring external files for changes can be turned off in IDE Settings.
- The forms component list is now sorted
- Welcome page can be closed.
- Improved background compiler triggering and performance (ignores hidden designer implementation code)
- Improved: [Enter] in project manager now opens file
- Improved (IDE) compiler performance
- Locate JS source code position in case of an error
- Revived: Class browser, which now directly operates on the source code allowing to show even recent changes (in the editor).
- Improved: Tightened XML files used by the IDE (less junk and empty tags) -> faster loading
- Improved handling of open files that are not part of the project.
- Improved ‘Normalize’ refactor.
- Serial number is displayed in Help, License info.
- Form name rename now calls rename refactoring.
- ‘Mobile Manifest’ renamed to ‘AppCache Manifest’.
- Marked handled exceptions as expected so they don’t trigger EurekaLog dialog.
- Fixed: ‘Asm’ highligher can be configured.
- Fixed: Pressing Enter in Project Manager did not open selected unit.
- Fixed: Search was not working for HTML source in the internal browser.
- Fixed: If project was saved under a different name, it was not recompiled until it was modified in same other way.
- Fixed: WriteLn messages were not always visible in logs.
- Fixed: Switching from Project Manager to code could cause an access violation.
- Fixed: Projects in the RTL/library folder won’t crash anymore
- Fixed: Error in component name check (reserved words were possible)
- Fixed: Extraction of units (in uses section) failed when comments were present within this section
- Fixed: Automatic adding of new units now consider the right edge properly
- Fixed: Unit scoping (namespaces) were not considered when adding new units to the uses section
- Fixed: Node.js empty project generator created an invalid project (did not compile and needed manual tweaking of .sproj file)
- Fixed: Messages window was visible when program was started
- Fixed: unit source is correctly displayed if new project or unit is created when no tabs are visible.
Editor/Designer
- Updated CSS highlighter.
- Syntax highlighting for JSON files.
- Added visual designer guidelines.
- Added simple ruler to the visual designer.
- Added visual designer option to show the form’s bounds.
- Caret position change causes less workload (improved performance during source code navigation).
- View state (editor/designer) is preserved in the <project>.dsk file.
- Better live preview (less flickering).
- Fixed source highlighting when double-quote was the first character in a line.
- Fixed: Deletion of components in the designer did not mark the project as modified
- Fixed DWS syntax highlighter for double quoted strings (did not highlight properly where delimiter was the very first character of a line).
- Fixed: Form is marked as ‘modified’ when an event handler is created by double-clicking on a component.
Demos
- Added DataSnap client/server demo.
- Added DataSnap FishFacts demo.
- Added HTML5 DOM demos.
- Multiple demos corrected & adapted to the new RTL.
Other
- SmartUpdate program.
- Unified installation for all editions.
- Added support for “portable” installations that don’t require installation.
- Cleaned-up default .spr file.
- New icons.