diff --git a/Icarus/AttachedProperties/TreeViewItemHelper.vb b/Icarus/AttachedProperties/TreeViewItemHelper.vb index f7e46dc..d058a2b 100644 --- a/Icarus/AttachedProperties/TreeViewItemHelper.vb +++ b/Icarus/AttachedProperties/TreeViewItemHelper.vb @@ -1,4 +1,5 @@ Imports System.Globalization +Imports System.Windows.Forms.VisualStyles.VisualStyleElement.TextBox Imports System.Windows.Media.Media3D Public Module TreeViewItemHelper @@ -69,9 +70,16 @@ Public Module TreeViewItemHelper Private Sub OnPreviewMouseRightButtonDown(ByVal sender As Object, ByVal e As MouseButtonEventArgs) Dim treeViewItem As TreeViewItem = VisualUpwardSearch(Of TreeViewItem)(TryCast(e.OriginalSource, DependencyObject)) - If treeViewItem IsNot Nothing Then treeViewItem.IsSelected = True + Dim Tree As TreeView = VisualUpwardSearch(Of TreeView)(TryCast(treeViewItem, DependencyObject)) + If Not IsNothing(Tree) Then + Dim myTransform As GeneralTransform = treeViewItem.TransformToAncestor(Tree) + + Dim myOffset As Point = myTransform.Transform(New Point(0, 0)) + treeViewItem.ContextMenu.HorizontalOffset = -treeViewItem.ActualWidth + (-myOffset.X) + Tree.ActualWidth - 3 + treeViewItem.ContextMenu.VerticalOffset = -3 + End If e.Handled = True End If End Sub @@ -97,7 +105,7 @@ Public Module TreeViewItemHelper End Function ' Gestione indentazione sottoelementi - Public Function GetDepth(ByVal item As TreeViewItem) As Integer + Public Function GetDepth(item As TreeViewItem) As Integer Dim parent As TreeViewItem = GetParent(item) If Not IsNothing(parent) Then Return GetDepth(parent) + 1 @@ -105,7 +113,7 @@ Public Module TreeViewItemHelper Return 0 End Function - Private Function GetParent(ByVal item As TreeViewItem) As TreeViewItem + Private Function GetParent(item As TreeViewItem) As TreeViewItem Dim parent As DependencyObject = If(Not IsNothing(item), VisualTreeHelper.GetParent(item), Nothing) While Not IsNothing(parent) AndAlso Not (TypeOf parent Is TreeViewItem OrElse TypeOf parent Is TreeView) @@ -115,6 +123,29 @@ Public Module TreeViewItemHelper Return TryCast(parent, TreeViewItem) End Function + Private Function GetTreeParent(item As TreeViewItem) As TreeViewItem + Dim parent As DependencyObject = If(Not IsNothing(item), VisualTreeHelper.GetParent(item), Nothing) + + While Not IsNothing(parent) AndAlso Not (TypeOf parent Is TreeViewItem OrElse TypeOf parent Is TreeView) + parent = VisualTreeHelper.GetParent(parent) + End While + + Return TryCast(parent, TreeViewItem) + End Function + + ' Gestione indentazione sottoelementi + Public Function GetHeight(Item As TreeViewItem, SearchedItem As TreeViewItem, ByRef nHeight As Integer) As Boolean + Dim Index As Integer = 0 + While Index <= Item.Items.Count - 1 + If GetHeight(Item.Items(Index), SearchedItem, nHeight) Then + nHeight += 1 + Return True + End If + Index += 1 + End While + Return False + End Function + End Module Public Class LeftMarginMultiplierConverter @@ -132,35 +163,3 @@ Public Class LeftMarginMultiplierConverter Throw New System.NotImplementedException() End Function End Class - -Public Class Treeview_MenuContext_VerticalOffset_Converter - Implements IValueConverter - - Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert - If TypeOf value Is Double Then - Return -CDbl(value) - End If - Return 0 - End Function - - Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack - Throw New NotImplementedException() - End Function - -End Class - -Public Class Treeview_MenuContext_HorizontalOffset_Converter - Implements IValueConverter - - Public Function Convert(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.Convert - If TypeOf value Is Double Then - Return CDbl(value) - 5 - End If - Return 0 - End Function - - Public Function ConvertBack(value As Object, targetType As Type, parameter As Object, culture As CultureInfo) As Object Implements IValueConverter.ConvertBack - Throw New NotImplementedException() - End Function - -End Class \ No newline at end of file diff --git a/Icarus/ControllerInputPanel/ControllerInputPanelV.xaml b/Icarus/ControllerInputPanel/ControllerInputPanelV.xaml index ca0d06f..e3297ce 100644 --- a/Icarus/ControllerInputPanel/ControllerInputPanelV.xaml +++ b/Icarus/ControllerInputPanel/ControllerInputPanelV.xaml @@ -1,10 +1,16 @@ - + - + @@ -133,6 +125,7 @@ + diff --git a/Icarus/Project/ProjectV.xaml b/Icarus/Project/ProjectV.xaml index f8a3797..b272969 100644 --- a/Icarus/Project/ProjectV.xaml +++ b/Icarus/Project/ProjectV.xaml @@ -29,8 +29,7 @@ + DataContext="{StaticResource ControllerInputPanelVM}"/> diff --git a/Icarus/Resources/TopPanel/Offset.png b/Icarus/Resources/TopPanel/Offset.png new file mode 100644 index 0000000..998f1b0 Binary files /dev/null and b/Icarus/Resources/TopPanel/Offset.png differ diff --git a/Icarus/Resources/TopPanel/SlicingDirection.png b/Icarus/Resources/TopPanel/SlicingDirection.png new file mode 100644 index 0000000..d7ab36b Binary files /dev/null and b/Icarus/Resources/TopPanel/SlicingDirection.png differ diff --git a/Icarus/Resources/TopPanel/StrandCount.png b/Icarus/Resources/TopPanel/StrandCount.png new file mode 100644 index 0000000..b87694d Binary files /dev/null and b/Icarus/Resources/TopPanel/StrandCount.png differ diff --git a/Icarus/Resources/TopPanel/StrandH.png b/Icarus/Resources/TopPanel/StrandH.png new file mode 100644 index 0000000..c29cab5 Binary files /dev/null and b/Icarus/Resources/TopPanel/StrandH.png differ diff --git a/Icarus/Resources/TopPanel/StrandW.png b/Icarus/Resources/TopPanel/StrandW.png new file mode 100644 index 0000000..a88756c Binary files /dev/null and b/Icarus/Resources/TopPanel/StrandW.png differ diff --git a/Icarus/TopPanel/TopPanelV.xaml b/Icarus/TopPanel/TopPanelV.xaml index 0851ee9..ea28475 100644 --- a/Icarus/TopPanel/TopPanelV.xaml +++ b/Icarus/TopPanel/TopPanelV.xaml @@ -180,49 +180,68 @@ - + - + - + - + - + + + @@ -786,6 +791,10 @@ - - - @@ -1449,7 +1456,6 @@ -