Subscribe (RSS)

Quick Links

About Actipro

Actipro Software has been creating .NET user interface control products for Windows Forms since its inception. More recently, Actipro has become a pioneer in the .NET 3.0 WPF control development arena.
Wednesday, 1 July 2009 09:57 by Bill Henning (Actipro)

New WPF Studio maintenance release adds numerous Editors improvements

The latest maintenance release of WPF Studio (build 501 that came out today) includes several enhancements and bug fixes in the Editors for WPF product. We've already discussed the new TimeSpanEditBox control, but some of the other key updates are described below.

Clipboard operations on PartGroup

One of our most requested features was to add better support for clipboard operations (i.e. copy and paste) in the parts-based editors. Previously, controls like DateTimeEditBox only allowed you to copy/paste text from within the individual parts. There was no way to copy the entire value of the DateTimeEditBox, so we've added a way.

Before we got to clipboard operations, we needed a way for the user to "select" the entire value or text. Therefore, we added the ability to select the associated part group, since it hosts all the discrete parts. When there is a single part in the part group, then a single Ctrl+A (or selecting all of the text using the mouse) will select the part group. Since there is a single part, there is no need to allow the part's text to be selected separately. If there are several parts in the part group, then the first Ctrl+A will select all the text in the active part and the second Ctrl+A will select the part group. Subsequent Ctrl+A will toggle between these two modes.

DateTimeEditBoxYearSelected

DateTimeEditBoxPartGroupSelected

DateTimeEditBox with the year selected (top) and the part group selected (bottom)

When the selection is completely contained in a part, then copy/cut/paste will function as it did previously. These operations will simply copy/cut/paste the selected text in the given part. However when the part group is selected, then copy/cut/paste will operate on the associated value. In the images above, pressing Ctrl+C with the year selected will put the text "2009" on the clipboard. When pressing Ctrl+C with the year selected will put the text "7/1/2009 11:12 AM" on the clipboard.

By default, the text copied to the clipboard by the part group uses the same format as presented in the control (as specified by the Format property). You can customize this format by setting the ExportFormat property to a different format. Although, you should typically leave ExportFormat set to null, which indicates that Format should be used (but it's there if you need it). We've also built in some other customization features, which are documented in our help file.

We've added a bit more flexibility (where we could) when pasting a value on to a selected part group. For example, with the DateTimeEditBox you can paste a date in one of several formats and the control will try to figure out what format the text is in. If you paste the string "April, 2010" (which is the 'm' standard DateTime format specifier) in the DateTimeEditBox pictured above, the resulting value is "4/1/2010 12:00 AM" (which is the result of the DateTime.Parse method on the given string).

DateTimeEditBoxMFormat

DateTimeEditBox after pasting "April, 2010" on the selected part group

Finally, when pasting a value, only editable parts will be updated. So if the month part was not editable, then in the above scenario it would have remained July (or 7).

Setting to null

The value of a type-specific parts-based editor can be set to null by the user in a number of ways.

The first method is to use the null CheckBox, which can be included by setting CheckBoxVisibility to Visible. The CheckBox allows the user to set the value to null and to re-initialize it to a non-null value (as indicated by the InitialValue property). The CheckBox also gives the user a visual indication of whether the value is null.

Another method is include a custom Button, which uses the NullifyValue command. This allows the user to set the value to null using a single mouse click. One of the QuickStarts in our Sample Browser shows how this can be done.

Finally, we've added the ability to set the value to null by deleting all the text, which is controlled by the new property IsNullAllowed. When this value is true, if the user deletes all the text in a part or presses the Delete key when the associated part group is selected, then the value will be set to null. If this value is false (the default), then the value will not be set to null and will revert back to it's previous value if the user tries to commit the change.

Support for NaN and Infinity

The DoubleEditBox, PointEditBox, RectEditBox, SizeEditBox, and VectorEditBox controls now support NaN and Infinity, both positive and negative, values. These values are presented, and can be entered by the user, using NaNSymbol, PositiveInfinitySymbol, and NegativeInfinitySymbol from the NumberFormat of the current culture. These are typically "NaN", "Infinity", "-Infinity", but may vary depending on the current culture.

DoubleEditBoxNaN

DoubleEditBox showing NaN value

Since the parts-based editors leverage the MaskedTextBox, the user only needs to type the first character to set the associated value. For example, the user can type "N" to set the value to NaN, since the MaskedTextBox will auto-complete the remaining characters.

To enable support for these values you simply need to set AllowNaN and/or AllowInfinity to true. By default, AllowInfinity indicates that both positive and negative Infinity are valid. If the Minimum is set to a positive number (including 0), then negative Infinity will not be allowed.

Horizontal Alignment

The parts-based editors are capable of hosting any custom content in one of three slots: left, center, and right. Typically, the center slot is reserved for the "main" content. For the type specific editors (e.g. DateTimeEditBox), the center slot holds the default part group (which presents the associated value as text). The editors already offered a lot of control over the layout of the items and slots, but you could not easily align the text to the right side of the control. To fix this we've added a CenterSlotHorizontalAlignment property, which can be used to align the default part group (and thus the text) to the right side of the control.

DoubleEditBoxRightAligned

DoubleEditBox with the text right-aligned

Summary

In addition to the features above, we've fixed several issues that popped up in the first release. So be sure to check out the latest version, available now.

Tags:   ,
Categories:   Actipro | New features | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (0) | Comment RSS




Friday, 19 June 2009 03:09 by Bill Henning (Actipro)

Editors for WPF - TimeSpanEditBox coming in next build

In the upcoming release we've added the TimeSpanEditBox control, which is a parts-based editor for the TimeSpan type. Like the other editors, setting it up is quick and painless. In addition, you can embed your own controls right inside it.

Parts

TimeSpanEditBox comes with parts for days, hours, minutes, seconds, milliseconds, ticks (fractions of a second), and the sign (positive or negative). Each part has an associated format specified, which is fully documented in our help file.   More...

Tags:   ,
Categories:   Actipro | New features | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (1) | Comment RSS




Thursday, 18 June 2009 05:57 by Bill Henning (Actipro)

WPF Studio 2009.1 customers can now download default control styles

We’ve just enhanced our Organization Purchases page so that customers of our WPF Studio 2009.1 suite can download a ZIP containing the default styles and templates for the controls.

DownloadStyles

Note the new link highlighted above that you’ll see in your account if you own WPF Studio 2009.1.  Click that link to download a ZIP that has all the XAML source files used in the various WPF Studio products.  These XAML source files define the brushes, templates and other resources that are used by the products.

Enjoy!

Tags:   , ,
Categories:   Actipro | General | XAML | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (0) | Comment RSS




Monday, 15 June 2009 10:06 by Bill Henning (Actipro)

SyntaxEditor for WPF - Expanded use of the service locator design pattern

The other day we posted about how syntax languages are changing to use the service locator design pattern.  This design pattern allows us to generically make available new features for syntax languages, and for language designers to easily implement them.  It’s a win-win for everyone.

While we’ve been working on adding support for languages to respond to user input and show completion lists, etc., we changed the internal model we use for handling IntelliPrompt input to be based on the service locator design pattern as well.  More...

Tags:   , ,
Categories:   Actipro | In development | New features | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (2) | Comment RSS




Wednesday, 10 June 2009 09:16 by Bill Henning (Actipro)

SyntaxEditor for WPF - Syntax languages to be service locators

One thing we’ve been working on this week in the world of SyntaxEditor for WPF is the ability for syntax languages to support the display of IntelliPrompt completion lists, and to be able to easily respond to Ctrl+Space, etc. without code having to be written external to the language implementation.  These sort of features are already supported in SyntaxEditor for WinForms.

The WPF version has a bit of a different design however, where the text/parsing framework is in one assembly and the WPF UI portion is in another.  This has been done so that we can eventually reuse the new text/parsing framework on other platforms like WinForms.  The separation is great design-wise however the problem we found was that in order to have some sort of IntelliPrompt provider (defined in the UI assembly) on the ISyntaxLanguage interface (defined in the Text assembly), we’d need to do some non-straightforward things like having a language class optionally implement an interface.

We just weren’t happy with where that was headed so instead decided to change ISyntaxLanguage for the next build to use the service locator designer pattern.  More...

Tags:   ,
Categories:   Actipro | In development | New features | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (4) | Comment RSS




Friday, 5 June 2009 08:17 by Bill Henning (Actipro)

WPF products to add support for Microsoft’s Pixel Shader Effects (WPF FX) Library

The next maintenance release of WPF Studio will include some new functionality that allows HLSL-based pixel shader effects to be used with any of our WPF products that use transitions, including Wizard, Docking/MDI, NavigationBar, and more.

BandedSwirlTransition

The Banded Swirl transition

Shader effects are a new feature in .NET 3.5 SP1 and can help make a lot more complex transitions than what can be created with standard WPF-based transitions.  More...

Tags:   ,
Categories:   Actipro | In development | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (0) | Comment RSS




Tuesday, 2 June 2009 08:00 by Bill Henning (Actipro)

Integrating MGrammar DSL parsers with SyntaxEditor to implement syntax highlighting

Now that the public beta of SyntaxEditor for WPF has been released, I’d like to show off a really neat feature that you probably haven’t heard about yet.  Microsoft has been working on a new modeling technology that has been codenamed “Oslo”.  You can read all about it here:

http://msdn.microsoft.com/en-us/oslo/default.aspx

One piece of Oslo is the ability to create GLR-based text parsers that basically parse text and output an AST node graph.  This part of Oslo is called MGrammar.  We first looked into this technology back at PDC 2008 and became involved with the Oslo team shortly thereafter.  Special thanks go out to Chris Sells and his team for all their help.  Our goal was to make an add-on for our SyntaxEditor control that provided syntax highlighting within the control based on an MGrammar DSL parser.

MGrammarIntegration

The MGrammar Integration sample included with WPF Studio, which shows a SyntaxEditor instance that has loaded an MGrammar DSL parser and is using it for syntax highlighting

We’ve implemented this new Oslo Dataflow Add-on and have included it in the WPF Studio 2009.1 release that came out last week.  Download the WPF Studio Evaluation to check it out… it includes a complete sample project showing how simple it is to get working.  More...

Tags:   , ,
Categories:   Actipro | New product | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (5) | Comment RSS




Friday, 29 May 2009 08:16 by Bill Henning (Actipro)

Actipro SyntaxEditor for WPF and Editors for WPF are released

SDICodeEditorThemed

SyntaxEditor for WPF with a custom theme loaded

Yesterday evening we published WPF Studio 2009.1, which includes the first SyntaxEditor for WPF public beta and the official release of Editors for WPF.  These products have been highly requested by our customers so we’re very pleased to get them out into your hands.  More...

Tags:   , , , ,
Categories:   Actipro | New product | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (3) | Comment RSS




Tuesday, 19 May 2009 02:20 by Bill Henning (Actipro)

Editors / PropertyGrid interop features coming in WPF Studio v5.0

We are working hard to get WPF Studio 5.0 released, which includes our new Editors for WPF product. By themselves, the controls provided by Editors for WPF are extremely useful, but we also wanted to make them easy to integrate into our PropertyGrid for WPF product. In order to keep both products segregated, we created an interop assembly that ties the two products together. This allows each product to be sold separately, while still providing reusable code and samples for customers who own both products.

PropertyGridBrushEditBoxOpen

A PropertyGrid with various Editors controls included

More...

Tags:   , ,
Categories:   Actipro | In development | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (1) | Comment RSS




Wednesday, 13 May 2009 04:16 by Bill Henning (Actipro)

WPF Studio suite v5.0 is getting close to release

Sorry we haven’t been blogging much the past couple of weeks.  We’ve been focusing all our efforts on polishing off Editors for WPF and SyntaxEditor for WPF (public beta), both of which will be part of the upcoming WPF Studio v5.0 release.

SampleBrowser

Just to get you excited, I’ve included a screenshot above showing the new product family tabs for Editors and SyntaxEditorMore...

Tags:   , ,
Categories:   Actipro | In development | WPF
Actions:   Submit to DotNetKicks | E-mail | Permalink | Comments (6) | Comment RSS