Code Writer v3 Released

by Avatar Bill Henning (Actipro)
Friday, December 1, 2017 at 9:21pm

BlogPostBanner-CodeWriter-v3

Reimagined Windows 10 Design

ExplorerSideBar

NewDocumentPopup

CommandPalette

SideBarCollapsed

The app is minimalist in nature, and while it does feature a side bar, the side bar can be collapsed by pressing the unpin button.  This affords a distraction-free environment while you edit text/code.

Code Writer has find/replace functionality, print/share support, advanced editing commands, and a wide array of settings. 

Summary

If you have the Windows 10 Fall Creators Update or later, download Code Writer for free from the Windows Store today to check out v3.0 and all it has to offer.  The new redesign has been a labor of love that has been in development for many months.  We're very pleased to get it out into your hands as a showcase of what you can do with Actipro's Universal Windows Controls.  Enjoy!

Want to get the latest news about Code Writer?  Follow our @CodeWriterApp Twitter account.

Want to chat with us about Code Writer?  Please register to join our Slack workspace and join the #codewriter channel once added.

If you are a Universal Windows app developer, you can download a free evaluation of our Universal Windows Controls to use in your own apps.  Code Writer makes use of our SyntaxEditor, Docking/MDI, PropertyGrid, and Editors controls.  SyntaxEditor is of particular interest because it lets you add advanced code and text editing to your own apps.

TaskWideLearnMore TaskWideWindowsStore

SyntaxEditor vNext - Touch Panning and Zooming

by Avatar Bill Henning (Actipro)
Monday, November 20, 2017 at 9:41pm

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 is being made to bring all three platforms onto the same codebase for easier updating moving forward, and to enhance features wherever possible.

In the previous post, we discussed how a new text rendering engine was being built that improved rendering speed, and how numerous scrolling improvements have been made.  In today's post, we'll take a look at how some new touch-input features are being added to vNext that take advantage of the rendering engine and scrolling enhancements.

Touch Interaction

In the current version, the UWP SyntaxEditor is the only one that supports touch-based scrolling, and its implementation scrolls in a line-based fashion, making the scroll experience choppy.

In vNext, we wanted to improve this.  As seen in the animation below, we've added touch scrolling support to the WPF, UWP, and WinForms SyntaxEditors, and the scrolling is pixel-smooth.  The scrolling even uses inertia, allowing for flick scrolling!

SyntaxEditorTouch

The WPF and UWP platforms support touch zooming as well, which can also be seen in the animation above.  Simply take two fingers and pinch to zoom.  It all uses smooth animated transitions too.

Summary

Adding improved touch input support is something we've wanted to do for a long time.  We're very pleased with how these features have turned out so far.

SyntaxEditor vNext Is Progressing

by Avatar Bill Henning (Actipro) - 4 comments
Monday, November 13, 2017 at 8:37pm

BlogPostBanner-SyntaxEditor-DevNotes

We've spent the past three months mostly working on redesigning some of the core implementation of our SyntaxEditor control and wanted to give an update today on where things stand.  From this point forward, we'll call this development effort "SyntaxEditor vNext".

Unified Text Rendering Engine

The first phase of this was described in our previous Building a Better SyntaxEditor Text Rendering Engine post.  What we've done is come up with a common API that can be used for text rendering and is the same across WPF, UWP, and WinForms.  It allows consumers of this text rendering API (namely SyntaxEditor) to have a single way to perform all its core text formatting/rendering, etc. 

This is important because when we have a common API wrapper for performing those difficult and very platform-specific tasks, we are able to consolidate all the code that calls into that API to be more or less platform agnostic.  And that means the WinForms SyntaxEditor will see some huge benefits.  More on that below.

Universal Windows

The new UWP text rendering engine implementation is much, much faster than the current way we render text in the UWP SyntaxEditor.  In fact it might even be rendering faster than the WPF version now!  The new UWP text rendering engine also allows for more culture-sensitive logic involving caret movement, right-to-left text, etc.

Windows Forms

The new WinForms text rendering engine implementation is also faster than before and now supports culture-sensitive logic involving caret movement, right-to-left text, etc. 

WPF

The WPF text rendering engine implementation has always been the most advanced one, and it's getting even better.  It features improved efficiency and handles extremely long lines better.

Getting the WinForms SyntaxEditor on the Common Codebase

Per above, a key benefit of having a common API for text formatting/rendering is to finally make progress on migrating the WinForms SyntaxEditor to share code with the other newer platforms that already share a majority of code.  This would mean that the WinForms version would get all the benefits of the more advanced add-ons found in the WPF version, etc. 

This is huge for WinForms SyntaxEditor customers, and parity with the WPF version is something many customers have asked for.

Refactoring the SyntaxEditor Internals

In more recent weeks, we've been refactoring a lot of SyntaxEditor's internals that are related to views, including view management, splitting, scrolling, etc.  We're building a new internal codebase for those features that works the same across WPF, UWP, and WinForms.  And best of all, we're doing our best to keep the same public API as the current WPF version so that there will be minimal breaking changes.

The refactoring is going well thus far, but it is a long process since we're adding feature areas back in one by one with more efficient code and in numerous cases, with additional features.  Here's some examples of improvements in the scrolling area…

Scrolling Improvements

Scrolling has been improved so that you can easily scroll an editor view to any line and even designate if that line should appear near the top/center/bottom of the view, and how far to pixel offset from that location.  This will be wonderful for features like go to line.

When resizing an editor view that is scrolled to the right, if you now resize it even wider, the view lines will anchor to the right when appropriate to make sure not too much whitespace appears at the right side of the view.  In the current SyntaxEditor implementations, the horizontal scrollbar wouldn't scroll at all in that scenario, leading to a lot of extra blank space on the right side of the view.

When vertically scrolling through documents with various view line widths, the current SyntaxEditor implementations will adjust the horizontal scrollbar maximum mostly based on the visible view lines' maximum width.  The newer implementation tries to remember longer line max widths it's seen in the past and prevents a lot of the horizontal scrollbar maximum jumpiness that can happen when scrolling vertically.

Summary

We're really excited about where things are heading.  Not only are we getting a better internal codebase for managing a lot of view-related features, we're adding features as we go, and are consolidating the WPF, UWP, and WinForms codebases such that they will share 95%+ of the code.  This will allow for language add-on codebases to be shared across all platforms.  And the public SyntaxEditor API changes for the WPF/UWP platforms will be kept to a minimum.

If you have any specific view-oriented features that you'd like to see in SyntaxEditor, now is the time to get your suggestions in. 

We're chatting daily about progress in our Slack workspace and would love for you to discuss SyntaxEditor with us there.

WPF, UWP, and Silverlight v2017.2 Maintenance Releases

by Avatar Bill Henning (Actipro) - 1 comment
Wednesday, November 1, 2017 at 12:17pm

BlogPostBanner-2017.2-Maint

Our v2017.2 WPF, Universal Windows, and Silverlight controls have all been updated with new maintenance releases that are now ready for download.  It is highly recommended that you get these new builds since many products received numerous minor enhancements and bug fixes. 

Let's take a quick look at some of the more notable features that were added.

Docking/MDI

The mouse wheel can now scroll document tabs when in an overflow situation and using certain tab overflow behaviors.

Editors

Updated the color pickers such that the end user can tap and drag anywhere in a hue ring or saturation/brightness square to change color attributes, and not just on the thumb.

BrushEditBoxOpened

Added a new drop-down to ColorPicker that allows switching between RGB and HSB text input modes.

ColorEditBoxHsb

Added new features for adding custom inline UI elements within edit boxes, like the "Now" button in the TimeEditBox below.

TimeEditBoxInline

Improved the DateEditBox and TimeEditBox default formats to better support parsing of entered text values that lack part delimiters.

Grids

Added the TreeListViewColumn.SortDirection property and related ColumnSortDirection enumeration that can be used to indicate that a sort glyph should appear in the column header when paired with a custom sorting mechanism.

TreeListViewSortIndicators

Improved TreeListBox to better handle property updates from view-models on other threads.

Improved TreeListBox selection tracking performance.

SyntaxEditor

Improved numerous edit actions to retain their final selection after the action goes through an undo/redo process.

Improved how Tab indenting is handled when there is a block selection.

Improved the Cut Line to Clipboard edit action to support multiple lines.

Improved the .NET Languages Add-on's logic for selecting the best IntelliPrompt parameter info member overload when typing a comma at the end of an argument list.

SyntaxEditorXmlLineCommenter

Improved the XML line commenter in the Web Languages Add-on to comment the entire line text when there is no selection.

Summary

There were also a large number of smaller improvements made throughout the products.  See the announcement posts for the detailed list of enhancements and updates:

TaskDownload TaskBuyNow

Building a Better SyntaxEditor Text Rendering Engine

by Avatar Bill Henning (Actipro) - 1 comment
Monday, October 2, 2017 at 4:28pm

BlogPostBanner-SyntaxEditor-DevNotes

The past several weeks, we've been prototyping a new core text rendering engine for future use with SyntaxEditor (and possibly other products) that can be used across multiple platforms.  This text rendering API is the same across all supported platforms, which currently are WPF, UWP, and WinForms.  The implementation of that common API is platform-specific behind the scenes since each UI platform supports rendering text in very different ways.

SyntaxEditor would be a consumer of that text rendering API.  By using that text rendering API that is common across platforms, we could consolidate all the SyntaxEditor logic related to text formatting, rendering, and hit testing to be the same.

Platform Benefits

First the UWP version's text rendering implementation in this new engine is lightning fast, and would yield a massive rendering speed increase when merged into the UWP SyntaxEditor, compared to our current way of rendering text in the UWP SyntaxEditor.  It also would be more culture-sensitive with better logic on caret movement, right-to-left text, etc.

The WinForms version's implementation is also fast and compared to the current WinForms SyntaxEditor's way of rendering text, would gain culture sensitivity for caret movement, right-to-left text, etc.  Having a common text rendering API with other platforms would also be a big step in moving the WinForms SyntaxEditor down a path towards using the same general SyntaxEditor API as the other newer UI platforms use.  A future goal is to make this happen so that changes we make to features, add-ons, etc. can flow freely between all the SyntaxEditor platforms.

Finally the WPF version's text rendering is already very fast and culture-sensitive, but there are several logic enhancements we're making to improve speed when rendering long lines.

What's Next

We're still working on everything, but so far, tests in separate projects are very promising for the future of this text rendering API experiment.

Once things are finalized a bit more, we may plug it into one of the platforms like UWP to begin actual usage testing with SyntaxEditor.  This process will take some time since we will have to pull out all the plumbing for the current SyntaxEditor text rendering implementation, and adjust things to work with this new API.  We will give some updates once we make progress on that end.