EgtCAM5 :
- Aggiunte moltefunzionalità di gestione tabelle per Doors. - Migliorata la Behaviour di Scroll per ListBox e aggiunta quella per DataGrid
This commit is contained in:
+349
-11
@@ -1,29 +1,34 @@
|
||||
Imports System.Collections.ObjectModel
|
||||
Imports System.IO
|
||||
Imports EgtUILib
|
||||
Imports System.Text.RegularExpressions
|
||||
|
||||
Namespace EgtCAM5
|
||||
|
||||
Public Class MTableDbViewModel
|
||||
Inherits TabViewModel
|
||||
|
||||
Private m_TablesList As New ObservableCollection(Of String)
|
||||
Public Property TablesList As ObservableCollection(Of String)
|
||||
Private m_TablesList As New ObservableCollection(Of MTableListBoxItem)
|
||||
Public Property TablesList As ObservableCollection(Of MTableListBoxItem)
|
||||
Get
|
||||
Return m_TablesList
|
||||
End Get
|
||||
Set(value As ObservableCollection(Of String))
|
||||
Set(value As ObservableCollection(Of MTableListBoxItem))
|
||||
m_TablesList = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private m_SelectedTable As String
|
||||
Public Property SelectedTable As String
|
||||
Private m_SelectedTable As MTableListBoxItem
|
||||
Public Property SelectedTable As MTableListBoxItem
|
||||
Get
|
||||
Return m_SelectedTable
|
||||
End Get
|
||||
Set(value As String)
|
||||
m_SelectedTable = value
|
||||
Set(value As MTableListBoxItem)
|
||||
If value IsNot m_SelectedTable Then
|
||||
m_SelectedTable = value
|
||||
m_SelectedTable.SelectedAssociation = If(m_SelectedTable.AssociationList.Count > 0, m_SelectedTable.AssociationList(0), Nothing)
|
||||
OnPropertyChanged("SelectedTable")
|
||||
End If
|
||||
End Set
|
||||
End Property
|
||||
|
||||
@@ -34,23 +39,356 @@ Namespace EgtCAM5
|
||||
End Get
|
||||
End Property
|
||||
|
||||
' Definizione comandi
|
||||
Private m_cmdNewTable As ICommand
|
||||
Private m_cmdSaveTable As ICommand
|
||||
Private m_cmdSaveTableAs As ICommand
|
||||
Private m_cmdRemoveTable As ICommand
|
||||
Private m_cmdAddMach As ICommand
|
||||
Private m_cmdRemoveMach As ICommand
|
||||
Private m_cmdAddRow As ICommand
|
||||
Private m_cmdRemoveRow As ICommand
|
||||
Private m_cmdMoveRowUp As ICommand
|
||||
Private m_cmdMoveRowDown As ICommand
|
||||
|
||||
#Region "CONSTRUCTOR"
|
||||
|
||||
Sub New()
|
||||
SearchTables()
|
||||
SelectedTable = If(m_TablesList.Count > 0, m_TablesList(0), Nothing)
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "METHODS"
|
||||
|
||||
Private Sub SearchTables()
|
||||
' Leggo dal file ini il direttorio per le Table
|
||||
If GetPrivateProfileString(S_TABLE, K_TABLESDIR, "", m_sTablesRoot) = 0 _
|
||||
Or Not My.Computer.FileSystem.DirectoryExists(m_sTablesRoot) Then
|
||||
If GetPrivateProfileString(S_TABLE, K_TABLESDIR, "", IniFile.m_sTablesRoot) = 0 _
|
||||
Or Not My.Computer.FileSystem.DirectoryExists(IniFile.m_sTablesRoot) Then
|
||||
' Se non lo trovo mando messaggio di errore e chiudo la finestra
|
||||
MessageBox.Show("ERROR IN LOADING TABLES", "Tables dir not found.")
|
||||
End If
|
||||
' se trovo la cartella carico la lista di tabelle
|
||||
For Each Table In My.Computer.FileSystem.GetFiles(m_sTablesRoot)
|
||||
m_TablesList.Add(Path.GetFileNameWithoutExtension(Table))
|
||||
For Each Table In My.Computer.FileSystem.GetFiles(IniFile.m_sTablesRoot)
|
||||
If Path.GetExtension(Table).ToLower = ".lua" Then
|
||||
m_TablesList.Add(New MTableListBoxItem(Path.GetFileNameWithoutExtension(Table), Table))
|
||||
Dim sNameIndex As String = Regex.Match(Path.GetFileNameWithoutExtension(Table), "MTable_(\d+)").Groups(1).Value
|
||||
Dim nNameIndex As Integer = 0
|
||||
If String.IsNullOrEmpty(sNameIndex) Then
|
||||
' il suo valore di default è 1 quindi lo imposto a questo valore
|
||||
nNameIndex = 0
|
||||
Else
|
||||
Integer.TryParse(sNameIndex, nNameIndex)
|
||||
End If
|
||||
If nNameIndex > MTableListBoxItem.NewMTableIndex Then
|
||||
MTableListBoxItem.NewMTableIndex = nNameIndex
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "COMMANDS"
|
||||
|
||||
#Region "NewTableCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property NewTableCommand As ICommand
|
||||
Get
|
||||
If m_cmdNewTable Is Nothing Then
|
||||
m_cmdNewTable = New RelayCommand(AddressOf NewTable)
|
||||
End If
|
||||
Return m_cmdNewTable
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub NewTable(ByVal param As Object)
|
||||
Dim NewMTable As MTableListBoxItem = New MTableListBoxItem("MTable_" & MTableListBoxItem.NewMTableIndex, String.Empty)
|
||||
m_TablesList.Add(NewMTable)
|
||||
MTableListBoxItem.NewMTableIndex += 1
|
||||
SelectedTable = NewMTable
|
||||
End Sub
|
||||
|
||||
#End Region ' NewTableCommand
|
||||
|
||||
#Region "SaveTableCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property SaveTableCommand As ICommand
|
||||
Get
|
||||
If m_cmdSaveTable Is Nothing Then
|
||||
m_cmdSaveTable = New RelayCommand(AddressOf SaveTable)
|
||||
End If
|
||||
Return m_cmdSaveTable
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Private Const MMACHINEDATA As String = ".MMachineData"
|
||||
Private Const MTABLE As String = ".MTable"
|
||||
Private Const DATETIME As String = "%DATE_TIME%"
|
||||
Private Const TABLENAME As String = "%TABLE_NAME%"
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub SaveTable()
|
||||
If String.IsNullOrEmpty(SelectedTable.TableNamePath) Then
|
||||
SaveTableAs()
|
||||
Return
|
||||
End If
|
||||
TableUtility.WriteDoorsTable(SelectedTable, SelectedTable.TableNamePath)
|
||||
End Sub
|
||||
|
||||
#End Region ' SaveTableCommand
|
||||
|
||||
#Region "SaveTableAsCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property SaveTableAsCommand As ICommand
|
||||
Get
|
||||
If m_cmdSaveTableAs Is Nothing Then
|
||||
m_cmdSaveTableAs = New RelayCommand(AddressOf SaveTableAs)
|
||||
End If
|
||||
Return m_cmdSaveTableAs
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub SaveTableAs()
|
||||
Dim sFile As String = String.Empty
|
||||
' Direttorio corrente per MTable
|
||||
Dim sDir As String = IniFile.m_sTablesRoot
|
||||
' Apertura dialogo di scelta file DDF
|
||||
Dim SaveFileDialog As New System.Windows.Forms.SaveFileDialog
|
||||
SaveFileDialog.Title = "Save MTable file"
|
||||
SaveFileDialog.Filter = "MTable Lua script(*.lua)|*.lua"
|
||||
SaveFileDialog.FilterIndex = 1
|
||||
SaveFileDialog.InitialDirectory = sDir
|
||||
SaveFileDialog.FileName = m_SelectedTable.TableName
|
||||
If SaveFileDialog.ShowDialog <> Windows.Forms.DialogResult.OK Then
|
||||
Exit Sub
|
||||
End If
|
||||
sFile = SaveFileDialog.FileName
|
||||
TableUtility.WriteDoorsTable(SelectedTable, sFile)
|
||||
End Sub
|
||||
|
||||
#End Region ' SaveTableAsCommand
|
||||
|
||||
#Region "RemoveTableCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property RemoveTableCommand As ICommand
|
||||
Get
|
||||
If m_cmdRemoveTable Is Nothing Then
|
||||
m_cmdRemoveTable = New RelayCommand(AddressOf RemoveTable)
|
||||
End If
|
||||
Return m_cmdRemoveTable
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub RemoveTable(ByVal param As Object)
|
||||
If MessageBox.Show("Are you sure you want to delete this MTable?", "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
||||
File.Delete(SelectedTable.TableNamePath)
|
||||
Dim SelectedTableIndex As Integer = m_TablesList.IndexOf(m_SelectedTable)
|
||||
m_TablesList.RemoveAt(SelectedTableIndex)
|
||||
If SelectedTableIndex > 0 Then
|
||||
SelectedTable = TablesList(SelectedTableIndex - 1)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' RemoveTableCommand
|
||||
|
||||
#Region "AddMachCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property AddMachCommand As ICommand
|
||||
Get
|
||||
If m_cmdAddMach Is Nothing Then
|
||||
m_cmdAddMach = New RelayCommand(AddressOf AddMach)
|
||||
End If
|
||||
Return m_cmdAddMach
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub AddMach(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) Then
|
||||
m_SelectedTable.SharedMachIndex += 1
|
||||
m_SelectedTable.ActiveMachinesList.Add(New MTableMachineListBoxItem(String.Empty, False, False, m_SelectedTable.SharedMachIndex))
|
||||
m_SelectedTable.MachIdList.Add(m_SelectedTable.SharedMachIndex)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' AddMachCommand
|
||||
|
||||
#Region "RemoveMachCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property RemoveMachCommand As ICommand
|
||||
Get
|
||||
If m_cmdRemoveMach Is Nothing Then
|
||||
m_cmdRemoveMach = New RelayCommand(AddressOf RemoveMach)
|
||||
End If
|
||||
Return m_cmdRemoveMach
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub RemoveMach(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) And m_SelectedTable.ActiveMachinesList.Count > 1 Then
|
||||
m_SelectedTable.ActiveMachinesList.RemoveAt(m_SelectedTable.SharedMachIndex - 1)
|
||||
m_SelectedTable.MachIdList.RemoveAt(m_SelectedTable.SharedMachIndex - 1)
|
||||
m_SelectedTable.SharedMachIndex -= 1
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' RemoveMachCommand
|
||||
|
||||
#Region "AddRowCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property AddRowCommand As ICommand
|
||||
Get
|
||||
If m_cmdAddRow Is Nothing Then
|
||||
m_cmdAddRow = New RelayCommand(AddressOf AddRow)
|
||||
End If
|
||||
Return m_cmdAddRow
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub AddRow(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) And Not IsNothing(m_SelectedTable.SelectedAssociation) Then
|
||||
Dim SelectedIndex As Integer = m_SelectedTable.AssociationList.IndexOf(m_SelectedTable.SelectedAssociation)
|
||||
Dim NewEmptyRow As MTableAssociationGridBoxItem = New MTableAssociationGridBoxItem(False, String.Empty, 1, 0, String.Empty, String.Empty, String.Empty, String.Empty)
|
||||
m_SelectedTable.AssociationList.Insert(SelectedIndex, NewEmptyRow)
|
||||
m_SelectedTable.SelectedAssociation = NewEmptyRow
|
||||
m_SelectedTable.NotifyPropertyChanged("SelectedAssociation")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' AddRowCommand
|
||||
|
||||
#Region "RemoveRowCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property RemoveRowCommand As ICommand
|
||||
Get
|
||||
If m_cmdRemoveRow Is Nothing Then
|
||||
m_cmdRemoveRow = New RelayCommand(AddressOf RemoveRow)
|
||||
End If
|
||||
Return m_cmdRemoveRow
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub RemoveRow(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) And m_SelectedTable.AssociationList.Count > 1 Then
|
||||
Dim SelectedIndex As Integer = m_SelectedTable.AssociationList.IndexOf(m_SelectedTable.SelectedAssociation)
|
||||
m_SelectedTable.AssociationList.RemoveAt(SelectedIndex)
|
||||
If Not SelectedIndex < m_SelectedTable.AssociationList.Count Then
|
||||
SelectedIndex = m_SelectedTable.AssociationList.Count - 1
|
||||
End If
|
||||
m_SelectedTable.SelectedAssociation = m_SelectedTable.AssociationList(SelectedIndex)
|
||||
m_SelectedTable.NotifyPropertyChanged("SelectedAssociation")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' RemoveRowCommand
|
||||
|
||||
#Region "MoveRowUpCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property MoveRowUpCommand As ICommand
|
||||
Get
|
||||
If m_cmdMoveRowUp Is Nothing Then
|
||||
m_cmdMoveRowUp = New RelayCommand(AddressOf MoveRowUp)
|
||||
End If
|
||||
Return m_cmdMoveRowUp
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub MoveRowUp(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) Then
|
||||
Dim SelectedIndex As Integer = m_SelectedTable.AssociationList.IndexOf(m_SelectedTable.SelectedAssociation)
|
||||
If SelectedIndex >= 1 Then
|
||||
m_SelectedTable.AssociationList.Move(SelectedIndex, SelectedIndex - 1)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' MoveRowUpCommand
|
||||
|
||||
#Region "MoveRowDownCommand"
|
||||
|
||||
''' <summary>
|
||||
''' Returns a command that do Exec.
|
||||
''' </summary>
|
||||
Public ReadOnly Property MoveRowDownCommand As ICommand
|
||||
Get
|
||||
If m_cmdMoveRowDown Is Nothing Then
|
||||
m_cmdMoveRowDown = New RelayCommand(AddressOf MoveRowDown)
|
||||
End If
|
||||
Return m_cmdMoveRowDown
|
||||
End Get
|
||||
End Property
|
||||
|
||||
''' <summary>
|
||||
''' Execute the Exec. This method is invoked by the ExecCommand.
|
||||
''' </summary>
|
||||
Public Sub MoveRowDown(ByVal param As Object)
|
||||
If Not IsNothing(m_SelectedTable) Then
|
||||
Dim SelectedIndex As Integer = m_SelectedTable.AssociationList.IndexOf(m_SelectedTable.SelectedAssociation)
|
||||
If SelectedIndex < m_SelectedTable.AssociationList.Count - 1 Then
|
||||
m_SelectedTable.AssociationList.Move(SelectedIndex, SelectedIndex + 1)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
#End Region ' MoveRowDownCommand
|
||||
|
||||
#End Region
|
||||
|
||||
End Class
|
||||
|
||||
End Namespace
|
||||
Reference in New Issue
Block a user