Files
cameramanager/CameraMng/SetConfigForm.vb
T
2025-07-29 15:59:45 +02:00

156 lines
5.8 KiB
VB.net

Imports System.Globalization
Imports System.IO
Public Class SetConfigForm
Private CameraListCfg As New List(Of String)
Private myImage As Image
Sub New()
' La chiamata è richiesta dalla finestra di progettazione.
InitializeComponent()
' Aggiungere le eventuali istruzioni di inizializzazione dopo la chiamata a InitializeComponent().
PopolateDataGrid()
End Sub
Private Sub PopolateDataGrid()
DataGridView1.Rows.Clear()
CameraListCfg.Clear()
ComboCamera.Items.Clear()
Dim DirToReadCfg As String = FrmMain.sDataRoot
' Popolo combobox con idcamera
For Each CameraItem As String In FrmMain.ComboBoxCameras.Items
ComboCamera.Items.Add(CameraItem)
Next
' Popolo text con configurazione
For Each CfgItem As String In FrmMain.ComboBoxCameraCfg.Items
Dim NomeFileCfg As String = DirToReadCfg & If(CfgItem = "Default", String.Empty, CfgItem) & "\CameraMng.cfg"
Dim riga As New DataGridViewRow()
' Crea le celle corrispondenti alle colonne
riga.CreateCells(DataGridView1)
riga.Cells(0).Value = CfgItem
Dim id As String = ReadIdCameraFromCfg(NomeFileCfg)
If Not String.IsNullOrEmpty(id) Then
' Icone CFG
If CameraListCfg.IndexOf(id) < 0 Then
CameraListCfg.Add(id)
riga.Cells(1).Value = GetCurrIco(2)
Else
riga.Cells(1).Value = GetCurrIco(0)
End If
' Icone CAMERA
If ComboCamera.Items.IndexOf(id) > -1 Then
riga.Cells(3).Value = GetCurrIco(2)
riga.Cells(2).Value = id
' aggiungo all'elenco degli id camera
ComboCamera.Items.Add(id)
Else
riga.Cells(3).Value = GetCurrIco(0)
End If
Else
riga.Cells(1).Value = GetCurrIco(-1)
riga.Cells(3).Value = GetCurrIco(-1)
End If
riga.Cells(4).Value = "Save"
riga.Cells(5).Value = "Apply"
' Aggiungi la riga completa al DataGridView
DataGridView1.Rows.Add(riga)
Next
End Sub
Private Function ReadIdCameraFromCfg(NomeFileCfg As String) As String
Dim IDCamera As String = String.Empty
Dim reader As New StreamReader(NomeFileCfg)
Dim nfi As NumberFormatInfo = New CultureInfo("en-US", False).NumberFormat
nfi.NumberDecimalSeparator = "."
Dim TmpString As String = ""
Try
While (Not reader.EndOfStream)
TmpString = reader.ReadLine()
If TmpString.StartsWith("CameraID=") Then
IDCamera = Mid(TmpString, 10)
Exit While
End If
End While
reader.Close()
reader.Dispose()
Catch ex As Exception
MsgBox("Error in Cfg File " & TmpString)
End Try
Return IDCamera
End Function
Private Function GetCurrIco(Index As Integer) As Image
Select Case Index
Case -1
myImage = My.Resources.cross
Case 0
myImage = My.Resources.warning
Case Else
myImage = My.Resources.accept
End Select
Return myImage
End Function
Public Sub SaveIDCamera(IDConfing As String, IDCamera As String)
Dim NomeFileCfg, TmpString As String
Dim NomeFileTempCfg, DirToReadCfg As String
Dim SaveFileCfg As String
Dim nf As Integer
Dim writer As StreamWriter
Try
DirToReadCfg = FrmMain.sDataRoot & IDConfing
NomeFileCfg = DirToReadCfg & "\CameraMng.cfg"
NomeFileTempCfg = DirToReadCfg & "\CameraMngTmp.cfg"
SaveFileCfg = DirToReadCfg & "\CameraMng" & Format(Now, "yyyyMMddhhmmss") & ".cfg"
If (File.Exists(NomeFileTempCfg)) Then
File.Delete(NomeFileTempCfg)
End If
nf = FreeFile()
FileOpen(nf, NomeFileCfg, OpenMode.Input)
writer = New StreamWriter(NomeFileTempCfg)
TmpString = ""
While Not EOF(nf)
TmpString = LineInput(nf)
If Not TmpString.StartsWith("CameraID=") Then
writer.WriteLine(TmpString, CultureInfo.InvariantCulture)
End If
End While
writer.WriteLine("CameraID=" & IDCamera, CultureInfo.InvariantCulture)
FileClose(nf)
writer.Close()
File.Copy(NomeFileCfg, SaveFileCfg)
If (File.Exists(NomeFileCfg)) Then
File.Delete(NomeFileCfg)
End If
File.Copy(NomeFileTempCfg, NomeFileCfg)
File.Delete(NomeFileTempCfg)
MessageBox.Show("New ID succesfully written on '" & NomeFileCfg & "'.", "Avviso", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MsgBox("Error in Writing Cfg File " & ex.Message)
End Try
End Sub
Private Sub DataGridView1_CellContentClick(sender As Object, e As DataGridViewCellEventArgs) Handles DataGridView1.CellContentClick
' Controlla che il click non sia sull'intestazione della colonna
If e.RowIndex < 0 Then Return
Dim IDConfig As String = DataGridView1.Rows(e.RowIndex).Cells("Config").Value.ToString()
Dim IDCamera As String = DataGridView1.Rows(e.RowIndex).Cells("ComboCamera").Value.ToString()
' Controlla se il click è avvenuto nella colonna dei bottoni (Usa il nome che hai dato alla colonna)
If Me.DataGridView1.Columns(e.ColumnIndex).Name = "SaveConfig" Then
SaveIDCamera(IDConfig, IDCamera)
PopolateDataGrid()
ElseIf Me.DataGridView1.Columns(e.ColumnIndex).Name = "ApplyConfig" Then
Dim IndCamera As Integer = FrmMain.ComboBoxCameras.Items.IndexOf(IDCamera)
FrmMain.ComboBoxCameras.SelectedIndex = IndCamera
Dim IndCameraCfg As Integer = FrmMain.ComboBoxCameraCfg.Items.IndexOf(IDConfig)
FrmMain.ComboBoxCameraCfg.SelectedIndex = IndCameraCfg
End If
End Sub
End Class