diff --git a/Application.xaml.vb b/Application.xaml.vb index 49c166b..06936fa 100644 --- a/Application.xaml.vb +++ b/Application.xaml.vb @@ -139,7 +139,9 @@ Class Application Friend Const RESETINPUTBOX As String = "ResetInputBox" Friend Const LOADOBJTREE As String = "LoadObjTree" Friend Const UPDATEOBJINOBJTREE As String = "UpdateObjInObjTree" + Friend Const UPDATEOBJINOBJTREENOMARK As String = "UpdateObjInObjTreeNoMark" Friend Const SELECTIDINOBJTREE As String = "SelectIdInObjTree" + Friend Const SELECTIDINOBJTREENOMARK As String = "SelectIdInObjTreeNoMark" Friend Const CLEAROBJTREE As String = "ClearObjTree" Friend Const UPDATEOBJTREE As String = "UpdateObjTree" Friend Const UPDATEHEADERNAME As String = "UpdateHeaderName" diff --git a/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/LayerTreeView.vb b/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/LayerTreeView.vb index 4b09ca2..555e342 100644 --- a/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/LayerTreeView.vb +++ b/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/LayerTreeView.vb @@ -4,6 +4,9 @@ Imports EgtUILib Public Class LayerTreeViewItem Inherits TreeViewItemBase + Friend Shared m_SendCmd As Boolean = True + Friend Shared m_MarkOnSel As Boolean = True + Private m_Id As Integer Public ReadOnly Property Id As Integer Get @@ -23,7 +26,11 @@ Public Class LayerTreeViewItem m_IsSelected = value If value Then ' recupero l'Id del nuovo oggetto selezionato - Application.Msn.NotifyColleagues(Application.UPDATEOBJINOBJTREE, Me.Id) + If m_MarkOnSel Then + Application.Msn.NotifyColleagues(Application.UPDATEOBJINOBJTREE, Me.Id) + Else + Application.Msn.NotifyColleagues(Application.UPDATEOBJINOBJTREENOMARK, Me.Id) + End If End If End If End Set @@ -41,10 +48,6 @@ Public Class LayerTreeViewItem ' In realtà il valore di value è insignificante perchè la cosa importante è che il click esegua questo Set m_IsRightSelected = value Application.Msn.NotifyColleagues(Application.RIGHTCLICKEDLAYERTREEITEM, Me.Id) - 'If value Then - ' ' recupero l'Id del nuovo oggetto selezionato - ' Application.Msn.NotifyColleagues(Application.UPDATEOBJINOBJTREE, Me.Id) - 'End If End Set End Property @@ -66,12 +69,14 @@ Public Class LayerTreeViewItem Set(value As Boolean) 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) + ' se abilitato, eseguo operazione + If m_SendCmd Then + 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 If End Set diff --git a/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/ManageLayerExpanderViewModel.vb b/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/ManageLayerExpanderViewModel.vb index 5a9a902..887b53d 100644 --- a/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/ManageLayerExpanderViewModel.vb +++ b/ProjectPage/OptionPanel/DrawOptionPanel/ManageLayerExpander/ManageLayerExpanderViewModel.vb @@ -80,8 +80,14 @@ Namespace EgtCAM5 Application.Msn.Register(Application.UPDATEOBJINOBJTREE, Sub(nId As Integer) UpdateObjInObjTree(nId) End Sub) + Application.Msn.Register(Application.UPDATEOBJINOBJTREENOMARK, Sub(nId As Integer) + UpdateObjInObjTreeNoMark(nId) + End Sub) Application.Msn.Register(Application.SELECTIDINOBJTREE, Sub(nId As Integer) - SelectIdInObjTree(nId) + SelectIdInObjTree(nId, True) + End Sub) + Application.Msn.Register(Application.SELECTIDINOBJTREENOMARK, Sub(nId As Integer) + SelectIdInObjTree(nId, False) End Sub) Application.Msn.Register(Application.CLEAROBJTREE, Sub() ClearObjTree() @@ -127,6 +133,8 @@ Namespace EgtCAM5 ''' Public Sub NewPart(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.NEWPART) + ' Seleziono nell'albero il layer del pezzo appena creato + SelectIdInObjTree(EgtGetCurrLayer(), False) End Sub ''' @@ -157,6 +165,8 @@ Namespace EgtCAM5 ''' Public Sub NewLayer(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXECUTECOMMAND, Controller.CMD.NEWLAYER) + ' Seleziono nell'albero il layer appena creato + SelectIdInObjTree(EgtGetCurrLayer(), False) End Sub ''' @@ -591,15 +601,17 @@ Namespace EgtCAM5 End Sub Public Sub LoadObjTree() + LayerTreeViewItem.m_SendCmd = False Dim nOldId As Integer = ClearObjTree() AddGroupInObjTree(GDB_ID.ROOT, GDB_LV.USER, 0, LayerList) If nOldId <> GDB_ID.NULL Then m_bEnableUpdateObjInObjTree = False - SelectIdInObjTree(nOldId) + SelectIdInObjTree(nOldId, True) m_bEnableUpdateObjInObjTree = True Else Application.Msn.NotifyColleagues(Application.SETINFOBOX, String.Empty) End If + LayerTreeViewItem.m_SendCmd = True End Sub Private Function ClearObjTree() As Integer @@ -746,20 +758,38 @@ Namespace EgtCAM5 End If End Sub - Private Sub UpdateObjInObjTree(ByVal nId As Integer) - If Not m_bEnableUpdateObjInObjTree Then Return - ' ripristino eventuale vecchio oggetto selezionato - RevertOldIdInObjTree() - ' stampa dei dati del nuovo oggetto - Application.Msn.NotifyColleagues(Application.UPDATEOBJDATAINOBJTREE, nId) - ' evidenzio l'oggetto - EgtSetMark(nId) - m_nObjTreeOldId = nId - ' imposto il ridisegno della scena - EgtDraw() - ' lancio timer per successiva de-evidenziazione - ObjTreeTimer.Stop() - ObjTreeTimer.Start() + Private Sub UpdateObjInObjTree(nId As Integer) + If m_bEnableUpdateObjInObjTree Then + ' ripristino eventuale vecchio oggetto selezionato + RevertOldIdInObjTree() + ' stampa dei dati del nuovo oggetto + Application.Msn.NotifyColleagues(Application.UPDATEOBJDATAINOBJTREE, nId) + ' evidenzio l'oggetto + EgtSetMark(nId) + m_nObjTreeOldId = nId + ' imposto il ridisegno della scena + EgtDraw() + ' lancio timer per successiva de-evidenziazione + ObjTreeTimer.Stop() + ObjTreeTimer.Start() + Else + ' stampa dei dati del nuovo oggetto + Application.Msn.NotifyColleagues(Application.UPDATEOBJDATAINOBJTREE, nId) + End If + End Sub + + Private Sub UpdateObjInObjTreeNoMark(nId As Integer) + If m_bEnableUpdateObjInObjTree Then + ' ripristino eventuale vecchio oggetto selezionato + RevertOldIdInObjTree() + ' stampa dei dati del nuovo oggetto + Application.Msn.NotifyColleagues(Application.UPDATEOBJDATAINOBJTREE, nId) + ' salvo id corrente + m_nObjTreeOldId = nId + Else + ' stampa dei dati del nuovo oggetto + Application.Msn.NotifyColleagues(Application.UPDATEOBJDATAINOBJTREE, nId) + End If End Sub Private Function RevertOldIdInObjTree() As Integer @@ -775,10 +805,12 @@ Namespace EgtCAM5 Return nOldId End Function - Private Function SelectIdInObjTree(ByVal nId As Integer) As Boolean - Dim tNode As LayerTreeViewItem = SearchIdInLayerList(LayerList, nId) + Private Function SelectIdInObjTree(nId As Integer, bMark As Boolean) As Boolean + Dim tNode As LayerTreeViewItem = SearchIdInLayerList(LayerList, nId, True) If Not IsNothing(tNode) Then + If Not bMark Then LayerTreeViewItem.m_MarkOnSel = False tNode.IsSelected = True + If Not bMark Then LayerTreeViewItem.m_MarkOnSel = True tNode.IsExpanded = True m_nObjTreeOldId = nId Return True @@ -788,13 +820,15 @@ Namespace EgtCAM5 End If End Function - Private Function SearchIdInLayerList(Tree As ObservableCollection(Of LayerTreeViewItem), nId As Integer) As LayerTreeViewItem + Private Function SearchIdInLayerList(Tree As ObservableCollection(Of LayerTreeViewItem), nId As Integer, bExpand As Boolean) As LayerTreeViewItem For Each Item In Tree If Item.Id = nId Then + If bExpand Then Item.IsExpanded = True Return Item ElseIf Item.Items.Count() > 0 Then - Dim Item2 As LayerTreeViewItem = SearchIdInLayerList(Item.Items, nId) + Dim Item2 As LayerTreeViewItem = SearchIdInLayerList(Item.Items, nId, bExpand) If Not IsNothing(Item2) Then + If bExpand Then Item.IsExpanded = True Return Item2 End If End If diff --git a/ProjectPage/ProjectViewModel.vb b/ProjectPage/ProjectViewModel.vb index 0c96cb2..a52f2d1 100644 --- a/ProjectPage/ProjectViewModel.vb +++ b/ProjectPage/ProjectViewModel.vb @@ -221,7 +221,7 @@ Namespace EgtCAM5 ' nascondo input box Application.Msn.NotifyColleagues(Application.RESETINPUTBOX) ' Apro progetto vuoto - m_Controller.NewProject(True) + Application.Msn.NotifyColleagues(Application.NEWPROJECT) End Sub @@ -538,8 +538,8 @@ Namespace EgtCAM5 End Sub Sub RegisterControllerCommands() - Application.Msn.Register(Application.EXECUTECOMMAND, Sub(sString As Controller.CMD) - m_Controller.ExecuteCommand(sString) + Application.Msn.Register(Application.EXECUTECOMMAND, Sub(nCmd As Controller.CMD) + m_Controller.ExecuteCommand(nCmd) End Sub) Application.Msn.Register(Application.MANAGEMODIFIED, Sub() Dim AllowClose = m_Controller.ManageModified() @@ -566,12 +566,14 @@ Namespace EgtCAM5 Private Sub ManageTopCommandBar() Application.Msn.Register(Application.NEWPROJECT, Sub() m_Controller.NewProject(True) + Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) End Sub) Application.Msn.Register(Application.OPENPROJECT, Sub() If (Keyboard.Modifiers And ModifierKeys.Shift) <> ModifierKeys.Shift Then Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTNGEDIR, "", sDir) m_Controller.OpenProject(sDir) + Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) Else 'ShowMenuMruFiles(btnOpen, New Point(0, btnOpen.Height)) End If @@ -598,7 +600,6 @@ Namespace EgtCAM5 sFile += "\New" & m_nInstance.ToString() & ".nge" End If m_Controller.SaveAsProject(sFile, nType) - End Sub) Application.Msn.Register(Application.INSERTPROJECT, Sub() ' eseguo @@ -610,6 +611,7 @@ Namespace EgtCAM5 Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTIMPDIR, "", sDir) m_Controller.ImportProject(sDir) + Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREENOMARK, EgtGetCurrLayer()) End Sub) Application.Msn.Register(Application.EXPORTPROJECT, Sub() m_Controller.ExportProject(Path.ChangeExtension(m_Controller.GetCurrFile(), "dxf")) @@ -619,6 +621,7 @@ Namespace EgtCAM5 Dim sDir As String = String.Empty GetPrivateProfileString(S_GENERAL, K_LASTLUADIR, "", sDir) m_Controller.Exec(sDir) + Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, EgtGetCurrLayer()) 'Else ' ShowMenuMruScripts(btnExec, New Point(0, btnExec.Height)) 'End If @@ -626,6 +629,7 @@ Namespace EgtCAM5 Application.Msn.Register(Application.DOORSSCRIPT, Sub() Dim bOk As Boolean = ExecDoors(m_ProjectScene) OnUpdateUI(Nothing, True) + Application.Msn.NotifyColleagues(Application.SELECTIDINOBJTREE, EgtGetCurrLayer()) If Not bOk Then Application.Msn.NotifyColleagues(Application.NOTIFYSTATUSOUTPUT, "Error running Ddf file") End Sub) Application.Msn.Register(Application.DMACHSCRIPT, Sub() diff --git a/ProjectPage/ViewPanel/ViewPanelView.xaml b/ProjectPage/ViewPanel/ViewPanelView.xaml index 031d0f8..ccc601b 100644 --- a/ProjectPage/ViewPanel/ViewPanelView.xaml +++ b/ProjectPage/ViewPanel/ViewPanelView.xaml @@ -12,14 +12,14 @@ - -