Imports System.Collections.ObjectModel Imports System.ComponentModel Imports EgtUILib Imports EgtWPFLib Public Class PolishingsPageUC ' Riferimento alla MainWindow Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) ' Variabile che conserva la lucidatura precedentemente selezionata, usata nel caso si selezioni annulla quando si cambia lucidatura selezionata Private m_OldItem As Object ' File kits di lucidatura Private m_sKitFile As String = String.Empty Private m_KitList As New ObservableCollection(Of Kit) Private m_KitMachList As New ObservableCollection(Of KitMach) ' Lista che contiene gli utensili disponibili (per Combobox in ciascun KitMachItem) Private m_ToolList As New ObservableCollection(Of String) ' Lista che contiene gli UUID degli utensili disponibili nello stesso ordine della lista dei nomi (ComboBox) per la scrittura degli stessi sull'INI Private m_ToolUuidList As New ObservableCollection(Of String) Private m_PreviousSelectedKitIndex As Integer = 0 Private m_PreviousSelectedKitMachIndex As Integer = 0 Public ReadOnly Property ToolList As ObservableCollection(Of String) Get Return m_ToolList End Get End Property Public ReadOnly Property ToolUuidList As ObservableCollection(Of String) Get Return m_ToolUuidList End Get End Property Private Sub PolishingsPage_Initialized(sender As Object, e As EventArgs) ' Impostazione Path KitIni file m_sKitFile = m_MainWindow.GetKitsFile() ' Imposto i messaggi letti dal file dei messaggi NewKitBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 16) SaveKitBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 17) RemoveKitBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 18) NewKitMachBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 16) RemoveKitMachBtn.Content = EgtMsg(MSG_MACHINEPAGEUC + 18) MoveUpKitMachBtn.Content = EgtMsg(91098) MoveDownKitMachBtn.Content = EgtMsg(91099) KitsGpBx.Header = EgtMsg(91091) ' Lucidature KitMachsGpBx.Header = EgtMsg(91096) ' Lista utensili MotionTxBl.Text = EgtMsg(91092) ' Movimento RepeatTxBl.Text = EgtMsg(91093) ' Ripetizioni StepTxBl.Text = EgtMsg(90787) ' Passo LiLoGpBx.Header = EgtMsg(91094) ' Attacco/Uscita LiLenTxBl.Text = EgtMsg(91097) ' Lunghezza LiHeightTxBl.Text = EgtMsg(91095) ' Altezza LiLoadTxBl.Text = EgtMsg(91100) ' Precarico End Sub Private Sub PolishingsPage_Loaded(sender As Object, e As RoutedEventArgs) EgtSetCurrentContext(m_MainWindow.m_CurrentProjectPageUC.CurrentProjectScene.GetCtx()) LoadPage() End Sub Private Sub LoadPage() ' Leggo utensili dal Db m_ToolList.Clear() Dim sToolName As String = String.Empty Dim nType As Integer = MCH_TY.NONE Dim bOk As Boolean = EgtTdbGetFirstTool( MCH_TF.MILL, sToolName, nType) While bOk If nType = MCH_TY.MILL_POLISHING Then m_ToolList.Add( sToolName) ' Recupero l'UUID dell' utensile EgtTdbSetCurrTool( sToolName) Dim sToolUuid As String = String.Empty EgtTdbGetCurrToolParam( MCH_TP.UUID, sToolUuid) ToolUuidList.Add( sToolUuid) End If ' Passo al successivo bOk = EgtTdbGetNextTool( MCH_TF.MILL, sToolName, nType) End While ' Leggo la lista dei kit m_KitList.Clear() m_KitMachList.Clear() Dim Kit As Kit = Nothing Dim nKitIndex As Integer = 1 While ReadKit( nKitIndex, False, Kit) m_KitList.Add( Kit) nKitIndex += 1 End While KitsLstBx.ItemsSource = m_KitList KitMachsLstBx.ItemsSource = m_KitMachList KitMach.m_ToolList = ToolList.ToList() ' Recupero nome utensile tramite UUID Dim ToolString As String = String.Empty For Each KitItem In m_KitList For Each KitMachItem In KitItem.KitMachList Dim selToolIndex As Integer = 0 EgtTdbGetToolFromUUID(KitMachItem.sToolUUID, ToolString) Dim bToolExist As Boolean = False For Each CurrTool In ToolList If CurrTool.ToString() = ToolString Then bToolExist = True Exit For End If selToolIndex += 1 Next If bToolExist Then KitMachItem.SelTool = selToolIndex Else KitMachItem.SelTool = -1 End If Next Next If KitsLstBx.Items.Count > 0 Then ' seleziono il primo elemento della lista dei Kit KitsLstBx.SelectedItem = m_KitList( m_PreviousSelectedKitIndex) m_OldItem = KitsLstBx.SelectedItem ' carico la lista dei KitMach relativi al Kit selezionato For Each kmItem As KitMach In KitsLstBx.SelectedItem.KitMachList Dim KitMachItem = New KitMach( kmItem) m_KitMachList.Add(KitMachItem) Next ' Verifico che l'indice del KitMach da selezionare rientri nell'intervallo degli indici esistenti altrimenti lo setto a 0 Dim kitMachIndex As Integer = m_PreviousSelectedKitMachIndex If kitMachIndex > KitMachsLstBx.Items.Count Then kitMachIndex = 0 End If KitMachsLstBx.SelectedItem = m_KitMachList(kitMachIndex) ' visualizzo i parametri relativi al KitMach selezionato ShowKitMach( m_KitMachList( kitMachIndex)) End If If KitMachsLstBx.Items.Count = 0 Then RemoveKitMachBtn.IsEnabled = False If KitsLstBx.Items.Count = 0 Then RemoveKitBtn.IsEnabled = False IsModifiedReset() End Sub Private Sub NewKitBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewKitBtn.Click ' Se ci sono state modifiche chiedo se si desidera salvarle If Not SaveKit() Then KitsLstBx.SelectedItem = m_OldItem Exit Sub End If ' Mostro textbox per il nome KitNameTxBx.Text = String.Empty KitNameTxBx.Visibility = Windows.Visibility.Visible KitsLstBx.SetValue( Grid.RowSpanProperty, 1) End Sub Private Sub KitNameTxBx_EgtClosed(sender As Object, e As EventArgs) Handles KitNameTxBx.EgtClosed ' Verifico che il nome non sia vuoto If Not String.IsNullOrWhiteSpace( KitNameTxBx.Text) Then ' Verifico che il nome non sia già utilizzato Dim bNameExist As Boolean = False For Each Kit In m_KitList If Kit.sName = KitNameTxBx.Text Then bNameExist = True Exit For End If Next If Not bNameExist Then ' Aggiungo un Kit con Id uguale al numero di Kit già presenti + 1 e nome appena immesso AddKit( KitNameTxBx.Text, m_PreviousSelectedKitIndex) End If End If RemoveKitBtn.IsEnabled = True RemoveKitMachBtn.IsEnabled = True m_PreviousSelectedKitIndex = m_KitList.Count - 1 LoadPage() ' Nascondo textbox per il nome KitsLstBx.SetValue( Grid.RowSpanProperty, 2) KitNameTxBx.Visibility = Windows.Visibility.Hidden End Sub Private Sub SaveBtn_Click(sender As Object, e As RoutedEventArgs) Handles SaveKitBtn.Click If IsNothing( KitsLstBx.SelectedItem) Then Return ' Salvo il Kit correntemente selezionato Save( KitsLstBx.SelectedItem.nId) End Sub Private Sub Save( nKitIndex As Integer) Dim kitCurr = m_KitList( nKitIndex - 1) ' Salvo e scrivo tutti i KitMach del Kit che ha Id uguale all'argomento passato alla funzione Save Dim nKitMachIndex As Integer = 1 For Each kmlbCurr As Object In KitMachsLstBx.Items ' Recupero i dati Dim kmCurr As KitMach = kitCurr.KitMachList( nKitMachIndex - 1) kmCurr.SelTool = kmlbCurr.SelTool If kmCurr.SelTool >= 0 Then kmCurr.sToolName = ToolList( kmCurr.SelTool) kmCurr.sToolUUID = ToolUuidList( kmCurr.SelTool) Else kmCurr.sToolName = "---" kmCurr.sToolUUID = "---" End If kmCurr.bActive = kmlbCurr.bActive kmCurr.nContour = kmlbCurr.nContour kmCurr.nZigZagX = kmlbCurr.nZigZagX kmCurr.dStepX = kmlbCurr.dStepX kmCurr.nZigZagY = kmlbCurr.nZigZagY kmCurr.dStepY = kmlbCurr.dStepY kmCurr.dLiLen = kmlbCurr.dLiLen kmCurr.dLiHeight = kmlbCurr.dLiHeight ' Salvo i dati WriteKitMach( kitCurr.nId, nKitMachIndex, kmCurr) nKitMachIndex += 1 Next IsModifiedReset() End Sub Private Sub RemoveKitBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveKitBtn.Click If IsNothing( KitsLstBx.SelectedItem) Then Return ' Rimuovo il Kit correntemente selezionato RemoveKit( KitsLstBx.SelectedItem.nId) End Sub Private Sub RemoveKitMachBtn_Click(sender As Object, e As RoutedEventArgs) Handles RemoveKitMachBtn.Click Dim SelectedKit As Kit = DirectCast(KitsLstBx.SelectedItem, Kit) Dim SelectedKitMach As KitMach = DirectCast(KitMachsLstBx.SelectedItem, KitMach) ' Se sono presenti più di 1 KitMach elimina quello selezionato altrimenti elimina l'intero Kit If KitMachsLstBx.Items.Count > 1 Then If Not IsNothing( SelectedKitMach) Then RemoveKitMach( SelectedKit, SelectedKitMach.nId) End If Else RemoveKit( SelectedKit.nId) End If End Sub Private Sub MoveUpKitMachBtn_Click( sender As Object, e As RoutedEventArgs) Handles MoveUpKitMachBtn.Click ' Kit corrente Dim kitCurr As Kit = DirectCast( KitsLstBx.SelectedItem, Kit) If IsNothing( kitCurr) Then Return ' Lavorazione corrente del kit corrente Dim kmCurr As KitMach = DirectCast( KitMachsLstBx.SelectedItem, KitMach) If IsNothing( kmCurr) Then Return Dim nkmCurrIdx As Integer = kmCurr.nId ' Se lavorazione è prima della lista, non devo fare alcunchè If nkmCurrIdx = 0 Then Return ' Riscrivo i parametri del KitMach precedente con gli indici del KitMach selezionato Dim kmPrev As KitMach = KitMachsLstBx.Items( kmCurr.nId - 2) WriteKitMach( kitCurr.nId, nkmCurrIdx, kmPrev) ' Riscrivo i parametri del KitMach selezionato con gli indici del KitMach precedente Dim nkmPrevIdx As Integer = kmCurr.nId - 1 WriteKitMach( kitCurr.nId, nkmPrevIdx, kmCurr) ' Aggiorno selezioni m_PreviousSelectedKitIndex = KitsLstBx.SelectedItem.nId - 1 m_PreviousSelectedKitMachIndex = KitMachsLstBx.SelectedItem.nId - 2 ' Ricarico tutto LoadPage() End Sub Private Sub MoveDownKitMachBtn_Click(sender As Object, e As RoutedEventArgs) Handles MoveDownKitMachBtn.Click ' Kit corrente Dim kitCurr As Kit = DirectCast( KitsLstBx.SelectedItem, Kit) If IsNothing( kitCurr) Then Return ' Lavorazione corrente del kit corrente Dim kmCurr As KitMach = DirectCast( KitMachsLstBx.SelectedItem, KitMach) If IsNothing( kmCurr) Then Return Dim nkmCurrIdx As Integer = kmCurr.nId ' Se lavorazione è ultima della lista, non devo fare alcunchè If nkmCurrIdx = KitMachsLstBx.Items.Count Then Return ' Riscrivo i parametri del KitMach seguente con gli indici del KitMach selezionato Dim kmNext As KitMach = KitMachsLstBx.Items( kmCurr.nId) WriteKitMach( kitCurr.nId, nkmCurrIdx, kmNext) ' Riscrivo i parametri del KitMach selezionato con gli indici del KitMach seguente Dim nkmNextIdx As Integer = kmCurr.nId + 1 WriteKitMach( kitCurr.nId, nkmNextIdx, kmCurr) ' Aggiorno selezioni m_PreviousSelectedKitIndex = KitsLstBx.SelectedItem.nId - 1 m_PreviousSelectedKitMachIndex = KitMachsLstBx.SelectedItem.nId ' Ricarico tutto LoadPage() End Sub Private Sub NewKitMachBtn_Click(sender As Object, e As RoutedEventArgs) Handles NewKitMachBtn.Click ' Se ci sono state modifiche chiedo se si desidera salvarle If Not SaveKit() Then KitsLstBx.SelectedItem = m_OldItem Exit Sub End If If Not IsNothing( KitsLstBx.SelectedItem) Then ' Scrivo nuova lavorazione Dim nKitIdx As Integer = m_KitList(KitsLstBx.SelectedIndex).nId Dim nMachKitIdx As Integer = m_KitMachList.Count + 1 WriteKitMach( nKitIdx, nMachKitIdx, New KitMach( nMachKitIdx)) ' Ricarico m_PreviousSelectedKitIndex = KitsLstBx.SelectedItem.nId - 1 LoadPage() End If End Sub Private Sub AddKit( sNewKitName As String, nCurrKitIndex As Integer) Dim kitNew As Kit = Nothing If nCurrKitIndex >= 0 And nCurrKitIndex < m_KitList.Count() Then ' Creo il Kit come copia di quello corrente kitNew = New Kit( m_KitList.Count + 1, sNewKitName, m_KitList( nCurrKitIndex)) Else ' Creo il Kit e aggiungo un KitMach vuoto kitNew = New Kit( m_KitList.Count + 1, sNewKitName) kitNew.KitMachList.Add( New KitMach( 1)) End If ' Inserisco in lista m_KitList.Add( kitNew) ' Eseguo il salvataggio WriteKitName( kitNew.nId, kitNew.sName) For Each kmCurr As KitMach In kitNew.KitMachList WriteKitMach( kitNew.nId, kmCurr.nId, kmCurr) Next End Sub Private Sub RemoveKit( nKitIndex As Integer) ' Rimuovo il Kit dall'elenco For Index As Integer = 0 To m_KitList.Count - 1 If m_KitList( Index).nId = nKitIndex Then m_KitList.RemoveAt( Index) Exit For End If Next ' Tolgo il kit dal file EraseKit( nKitIndex) ' Ricarico tutto m_PreviousSelectedKitIndex = 0 LoadPage() End Sub Friend Sub RemoveKitMach( KitValue As Kit, nKitMachIndex As Integer) ' Rimuovo il Kit dall'elenco Dim Index As Integer For Index = 0 To m_KitMachList.Count - 1 If m_KitMachList( Index).nId = nKitMachIndex Then m_KitMachList.RemoveAt( Index) Exit For End If Next KitValue.KitMachList.RemoveAt( Index) ' Tolgo la lavorazione dal file EraseKitMach( KitValue.nId, nKitMachIndex) ' Ricarico tutto m_PreviousSelectedKitIndex = KitsLstBx.SelectedItem.nId - 1 m_PreviousSelectedKitMachIndex = 0 LoadPage() End Sub Private Sub KitsLstBx_PreviewMouseUp(sender As Object, e As MouseButtonEventArgs) Handles KitsLstBx.PreviewMouseUp If Not SaveKit() Then KitsLstBx.SelectedItem = m_OldItem Exit Sub End If Dim SelectedKit As Kit = KitsLstBx.SelectedItem If Not IsNothing(SelectedKit) Then ' resetto la lista m_KitMachList.Clear() ' carico la lista dei KitMach relativi al Kit selezionato For Each kmItem As KitMach In KitsLstBx.SelectedItem.KitMachList Dim KitMachItem = New KitMach( kmItem) m_KitMachList.Add( KitMachItem) Next ' seleziono il primo elemento della lista dei Kit KitMachsLstBx.SelectedItem = m_KitMachList( 0) ' visualizzo i parametri relativi al KitMach selezionato ShowKitMach( m_KitMachList( 0)) m_OldItem = KitsLstBx.SelectedItem IsModifiedReset() End If End Sub Friend Function SaveKit() As Boolean ' Se non modificato non va fatto alcunché If Not IsModified() Then Return True ' Chiedo cosa fare ed eseguo Dim SaveCurrKitWnd As New EgtMsgBox( m_MainWindow, "", EgtMsg(91124), EgtMsgBox.Buttons.YES_NO_CANCEL, EgtMsgBox.Icons.NULL) Select Case SaveCurrKitWnd.m_nPressedBtn Case 1 ' Si Save( m_OldItem.nId) Return True Case 2 ' No m_PreviousSelectedKitIndex = KitsLstBx.SelectedItem.nId - 1 LoadPage() Return True Case Else ' Annulla Return False End Select End Function Private ReadOnly Property IsModified() As Boolean Get If Not IsNothing(m_OldItem) Then Dim nKitIndex As Integer = m_OldItem.nId If nKitIndex <= m_KitList.Count Then For Each KitMachItem In m_KitList(nKitIndex - 1).KitMachList If KitMachItem.m_IsModifiedId OrElse KitMachItem.m_IsModifiedToolUUID OrElse KitMachItem.m_IsModifiedToolName OrElse KitMachItem.m_IsModifiedSelTool OrElse KitMachItem.m_IsModifiedActive OrElse KitMachItem.m_IsModifiedContour OrElse KitMachItem.m_IsModifiedZigZagX OrElse KitMachItem.m_IsModifiedZigZagY OrElse KitMachItem.m_IsModifiedStepX OrElse KitMachItem.m_IsModifiedStepY OrElse KitMachItem.m_IsModifiedLiLen OrElse KitMachItem.m_IsModifiedLiHeight OrElse KitMachItem.m_IsModifiedLiLoad Then Return True End If Next End If End If Return False End Get End Property Private Sub IsModifiedReset() If IsNothing( m_OldItem) Then Return Dim nKitIndex As Integer = m_OldItem.nId If nKitIndex <= m_KitList.Count Then For Each KitMachItem In m_KitList(nKitIndex - 1).KitMachList KitMachItem.m_IsModifiedId = False KitMachItem.m_IsModifiedToolUUID = False KitMachItem.m_IsModifiedToolName = False KitMachItem.m_IsModifiedSelTool = False KitMachItem.m_IsModifiedActive = False KitMachItem.m_IsModifiedContour = False KitMachItem.m_IsModifiedZigZagX = False KitMachItem.m_IsModifiedZigZagY = False KitMachItem.m_IsModifiedStepX = False KitMachItem.m_IsModifiedStepY = False KitMachItem.m_IsModifiedLiLen = False KitMachItem.m_IsModifiedLiHeight = False KitMachItem.m_IsModifiedLiLoad = False Next End If End Sub Private Sub ShowKitMach( kmShow As KitMach) ' visualizzo i parametri del KitMach ContourTxBx.Text = kmShow.nContour.ToString() ZigZagXTxBx.Text = kmShow.nZigZagX.ToString() StepXTxBx.Text = LenToString( kmShow.dStepX, 3) ZigZagYTxBx.Text = kmShow.nZigZagY.ToString() StepYTxBx.Text = LenToString( kmShow.dStepY, 3) LiLenTxBx.Text = LenToString( kmShow.dLiLen, 3) LiHeightTxBx.Text = LenToString( kmShow.dLiHeight, 3) LiLoadTxBx.Text = LenToString( kmShow.dLiLoad, 3) End Sub Private Sub KitMachsLstBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) Handles KitMachsLstBx.SelectionChanged Dim SelectedKitMach As KitMach = KitMachsLstBx.SelectedItem If Not IsNothing(SelectedKitMach) Then ' visualizzo i parametri relativi al KitMach selezionato ShowKitMach( SelectedKitMach) End If End Sub Private Sub ContourTxBx_EgtClosed(sender As Object, e As EventArgs) Handles ContourTxBx.EgtClosed Dim nTemp As Integer = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then nTemp = ContourTxBx.Text KitMachsLstBx.SelectedItem.nContour = nTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).nContour = nTemp End If End Sub Private Sub ZigZagXTxBx_EgtClosed(sender As Object, e As EventArgs) Handles ZigZagXTxBx.EgtClosed Dim nTemp As Integer = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then nTemp = ZigZagXTxBx.Text KitMachsLstBx.SelectedItem.nZigZagX = nTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).nZigZagX = nTemp End If End Sub Private Sub StepXTxBx_EgtClosed(sender As Object, e As EventArgs) Handles StepXTxBx.EgtClosed Dim dTemp As Double = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then StringToLen(StepXTxBx.Text, dTemp) KitMachsLstBx.SelectedItem.dStepX = dTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).dStepX = dTemp End If End Sub Private Sub ZigZagYTxBx_EgtClosed(sender As Object, e As EventArgs) Handles ZigZagYTxBx.EgtClosed Dim nTemp As Integer = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then nTemp = ZigZagYTxBx.Text KitMachsLstBx.SelectedItem.nZigZagY = nTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).nZigZagY = nTemp End If End Sub Private Sub StepYTxBx_EgtClosed(sender As Object, e As EventArgs) Handles StepYTxBx.EgtClosed Dim dTemp As Double = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then StringToLen(StepYTxBx.Text, dTemp) KitMachsLstBx.SelectedItem.dStepY = dTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).dStepY = dTemp End If End Sub Private Sub LiLenTxBx_EgtClosed(sender As Object, e As EventArgs) Handles LiLenTxBx.EgtClosed Dim dTemp As Double = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then StringToLen(LiLenTxBx.Text, dTemp) KitMachsLstBx.SelectedItem.dLiLen = dTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).dLiLen = dTemp End If End Sub Private Sub LiHeightTxBx_EgtClosed(sender As Object, e As EventArgs) Handles LiHeightTxBx.EgtClosed Dim dTemp As Double = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then StringToLen(LiHeightTxBx.Text, dTemp) KitMachsLstBx.SelectedItem.dLiHeight = dTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).dLiHeight = dTemp End If End Sub Private Sub LiLoadTxBx_EgtClosed(sender As Object, e As EventArgs) Handles LiLoadTxBx.EgtClosed Dim dTemp As Double = 0 If Not IsNothing(KitMachsLstBx.SelectedItem) Then StringToLen(LiLoadTxBx.Text, dTemp) KitMachsLstBx.SelectedItem.dLiLoad = dTemp m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).dLiLoad = dTemp End If End Sub Private Sub CheckBox_Click(sender As Object, e As RoutedEventArgs) If Not IsNothing(KitMachsLstBx.SelectedItem) Then m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).bActive = KitMachsLstBx.SelectedItem.bActive End If End Sub Private Sub ToolCmBx_SelectionChanged(sender As Object, e As SelectionChangedEventArgs) If Not IsNothing( KitMachsLstBx.SelectedItem) Then m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).SelTool = KitMachsLstBx.SelectedItem.SelTool If KitMachsLstBx.SelectedItem.SelTool >= 0 then KitMachsLstBx.SelectedItem.sToolName = m_ToolList( KitMachsLstBx.SelectedItem.SelTool) KitMachsLstBx.SelectedItem.sToolUUID = m_ToolUuidList( KitMachsLstBx.SelectedItem.SelTool) Else KitMachsLstBx.SelectedItem.sToolName = "---" KitMachsLstBx.SelectedItem.sToolUUID = "---" End If m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).sToolName = KitMachsLstBx.SelectedItem.sToolName m_OldItem.KitMachList(KitMachsLstBx.SelectedItem.nId - 1).sToolUUID = KitMachsLstBx.SelectedItem.sToolUUID End If End Sub Private Function ReadKitName( nKitIndex As Integer) As String ' Leggo il nome del kit Dim sKey As String = K_KIT & nKitIndex.ToString("D2") Dim sName As String = "" GetPrivateProfileString( S_HEADER, sKey, "", sName, m_sKitFile) Return sName End Function Private Function ReadKit( nKitIndex As Integer, removeFlag As Boolean, ByRef Kit As Kit) As Boolean ' Leggo il nome del kit Dim sName As String = ReadKitName( nKitIndex) If String.IsNullOrWhiteSpace( sName) Then Return False ' Creo il kit Kit = New Kit( If( removeFlag, nKitIndex - 1, nKitIndex), sName) ' Leggo le sue lavorazioni For nkitMachIndex As Integer = 1 To 100 Dim kmItem As KitMach = Nothing if ReadKitMach( sName, nkitMachIndex, kmItem) Then Kit.AddKitMach( kmItem) Else Exit For End If Next ' Se non sono state trovate lavorazioni, ne aggiungo una standard If Kit.KitMachList.Count() = 0 Then Kit.AddKitMach( New KitMach( 1)) End If Return True End Function Private Function ReadKitMach( sKitName As String, nKitMachIndex As Integer, ByRef kmItem As KitMach) As Boolean ' Verifico esistenza lavorazione del kit Dim sSect As String = S_KIT & "." & sKitName Dim sKeyInd As String = nkitMachIndex.ToString("D2") & "." Dim sName As String = "" If GetPrivateProfileString( sSect, sKeyInd & K_TOOLNAME, "", sName, m_sKitFile) = 0 Then Return False ' Lettura completa kmItem = New KitMach kmItem.sToolName = sName kmItem.nId = nkitMachIndex GetPrivateProfileString( sSect, sKeyInd & K_TOOL, "", kmItem.sToolUUID, m_sKitFile) kmItem.bActive = ( GetPrivateProfileInt( sSect, sKeyInd & K_ACTIVE, 0, m_sKitFile) = 1) kmItem.nContour = GetPrivateProfileInt( sSect, sKeyInd & K_CONTOUR, 0, m_sKitFile) kmItem.nZigZagX = GetPrivateProfileInt( sSect, sKeyInd & K_ZIGZAGX, 0, m_sKitFile) kmItem.dStepX = GetPrivateProfileDouble( sSect, sKeyInd & K_STEPX, 0, m_sKitFile) kmItem.nZigZagY = GetPrivateProfileInt( sSect, sKeyInd & K_ZIGZAGY, 0, m_sKitFile) kmItem.dStepY = GetPrivateProfileDouble( sSect, sKeyInd & K_STEPY, 0, m_sKitFile) kmItem.dLiLen = GetPrivateProfileDouble( sSect, sKeyInd & K_LILEN, 0, m_sKitFile) kmItem.dLiHeight = GetPrivateProfileDouble( sSect, sKeyInd & K_LIHEIGHT, 0, m_sKitFile) kmItem.dLiLoad = GetPrivateProfileDouble( sSect, sKeyInd & K_LILOAD, 0, m_sKitFile) Return True End Function Friend Function WriteKitName( nKitIndex As Integer, sKitName As String) As Boolean Dim sKey As String = K_KIT & nKitIndex.ToString("D2") Return WritePrivateProfileString( S_HEADER, sKey, sKitName, m_sKitFile) End Function Private Function WriteKitMach( nKitIndex As Integer, nKitMachIndex As Integer, kmItem As KitMach) As Boolean ' Leggo il nome del kit Dim sKitName As String = ReadKitName( nKitIndex) If String.IsNullOrWhiteSpace( sKitName) Then Return False ' Sezione Dim sSect As String = S_KIT & "." & sKitName ' Indice Dim sKeyInd As String = nKitMachIndex.ToString("D2") & "." ' Scrivo i dati della lavorazione If Not IsNothing( kmItem) Then WritePrivateProfileString( sSect, sKeyInd & K_TOOL, kmItem.sToolUUID, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_TOOLNAME, kmItem.sToolName, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ACTIVE, If( kmItem.bActive, "1", "0"), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_CONTOUR, kmItem.nContour.ToString(), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ZIGZAGX, kmItem.nZigZagX.ToString(), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_STEPX, DoubleToString( kmItem.dStepX, 3), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ZIGZAGY, kmItem.nZigZagY.ToString(), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_STEPY, DoubleToString( kmItem.dStepY, 3), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LILEN, DoubleToString( kmItem.dLiLen, 3), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LIHEIGHT, DoubleToString( kmItem.dLiHeight, 3), m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LILOAD, DoubleToString( kmItem.dLiLoad, 3), m_sKitFile) Else WritePrivateProfileString( sSect, sKeyInd & K_TOOL, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_TOOLNAME, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ACTIVE, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_CONTOUR, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ZIGZAGX, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_STEPX, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_ZIGZAGY, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_STEPY, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LILEN, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LIHEIGHT, Nothing, m_sKitFile) WritePrivateProfileString( sSect, sKeyInd & K_LILOAD, Nothing, m_sKitFile) End If Return True End Function Private Function EraseKit( nKitIndex As Integer) As Boolean ' Leggo il nome del kit Dim sKitName As String = ReadKitName( nKitIndex) If String.IsNullOrWhiteSpace( sKitName) Then Return False ' Lo elimino dalla lista dei kit scalando tutti di una posizione e eliminando l'ultimo Dim nNextKitIndex As Integer = nKitIndex + 1 Dim sNextKitName As String = ReadKitName( nNextKitIndex) while Not String.IsNullOrWhiteSpace( sNextKitName) WriteKitName( nNextKitIndex - 1, sNextKitName) nNextKitIndex += 1 sNextKitName = ReadKitName( nNextKitIndex) End While WriteKitName( nNextKitIndex - 1, Nothing) ' Sezione Dim sSect As String = S_KIT & "." & sKitName ' Cancello tutte le lavorazioni del kit WritePrivateProfileString( sSect, Nothing, Nothing, m_sKitFile) Return True End Function Private Function EraseKitMach( nKitIndex As Integer, nKitMachIndex As Integer) As Boolean ' Leggo il nome del kit Dim sKitName As String = ReadKitName( nKitIndex) If String.IsNullOrWhiteSpace( sKitName) Then Return False ' Lo elimino dali KitMach scalando tutti di una posizione e eliminando l'ultimo Dim kmCurr As KitMach = Nothing Dim nNextKitMachIndex As Integer = nKitMachIndex + 1 While ReadKitMach( sKitName, nNextKitMachIndex, kmCurr) kmCurr.nId = nNextKitMachIndex - 1 WriteKitMach( nKitIndex, nNextKitMachIndex - 1, kmCurr) nNextKitMachIndex += 1 End While WriteKitMach( nKitIndex, nNextKitMachIndex - 1, Nothing) Return True End Function Private Sub ActiveChBx_GotFocus(sender As Object, e As RoutedEventArgs) Dim myCheckBox As CheckBox = sender Dim Parent As DependencyObject = VisualTreeHelper.GetParent(myCheckBox) While (Not (TypeOf (Parent) Is ListBoxItem)) Parent = VisualTreeHelper.GetParent(Parent) End While Dim myListBoxItem As ListBoxItem = Parent myListBoxItem.IsSelected = True End Sub Private Sub ToolCmBx_GotFocus(sender As Object, e As RoutedEventArgs) Dim myComboBox As ComboBox = sender Dim Parent As DependencyObject = VisualTreeHelper.GetParent(myComboBox) While (Not (TypeOf (Parent) Is ListBoxItem)) Parent = VisualTreeHelper.GetParent(Parent) End While Dim myListBoxItem As ListBoxItem = Parent myListBoxItem.IsSelected = True End Sub End Class Class Kit ' Riferimento alla MainWindow Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Private m_nId As Integer Private m_sName As String Private m_KitMachList As List(Of KitMach) Public Property nId As Integer Get Return m_nId End Get Set( value As Integer) m_nId = value End Set End Property Public ReadOnly Property sName As String Get Return m_sName End Get End Property Public Property KitMachList As List(Of KitMach) Get Return m_KitMachList End Get Set(value As List(Of KitMach)) m_KitMachList = value End Set End Property Sub New( nId As Integer, sName As String) m_nId = nId m_sName = sName m_KitMachList = New List(Of KitMach) End Sub Sub New( nId As Integer, sName As String, kitSou As Kit) m_nId = nId m_sName = sName m_KitMachList = New List(Of KitMach) If IsNothing( kitSou) Then Return For Each kmItem As KitMach In kitSou.m_KitMachList AddKitMach( kmItem) Next End Sub Sub AddKitMach( kitMachItem As KitMach) m_KitMachList.Add(kitMachItem) End Sub End Class Class KitMach ' Riferimento alla MainWindow Private m_MainWindow As MainWindow = DirectCast(Application.Current.MainWindow, MainWindow) Private m_nId As Integer Private m_sToolUUID As String Private m_sToolName As String Private m_SelTool As Integer Friend Shared m_ToolList As List(Of String) Private m_bActive As Boolean Private m_nContour As Integer Private m_nZigZagX As Integer Private m_dStepX As Double Private m_nZigZagY As Integer Private m_dStepY As Double Private m_dLiLen As Double Private m_dLiHeight As Double Private m_dLiLoad As Double Public m_IsModifiedId As Boolean = False Public Property nId As Integer Get Return m_nId End Get Set(value As Integer) If value <> m_nId Then m_nId = value m_IsModifiedId = True End If End Set End Property Public m_IsModifiedToolUUID As Boolean = False Public Property sToolUUID As String Get Return m_sToolUUID End Get Set(value As String) If value <> m_sToolUUID Then m_sToolUUID = value m_IsModifiedToolUUID = True ' In base al ToolUUID appena modificato recupero il nome dell'utensile e aggiorno ToolName Dim sToolNameDummy As String = m_sToolName If (Not EgtTdbGetToolFromUUID(m_sToolUUID, m_sToolName)) Or (Not m_MainWindow.m_MachinePageUC.m_PolishingsPageUC.ToolList.Contains(sToolNameDummy)) Or (Not m_sToolName.Equals(sToolNameDummy)) Then ' Se non riesco a recuperare il nome o il nome recuperato non è presente nella lista dei Tool caricati ' cerco tra i ToolUuid caricati quello che restituisca un nome uguale al nome dell'utensile corrente. ' Se lo trovo assegno il ToolUuid che corrisponde al nome dell'utensile corrente all'utensile corrente. If m_MainWindow.m_MachinePageUC.m_PolishingsPageUC.ToolList.Contains(sToolNameDummy) And (Not m_sToolName.Equals(sToolNameDummy)) Then m_sToolName = sToolNameDummy End If For Each sToolUuidItem In m_MainWindow.m_MachinePageUC.m_PolishingsPageUC.ToolUuidList EgtTdbGetToolFromUUID(sToolUuidItem, sToolNameDummy) If sToolNameDummy.Equals(m_sToolName) Then m_sToolUUID = sToolUuidItem Exit For End If Next End If End If End Set End Property Public m_IsModifiedToolName As Boolean = False Public Property sToolName As String Get Return m_sToolName End Get Set(value As String) If value <> m_sToolName Then m_sToolName = value m_IsModifiedToolName = True End If End Set End Property Public m_IsModifiedSelTool As Boolean = False Public Property SelTool As Integer Get Return m_SelTool End Get Set(value As Integer) If value <> m_SelTool Then m_SelTool = value m_IsModifiedSelTool = True End If End Set End Property Public Property ToolList As List(Of String) Get Return m_ToolList End Get Set(value As List(Of String)) m_ToolList = value End Set End Property Public m_IsModifiedActive As Boolean = False Public Property bActive As Boolean Get Return m_bActive End Get Set(value As Boolean) If value <> m_bActive Then m_bActive = value m_IsModifiedActive = True End If End Set End Property Public m_IsModifiedContour As Boolean = False Public Property nContour As Integer Get Return m_nContour End Get Set(value As Integer) If value <> m_nContour Then m_nContour = value m_IsModifiedContour = True End If End Set End Property Public m_IsModifiedZigZagX As Boolean = False Public Property nZigZagX As Integer Get Return m_nZigZagX End Get Set(value As Integer) If value <> m_nZigZagX Then m_nZigZagX = value m_IsModifiedZigZagX = True End If End Set End Property Public m_IsModifiedStepX As Boolean = False Public Property dStepX As Double Get Return m_dStepX End Get Set(value As Double) If value <> m_dStepX Then m_dStepX = value m_IsModifiedStepX = True End If End Set End Property Public m_IsModifiedZigZagY As Boolean = False Public Property nZigZagY As Integer Get Return m_nZigZagY End Get Set(value As Integer) If value <> m_nZigZagY Then m_nZigZagY = value m_IsModifiedZigZagY = True End If End Set End Property Public m_IsModifiedStepY As Boolean = False Public Property dStepY As Double Get Return m_dStepY End Get Set(value As Double) If value <> m_dStepY Then m_dStepY = value m_IsModifiedStepY = True End If End Set End Property Public m_IsModifiedLiLen As Boolean = False Public Property dLiLen As Double Get Return m_dLiLen End Get Set(value As Double) If value <> m_dLiLen Then m_dLiLen = value m_IsModifiedLiLen = True End If End Set End Property Public m_IsModifiedLiHeight As Boolean = False Public Property dLiHeight As Double Get Return m_dLiHeight End Get Set(value As Double) If value <> m_dLiHeight Then m_dLiHeight = value m_IsModifiedLiHeight = True End If End Set End Property Public m_IsModifiedLiLoad As Boolean = False Public Property dLiLoad As Double Get Return m_dLiLoad End Get Set(value As Double) If value <> m_dLiLoad Then m_dLiLoad = value m_IsModifiedLiLoad = True End If End Set End Property Sub New() m_nId = 0 m_SelTool = 0 m_sToolUUID = "---" m_sToolName = "---" m_bActive = False m_nContour = 0 m_nZigZagX = 0 m_dStepX = 0 m_nZigZagY = 0 m_dStepY = 0 m_dLiLen = 0 m_dLiHeight = 0 m_dLiLoad = 0 End Sub Sub New( nId As Integer) m_nId = nId m_SelTool = 0 m_sToolUUID = "---" m_sToolName = "---" m_bActive = False m_nContour = 0 m_nZigZagX = 0 m_dStepX = 0 m_nZigZagY = 0 m_dStepY = 0 m_dLiLen = 0 m_dLiHeight = 0 m_dLiLoad = 0 End Sub Sub New( kmSou As KitMach) m_nId = kmSou.nId m_SelTool = kmSou.selTool m_sToolUUID = kmSou.sToolUUID m_sToolName = kmSou.sToolName m_bActive = kmSou.bActive m_nContour = kmSou.nContour m_nZigZagX = kmSou.nZigZagX m_dStepX = kmSou.dStepX m_nZigZagY = kmSou.nZigZagY m_dStepY = kmSou.dStepY m_dLiLen = kmSou.dLiLen m_dLiHeight = kmSou.dLiHeight m_dLiLoad = kmSou.m_dLiLoad End Sub End Class