EgtCAM5 :

- Migliorie varie.
This commit is contained in:
Emmanuele Sassi
2016-07-09 10:44:36 +00:00
parent f77e074d23
commit bca8754b82
18 changed files with 653 additions and 267 deletions
@@ -1,4 +1,5 @@
Imports System.Collections.ObjectModel
Imports EgtUILib
Public Class LayerTreeViewItem
Inherits TreeViewItemBase
@@ -26,7 +27,16 @@ Public Class LayerTreeViewItem
Return m_OnOff
End Get
Set(value As Boolean)
m_OnOff = value
If m_OnOff <> value Then
m_OnOff = value
' eseguo operazione
Application.Msn.NotifyColleagues(Application.SETLASTINTEGER, Id)
If value Then
Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.SHOW)
Else
Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.HIDE)
End If
End If
End Set
End Property
@@ -53,7 +63,7 @@ Public Class LayerTreeViewItem
End Set
End Property
Sub New(Id As Integer, Name As String, Image As String, CurrColor As System.Drawing.Color)
Sub New(Id As Integer, Name As String, Image As String, CurrColor As Color3d)
MyBase.New(Name)
Me.m_Id = Id
Me.PictureString = Image
@@ -1,8 +1,15 @@
<UserControl x:Class="ManageLayerExpanderView"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:interactivity="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity"
xmlns:local="clr-namespace:EgtCAM5">
<Expander Header="Layers">
<Expander>
<Expander.Header>
<StackPanel Orientation="Horizontal">
<TextBlock Text="{Binding HeaderName}" Margin="0,0,5,0"/>
<Ellipse Height="10" Width="10" Fill="{Binding HeaderColor}" />
</StackPanel>
</Expander.Header>
<StackPanel>
<TextBox/>
@@ -14,6 +21,11 @@
</UniformGrid>
<TreeView Name="LayerTreeView" MaxHeight="600"
ItemsSource="{Binding Path=LayerList}">
<interactivity:Interaction.Triggers>
<interactivity:EventTrigger EventName="MouseDoubleClick">
<interactivity:InvokeCommandAction Command="{Binding TreeViewDoubleClickCommand}"/>
</interactivity:EventTrigger>
</interactivity:Interaction.Triggers>
<TreeView.Resources>
<!--Modifico DataTemplate del ToolItem per poter inserire immagine e testo-->
<HierarchicalDataTemplate DataType="{x:Type local:LayerTreeViewItem}" ItemsSource="{Binding Items}">
@@ -25,9 +37,9 @@
<ColumnDefinition Width="Auto"/>
</Grid.ColumnDefinitions>
<CheckBox Grid.Column="0" IsChecked="{Binding OnOff}" Height="15" Width="15" Margin="0,0,5,0"/>
<ToggleButton Style="{StaticResource EgtCAM5_LampToggleButton}" Grid.Column="0" IsChecked="{Binding OnOff}" Height="15" Width="15" Margin="0,0,5,0"/>
<Image Grid.Column="1" Source="{Binding PictureString}" Height="15" Margin="0,0,5,0"/>
<TextBlock Grid.Column="2" Text="{Binding Name}"/>
<TextBlock Grid.Column="2" Text="{Binding Name}" Margin="0,0,5,0"/>
<Ellipse Grid.Column="3" Height="10" Width="10" Fill="{Binding LayerColor}" />
</Grid>
@@ -5,13 +5,38 @@ Imports EgtCAM5.IniFile
Namespace EgtCAM5
Public Class ManageLayerExpanderViewModel
Inherits ViewModelBase
#Region "Fields & Properties"
#Region "FIELDS & PROPERTIES"
' Expander Header Properties
Private m_HeaderName As String
Public Property HeaderName As String
Get
Return m_HeaderName
End Get
Set(value As String)
m_HeaderName = value
OnPropertyChanged("HeaderName")
End Set
End Property
Private m_HeaderColor As SolidColorBrush
Public Property HeaderColor As SolidColorBrush
Get
Return m_HeaderColor
End Get
Set(value As SolidColorBrush)
m_HeaderColor = value
OnPropertyChanged("HeaderColor")
End Set
End Property
' Definizione comandi
Private m_cmdNewPart As ICommand
Private m_cmdNewLayer As ICommand
Private m_cmdLayerColor As ICommand
Private m_cmdTreeViewDoubleClick As ICommand
' Lista dei layer
Private m_LayerList As New ObservableCollection(Of LayerTreeViewItem)
@@ -26,6 +51,8 @@ Namespace EgtCAM5
#End Region
#Region "CONSTRUCTOR"
Sub New()
Application.Msn.Register(Application.LOADOBJTREE, Sub()
LoadObjTree()
@@ -42,7 +69,19 @@ Namespace EgtCAM5
Application.Msn.Register(Application.UPDATEOBJTREE, Sub()
UpdateObjTree()
End Sub)
Application.Msn.Register(Application.UPDATEHEADERNAME, Sub(HeaderName As String)
Me.HeaderName = HeaderName
End Sub)
Application.Msn.Register(Application.UPDATEHEADERCOLOR, Sub(HeaderColor As Color3d)
Me.HeaderColor = New SolidColorBrush(Color.FromArgb(HeaderColor.A, HeaderColor.R, HeaderColor.G, HeaderColor.B))
End Sub)
Application.Msn.Register(Application.UPDATEOBJTREEOLDID, Sub(ObjTreeOldId As Integer)
Me.m_nObjTreeOldId = ObjTreeOldId
End Sub)
End Sub
#End Region ' Constructor
#Region "COMMANDS"
#Region "NewPartCommand"
@@ -133,11 +172,44 @@ Namespace EgtCAM5
Return True
End Function
#End Region ' NewLayerCommand
#End Region ' LayerColorCommand
#Region "TreeViewDoubleClickCommand"
''' <summary>
''' Returns a command that do Point.
''' </summary>
Public ReadOnly Property TreeViewDoubleClickCommand As ICommand
Get
If m_cmdTreeViewDoubleClick Is Nothing Then
m_cmdTreeViewDoubleClick = New RelayCommand(AddressOf TreeViewDoubleClick, AddressOf CanTreeViewDoubleClick)
End If
Return m_cmdTreeViewDoubleClick
End Get
End Property
''' <summary>
''' Execute the Point. This method is invoked by the PointCommand.
''' </summary>
Public Sub TreeViewDoubleClick(ByVal param As Object)
If m_nObjTreeOldId <> GDB_ID.NULL Then
Application.Msn.NotifyColleagues(Application.SETLASTINTEGER, m_nObjTreeOldId)
Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.SETCURRPARTLAYER)
End If
End Sub
''' <summary>
''' Returns always true.
''' </summary>
Private Function CanTreeViewDoubleClick(ByVal param As Object) As Boolean
Return True
End Function
#End Region ' TreeViewDoubleClickCommand
#End Region ' Commands
#Region "Methods"
#Region "METHODS"
Private WithEvents ObjTreeTimer As New System.Windows.Threading.DispatcherTimer
Private m_nObjTreeOldId As Integer = GDB_ID.NULL
@@ -214,9 +286,9 @@ Namespace EgtCAM5
End If
' inserisco il nodo nell'albero
Dim CurrColor As Color3d
EgtGetColor(nGroupId, CurrColor)
EgtGetCalcColor(nGroupId, CurrColor)
Dim sImage As String = TypeToImageInObjTree(GDB_TY.GROUP, nGroupType)
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nGroupId, sText, sImage, CurrColor.ToColor())
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nGroupId, sText, sImage, CurrColor)
PrevNodColl.Add(CurrNod)
CurrNodColl = CurrNod.Items
Dim nStat As Integer = GDB_ST.ON_
@@ -250,9 +322,9 @@ Namespace EgtCAM5
sText = sTitle + " " + nId.ToString
End If
Dim CurrColor As Color3d
EgtGetColor(nGroupId, CurrColor)
EgtGetCalcColor(nGroupId, CurrColor)
Dim sImage As String = TypeToImageInObjTree(nType, nDepth)
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nId, sText, sImage, CurrColor.ToColor())
Dim CurrNod As LayerTreeViewItem = New LayerTreeViewItem(nId, sText, sImage, CurrColor)
CurrNodColl.Add(CurrNod)
Dim nStat As Integer = GDB_ST.ON_
EgtGetStatus(nId, nStat)
@@ -306,25 +378,6 @@ Namespace EgtCAM5
End If
End Sub
'Private Sub ObjTree_AfterCheck(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterCheck
' ' verifico che il check derivi da azione utente
' If e.Action = TreeViewAction.Unknown Then
' Return
' End If
' ' recupero l'Id del nuovo oggetto
' Dim nId As Integer
' If Not Int32.TryParse(e.Node.Name, nId) Then
' Return
' End If
' ' eseguo operazione
' m_Controller.SetLastInteger(nId)
' If e.Node.Checked Then
' m_Controller.ExecuteCommand(CMD.SHOW)
' Else
' m_Controller.ExecuteCommand(CMD.HIDE)
' End If
'End Sub
'Private Sub ObjTree_AfterSelect(ByVal sender As Object, ByVal e As TreeViewEventArgs) Handles TreeView1.AfterSelect
' ' verifico che il select derivi da azione utente
' If e.Action = TreeViewAction.Unknown Then
@@ -372,13 +425,6 @@ Namespace EgtCAM5
' End If
'End Sub
'Private Sub ObjTree_MouseDoubleClick(ByVal sender As Object, e As MouseEventArgs) Handles TreeView1.MouseDoubleClick
' If m_nObjTreeOldId <> GDB_ID.NULL Then
' m_Controller.SetLastInteger(m_nObjTreeOldId)
' m_Controller.ExecuteCommand(CMD.SETCURRPARTLAYER)
' End If
'End Sub
Private Sub UpdateObjInObjTree(ByVal nId As Integer)
' ripristino eventuale vecchio oggetto selezionato
RevertOldIdInObjTree()
@@ -394,28 +440,6 @@ Namespace EgtCAM5
ObjTreeTimer.Start()
End Sub
'Private Sub UpdateObjDataInObjTree(ByVal nId As Integer)
' ' recupero il tipo del nuovo oggetto
' Dim nType As Integer = EgtGetType(nId)
' ' stampa dei dati dell'oggetto
' Dim sDump As String = String.Empty
' If nType = GDB_TY.NONE Then
' tBoxInfo.Text = String.Empty
' ElseIf nType = GDB_TY.GROUP Then
' If EgtGroupDump(nId, sDump) Then
' tBoxInfo.Text = sDump
' Else
' tBoxInfo.Text = String.Empty
' End If
' Else
' If EgtGeoObjDump(nId, sDump) Then
' tBoxInfo.Text = sDump
' Else
' tBoxInfo.Text = String.Empty
' End If
' End If
'End Sub
Private Function RevertOldIdInObjTree() As Integer
' salvo il vecchio Id
Dim nOldId As Integer = m_nObjTreeOldId
@@ -484,7 +508,7 @@ Namespace EgtCAM5
' End If
'End Sub
#End Region
#End Region ' Methods
End Class