Add project files.

This commit is contained in:
Ankitkumar Satapara
2026-04-17 22:31:58 +05:30
commit 21aaef6776
473 changed files with 50152 additions and 0 deletions

353
CHANGELOG.md Normal file
View File

@@ -0,0 +1,353 @@
## Changelog
#### **In development**
> - Breaking Changes:
> - Features:
> - Bugfixes:
#### **Version 7.1.0**
> - Breaking Changes:
> - Added ProcessHandledEvents to IInputHandler and removed it from InputProcessor
> - Renamed EditorGestures.Editor.ResetViewportLocation to EditorGestures.Editor.ResetViewport
> - Features:
> - Introduced a new BringIntoView method overload in NodifyEditor that accepts an offset from the viewport edges
> - Added BringIntoViewEdgeOffset to NodifyEditor to control the viewport edge offset when bringing the focused element into view
> - Added ResetViewport to NodifyEditor to reset the viewport's location and zoom
> - Improved tab and directional navigation, ensuring that focused elements are automatically brought into view
> - Added keyboard navigation layers for nodes, connections and decorators; restricting keyboard navigation to the active layer
> - Added ActiveNavigationLayer, ActivateNextNavigationLayer, ActivatePreviousNavigationLayer, RegisterNavigationLayer, RemoveNavigationLayer and ActivateNavigationLayer to NodifyEditor for keyboard layers management
> - Added KeyboardNavigationLayer property to NodifyEditor that allows navigating through the ItemContainers
> - Added AutoRegisterConnectionsLayer, AutoRegisterDecoratorsLayer, AutoFocusFirstElement, AutoPanOnNodeFocus, PanViewportOnKeyboardDrag and MinimumNavigationStepSize to NodifyEditor
> - Added EditorGestures.Editor.Keyboard for keyboard navigation gestures
> - Added FindNextFocusTarget, OnElementFocused and OnKeyboardNavigationLayerActivated virtual methods to NodifyEditor
> - Added new gestures for keyboard navigation available in EditorGestures.Editor.Keyboard
> - Added ToggleContentSelection to GroupingNode and its corresponding gesture to toggle the selection of nodes inside the group
> - Added ZoomIn, ZoomOut and ResetViewport methods to the Minimap control
> - Added ZoomIn, ZoomOut, ResetViewport and Pan gestures to EditorGestures.Minimap
> - Added NavigationStepSize static property to Minimap
> - Added Unbind to all gestures inside EditorGestures
> - Added the KeyComboGesture that requires a trigger key to be held down before pressing a combo key
> - Added FocusVisualPen and FocusVisualPadding dependency properties to BaseConnection
> - Added default focus visuals for base editor controls that can be included by referencing the FocusVisual.xaml file
> - Added MaxHotKeys and HotKeysDisplayMode static configuration fields to PendingConnection
> - Added HotKeyControl with its corresponding theme resources to display the hotkeys for a pending connection
#### **Version 7.0.4**
> - Features:
> - Added AsRef extension method to InputGesture to convert it to an InputGestureRef
> - Bugfixes:
> - Fixed an issue where the gesture used for EditorGestures.Editor.SelectAll extracted from the ApplicationCommands was assumed to be a KeyGesture
> - Fixed overrides of DrawDirectionalArrowheadGeometry virtual method not working in subclasses of the built in connections
> - Fixed a memory leak caused by the auto panning timer
#### **Version 7.0.3**
> - Bugfixes:
> - Fixed an issue where the SelectedEvent and UnselectedEvent events on the ItemContainer were not raised when the selection was completed
#### **Version 7.0.2**
> - Features:
> - Added EditorGestures.Editor.SelectAll
> - Bugfixes:
> - Fixed an issue where the EditorCommands.SelectAll gesture could not be customized
#### **Version 7.0.1**
> - Bugfixes:
> - Fixed an issue where connections would not gain focus when selected, which could prevent editor keybindings from functioning in certain scenarios
> - Resolved an issue where selecting a node did not deselect connections and vice versa
> - Fixed a bug preventing ItemContainers from being selected when the mouse could not be captured
> - Fixed an issue with key detection in Japanese IME environments, causing issues with the MouseGesture
#### **Version 7.0.0**
> - Breaking Changes:
> - Made the setter of NodifyEditor.IsPanning private
> - Made SelectionHelper internal
> - Renamed HandleRightClickAfterPanningThreshold to MouseActionSuppressionThreshold in NodifyEditor
> - Renamed StartCutting to BeginCutting in NodifyEditor
> - Renamed Connector.EnableStickyConnections to ConnectorState.EnabledToggledConnectingMode
> - Renamed PushItems to UpdatePushedArea and StartPushingItems to BeginPushingItems in NodifyEditor
> - Renamed UnselectAllConnection to UnselectAllConnections in NodifyEditor
> - Removed DragStarted, DragDelta and DragCompleted routed events from ItemContainer
> - Replaced the System.Windows.Input.MouseGesture with Nodify.Interactivity.MouseGesture for default EditorGesture mappings
> - Removed State, GetInitialState, PushState, PopState and PopAllStates from NodifyEditor and ItemContainer
> - Replaced EditorState and ContainerState with InputElementState
> - Moved AllowCuttingCancellation from CuttingLine to NodifyEditor
> - Moved AllowDraggingCancellation from ItemContainer to NodifyEditor
> - Moved EditorGestures under the Nodify.Interactivity namespace
> - Moved editor events under the Nodify.Events namespace
> - Features:
> - Added BeginPanning, UpdatePanning, EndPanning, CancelPanning and AllowPanningCancellation to NodifyEditor and Minimap
> - Added MouseLocation, ZoomAtPosition and GetLocationInsideMinimap to Minimap
> - Added UpdateCuttingLine to NodifyEditor
> - Added Select, BeginSelecting, UpdateSelection, EndSelecting, CancelSelecting and AllowSelectionCancellation to NodifyEditor
> - Added IsDragging, BeginDragging, UpdateDragging, EndDragging and CancelDragging to NodifyEditor
> - Added AlignSelection and AlignContainers methods to NodifyEditor
> - Added LockSelection and UnlockSelection methods to NodifyEditor and EditorCommands
> - Added ItemsMoved routed event to NodifyEditor
> - Added HasCustomContextMenu dependency property to NodifyEditor, ItemContainer, Connector and BaseConnection
> - Added Select, BeginDragging, UpdateDragging, EndDragging and CancelDragging to ItemContainer
> - Added PreserveSelectionOnRightClick configuration field to ItemContainer
> - Added BeginConnecting, UpdatePendingConnection, EndConnecting, CancelConnecting and RemoveConnections methods to Connector
> - Added FindTargetConnector and FindConnectionTarget methods to Connector
> - Added a custom MouseGesture with support for key combinations
> - Added InputProcessor to NodifyEditor, ItemContainer, Connector, BaseConnection and Minimap, enabling the extension of controls with custom states
> - Added DragState to simplify creating click-and-drag interactions, with support for initiating and completing them using the keyboard
> - Added InputElementStateStack, InputElementStateStack.DragState and InputElementStateStack.InputElementState to manage transitions between states in UI elements
> - Added InputProcessor.Shared to enable the addition of global input handlers
> - Move the viewport to the mouse position when zooming on the Minimap if ResizeToViewport is false
> - Added SplitAtLocation and Remove methods to BaseConnection
> - Added AllowPanningWhileSelecting, AllowPanningWhileCutting and AllowPanningWhilePushingItems to EditorState
> - Added AllowZoomingWhilePanning, AllowZoomingWhileSelecting, AllowZoomingWhileCutting and AllowZoomingWhilePushingItems to EditorState
> - Added EnableToggledSelectingMode, EnableToggledPanningMode, EnableToggledPushingItemsMode and EnableToggledCuttingMode to EditorState
> - Added MinimapState.EnableToggledPanningMode
> - Added ContainerState.EnableToggledDraggingMode
> - Added Unbind to InputGestureRef and EditorGestures.SelectionGestures
> - Added EnableHitTesting to PendingConnection
> - Bugfixes:
> - Fixed an issue where the ItemContainer was selected by releasing the mouse button on it, even when the mouse was not captured
> - Fixed an issue where the ItemContainer could open its context menu even when it was not selected
> - Fixed an issue where the Home button caused the editor to fail to display items when contained within a ScrollViewer
> - Fixed an issue where connector optimization did not work when SelectedItems was not data-bound
> - Fixed EditorCommands.Align to perform a single arrange invalidation instead of one for each aligned container
> - Fixed an issue where controls would capture the mouse unnecessarily; they now capture it only in response to a defined gesture
> - Fixed an issue where the minimap could update the viewport without having the mouse captured
> - Fixed ItemContainer.Select and NodifyEditor.SelectArea to clear the existing selection and select the containers within the same transaction
> - Fixed an issue where editor interactions failed to cancel upon losing mouse capture
> - Fixed an issue where selecting a new connection would not clear the previous selection within the same transaction
#### **Version 6.6.0**
> - Features:
> - Added InputGroupStyle and OutputGroupStyle to Node
> - Added PanWithMouseWheel, PanHorizontalModifierKey and PanVerticalModifierKey to EditorGestures.Editor
> - Added CornerRadius dependency property to LineConnection, CircuitConnection and StepConnection
> - Added EditorGestures.Editor.PushItems gesture used to start pushing ItemContainers vertically or horizontally
> - Added PushedAreaStyle, PushedAreaOrientation and IsPushingItems dependency properties to NodifyEditor
> - Added NodifyEditor.SnapToGrid utility function
> - Bugfixes:
> - Fixed ItemContainer.BorderBrush and ItemContainer.SelectedBrush not reacting to theme changes
#### **Version 6.5.0**
> - Features:
> - Added SelectedConnection, SelectedConnections, CanSelectMultipleConnections and CanSelectMultipleItems dependency properties to NodifyEditor
> - Added IsSelected and IsSelectable attached dependency properties to BaseConnection
> - Added PrioritizeBaseConnectionForSelection static field to BaseConnection
> - Added EditorGestures.Connection.Selection
> - Added support for ScrollViewer in NodifyEditor (implements IScrollInfo)
> - Added NodifyEditor.ScrollIncrement dependency property
#### **Version 6.4.0**
> - Features:
> - Added OutlineBrush and OutlineThickness dependency properties to BaseConnection to support increasing the selection area without increasing the stroke thickness
> - Added IsAnimatingDirectionalArrows and DirectionalArrowsAnimationDuration dependency properties to BaseConnection to support controlling the animation from XAML
#### **Version 6.3.0**
> - Features:
> - Added a CuttingLine control that removes intersecting connections
> - Added CuttingLineStyle, CuttingStartedCommand, CuttingCompletedCommand, IsCutting, EnableCuttingLinePreview and CuttingConnectionTypes to NodifyEditor
> - Added EditorGestures.Editor.Cutting and EditorGestures.Editor.CancelAction
> - Bugfixes:
> - Fixed connection styles not inheriting from the BaseConnection style
#### **Version 6.2.0**
> - Features:
> - Added a Minimap control and EditorGestures.Minimap
> - Added ContentContainerStyle, HeaderContainerStyle and FooterContainerStyle dependency properties to Node
> - Added BringIntoView that takes a Rect parameter to NodifyEditor
> - Added the NodifyEditor's DataContext as the parameter of the ItemsSelectStartedCommand, ItemsSelectCompletedCommand, ItemsDragStartedCommand and ItemsDragCompletedCommand commands
> - Bugfixes:
> - Fixed hover effect and padding of NodeInput and NodeOutput for vertical orientation
> - Fixed ItemContainers being selected sometimes when double clicking the canvas
#### **Version 6.1.0**
> - Features:
> - Added new built-in connection type: StepConnection
> - Bugfixes:
> - Fixed CircuitConnection directional arrows not interpolating correctly
> - Fixed BaseConnection SplitEvent and DisconnectEvent not being raised if the corresponding command is null
> - Fixed DecoratorContainer scaling with zoom when not referencing a theme in App.xaml
> - Fixed style not applying to the default Connection template outside App.xaml
#### **Version 6.0.0**
> - Breaking Changes:
> - Added a parameter for the orientation to DrawArrowGeometry, DrawDefaultArrowhead, DrawRectangleArrowhead and DrawEllipseArrowhead in BaseConnection
> - Added source and target parameters to GetTextPosition in BaseConnection
> - EditorGestures is now a singleton instead of a static class (can be inherited to create custom mappings)
> - Selection gestures for ItemContainer and GroupingNode are now separated from the NodifyEditor selection gestures
> - Renamed EditorGestures.Editor.Zoom to ZoomModifierKey
> - Features:
> - Added SourceOrientation and TargetOrientation to BaseConnection to support vertical connectors (vertical/mixed connection orientation)
> - Added DirectionalArrowsCount to BaseConnection to allow drawing multipe arrows on a connection flowing in the connection direction
> - Added DrawDirectionalArrowsGeometry and DrawDirectionalArrowheadGeometry to BaseConnection to allow customizing the directional arrows
> - Improved EditorGestures to allow changing input gestures at runtime
> - Added new gesture types: AnyGesture, AllGestures, and InputGestureRef
> - Added Orientation dependency property to NodeInput and NodeOutput
> - Added DirectionalArrowsOffset dependency property to BaseConnection
> - Added StartAnimation and StopAnimation methods to BaseConnection
> - Bugfixes:
> - Fixed BaseConnection.Text not always displaying in the center of the connection
> - Fixed a bug where the item container would incorrectly transition to the dragging state on mouse over
#### **Version 5.2.0**
> - Features:
> - Added Text to BaseConnection, allowing displaying of text on connections
> - Added Foreground, FontSize, FontWeight, FontStyle, FontStretch and FontFamily to BaseConnection, allowing styling the displaying text
> - Bugfixes:
> - Fixed MouseCapture not being released when EnableStickyConnections is enabled and the PendingConnection is canceled by a key gesture
#### **Version 5.1.0**
> - Features:
> - Added ItemContainer.SelectedBorderThickness dependency property
> - Added NodifyEditor.GetLocationInsideEditor
> - Bugfixes:
> - Fixed PendingConnection.PreviewTarget not being set to null when there is no actual target
> - Fixed PendingConnection.PreviewTarget not being set on Connector.PendingConnectionStartedEvent
> - Fixed PendingConnection.PreviewTarget not being set to null on Connector.PendingConnectionCompletedEvent
> - Fixed connectors panel not being affected by Node.VerticalAlignment
> - Changing BorderThickness causes layout shift when selecting an item container
> - Fixed the unintentional movement caused by snapping correction
#### **Version 5.0.2**
> - Bugfixes:
> - Fixed NodeOutput content horizontal alignment
> - Fixed Connector not opening Context Menu
#### **Version 5.0.1**
> - Bugfixes:
> - Returning false from PendingConnection.StartedCommand.CanExecute does not stop the creation of a pending connection
> - BaseConnection.ArrowEnds does not display correctly when BaseConnection.Direction is ConnectionDirection.Backward
#### **Version 5.0.0**
> - Breaking Changes:
> - Removed BaseConnection.GetArrowHeadPoints
> - Removed BaseConnection.OffsetMode
> - Changed return type of BaseConnection.DrawLineGeometry to support both arrowheads no matter the number of points on the line
> - Changed the default for BaseConnection.SourceOffset and BaseConnection.TargetOffset from Size(0, 0) to Size(14, 0)
> - Changed the default for BaseConnection.ArrowSize from Size(7, 6) to Size(8, 8)
> - Features:
> - Added BaseConnection.SourceOffsetMode and BaseConnection.TargetOffsetMode
> - Added BaseConnection.ArrowEnds dependency property to allow configurable arrowhead ends
> - Added BaseConnection.ArrowShape dependency property to allow configurable arrowhead shape
> - Added NodifyEditor.EnableDraggingContainersOptimizations to allow receiving ItemContainer.Location updates in realtime
> - Added ConnectionOffsetMode.Static to allow offsetting the source and target points of the connection on the X and the Y axis without revolving around the source or target points
#### **Version 4.1.0**
> - Features:
> - Added EditorGestures.Selection.DefaultMouseAction to make it easier to change between mouse buttons for selection
> - Added EditorGestures.Selection.Cancel gesture to cancel the selection operation reverting to the previous selection
> - Added ItemsSelectStartedCommand and ItemsSelectCompletedCommand dependency properties to NodifyEditor for better undo/redo support
> - Bugfixes:
> - Fixed NodifyEditor.SelectedItems being empty after selection is completed
> - Fixed drag canceling when Drag and CancelAction are bound to the same gesture
#### **Version 4.0.1**
> - Bugfixes:
> - Fixed DisablePanning not working anymore
#### **Version 4.0.0**
> - Breaking Changes:
> - Removed Selection field from NodifyEditor
> - Removed InitialMousePosition, CurrentMousePosition, PreviousMousePosition fields from NodifyEditor
> - Removed ItemContainer.DraggableHost (use Editor.ItemsHost instead)
> - Made SelectionType required in SelectionHelper
> - Moved GroupingNode.SwitchMovementModeModifierKey to EditorGestures.GroupingNode
> - Pending connections are now restricted to connect only to Connectors or to NodifyEditors and ItemContainers if PendingConnection.AllowOnlyConnectors is false
> - Features:
> - Added Connector.EnableStickyConnections to allow completing pending connections in two steps
> - Added editor states which can be overriden by inheriting from NodifyEditor and implementing NodifyEditor.GetInitialState()
> - EditorState - base class for all editor states
> - EditorDefaultState
> - EditorSelectingState
> - EditorPanningState
> - Added container states which can be overriden by inheriting from ItemContainer and implementing ItemContainer.GetInitialState()
> - ContainerState - base class for all container states
> - ContainerDefaultState
> - ContainerDraggingState
> - Added MultiGesture utility that can combine multiple input gestures into one gesture
> - Added configurable input gestures for NodifyEditor, ItemContainer, Connector, BaseConnection and GroupingNode to EditorGestures
> - Added State, PushState, PopState and PopAllStates to NodifyEditor and ItemContainer
> - Changed the default AutoPanSpeed to 15 from 10 pixels per tick
> - Allow setting ItemContainer.IsPreviewingLocation from derived classes
> - Bugfixes:
> - Fixed HandleRightClickAfterPanningThreshold not working as expected
> - Fixed DisablePanning not disabling auto panning in certain situations
> - Fixed GroupingNode selection not working with multiple selection modes
> - Fixed PendingConnection connecting cross editors
#### **Version 3.0.0**
> - Breaking Changes:
> - Changed Decorators from UIElement collection to IEnumerable
> - Features:
> - Added ItemsExtent and DecoratorsExtent dependency properties to NodifyEditor
> - Added DecoratorTemplate dependency property to NodifyEditor
> - Added FitToScreenExtentMargin static field to NodifyEditor
> - Added Extent dependency property to NodifyCanvas
> - Bugfixes:
> - Selection rectangle and Decorators are no longer scaled with the viewport zoom
> - Fixed connector anchor not updating when container size changed
#### **Version 2.0.1**
> - Bugfixes:
> - Fixed pending connection default style
#### **Version 2.0.0**
> - Breaking Changes:
> - Renamed Offset to ViewportLocation in NodifyEditor
> - Renamed Scale to ViewportZoom in NodifyEditor
> - Renamed MinScale to MinViewportZoom in NodifyEditor
> - Renamed MaxScale to MaxViewportZoom in NodifyEditor
> - Renamed AppliedTransform to ViewportTransform in NodifyEditor
> - Renamed DirectionalConnection to LineConnection
> - Removed BringIntoViewAnimationDuration from NodifyEditor
> - Removed Viewport dependency property from NodifyEditor
> - Removed ActualSize dependency property from StateNode
> - Removed Icon dependency property from Node as the icon can _(and should)_ be added in the HeaderTemplate if necessary
> - PART_ItemsHost is now required for NodifyEditor to work
> - ItemContainers cannot be used outside a NodifyEditor anymore
> - ZoomAtPosition now requires graph space coordinates instead of screen space coordinates
> - Removed custom value converters
> - Made DependencyObjectExtensions internal
> - Removed the <http://miroiu.github.io/winfx/xaml/nodify> xaml prefix
> - Features:
> - Added ResizeStartedEvent routed event to GroupingNode
> - Added ViewportSize - **OneWayToSource** dependency property to NodifyEditor
> - Added ActualSize - **OneWayToSource** dependency property to ItemContainer
> - Added DecoratorContainer and DecoratorContainerStyle dependency properties to NodifyEditor
> - Added RemoveConnectionCommand command to NodifyEditor
> - Added DisconnectCommand and SplitCommand commands to BaseConnection
> - Added ContentBrush dependency property to NodifyEditor
> - Added HasFooter dependency property to Node
> - Added FitToScreen command to NodifyEditor and EditorCommands
> - Added onFinish callback to BringIntoView in NodifyEditor
> - Added ArrowSize and Spacing dependency properties to all connections inheriting from BaseConnection
> - Added BringIntoViewMaxDuration dependency property to NodifyEditor
> - Added BringIntoViewSpeed dependency property to NodifyEditor
> - Auto panning speed now scales with the zoom factor
> - Bugfixes:
> - Every public property or method should work with graph space coordinates
> - Disable auto panning when panning is disabled
> - Min zoom could be set to a very small value
> - Bring into view was not disabling all interfering operations