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.

SyntaxEditor vNext Vector and Metro Images

by Avatar Bill Henning (Actipro)
Friday, November 9, 2018 at 5:29pm

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.

We've been plowing through remaining SyntaxEditor feature areas that need to be ported to our vNext codebase, and there are only a few left.  One that we just completed is updating images used in the product, which appear in IntelliPrompt popups and the NavigableSymbolSelector.

Vector Metro Images (WPF/UWP)

The WPF and UWP versions of SyntaxEditor have had Metro Light and Metro Dark image set options for quite a while now.  But they've always been raster (bitmap) graphics that don't appear crisp on high DPI monitors.  This is something we're addressing in vNext.

For vNext, all of the Metro images will be vector images.  They will look crisp and clear at 16x16 100% DPI, but will look just as good (if not better) when used on high DPI monitors.

Here's the images at 200%:

SyntaxEditorVectorImages

Metro Images for WinForms

The WinForms SyntaxEditor has only had the Classic image set in the past.  The Classic image set is similar to the full color gradient images found in earlier versions of Visual Studio.

In vNext, we're bringing the Metro Light and Metro Dark image sets as options to the WinForms SyntaxEditor, with the Metro Light set as the default.

What's Next

We are continuing to work through remaining feature areas that need porting to the vNext codebase.  The last big one to tackle is IntelliPrompt.  Some of the UI pieces involved in IntelliPrompt need to be updated a bit for compatibility between the three platforms.  Once we get that going, these new vector images will look amazing in the IntelliPrompt UI.

WPF, UWP, and Silverlight v2018.1 Maintenance Releases

by Avatar Bill Henning (Actipro)
Wednesday, October 17, 2018 at 12:22pm

SyntaxEditor vNext Performance Tuning and Printing

by Avatar Bill Henning (Actipro) - 2 comments
Monday, October 15, 2018 at 4:48pm

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.

For the last three weeks or so of SyntaxEditor vNext development, we've been working on performance profiling and printing support.

Performance Profiling

As part of vNext, we are doing our best to speed up the editor even more than before. 

The Universal Windows version of SyntaxEditor is many times faster than the current UWP SyntaxEditor.  A large part of that is due to the newer way we measure and render the control in vNext, which is significantly faster than what we were able to do in the past.  Other tunings also help.  Let's examine some performance results.

Using page-down to scroll through a large document, we're seeing a 3.5x speed increase in the vNext UWP SyntaxEditor!  UWP SyntaxEditor speed increases when dragging the scrollbar thumb are even more evident.  There is a bit of a lag in the current UWP SyntaxEditor, whereas in the vNext UWP SyntaxEditor, the display is instant and tracks with the dragged thumb perfectly.

Running the same page-down scrolling test in WinForms, we're seeing a 20% improvement in speed over the older version.  The WPF version is seeing a slight improvement in scrolling speed over before as well, although it has always scrolled extremely fast.

We are continuing to work on tuning the API to maximize performance when scrolling and editing.

Printing

Printing support has been added back into vNext for the WPF and WinForms versions.  We are currently working on the UWP version's printing support.  These features allow you to easily print out a document to paper, or a PDF file using the "Microsoft Print to PDF" virtual printer found in Windows 10.

What's Next

We are going to wrap up UWP printing support next, and then will move onto a few other areas left to port over to the API.  Large remaining areas include searching and IntelliPrompt feature APIs.