WPF, Silverlight, and WinRT/XAML v2015.1 Released

by Avatar Bill Henning (Actipro)
Friday, April 3, 2015 at 2:31am

BlogPostBanner20151

The 2015.1 versions of our WPF, Silverlight, and WinRT/XAML controls have been released and are now available for download.

Major new features are described below.  See the announcement posts for the large detailed list of enhancements and updates, including many items not listed below:

ProductHeadingWinRTBarCodes

Our Bar Codes product has been ported to the WinRT XAML platform.  This product, which already exists on WPF and Silverlight, allows your apps to render vector-based bar codes using many common 2D and linear bar code symbologies.

BarCodes

A full set of demos and QuickStarts are included to help you get going.

ProductHeadingWPFDocking

The interop assembly that makes it easy to use Docking/MDI with the Prism framework has been updated to reference the latest Prism v5.0.

DockingMetro

We've made numerous layout and performance updates to further improve the product. 

We also have been working hard on building a completely new internal engine for the Docking/MDI product, which will be available sometime later this year.  Keep an eye on our blog for posts detailing the advanced features that are coming with those updates.

ProductHeadingWinRTEditors

All of our edit box controls in the WinRT Editors now have an IsEditable property.  When set to false, the edit box behaves more like a ComboBox, while still retaining the rich popups that make the editors unique.  This is an ideal option for apps whose primary mode of interaction is expected to be touch.

ColorEditBoxNoAlpha

The CornerRadiusEditBox, PointEditBox, RectEditBox, SizeEditBox, and ThicknessEditBox controls have been updated to support text parsing one and/or two number entries where appropriate, which is useful for easy uniform value entry.

ThicknessEditBox

In the above ThicknessEditBox, a 2 is typed and then Enter is pressed.  The value is converted to a uniform thickness of 2.

A ValueChanged event has been added to all edit boxes, which fires when a value change is committed.

Finally, edit box padding has been adjusted so that more content is visible in the same amount of space.

ProductHeadingWPFGauge

A new DigitalGauge.CharacterSegmentThickness property allows for segment thickness adjustments.  This gives you even finer control over the presentation of your digital characters.

DigitGaugeSegmentThickness

We've enhanced the 'Linear Gauge Rolling Scale' QuickStart with a new infinite rolling scale example for navigation headings.

HeadingGauge

ProductHeadingGenericSyntaxEditor

The EditorSearchView control now supports an optional "Find All" button.

EditorSearchView

The RTF export logic has been updated to support extended ASCII characters.

The free CSS language definition now supports the syntax highlighting of media queries.

We've dramatically improved the speed of large completion list display.

Several other performance improvements have been made, such as optimized the scenarios for which the TokenTagger raises its TagsChanged event, and refining of the automatic outlining update logic.

In the WinRT version, we added the SyntaxEditor.AreSelectionGrippersEnabled property, which determines whether the selection grippers show after touch within a view.

.NET Languages Add-on

The C# parser has been improved to recover better when encountering open block statements so that its AST node structure remains better in tact.

DotNetPropertyAccessor

The IntelliPrompt quick info for properties now includes accessors, making it possible to see whether a property is read-only.

Python Language Add-on

The Python language has received an enormous amount of updates, that in sum really improve the entire automated IntelliPrompt feature set.

PythonAddon

Check out all these enhancements:

  • Added IntelliPrompt for private members and updated the completion list to have Public and All filter tabs.
  • Added reflection data for private methods/fields of built-in primitive types.
  • Added IntelliPrompt for built-in exception types.
  • Improved IntelliPrompt for numerous built-in modules.
  • Greatly improved IntelliPrompt for package and module imports.
  • Improved IntelliPrompt for function parameters by examining available assert statement isinstance calls.
  • Added IntelliPrompt for static fields on classes.
  • Improved the resolution of base types for classes.
  • Added the optional IResolver.UnknownReturnTypeReferenceCallback callback that can be used to provide return type references for unknown types.
  • Updated the resolver to recognize where 'cls()' in a class method can create a new instance of the related class.
  • Updated the IntelliPrompt completion list to filter unmatched items.
  • Updated the IntelliPrompt docstring display to retain presentation of line feeds.

ProductHeadingGenericViews

The Views product has a new TaskBoard control added, available in all three (WPF, Silverlight, and WinRT) platforms.  TaskBoard can be used to create a board of reorderable columns and cards.  All of the drags use smooth animations to give you the feel that you are really interacting with the object.

RepairShopScheduling

The first full-source sample that comes with the control is a Repair Shop Scheduling demo, which shows how a TaskBoard can be used to interactively schedule work to resources, such as employees. TaskBoard excels at providing a visual way of representing work/tasks (displayed as cards) within a queue of some sort (displayed as a column).

PageBannerDefault

The second sample is a Task Planning demo, which shows how a TaskBoard can visually organize a project's tasks.

ProductHeadingGenericShared

We've added another new primitive SemiEllipse shape, which renders half of an ellipse.

SemiEllipseShape

The existing Triangle shape has a new IsClosed property that when set to false will create a triangle with only two of the sides rendered.

TriangleShape

Finally, in the WPF Shared Library, we added GradientBrushSlider.CanAddStops and CanRemoveStops properties that determine whether stops can be added and removed from a GradientBrushSlider.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor - ASP-Style Server Tags with IntelliPrompt

by Avatar Bill Henning (Actipro)
Friday, February 13, 2015 at 1:25pm

PostBannerSyntaxEditorDevNotes

We've had a lot of customers throughout the years ask us for a sample that could show how to harness our SyntaxEditor .NET Languages Add-on and its automated IntelliPrompt within an ASP-style server tag context.  This is especially useful for any sort of template generating scenario.

We had an internal sample that we would send customers upon request, but several months back, we cleaned it up, enhanced it, and added it as a new QuickStart sample.  In this post, let's have a look at the QuickStart sample that was added to the SyntaxEditor for (WPF, Silverlight, and WinRT/XAML platforms) in the 2014.2 version showing how to achieve automated IntelliPrompt within ASP-style server tags.

Usage Example

In the animated presentation below, you can see how there is a basic parent language whose lexer only knows to tokenize and color the word "date" as a keyword.  In real-world usage, the lexer could be made to fully colorize the text like normal.  The lexer has hooks that cause a transition to the C# language found in our .NET Languages Add-on when ASP-style delimiters are encountered.

SyntaxEditorServerTags

Both <% %> and <%= %> style tags are shown in this example.  What happens behind the scenes is that the parent language's parser will code generate C# code.  It will make a C# class named "__Generated" and a method named "__WriteOutput".  All the text of the parent language is output within "Response.Write" method calls.  C# code in the server tags is injected directly.  The resulting full C# code is placed in a separate in-memory document and parsed.  Finally the resulting parse data is returned, along with mapping data to know how offsets between the server tag range in the source document and those in the parsed C# document align.

Then there are several customized C# IntelliPrompt providers that know how to use that mapping data and translate offsets so that automated IntelliPrompt is fully functional within the server tag regions of the main source document, yet based on the generated C# code.

Tricky stuff, but it works great!

Summary

The full source sample described above was added in the first v2014.2 release of our WPF, Silverlight, and WinRT/XAML controls and is available for you to check out.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor - XML End Tag Completion

by Avatar Bill Henning (Actipro)
Friday, January 30, 2015 at 9:59am

PostBannerSyntaxEditorDevNotes

Let's have a look at a new feature that came to the advanced XML language for SyntaxEditor for WPF (via its Web Languages Add-on) in the latest 2014.2 maintenance release: the ability to auto-complete XML end tags.

Feature Description

The advanced XML language already has auto-end tag insertion features that occur as you type the > character at the end of a start tag.  In that scenario, the end tag is inserted immediately after the caret.  There are other times where you have deleted some text that may include an end tag that you wish to type back in again.

Say that you are editing a block of XML and start to type an end tag.  After typing the < character, the completion list will contain an item for closing the nearest open ancestor element (if any):

SyntaxEditorEndTagAutoComplete1

In the example above, you can see the "/colors" item in the completion list and how selecting it auto-completes the end tag.

End tag auto-completion also works if you put the caret after a </ and press Ctrl+Space, as in this example:

SyntaxEditorEndTagAutoComplete2

In the example above, Ctrl+Space is pressed at the caret's location to auto-complete the "colors>" text.

Summary

The features described above were added in the latest v2014.2 maintenance releases of our WPF Controls and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

SyntaxEditor - Read-Only Regions

by Avatar Bill Henning (Actipro)
Tuesday, January 27, 2015 at 2:10pm

PostBannerSyntaxEditorDevNotes

Feature Description

SyntaxEditor documents have always had the ability to be fully read-only and developers can also can cancel specific text change events for more fine-grained control. That being said, there are many cases where developers want to have an easy way to tell SyntaxEditor that a certain of text should not be editable by the end user.  That's where read-only regions come into play.

SyntaxEditorReadOnlyRegion

Read-only regions are implemented using our powerful tagging mechanism.  There is a new IReadOnlyRegionTag interface (with related ReadOnlyRegionTag implementation class) that can be used to mark read-only regions.  Getting going is as easy as tagging a text range using an instance of that class.

Best of all, the ReadOnlyRegionTag class also implements IClassificationTag, which associates the tag with a classification type for read-only text and gets styled with a silver background.  Of course this is fully customizable if you wish to have a different appearance, or no appearance difference at all.

When the end user attempts to edit anything that would cross within a read-only range, the text change will realize that it intersects a read-only range and will cancel.  The text range protected by the read-only region remains unchanged.

This is a very handy feature for certain scenarios and was highly requested by our customers.

Summary

The read-only region features described above were added in the latest v2014.2 maintenance releases of our WPF, Silverlight, and WinRT/XAML controls and are available for use.

TaskDownload TaskLiveDemo TaskBuyNow

WPF, Silverlight, and WinRT/XAML v2014.2 Maintenance Releases

by Avatar Bill Henning (Actipro)
Wednesday, December 17, 2014 at 10:55am

20142MaintReleaseBlogPostBanner

New maintenance of the 2014.2 versions of our WPF, Silverlight, and WinRT/XAML controls have been released and are now available for download.

Major new features are described below.  See the announcement posts for the detailed list of enhancements and updates, including many items not listed below:

ProductHeadingGenericEditors

ISO 3166-1 Alpha-3 Codes Added (WPF, WinRT only)

The Country class, which contains ISO country data and is utilized by our CountryComboBox control, now also includes the 3-character alpha code data for each country.

CountryComboBox

This is in addition to the existing data of 2-character alpha code and name.

ProductHeadingGenericPropertyGrid

Handling of Root Objects Improved (WPF only)

We've improved how the PropertyGrid handles properties on the root SelectedObjects that have a custom type converter.

Handling of Immutables Improved (WPF only)

We've also improved support for handling immutable objects and determining how to interact with their properties.

Custom Factory Sample Updated (WPF only)

The Custom Factory sample has been updated to show a property with a non-string type.

PropertyGridCustomFactorySample

This is a great example of showing how to implement a custom data factory and merge properties from various object sources.

ProductHeadingGenericRibbon

Backstage Tab Navigation Improved (WPF only)

We've improved keyboard navigation in the TaskTabControl control, which is generally used within Backstage tabs.

Contextual Tab Layout Refined (WPF only)

The logic for the sizing of contextual tab groups and their tabs always has had some minor issues when resizing the containing window to be thinner.  The issue didn't often manifest itself unless multiple contextual tab groups were displayed.

RibbonContextualTabs

We spent a while tracking these issues down and fixing them so that all layout sizing is now perfect, as seen in the screenshot above.

ProductHeadingGenericSyntaxEditor

Read-Only Regions Added

We've added support for read-only regions of text via the new IReadOnlyRegionTag tag.  This feature has been highly requested by customers, so we're happy to deliver it.

SyntaxEditorReadOnlyRegion

There is a ReadOnlyRegionTag implementation class that supports classification so that read-only regions can be rendered with an alternate background, such as gray in the screenshot above.  A new Read-Only Regions QuickStart that demos the new features is now in the Sample Browser.

Move Selected Lines Up/Down Commands

Another highly-requested set of commands for moving the selected lines up (via Alt+Up) and down (via Alt+Down) have been added.  The SDI Editor demo's menu has been updated to show off the new editor commands.

IntelliPrompt Completion Performance Enhancements

We did a lot of performance profiling related to IntelliPrompt completion lists and we able to make numerous performance enhancements in the areas of item matching and filtering.  These enhancements will really help performance when displaying large completion lists.

Drag and Dropped Text Reselection Option Added (WPF only)

A SyntaxEditor.IsDragDropTextReselectEnabled property has been added that can be set to false to prevent reselection of dropped text.

Data Binding Change Scroll Behavior

Views have been updated so that text changes from a data bound source (such as view model) don't scroll the view back to the first line on each update.

Line Commenter Updated

The line commenter has been updated to improve how line comment and uncomment features affect selection.  The logic that gets activated by the LineBasedLineCommenter.CanCommentEmptyLines property also has been improved.

Bi-Di Text Caret Movement (WPF only)

We've made several improvements to caret movement when editing bi-directional text.

Better Separation of UI/Document Models

All of the event ties between the UI and document models have been changed to use weak events.

.NET Languages Add-on

The ability to resolve references to nested types has been improved.

Web Languages Add-on

A completion item for closing the nearest open ancestor element, if any, has been added.  (WPF only)

SyntaxEditorCloseTagCompletion

Ctrl+Space after an end tag start delimiter will also auto-complete the matching start tag's name.  (WPF only)

We've also improved the editing experience when typing to not affect outlining nodes as much.

ProductHeadingGenericShared

Wave and ZigZag Shapes Added

New primitive shapes have been added that can be used to create some interesting user interface elements in your apps.  The Wave shape renders a wavy line.  The ZigZag shape renders a zig-zag line.

ZigZag2

The Shapes QuickStart has been updated with examples showing usage of the new shapes.

TaskDownload TaskLiveDemo TaskBuyNow