Tweets by @Actipro
Please take some time to learn more about us and our product offerings.
The latest maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls had some major work done on SyntaxEditor's line modification marks feature. In fact, its internal logic was completely rewritten and improved.
Line modification marks use colored bars in the selection margin to tell the end user whether changes have occurred on the line, and whether those changes have been saved.
This animation shows this feature in action:
New changes will turn the marks yellow to reflect that those lines are “dirty” (unsaved). If you then "save" the document (which I do above after typing on two lines), the marks turn green to indicate they are now saved.
While the yellow and green marks were present in older versions, there were some bugs that could occur with their tracking over the course of multiple text changes. Those bugs have been fixed in this latest maintenance release.
In addition we also have added orange marks, that occur when you undo past the save point. They show anything that is different from what was saved but is not different from the document when it was originally opened.
These great new features match exactly with what is in Visual Studio and are wonderful for end users. Grab the latest 2016.1 builds to add them to your own apps!
Very large maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.
We've been blogging about our new TreeListBox and TreeListView controls for a little while now. They have been in private alpha testing and now we have placed the alpha test in a new public Grids assembly that has shipped in this WPF and UWP maintenance release.
TreeListBox is a TreeView-like control but has many advanced features like those found in the Visual Studio Solution Explorer. See this blog post for some details on the feature list.
TreeListView inherits TreeListBox and includes all of the tree hierarchy features found in it. It also displays each row similar to a ListView, columns and all! This blog post summarizes the features found in this control.
With this public alpha release of the controls, you are able to start using them and can provide us with feedback. We'd love to hear from you, whether it be via our ticket system or Slack. Our plan is to finalize them for the 2017.1 version, but they should be pretty stable for usage now. Anyone with a WPF/UWP Studio or PropertyGrid license should be able to use them immediately under your existing 2016.1 license.
Going forward, we have already made major progress on rewriting our PropertyGrid control and basing it on TreeListView. So far, performance tests are showing that it's loading large property trees almost instantly. We'll blog more on this in the upcoming weeks.
There were a lot of tweaks and bug fixes in this build for the Docking/MDI product. We recommend you grab the latest if you use Docking/MDI.
There were numerous improvements too, including some more major ones like:
Line modification mark tracking logic has been completely rewritten. It now works much better and even introduces new orange marks that track "reverted" changes, similar to how the Visual Studio editor does.
We added the ability for a programmatically created text change to merge into previous text change on the undo stack. This allows you to chain additional text changes onto previous ones and have them be undoable as a single unit.
We added a new property that can be set to false to only allow backspacing over a single character when the document's AutoConvertTabsToSpaces is true.
The PasteDragDrop event is now also raised drag over events so that the drag effects can be manually altered.
The ITextChange.CustomData property is now settable so it can be updated after the text change was created as needed.
A text formatter for the JSON language has been implemented that beautifies the JSON data.
We added the DynamicImage control, which is a drop-in replacement for Image that will auto-grayscale the image content when the control is disabled. Going along with this, we updated ImageConverter to return a DynamicImage instance instead of Image. Our toolbar, menu, and Ribbon control themes have been updated to use DynamicImage so that you get grayscale effects on images out-of-the-box. Note how the cut, copy, and undo buttons are all grayscale when disabled in the screenshot above.
If you encounter a 'Could not find a part of the path' to bitmap image source error after upgrading to this version, specify the absolute path to the image source using pack syntax as described in the DynamicImage documentation instead of using a relative path.
We moved ImageToMonochromeConverter from our Ribbon assembly to Shared and renamed it to ImageSourceContentConverter. Along the way, it was updated to work on vector GeometryDrawings too. We added an attached ImageSourceContentConverter.CanConvertToMonochrome property, which can be set on portions of a DrawingImage that shouldn't be converted to monochrome, such as areas that display a selected color. We also added a ImageSourceContentConverter.Mode property that sets whether to convert to grayscale (default) or monochrome.
All products received numerous other minor enhancements and bug fixes. See the announcement posts for the detailed list of enhancements and updates:
In the last blog post on our TreeListBox control development, we announced that the TreeListBox control was ready for closed alpha testing. TreeListBox is a new control that has much of the same functionality as the tree control found in the Visual Studio Solution Explorer.
In today's post, I'd like to announce a new TreeListView control that is now also ready for alpha testing. The TreeListView control is a multi-column variant of the TreeListBox control that renders similar to a standard ListView but has all the tree and advanced features found in TreeListBox.
The animation above shows several of the features found in this new control such as node expansion, column resizing, column reordering, column header context menus, and more.
Thus far these TreeListView features have been completed:
If you would like to start working with either of the controls and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing. Now is the time to contribute your additional feature ideas and report bugs. Anyone who has a WPF Studio license is fully licensed to use the control in their apps.
In this quarter, we published new maintenance releases of all our control products and released the 2016.1 WinForms Controls. In terms of development, we've been working on a new Grids product (for WPF and UWP) that will initially consist of a TreeListBox, similar to the tree control found in the Visual Studio Solution Explorer. That control is already in alpha testing to some customers. While that testing is ongoing, we have made great progress on a TreeListView control, which is a multi-column variant of the TreeListBox control. This control features everything you find in a standard ListView, along with all the features of TreeListBox, and additional ones like column reordering, frozen columns, etc. We'll post more on this new control very soon.
Development of the TreeListView control is currently the primary focus. We hope to wrap that up for alpha testing in the next two or three weeks. After that we have some other plans for derived controls that are based on the foundation provided by TreeListBox and TreeListView that we will be getting into.
A new version of our Windows Forms controls has been released. This version includes several large new features along with numerous minor bug fixes and updates. First, these are some of the major new features…
When a new DockManager property is set to true, documents can be floated to their own window. This allows them to be moved to and maximized on a second monitor.
We've always had layout serialization for tool windows but now tabbed document windows can have their layouts serialized as well.
The C# parser in the WinForms .NET Languages Add-on has been updated to support the parsing of C# 5.0 syntax.
See the announcement post for the detailed list of other enhancements and updates.
In the last blog post on our TreeListBox control development, we talked about new features like async loading and inline editing that were added. In today's post, we'll talk about some more new features and we're also announcing that the alpha test of this control is now ready.
If you would like to start working with the control and provide us with feedback, please write our support address or chat with us on Slack to sign up for testing. Now is the time to contribute your additional feature ideas and report bugs. Anyone who has a WPF Studio license is fully licensed to use the control in their apps.
Since our new post, we've continued to enhance the control and add new features. First, you now can optionally display the root item in the control. When you choose not to do so (the default), the root node's children will be the top-level items.
There is now more control over expandability and when children are queried.
A robust drag and drop system supports dragging to external controls, dragging and dropping on the same control, and dropping from external controls. You have full control over the visual feedback that is provided and what happens when a drop executes.
The control supports data virtualization when virtualized lists of child items are used. With data virtualization, it's possible to support paged retrieval of items as they are requested for display.
A couple new options determine how far items are indented based on their depth.
Thus far these features have been completed (New! marks new features since the last post):
The TreeListBox control is now ready for alpha testing. Please contact us via our ticket system or in Slack to sign up for testing and send in your feedback. We will continue to refine the API based on your feedback before a future final release.
Maintenance releases of our v2016.1 WPF, Universal Windows, and Silverlight controls have been released and are now available for download.
Docking/MDI for WPF and UWP has several new options that give you more control over UI appearance. Tab text on tabbed MDI tabs will now trim long text with ellipses in the middle, instead of the end, allowing for filenames to be more readable.
SyntaxEditor's completion and parameter info providers in all language add-ons now allow you to intercept OnSessionOpening, even when no items were pre-populated, so that you can add your own custom items/info. Cut, copy, paste, drag, and drop all now support the block and full line flags that are compatible with Visual Studio. The Python Language Add-on added a text range property to all type and function definitions, allowing you to implement features like go to definition easier.
The Shared Library added a new RingSpinner control that is an animated ring where the two ring segment ends chase each other around the circle. It's great for display while performing a lengthy operation.
In the last blog post on our TreeListBox control development, we gave a list of features that have been implemented so far and showed a screenshot of sample usage with rendering customization. In today's post, we'll show some more usage scenarios, will request your immediate input for drag/drop, and will give an updated feature list.
First, what's new since the last post? We now have multiple options for governing if and when the determination of expander display is made for a node. This is handy when you want to do minimal data model access checking for children, or when you know for certain that a node never has child nodes.
We now support optional async loading features where you'll be able to utilize a new RingSpinner control (or any other busy indicator) to relay a loading state to the end user. Async loading means that potentially lengthy operations such as file or database access won't block the UI thread when expanding a node.
Here's an example of async loading, where a simulated random delay is invoked when expanding each file folder:
Notice how the UI remains fully responsive even while loading items.
Inline editing is fully supported when enabled. Press F2 or single click on a node's content to enter edit mode where a new text value can be entered. Pressing Enter or losing focus commits the value, while pressing Esc cancels the edit.
An event will fire when an item requests a context menu. Dynamically create the menu for that particular item (or the entire multi-item selection).
Drag and drop is one of the last features we want to get in place before an alpha test version is prepared of the control. This is a complex topic since it involves single/multi-selected items (that could be at various tree depths) being dragged and dropped at other depths, or even dragged externally. Likewise, external items could be dragged onto the control. We want to get your feedback now as we start on drag/drop features to ensure we meet all your needs!
Please either write our support address with your feedback or join our Slack discussion on the topic and chat right with us. The benefit of the chat option is that we are posting screenshots and asking for feature input right during development. It gives you an opportunity to give direct feedback and help guide features.
The TreeListBox control continues to progress well and its feature set is coming right in line with the VS Solution Explorer's tree control's feature set. We look forward to discussing drag/drop feature requirements with you via our ticket system or in Slack!
Last month we posted that we were beginning development of a new TreeView replacement control that addressed the many shortcomings of the native WPF TreeView, and were asking for input at that time. We've been working on this control for both WPF and UWP and have made very good progress.
Thus far these features have been completed:
Here's a screenshot of a recent sample being put together for the control:
In this sample, we have two levels of nodes. The top-most level is folders (whose icons actually toggle with the expand/collapse state), while the inner level has checkboxes and buttons that allow for a dialog to be displayed when clicked for further configuration.
Double-clicking a folder item will toggle its expansion state, while double-clicking a checkable node will toggle its checked state. This sample also shows usage of a DataTemplateSelector to pick which DataTemplate to use for each node.
The control is coming along really nicely and our goal is to match general features found in the VS Solution Explorer. The features above are implemented for both WPF and UWP. We still have more features planned before we open up a beta.
If you have any other suggestions, please either write our support address with your feedback or join our Slack discussion on the topic and chat right with us. The benefit of the chat option is that we are posting screenshots and asking for feature input right during development. It gives you an opportunity to give direct feedback and help guide features.
In this quarter, we completed work on the major rewrite of our popular Docking/MDI product for WPF. The entire product was rewritten from the ground up to support next generation docking window features, all while maintaining a similar overall public API. In the new version, floating documents become full-featured secondary dock hosts that even support docked tool windows around them. This sort of thing is wonderful for end users with multiple monitors. Fast subtle animations are used throughout the product to give the interface a more vibrant feel. New layout properties and features are available that govern the size of containers (including min/max sizes), set initial floating window size, etc. Interop content support is improved even further. MVVM support is enhanced with many more bindable properties, default location determination for opening windows, and more. Download the 2016.1 version to take the best WPF docking window framework for a test drive.
And best of all, we didn't just make it for WPF. The entire product was written to be compatible with Universal Windows too! Download our Universal Windows controls to see a beta of the same docking window framework there.
The WPF Controls 2016.1 version added the Docking/MDI features described above, along with 14 new Office 2016-like themes that use accent colors, improved window chrome rendering, Metro themes built right into the Shared library, SyntaxEditor light/dark Metro image sets, and much more.
The Universal Windows Controls 2016.1 version was our first release for that platform. It was a port of our older WinRT/XAML Controls and included everything in those, along with the Docking/MDI beta.
Our Code Writer app also saw a new minor version, which will be the last one before a major new version for Windows 10 is released.
Finally, we have created a Slack team that enables you, our customers, to chat directly with us regarding new products and features.
We're currently working on a custom TreeView control that will support more features than the native WPF TreeView. Our goal is to support the rich functionality of a control like the TreeView in Visual Studio's Solution Explorer tool window. It's being written from scratch for both WPF and Universal Windows using virtualization to keep it very speedy, and is capable of multi-selection, easy bring-into-view, etc. If you'd like to give us feedback on what you'd like to see in a new TreeView control, now is the time to get your feedback in! Either email our support address with your feedback or join our Slack discussion on the topic. Slack is preferred because we are sharing screenshots there and frequently ask for comments on feature areas. After this base control is completed, we'll move into some more new complex data presentation controls like multi-column trees.
We've started on the design of the updates for the Windows 10 version of our Code Writer app. We've got a UI design that looks promising and is a bit of of a UWP take on popular apps like VS Code and Sublime. We also have a Slack channel where we're discussing that, so please sign up to see where things are headed and get your feedback in.