WPF Controls 2019.1 Released

by Avatar Bill Henning (Actipro)
Wednesday, May 29, 2019 at 4:25pm

We are pleased to announce the release of the 2019.1 version of our WPF Controls.  This version includes the massive SyntaxEditor enhancements and updates we’ve been working on that have previously been described as “SyntaxEditor vNext” in the blog.

This announcement post contains the detailed list of updates.

Download Buy Now

Let’s dig in and see a handful of the larger SyntaxEditor updates.

Cross-Platform Design

The internals of SyntaxEditor have been heavily refactored to support a cross-platform API across the WPF, UWP, and WinForms platforms. This allows SyntaxEditor features for the three platforms to be kept in sync moving forward.  The 2019.1 UWP and WinForms versions of SyntaxEditor will follow later this year.

Carets and Selection

Multiple Selections

Editing with multiple carets

Multiple selections, each with their own caret, are now supported. A new selection can be added by holding the Ctrl key when clicking in the text area or clicking on the selection or line number margins.  Most edit actions have been refactored to fully support multiple selections. For instance, pressing Shift+Right Arrow will extend all of the selections by one character. 

Typing and copy/paste with multiple selections

Copying text from multiple selections unions the selected text, joining each range's text with a line terminator.  Pasting multi-line text into a view with the same number of selections as text lines being pasted will replace each selection with a related line from the pasted text.

Touch Selection Grippers

Selection grippers displayed for touch-based selection

Selection grippers will show for the primary selection when touch input is used.

Caret Movement

Carets now support movement at both the start and end of word wrapped lines.

The caret in virtual space past the end of a line

Virtual space is now supported at the end of lines when a new option is enabled.  Block selections can be made in virtual space at the end of lines, even without line end virtual space being enabled. This prevents the caret from snapping to an offset when making a block selection, which can sometimes be problematic.

Search Overlay Pane

A new search overlay pane displays over the upper-right of the active editor view when Ctrl+F (find mode) or Ctrl+H (replace mode) are pressed in a multi-line editor.  A toggle mode button on the search overlay pane switches between find and replace modes, and all common search options are supported via toggle buttons and other controls.  The search overlay pane can be closed by clicking the X button or by pressing Esc.

Basic find and replace operations are available in the search overlay pane

Ctrl+F3 will open the search overlay pane without focusing it, and will search forward for the currently-selected text. Ctrl+Shift+F3 will do the same but will search backwards.

F3 will search for the next match of the previously-used search options. Shift+F3 will search for the previous match of the previously-used search options.

If the SyntaxEditor.IsSearchResultHighlightingEnabled property is true, the search results can be highlighted while the search overlay pane is open. Closing the search overlay pane, clears the search result highlights.

IntelliPrompt

Vector Images

All Metro images are vector-based and show crisply in high DPI

The Metro Light and Metro Dark common image sets are now in vector form and render beautifully in high DPI.

Completion Filters

Completion filter buttons can narrow down the items in the list, such as all .NET types

Completion filters have been updated so when there are multiple active filters with the same ICompletionFilter.GroupName, any one of those filters can includes an item.  Toggle button completion filters were changed to appear unchecked when they aren't active, which is more natural.

Ctrl Key Opacity Changes

The logic for making IntelliPrompt popups and the new search overlay pane semi-transparent when the Ctrl key is held has been refactored and improved.  A brief delay was added before the opacity change occurs.

Splitting

The scrollbar splitter button now has a larger appearance.

Splitting a view, and the new option to drag to the bottom to keep the top view

The view splitter can be dragged to the bottom of the view to remove the split and keep the top view.

Scrolling and Zooming

Touch Scrolling

Smooth inertia-based touch scrolling has been added.

Auto ScrollBar Visibility

In Auto mode, the horizontal scrollbar is hidden since no horizontal scrolling is possible

The horizontal and vertical scrollbars now support an Auto visibility option that will only display then when necessary.

Horizontal Scrolling

Editor views can be scrolled horizontally with Shift+MouseWheel

Better logic was implemented for managing horizontal scroll maximums, especially when scrolling vertically.

Scroll API

New programmatic scroll methods were added that allow for aligning an anchor line to the top/center/bottom of a view with a specified pixel displacement, or scrolling by pixels.

Margins

Line Number Customization

The first view line renders with line number 121 due to a custom origin number set on the document

A new line number provider language service was added that allows for complete customization of how line numbers are rendered in the line number margin.  In addition, a property was added to the document that sets the line number for the first line in the document, defaulting to one.

Indicator Glyphs

The rendering of built-in indicator glyphs was improved.

Text Rendering

The text rendering of long lines was improved.

.NET Languages Add-on

IntelliPrompt completion list toggle button filters were added for the various kinds of items displayed in the list.  The IntelliPrompt completion filter UI (toggle buttons and tabs) only shows based on the available items in the unfiltered list. For instance, if there are no types in the list, no 'Types' toggle button filter is visible.

Roslyn Add-on

The optional Roslyn add-on was updated to use Roslyn v3.0.0.

Python Language Add-on

IntelliPrompt completion list toggle button filters were added for the various kinds of items displayed in the list.  The IntelliPrompt completion filter UI (toggle buttons and tabs) only shows based on the available items in the unfiltered list. For instance, if there are no classes in the list, no 'Classes' toggle button filter is visible.

ANTLR Add-on

The ANTLR add-on was updated to use ANTLR v3.5.1.

Irony Add-on

The Irony add-on was updated to use Irony v1.1.

SyntaxEditor vNext Beta Testers Wanted

by Avatar Bill Henning (Actipro)
Wednesday, April 17, 2019 at 8:23pm

As the massive SyntaxEditor vNext project heads towards completion, we are now asking for beta testers to work with preview builds of what’s coming.

SyntaxEditor vNext with the new integrated search pane

Beta testers will get an early look at all the new features, and can give us valuable feedback to influence any necessary development and/or bug fixes prior to a final release.

Rollout Schedule

The WPF version is closest to ready for a beta. We still have a bit more work to accomplish before the first WPF beta is ready for testing, but it could be a week or two away at this point.

The UWP version will follow the WPF version, once the WPF beta is tested for some time. A benefit of SyntaxEditor vNext using the same codebase across WPF, UWP, and WinForms is that any changes/fixes made to one platform can easily flow into the others as well.

Finally the WinForms version will enter beta after the other two are out and both being tested, and after the documentation updates for the WPF/UWP versions has been completed.

We will continue posting status updates in our blog.

Beta Testers

We are looking for beta testers who:

  • Will actively use supplied preview builds to help ensure the beta is stable.
  • Will report suggestions for improvement of new features.
  • Will report any bugs that are encountered.
  • Ideally is signed up in our Slack workspace, as it’s easiest to communicate through that during testing phases.

Please contact our support team privately via a ticket to sign up for beta testing:

Contact Our Support Team to Sign Up

Please indicate the following in your message:

  • Your name and e-mail address.
  • If you are already an existing customer, and which syntax language(s) you currently use.
  • The platform(s) you’d like to test.
  • If you are already signed up in our Slack workspace.

Thanks for your help and we look forward to working with our testers.

The SyntaxEditor vNext work is intended to be launched in the future v2019.1 SyntaxEditor for WPF, SyntaxEditor for UWP, and SyntaxEditor for WinForms products.

SyntaxEditor vNext - Editor View Panes

by Avatar Bill Henning (Actipro) - 7 comments
Wednesday, March 13, 2019 at 3:30pm

Another feature we're looking to add to SyntaxEditor vNext (the 2019.1 version) is editor view panes, which are small UI panes with editor-related functionality that slide in from the view's top-right corner.  We originally started this effort with the idea of adding an inline search view similar to the one found in Visual Studio. 

Here's a walkthrough showing how it works when you press Ctrl+F:

An example editor view pane for find/replace functionality

We will cover this new inline search view in detail in a future post, as it's still being developed at this time.  But you can get a feel for how it will function via the video above.  

As we worked on this feature, we thought it would be a great idea to try and make more of a generic mechanism to host these kinds of editor view panes.  Other editor view panes could be added for go-to line, go-to anything, refactoring, etc. kinds of user interfaces.

Submit Your Feedback

We're just in the planning stages of this more generic editor view pane mechanism right now and would love to get your feedback.

Let's hear your thoughts in the comments on what kinds of built-in panes you might like to see, or what kinds of custom panes you might build with this mechanism!

The features described above are intended for the future v2019.1 SyntaxEditor for WPF, SyntaxEditor for UWP, and SyntaxEditor for WinForms products.

SyntaxEditor vNext IntelliPrompt Updates

by Avatar Bill Henning (Actipro)
Wednesday, December 12, 2018 at 5:00pm

BlogPostBanner-SyntaxEditor-DevNotes

As mentioned in a previous post, we have been working on refactoring the core internal implementation of our SyntaxEditor code editor control on the WPF, UWP, and WinForms platforms.  This effort (codenamed vNext) is being made to bring all three platforms onto the same codebase for easier updating moving forward, and to enhance features wherever possible.

The past three weeks or so, we've been plugging along on refactoring a lot of the internals of SyntaxEditor's IntelliPrompt UI features so that the same codebase can be shared across the WPF, UWP, and WinForms platforms.

While the WPF and UWP version's APIs are pretty much staying the same (with a couple minor tweaks to completion filters), the WinForms version will see some massive new capabilities, especially with completion.

IntelliPrompt Features Summary Video

Let's dig in and see a visual summary of some amazing completion list features that will be available in the all three SyntaxEditor vNext platforms.  This video shows the WPF SyntaxEditor editing a Python document using our advanced Python Language Add-on.

2018-12-12_10-46-08

Toggle Button and Tab Completion Filter UI

The completion list allows for toggle button and tab filters to be added.  Toggle button filters allow you to check the kinds of items you wish to see in the completion list.  If nothing is toggled, then all results are displayed.  Tab filters let you select between two or more main options, with one being an "All" option.

While the current WPF and UWP versions already support toggle button and tab filter UI, this is a new feature for the WinForms version.  And in vNext, the toggle buttons work more like they do in Visual Studio 2017.

Filtering Unmatched Items

As you type, the completion list filters out items that don't match.  This is an option already available in the WPF/UWP versions, but is new for the WinForms version.

Matched Text Highlights

When typing text, the letters in each item that match will be highlighted in the list.  This feature makes it clear why an item is matched and is especially useful when not filtering unmatched items, or using some more advanced item matcher algorithms like acronym or shorthand.

This feature is already available in the WPF version, but is new for the UWP and WinForms versions.

Python Language Add-on

As described in this previous post, the Python Language Add-on is new for the WinForms version of SyntaxEditor.

We've also updated the IntelliPrompt completion in the add-on to dynamically show toggle button and tab filter UI based on the items that are present.  For instance, in the animation above when there were no classes available in the list, there was no "Classes" toggle button in the UI.

New Icons

As described in this previous post, the WPF and UWP Metro icons used in IntelliPrompt have been drawn from scratch as vector icons and will render crisp and clear on any high DPI monitor. 

The WinForms version is getting Metro icons as well, whereas they only had Classic icons before.

What's Next

We have IntelliPrompt completion, parameter info, and quick info completed for all three platforms.  Next is to knock out code snippet UI and then all IntelliPrompt features should be about done.

WinForms SyntaxEditor vNext Updates

by Avatar Bill Henning (Actipro) - 2 comments
Friday, November 16, 2018 at 7:38pm

BlogPostBanner-SyntaxEditor-DevNotes

As mentioned in a previous post, we have been working on refactoring the core internal implementation of our SyntaxEditor code editor control on the WPF, UWP, and WinForms platforms.  This effort (codenamed vNext) is being made to bring all three platforms onto the same codebase for easier updating moving forward, and to enhance features wherever possible.

In today's post, I wanted to call out a couple of new WinForms SyntaxEditor vNext updates that are being made as part of unifying the codebase across all platforms.  These features were already available in the WPF and UWP versions.

Python Language Add-on

While we've had an advanced Python language add-on for the WPF and UWP versions of SyntaxEditor for a while, due to infrastructure differences, it was never available in WinForms. 

SyntaxEditorWinFormsPython

This is all changing in vNext.  The full add-on will be available, including automated IntelliPrompt as seen ion the WinForms SyntaxEditor screenshot above.

NavigableSymbolSelector Control

The WinForms version had a dropdown that sat above the editor and could be used for .NET language types and members.  The problem is that it was limited to the C# and VB languages only, since it shipped in the WinForms .NET Languages Add-on.

In vNext, we have a NavigableSymbolSelector control that can display one or two dropdowns.  And any language can be wired up to show symbols, not just C# and VB.  In the screenshot above, you can see Python showing the current function in it.

What's Next

We are currently working through porting IntelliPrompt feature areas to vNext.  Quick info and parameter info popups are completed.  Next, we will move onto completion lists.