diff --git a/Effector.Plugin.FiveLakes/Effector.Plugin.FiveLakes.vbproj b/Effector.Plugin.FiveLakes/Effector.Plugin.FiveLakes.vbproj
index 816ff61..a0e558e 100644
--- a/Effector.Plugin.FiveLakes/Effector.Plugin.FiveLakes.vbproj
+++ b/Effector.Plugin.FiveLakes/Effector.Plugin.FiveLakes.vbproj
@@ -140,14 +140,8 @@
Settings.settings
True
-
-
-
-
-
-
VbMyResourcesResXFileCodeGenerator
Resources.Designer.vb
diff --git a/Effector.Plugin.FiveLakes/FiveLakesUIVM.vb b/Effector.Plugin.FiveLakes/FiveLakesUIVM.vb
index 6ec2da6..bd55c38 100644
--- a/Effector.Plugin.FiveLakes/FiveLakesUIVM.vb
+++ b/Effector.Plugin.FiveLakes/FiveLakesUIVM.vb
@@ -1,5 +1,6 @@
Imports System.ComponentModel.Composition
Imports Effector.Plugin.Interface
+Imports Effector.Plugin.Lib
Public Class FiveLakesUIVM
Inherits VMBase
@@ -52,7 +53,7 @@ Public Class FiveLakesUIVM
' Impostazione direttorio di configurazione
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
' Impostazione path Ini file
- IniFile.SetIniFile(m_sConfigDir & "\" & INI_FILE_NAME)
+ PluginIniFile.SetIniFile(m_sConfigDir & "\" & INI_FILE_NAME)
Effector.Plugin.Lib.PluginIniFile.SetIniFile(m_sConfigDir & "\" & INI_FILE_NAME)
' Impostazione path resources dir
m_sResourcesRoot = m_sDataRoot & "\" & RES_DIR
diff --git a/Effector.Plugin.FiveLakes/LUA/Lua_General.vb b/Effector.Plugin.FiveLakes/LUA/Lua_General.vb
index ef56ab1..061769a 100644
--- a/Effector.Plugin.FiveLakes/LUA/Lua_General.vb
+++ b/Effector.Plugin.FiveLakes/LUA/Lua_General.vb
@@ -1,4 +1,5 @@
Imports KeraLua
+Imports Effector.Plugin.Lib
Public Module Lua_General
diff --git a/Effector.Plugin.FiveLakes/MachinePage/MachinePageVM.vb b/Effector.Plugin.FiveLakes/MachinePage/MachinePageVM.vb
index 4089d99..c42c77e 100644
--- a/Effector.Plugin.FiveLakes/MachinePage/MachinePageVM.vb
+++ b/Effector.Plugin.FiveLakes/MachinePage/MachinePageVM.vb
@@ -6,6 +6,7 @@ Imports System.Windows.Threading
Imports Newtonsoft.Json.Linq
Imports Effector.Plugin.FiveLakes.Variable
Imports Effector.Plugin.Interface
+Imports Effector.Plugin.Lib
Public Class MachinePageVM
Inherits VMBase
diff --git a/Effector.Plugin.FiveLakes/MainMenu/MainMenuVM.vb b/Effector.Plugin.FiveLakes/MainMenu/MainMenuVM.vb
index 5e92528..8fd4f46 100644
--- a/Effector.Plugin.FiveLakes/MainMenu/MainMenuVM.vb
+++ b/Effector.Plugin.FiveLakes/MainMenu/MainMenuVM.vb
@@ -1,4 +1,6 @@
-Public Class MainMenuVM
+Imports Effector.Plugin.Lib
+
+Public Class MainMenuVM
Inherits VMBase
' Definizione comandi
diff --git a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml b/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml
deleted file mode 100644
index 818bec2..0000000
--- a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml
+++ /dev/null
@@ -1,67 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml.vb b/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml.vb
deleted file mode 100644
index 20886ee..0000000
--- a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerV.xaml.vb
+++ /dev/null
@@ -1,19 +0,0 @@
-Public Class ProcessManagerV
-
- Private WithEvents m_ProcessManagerVM As ProcessManagerVM
-
- Sub New(Owner As Window, ProcessManagerVM As ProcessManagerVM)
- 'MyBase.New(Owner)
- Me.Owner = Owner
- ' This call is required by the designer.
- InitializeComponent()
- Me.DataContext = ProcessManagerVM
- ' Assegno al riferimento locale al VM il VM preso dal DataContext
- m_ProcessManagerVM = ProcessManagerVM
- End Sub
-
- 'Private Sub CloseWindow(bDialogResult As Boolean) Handles m_ProcessManagerVM.m_CloseWindow
- ' Me.DialogResult = bDialogResult
- 'End Sub
-
-End Class
diff --git a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerVM.vb b/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerVM.vb
deleted file mode 100644
index 285111f..0000000
--- a/Effector.Plugin.FiveLakes/ProcessManager/ProcessManagerVM.vb
+++ /dev/null
@@ -1,71 +0,0 @@
-Imports System.Windows.Threading
-Imports System.Collections.ObjectModel
-Imports Effector.Plugin.Lib
-
-Public Class ProcessManagerVM
- Inherits VMBase
-
- Private m_nTaskQuantity As Integer = 3
-
- Private m_UpdateDataTimer As New DispatcherTimer
-
- Private m_ExecProcessManager As ExecProcessManager
- Public ReadOnly Property ExecProcessManager As ExecProcessManager
- Get
- Return m_ExecProcessManager
- End Get
- End Property
-
- Public ReadOnly Property ArgumentsQueue As String
- Get
- Return m_ExecProcessManager.ArgumentsQueueCount.ToString()
- End Get
- End Property
-
- Public ReadOnly Property ResultQueue As String
- Get
- Return m_ExecProcessManager.ArgumentsResultQueueCount.ToString()
- End Get
- End Property
-
- Public ReadOnly Property ThreadList As ObservableCollection(Of ThreadData)
- Get
- If Not IsNothing(m_ExecProcessManager.ThreadDataList) Then
- Return New ObservableCollection(Of ThreadData)(m_ExecProcessManager.ThreadDataList.ToList())
- Else
- Return New ObservableCollection(Of ThreadData)
- End If
- End Get
- End Property
-
- Private m_dProgress_Value As Double
- Public ReadOnly Property dProgress_Value As Double
- Get
- Return (m_dProgress_Maximum - m_nTaskQuantity - m_ExecProcessManager.ArgumentsQueueCount) '/ m_dProgress_Maximum * 100
- End Get
- End Property
-
- Private m_dProgress_Maximum As Double
- Public ReadOnly Property dProgress_Maximum As Double
- Get
- Return m_dProgress_Maximum
- End Get
- End Property
-
- Sub New(ExecProcessManager As ExecProcessManager)
- m_ExecProcessManager = ExecProcessManager
- m_dProgress_Maximum = m_ExecProcessManager.ArgumentsQueueCount + m_nTaskQuantity
- m_UpdateDataTimer.Interval = New TimeSpan(0, 0, 1)
- AddHandler m_UpdateDataTimer.Tick, AddressOf UpdateDataTimer_Tick
- m_UpdateDataTimer.Start()
- End Sub
-
- Private Sub UpdateDataTimer_Tick(sender As Object, e As EventArgs)
- NotifyPropertyChanged(NameOf(ArgumentsQueue))
- NotifyPropertyChanged(NameOf(ResultQueue))
- NotifyPropertyChanged(NameOf(ThreadList))
- NotifyPropertyChanged(NameOf(dProgress_Value))
- End Sub
-
-End Class
-
diff --git a/Effector.Plugin.FiveLakes/RestartWnd/RestartWndV.xaml b/Effector.Plugin.FiveLakes/RestartWnd/RestartWndV.xaml
index 8ef8917..d448d30 100644
--- a/Effector.Plugin.FiveLakes/RestartWnd/RestartWndV.xaml
+++ b/Effector.Plugin.FiveLakes/RestartWnd/RestartWndV.xaml
@@ -1,11 +1,11 @@
diff --git a/Effector.Plugin.FiveLakes/RestartWnd/RestartWndVM.vb b/Effector.Plugin.FiveLakes/RestartWnd/RestartWndVM.vb
index 5fa12b8..f44617a 100644
--- a/Effector.Plugin.FiveLakes/RestartWnd/RestartWndVM.vb
+++ b/Effector.Plugin.FiveLakes/RestartWnd/RestartWndVM.vb
@@ -4,6 +4,7 @@ Imports System.Collections.ObjectModel
Imports System.Globalization
Imports System.IO
Imports System.Reflection
+Imports Effector.Plugin.Lib
Public Class RestartWndVM
Inherits VMBase
diff --git a/Effector.Plugin.FiveLakes/Utility/Command.vb b/Effector.Plugin.FiveLakes/Utility/Command.vb
deleted file mode 100644
index f9e3baf..0000000
--- a/Effector.Plugin.FiveLakes/Utility/Command.vb
+++ /dev/null
@@ -1,69 +0,0 @@
-
-'''
-''' A command whose sole purpose is to
-''' relay its functionality to other
-''' objects by invoking delegates. The
-''' default return value for the CanExecute
-''' method is 'true'.
-'''
-Public Class Command
- Implements ICommand
-
-#Region "Fields"
-
- Private ReadOnly _execute As Action(Of Object)
- Private ReadOnly _canExecute As Predicate(Of Object)
-
-#End Region ' Fields
-
-#Region "Constructors"
-
- '''
- ''' Creates a new command that can always execute.
- '''
- ''' The execution logic.
- Public Sub New(ByVal execute As Action(Of Object))
- Me.New(execute, Nothing)
- End Sub
-
- '''
- ''' Creates a new command.
- '''
- ''' The execution logic.
- ''' The execution status logic.
- Public Sub New(ByVal execute As Action(Of Object), ByVal canExecute As Predicate(Of Object))
- If execute Is Nothing Then
- Throw New ArgumentNullException("execute")
- End If
-
- _execute = execute
- _canExecute = canExecute
- End Sub
-
-#End Region ' Constructors
-
-#Region "ICommand Members"
-
- _
- Public Function CanExecute(ByVal parameter As Object) As Boolean Implements ICommand.CanExecute
- Return If(_canExecute Is Nothing, True, _canExecute(parameter))
- End Function
-
- Public Custom Event CanExecuteChanged As EventHandler Implements ICommand.CanExecuteChanged
- AddHandler(ByVal value As EventHandler)
- AddHandler CommandManager.RequerySuggested, value
- End AddHandler
- RemoveHandler(ByVal value As EventHandler)
- RemoveHandler CommandManager.RequerySuggested, value
- End RemoveHandler
- RaiseEvent(ByVal sender As System.Object, ByVal e As System.EventArgs)
- End RaiseEvent
- End Event
-
- Public Sub Execute(ByVal parameter As Object) Implements ICommand.Execute
- _execute(parameter)
- End Sub
-
-#End Region ' ICommand Members
-
-End Class
\ No newline at end of file
diff --git a/Effector.Plugin.FiveLakes/Utility/ExecProcessManager.vb b/Effector.Plugin.FiveLakes/Utility/ExecProcessManager.vb
deleted file mode 100644
index cf8958c..0000000
--- a/Effector.Plugin.FiveLakes/Utility/ExecProcessManager.vb
+++ /dev/null
@@ -1,712 +0,0 @@
-Imports System.IO
-Imports System.Threading
-Imports MS.Internal
-Imports Effector.Plugin.FiveLakes.ThreadData
-Imports System.Windows.Threading
-Imports Effector.Plugin.Lib
-
-Public Class ExecProcessManager
-
- Public Event m_AllArgsProcessed()
-
- Public Enum ExecutionThreadStatuses As Integer
- RUNNING = 1
- STOPPED = 2
- End Enum
-
- Private Enum ProcessManagerStates
- NULL = 0
- OPEN = 1
- CLOSE = 2
- End Enum
-
- Private m_ProcessManagerTimer As New DispatcherTimer
- Private m_ProcessManagerState As ProcessManagerStates
- Private m_ProcessManagerV As ProcessManagerV
- Public ReadOnly Property ProcessManagerV As ProcessManagerV
- Get
- Return m_ProcessManagerV
- End Get
- End Property
-
- ' riferimento al thread principale
- Private m_ExecutionThread As Thread
- Private m_ExecutionThreadStatus As ExecutionThreadStatuses = ExecutionThreadStatuses.STOPPED
- Public ReadOnly Property ExecutionThreadStatus As ExecutionThreadStatuses
- Get
- Return m_ExecutionThreadStatus
- End Get
- End Property
- ' array dei thread
- Private m_ThreadList As Thread()
- ' array dei dati dei thread
- Private m_ThreadDataList As ThreadData()
- Friend ReadOnly Property ThreadDataList As ThreadData()
- Get
- Return m_ThreadDataList
- End Get
- End Property
- ' variabile che ferma i processi
- Private m_bStopProcess As Boolean = False
- ' variabile che conferma chiusura dei processi
- Private m_bExecutionThreadStoped As Boolean = False
- ' numero massimo di istanze del cam
- Private m_MaxCamInstances As Integer = 1
- ' nome dell'eseguibile da lanciare
- Private m_sProcessFileName As String = ""
- ' stringa di argomenti dell'eseguibile da lanciare
- Private m_sProcessArguments As String = ""
- ' coda delle cose da eseguire
- Private ArgumentsQueueLock As New Object
- Private m_ArgumentsQueue As New Queue(Of ProcessArgs)
- Public ReadOnly Property ArgumentsQueue As Queue(Of ProcessArgs)
- Get
- Return m_ArgumentsQueue
- End Get
- End Property
- ' coda dei risultati
- Private ArgumentsResultQueueLock As New Object
- Private m_ArgumentsResultQueue As New Queue(Of ProcessArgsResult)
- Public ReadOnly Property ArgumentsResultQueue As Queue(Of ProcessArgsResult)
- Get
- Return m_ArgumentsResultQueue
- End Get
- End Property
-
- ' funzione che richiede prossimo elemento da processare
- Private m_delGetNextProcessArgs As Func(Of ProcessArgs)
- Public Sub SetGetNextProcessArgs(GetNextProcessArgs As Func(Of ProcessArgs))
- m_delGetNextProcessArgs = GetNextProcessArgs
- End Sub
- ' funzione di pre processing dell'elemento
- Private m_delPreProcess As Func(Of ProcessArgs, ProcessArgs)
- Public Sub SetPreProcess(PreProcess As Func(Of ProcessArgs, ProcessArgs))
- m_delPreProcess = PreProcess
- End Sub
- ' funzione di post processing dell'elemento
- Private m_delPostProcess As Action(Of ProcessArgsResult)
- Public Sub SetPostProcess(PostProcess As Action(Of ProcessArgsResult))
- m_delPostProcess = PostProcess
- End Sub
-
- Sub New(sProcessFileName As String, sProcessArguments As String)
- m_sProcessFileName = sProcessFileName
- m_sProcessArguments = sProcessArguments
- m_ProcessManagerTimer.Interval = New TimeSpan(0, 0, 1)
- AddHandler m_ProcessManagerTimer.Tick, AddressOf ProcessManagerTimer_Tick
- m_ProcessManagerTimer.Start()
- End Sub
-
- Private Sub ProcessManagerTimer_Tick(sender As Object, e As EventArgs)
- Select Case m_ProcessManagerState
- Case ProcessManagerStates.OPEN
- ' creo finestra statistiche processi
- m_ProcessManagerV = New ProcessManagerV(Application.Current.MainWindow, New ProcessManagerVM(Me))
- ProcessManagerV.Show()
- m_ProcessManagerState = ProcessManagerStates.NULL
- Case ProcessManagerStates.CLOSE
- ' chiudo finestra statistiche processi
- If Not IsNothing(m_ProcessManagerV) Then
- ProcessManagerV.Close()
- m_ProcessManagerV = Nothing
- End If
- m_ProcessManagerState = ProcessManagerStates.NULL
- End Select
- End Sub
-
- Public Function ArgumentsEnqueue(ProcessArgs As ProcessArgs) As Boolean
- If ProcessArgs.nId <= 0 OrElse String.IsNullOrWhiteSpace(ProcessArgs.sArgs) Then Return False
- SyncLock ArgumentsQueueLock
- m_ArgumentsQueue.Enqueue(ProcessArgs)
- End SyncLock
- Return True
- End Function
-
- Public Function ArgumentsDequeue() As ProcessArgs
- Dim DequeueProcessArgs As ProcessArgs = Nothing
- SyncLock ArgumentsQueueLock
- If m_ArgumentsQueue.Count > 0 Then
- DequeueProcessArgs = m_ArgumentsQueue.Dequeue()
- End If
- End SyncLock
- Return DequeueProcessArgs
- End Function
-
- Public Function ArgumentsQueueCount() As Integer
- Dim nCount As Integer = 0
- SyncLock ArgumentsQueueLock
- nCount = m_ArgumentsQueue.Count
- End SyncLock
- Return nCount
- End Function
-
- Public Function ArgumentsResultEnqueue(ProcessArgsResult As ProcessArgsResult) As Boolean
- SyncLock ArgumentsResultQueueLock
- m_ArgumentsResultQueue.Enqueue(ProcessArgsResult)
- End SyncLock
- Return True
- End Function
-
- Public Function ArgumentsResultDequeue() As ProcessArgsResult
- Dim DequeueProcessArgsResult As ProcessArgsResult = Nothing
- SyncLock ArgumentsResultQueueLock
- If m_ArgumentsResultQueue.Count > 0 Then
- DequeueProcessArgsResult = m_ArgumentsResultQueue.Dequeue()
- End If
- End SyncLock
- Return DequeueProcessArgsResult
- End Function
-
- Public Function ArgumentsResultQueueCount() As Integer
- Dim nCount As Integer = 0
- SyncLock ArgumentsResultQueueLock
- nCount = m_ArgumentsResultQueue.Count
- End SyncLock
- Return nCount
- End Function
-
- Public Sub SetMaxCamInstances(nValue As Integer)
- ' Numero di core logici da utilizzare (minimo tra presenti sul PC e imposti da INI)
- Dim nMaxThread As Integer = Math.Min(Environment.ProcessorCount, nValue)
- m_MaxCamInstances = nMaxThread
- End Sub
-
- ' funzione che avvia thread principale
- Public Sub StartExecutionThread()
- If m_ExecutionThreadStatus = ExecutionThreadStatuses.RUNNING Then Return
- m_bStopProcess = False
- m_bExecutionThreadStoped = False
- m_ExecutionThread = New Thread(Sub()
- ExecutionProcess()
- End Sub)
-
- m_ExecutionThread.SetApartmentState(ApartmentState.STA)
- ' avvio thread di gestione della macchina che avvia la connessione
- m_ExecutionThread.Start()
-
- m_ExecutionThreadStatus = ExecutionThreadStatuses.RUNNING
- ' lancio apertura finestra statistiche processi
- m_ProcessManagerState = ProcessManagerStates.OPEN
- End Sub
-
- Public Sub StopExecutionThread()
- If m_ExecutionThreadStatus = ExecutionThreadStatuses.STOPPED Then Return
- m_bStopProcess = True
- While Not m_bExecutionThreadStoped
- Thread.Sleep(100)
- End While
- If Not IsNothing(m_ExecutionThread) Then
- m_ExecutionThread.Abort()
- While Not m_ExecutionThread.ThreadState = ThreadState.Aborted
- Thread.Sleep(100)
- End While
- m_ExecutionThread = Nothing
- End If
- m_ThreadList = Nothing
- m_ExecutionThreadStatus = ExecutionThreadStatuses.STOPPED
- ' lancio chiusura finestra statistiche processi
- m_ProcessManagerState = ProcessManagerStates.CLOSE
- End Sub
-
- ' funzione di esecuzione del thread principale che gestice i processi
- Private Sub ExecutionProcess()
- Dim bStopMainProcess As Boolean = False
- Dim nStartingProc As Integer = 0
- While Not bStopMainProcess
- bStopMainProcess = m_bStopProcess
- ' se processo fermato, fermo i thread
- If bStopMainProcess Then
- If Not IsNothing(m_ThreadList) AndAlso m_ThreadList.Count > 0 AndAlso Not IsNothing(m_ThreadList(0)) Then
- ' li fermo
- m_bStopProcess = True
- ' verifico siano terminati
- Dim bOneNotEnded As Boolean = True
- While bOneNotEnded
- bOneNotEnded = False
- For Each Thread In m_ThreadList
- If Not IsNothing(Thread) Then
- If Thread.IsAlive Then
- bOneNotEnded = True
- End If
- End If
- Next
- End While
- ' pulisco la lista
- For ThreadIndex = 0 To m_ThreadList.Count - 1
- m_ThreadList(ThreadIndex) = Nothing
- Next
- m_bStopProcess = False
- End If
- m_bExecutionThreadStoped = True
- Return
- End If
- ' se lista processi nulla o vuota, li faccio partire
- If (IsNothing(m_ThreadList) OrElse m_ThreadList.Count = 0) Then
- m_ThreadList = New Thread(m_MaxCamInstances - 1) {}
- m_ThreadDataList = New ThreadData(m_MaxCamInstances - 1) {}
- For nThreadIndex = 0 To m_MaxCamInstances - 1
- Dim ThreadId As Integer = nThreadIndex
- m_ThreadList(nThreadIndex) = New Thread(Sub()
- ThreadFunction(ThreadId)
- End Sub)
- m_ThreadList(nThreadIndex).SetApartmentState(ApartmentState.STA)
- ' avvio thread di gestione della macchina che avvia la connessione
- m_ThreadList(nThreadIndex).Start()
- Thread.Sleep(100)
- Next
- End If
- ' se qualche processo in stop, lo faccio ripartire
- For ThreadIndex = 0 To m_ThreadList.Count - 1
- If ThreadIndex < m_ThreadList.Count Then
- Dim Thread = m_ThreadList(ThreadIndex)
- If Not IsNothing(Thread) Then
- If Thread.ThreadState = ThreadState.Stopped OrElse
- Thread.ThreadState = ThreadState.Aborted OrElse
- Thread.ThreadState = ThreadState.Suspended OrElse
- (Not m_ThreadDataList(ThreadIndex).ProcessStatus = ProcessStatuses.TOBESTARTED AndAlso
- (IsNothing(m_ThreadDataList(ThreadIndex).Process) OrElse
- (Not IsNothing(m_ThreadDataList(ThreadIndex).Process) AndAlso m_ThreadDataList(ThreadIndex).Process.HasExited))) Then
- ' inserire un ritardo di rilancio?
- ' lo chiudo e rilancio
- 'Thread.Sleep(500)
- Thread.Abort()
- Thread.Sleep(100)
- While Not Thread.ThreadState = ThreadState.Aborted
- Thread.Sleep(100)
- End While
- Thread = Nothing
- Dim ThreadId As Integer = ThreadIndex
- m_ThreadList(ThreadIndex) = New Thread(Sub()
- ThreadFunction(ThreadId)
- End Sub)
- m_ThreadList(ThreadIndex).SetApartmentState(ApartmentState.STA)
- ' avvio thread di gestione della macchina che avvia la connessione
- m_ThreadList(ThreadIndex).Start()
- End If
- Else
- Dim ThreadId As Integer = ThreadIndex
- If ThreadIndex < m_ThreadList.Count Then
- m_ThreadList(ThreadIndex) = New Thread(Sub()
- ThreadFunction(ThreadId)
- End Sub)
- m_ThreadList(ThreadIndex).SetApartmentState(ApartmentState.STA)
- ' avvio thread di gestione della macchina che avvia la connessione
- m_ThreadList(ThreadIndex).Start()
- End If
- End If
- End If
- Next
- ' verifico se coda vuota e tutti i processi hanno finito
- Dim nQueueArgs As Integer = 0
- SyncLock ArgumentsQueueLock
- nQueueArgs = m_ArgumentsQueue.Count
- End SyncLock
- If nQueueArgs = 0 Then
- Dim bProcessWaiting As Boolean = False
- For Each ThreadData In m_ThreadDataList
- If ThreadData.ProcessStatus = ProcessStatuses.WAITINGANSWER OrElse ThreadData.ProcessStatus = ProcessStatuses.ANSWERRECEIVED Then
- bProcessWaiting = True
- Exit For
- End If
- Next
- If Not bProcessWaiting Then
- ' creo thread per lanciare evento asincrono di fine calcolo
- Dim AllArgsProcessedThread = New Thread(Sub()
- RaiseEvent m_AllArgsProcessed()
- End Sub)
- AllArgsProcessedThread.SetApartmentState(ApartmentState.STA)
- AllArgsProcessedThread.Start()
- End If
- End If
- Thread.Sleep(1000)
- End While
- End Sub
-
- ' funzione di esecuzione del singolo processo che comunica con il programma
- Private Sub ThreadFunction(ThreadIndex As Integer)
- Dim MyThreadData As New ThreadData
- m_ThreadDataList(ThreadIndex) = MyThreadData
- 'Dim CurrThreadStat As New ThreadStat(ThreadIndex, DateTime.Now)
- 'HistoryThreadDataList.Add(CurrThreadStat)
- 'MyThreadData.SetThreadStat(CurrThreadStat)
- 'Dim sDrive As String = "c" ' If(ThreadIndex Mod 2 = 0, "A", "B")
- 'Dim sCurrDdfDir As String = sDrive & ":\EgtData\WebDoor\Ddf"
- 'Dim stopWatch As New Stopwatch()
- 'Dim lExeTime As Long = 0
- 'Dim lOtherTime As Long = 0
-
- ' avvio processo
- Dim Proc As Process = New Process()
- Proc.StartInfo.FileName = m_sProcessFileName
- Proc.StartInfo.RedirectStandardInput = True
- Proc.StartInfo.RedirectStandardOutput = True
- Proc.StartInfo.Arguments = ThreadIndex.ToString() & " " & m_sProcessArguments
- Proc.StartInfo.UseShellExecute = False
- Proc.StartInfo.CreateNoWindow = True
- AddHandler Proc.OutputDataReceived, AddressOf Thread_OutputDataReceived
-
- If Proc.Start() Then
- 'Dim CurrPocStat As New ProcStat(DateTime.Now)
- 'CurrThreadStat.ProcExecutionList.Add(CurrPocStat)
- Proc.BeginOutputReadLine()
- MyThreadData.SetProcess(Proc)
- MyThreadData.SetProcessStatus(ProcessStatuses.NULL)
-
- 'Dim nProc0Wait As Integer = 0
- ' ciclo per leggere coda ed eseguire
- While Not m_bStopProcess AndAlso Not Proc.HasExited
- Select Case MyThreadData.ProcessStatus
- Case ThreadData.ProcessStatuses.NULL
- 'MyThreadData.SetThreadOperation(ThreadOperations.WaitingData)
- ' se c'e' qualcosa da processare
- 'Dim nNumTaskToProcess As Integer = 0
- 'If ThreadIndex = 0 Then
- ' nNumTaskToProcess = currWDC.numTask2proc
- ' If nNumTaskToProcess > 0 Then
- ' If Not m_bCheckOrder Then m_bCheckOrder = True
- ' Else
- ' If m_bCheckOrder Then m_bCheckOrder = False
- ' Thread.Sleep(100)
- ' End If
- 'ElseIf m_bCheckOrder Then
- ' nNumTaskToProcess = currWDC.numTask2proc
- ' If nNumTaskToProcess = 0 Then
- ' m_bCheckOrder = False
- ' End If
- 'End If
- Dim NextProcessArgs As ProcessArgs = Nothing
- If Not IsNothing(m_delGetNextProcessArgs) Then
- NextProcessArgs = m_delGetNextProcessArgs()
- Else
- NextProcessArgs = ArgumentsDequeue()
- End If
-
- If Not IsNothing(NextProcessArgs) AndAlso NextProcessArgs.nId > 0 AndAlso Not String.IsNullOrWhiteSpace(NextProcessArgs.sArgs) Then
- If Not IsNothing(m_delPreProcess) Then
- NextProcessArgs = m_delPreProcess(NextProcessArgs)
- End If
- MyThreadData.SetCurrRequest(NextProcessArgs)
- Proc.StandardInput.WriteLine(ThreadIndex & "," & NextProcessArgs.sArgs)
- MyThreadData.SetProcessStatus(ThreadData.ProcessStatuses.WAITINGANSWER)
- End If
- 'If m_bCheckOrder Then
- ' Dim LastRequest As Dictionary(Of String, CalcReqtDTO) = currWDC.queueList(1)
- ' If LastRequest.Count > 0 Then
- ' MyThreadData.SetThreadOperation(ThreadOperations.FoundRequest)
-
- ' Dim ConvItem As KeyValuePair(Of String, String)
- ' ConvItem = New KeyValuePair(Of String, String)(LastRequest.First().Key, LastRequest.First().Value.DDF)
- ' MyThreadData.SetCurrRequest(ConvItem)
-
- ' ' vecchia versione
- ' 'MyThreadData.SetCurrRequest(LastRequest.First())
-
- ' Dim Item As KeyValuePair(Of String, String) = MyThreadData.CurrRequest
- ' Dim bOk As Boolean = Not IsNothing(Item)
- ' If bOk Then
-
- ' ' avvio cronometro
- ' 'stopWatch.Reset()
- ' stopWatch.Restart()
- ' ' svuoto vecchio set file della porta richiesta
- ' Dim fileList As String() = Directory.GetFiles(sCurrDdfDir, Item.Key + ".*")
- ' ' elimino vecchi
- ' If Not IsNothing(fileList) Then
- ' For Each sFile In fileList
- ' Try
- ' File.Delete(sFile)
- ' Catch ex As Exception
- ' End Try
- ' Next
- ' End If
-
- ' ' scrivo ddf
- ' MyThreadData.SetThreadOperation(ThreadOperations.WritingDdf)
- ' MyThreadData.SetDdfPath(sCurrDdfDir & "\" & Item.Key & ".ddf")
- ' Dim sDdfPath As String = MyThreadData.sDdfPath
- ' Try
- ' File.WriteAllText(sDdfPath, Item.Value)
- ' Catch ex As Exception
- ' bOk = False
- ' End Try
-
- ' If bOk Then
- ' MyThreadData.SetThreadOperation(ThreadOperations.ProcessingDdf)
-
- ' Proc.StandardInput.WriteLine(ThreadIndex & "," & sDdfPath)
-
- ' MyThreadData.SetWaitProcAnswer(ThreadData.ProcComm.WaitingAnswer)
- ' End If
- ' End If
- ' Else
- ' Thread.Sleep(100)
- ' End If
- 'Else
- ' Thread.Sleep(100)
- 'End If
- Case ThreadData.ProcessStatuses.WAITINGANSWER
- Thread.Sleep(10)
- Case ThreadData.ProcessStatuses.ANSWERRECEIVED
- Dim NewProcessArgsResult As New ProcessArgsResult(MyThreadData.CurrRequest, MyThreadData.nProcResult)
- If Not IsNothing(m_delPostProcess) Then
- m_delPostProcess(NewProcessArgsResult)
- End If
- ArgumentsResultEnqueue(NewProcessArgsResult)
- 'Dim Item As ProcessArgs = MyThreadData.CurrRequest
- 'Dim sDdfPath As String = MyThreadData.sDdfPath
- 'Dim bOk As Boolean = True
- '' salvo exe time...
- 'stopWatch.Stop()
- 'lExeTime = stopWatch.ElapsedMilliseconds
- 'stopWatch.Restart()
- 'Dim procResults As New List(Of CalcResultDTO)
- 'Dim currRes As New CalcResultDTO
- 'Dim fContent As String = ""
- 'MyThreadData.SetThreadOperation(ThreadOperations.ReadingSvg)
- '' verifico esistenza file svg e lo carico
- 'bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "svg"), fContent)
- '' !!! ToDo: inserire TIPO di richiesta secondo quanto ricevuto....
- '' invio risposta
- 'currRes.Validated = MyThreadData.nProcResult = 0 AndAlso bOk
- 'currRes.DoorIdVers = Item.Key
- '' per ora cablato a svg, prendere da MimeType richiesta...
- 'currRes.MimeType = "svg"
-
- '' se NON fosse validato --> messo il messaggio...
- 'If (currRes.Validated) Then
- ' currRes.RawContent = fContent
- 'Else
- ' bOk = GetFileContent(Path.ChangeExtension(sDdfPath, "txt"), fContent)
- ' currRes.ErrorMsg = fContent
- 'End If
- 'MyThreadData.SetThreadOperation(ThreadOperations.SendResult)
-
- 'procResults.Add(currRes)
- 'Dim respPut As String = currWDC.SendProcResults(procResults)
-
- 'stopWatch.Stop()
- 'lOtherTime = stopWatch.ElapsedMilliseconds
- 'CurrPocStat.IncrementDoneRequest()
- '' aggiorno thread display...
- 'UpdateThreadList(Item.Key, lExeTime, lOtherTime)
- '' cambio nomi file generati in old
- 'Dim OldSvg As String = Path.ChangeExtension(sDdfPath, "svg")
- 'Dim NewSvg As String = Path.GetDirectoryName(sDdfPath) & "\" & Path.GetFileNameWithoutExtension(sDdfPath) & "_old.svg"
- 'Try
- ' File.Delete(NewSvg)
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Delete(Path.ChangeExtension(NewSvg, "txt"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Delete(Path.ChangeExtension(NewSvg, "log"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Delete(Path.ChangeExtension(NewSvg, "nge"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Delete(Path.ChangeExtension(NewSvg, "ddf"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Move(OldSvg, NewSvg)
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Move(Path.ChangeExtension(OldSvg, "txt"), Path.ChangeExtension(NewSvg, "txt"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Move(Path.ChangeExtension(OldSvg, "log"), Path.ChangeExtension(NewSvg, "log"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Move(Path.ChangeExtension(OldSvg, "nge"), Path.ChangeExtension(NewSvg, "nge"))
- 'Catch ex As Exception
- 'End Try
- 'Try
- ' File.Move(Path.ChangeExtension(OldSvg, "ddf"), Path.ChangeExtension(NewSvg, "ddf"))
- 'Catch ex As Exception
- 'End Try
- MyThreadData.SetProcessStatus(ThreadData.ProcessStatuses.NULL)
- End Select
-
- End While
- ' CurrPocStat.SetStopProc(DateTime.Now)
- If m_bStopProcess Then
- Proc.StandardInput.WriteLine("quit")
- End If
- End If
-
- ' CurrThreadStat.SetStopThread(DateTime.Now)
- MyThreadData.SetProcess(Nothing)
- ' MyThreadData.SetThreadOperation(ThreadOperations.Closed)
-
- End Sub
-
- Private Sub Thread_OutputDataReceived(sender As Object, e As DataReceivedEventArgs)
- Dim sResult As String = e.Data
- If Not String.IsNullOrWhiteSpace(sResult) AndAlso sResult.StartsWith("#42315#,") Then
- Dim Results() As String = sResult.Split(","c)
- If Results.Count >= 2 Then
- Dim nIndex As Integer = -1
- Dim nResult As Integer = -1
- Dim dResult As Integer = -1
- If Integer.TryParse(Results(1), nIndex) AndAlso nIndex >= 0 Then
- If Integer.TryParse(Results(2), nResult) AndAlso nResult >= 0 Then
- m_ThreadDataList(nIndex).SetProcResult(nResult)
- ElseIf StringToDouble(Results(2), dResult) AndAlso dResult >= 0 Then
- nResult = Math.Floor(dResult)
- m_ThreadDataList(nIndex).SetProcResult(nResult)
- End If
- m_ThreadDataList(nIndex).SetProcessStatus(ThreadData.ProcessStatuses.ANSWERRECEIVED)
- End If
- End If
- End If
- End Sub
-
-End Class
-
-Public Class ThreadData
-
- 'Enum ThreadOperations As Integer
- ' WaitingData = 1
- ' FoundRequest = 2
- ' WritingDdf = 3
- ' ProcessingDdf = 4
- ' ReadingSvg = 5
- ' SendResult = 6
- ' Closed = 10
- 'End Enum
-
- Public Enum ProcessStatuses As Integer
- NULL = 0
- WAITINGANSWER = 1
- ANSWERRECEIVED = 2
- TOBESTARTED = 10
- End Enum
-
- Private m_ProcessStatus As ProcessStatuses = ProcessStatuses.TOBESTARTED
- Public ReadOnly Property ProcessStatus As ProcessStatuses
- Get
- Return m_ProcessStatus
- End Get
- End Property
- Friend Sub SetProcessStatus(value As ProcessStatuses)
- m_ProcessStatus = value
- End Sub
-
- Private m_CurrRequest As ProcessArgs
- Public ReadOnly Property CurrRequest As ProcessArgs
- Get
- Return m_CurrRequest
- End Get
- End Property
- Friend Sub SetCurrRequest(value As ProcessArgs)
- m_CurrRequest = value
- End Sub
-
- 'Private m_sDdfPath As String
- 'Public ReadOnly Property sDdfPath As String
- ' Get
- ' Return m_sDdfPath
- ' End Get
- 'End Property
- 'Friend Sub SetDdfPath(value As String)
- ' m_sDdfPath = value
- 'End Sub
-
- Private m_nProcResult As Integer
- Public ReadOnly Property nProcResult As Integer
- Get
- Return m_nProcResult
- End Get
- End Property
- Friend Sub SetProcResult(value As Integer)
- m_nProcResult = value
- End Sub
-
- 'Private m_ThreadOperation As ThreadOperations
- 'Public ReadOnly Property ThreadOperation As ThreadOperations
- ' Get
- ' Return m_ThreadOperation
- ' End Get
- 'End Property
- 'Friend Sub SetThreadOperation(value As ThreadOperations)
- ' m_ThreadOperation = value
- 'End Sub
-
- Private m_Process As Process
- Public ReadOnly Property Process As Process
- Get
- Return m_Process
- End Get
- End Property
- Friend Sub SetProcess(value As Process)
- m_Process = value
- End Sub
-
- 'Private m_ThreadStat As ThreadStat
- 'Public ReadOnly Property ThreadStat As ThreadStat
- ' Get
- ' Return m_ThreadStat
- ' End Get
- 'End Property
- 'Friend Sub SetThreadStat(value As ThreadStat)
- ' m_ThreadStat = value
- 'End Sub
-
-End Class
-
-Public Class ProcessArgs
-
- Private m_nId As Integer
- Public ReadOnly Property nId As Integer
- Get
- Return m_nId
- End Get
- End Property
-
- Private m_sArgs As String
- Public ReadOnly Property sArgs As String
- Get
- Return m_sArgs
- End Get
- End Property
-
- Sub New(nId As Integer, sArgs As String)
- m_nId = nId
- m_sArgs = sArgs
- End Sub
-
-End Class
-
-Public Class ProcessArgsResult
-
- Private m_ProcessArgs As ProcessArgs
- Public ReadOnly Property ProcessArgs As ProcessArgs
- Get
- Return m_ProcessArgs
- End Get
- End Property
-
- Private m_nResult As Integer
- Public ReadOnly Property nResult As Integer
- Get
- Return m_nResult
- End Get
- End Property
- Public Sub SetResult(nResult As Integer)
- m_nResult = nResult
- End Sub
-
- Sub New(ProcessArgs As ProcessArgs, nResult As Integer)
- m_ProcessArgs = ProcessArgs
- m_nResult = nResult
- End Sub
-
-End Class
\ No newline at end of file
diff --git a/Effector.Plugin.FiveLakes/Utility/GenInterface.vb b/Effector.Plugin.FiveLakes/Utility/GenInterface.vb
deleted file mode 100644
index f7bf24d..0000000
--- a/Effector.Plugin.FiveLakes/Utility/GenInterface.vb
+++ /dev/null
@@ -1,76 +0,0 @@
-Imports System.Globalization
-Imports System.Runtime.InteropServices
-Imports System.Text
-
-Public Module GenInterface
-
- '-------------------------------- IniFile : Get --------------------------------------------------
-
- Public Function GetPrivateProfileInt(
- lpAppName As String,
- lpKeyName As String,
- nDefault As Integer,
- lpFileName As String) As Integer
- End Function
-
- Public Function GetPrivateProfileDouble(
- lpAppName As String,
- lpKeyName As String,
- dDefault As Double,
- lpFileName As String) As Double
- Dim sValue As String = String.Empty
- GetPrivateProfileString(lpAppName, lpKeyName, dDefault.ToString(), sValue, lpFileName)
- Dim nPos As Integer = sValue.IndexOf(";")
- If nPos >= 0 Then
- sValue = sValue.Remove(nPos)
- End If
- Dim dValue As Double
- If Not Double.TryParse(sValue, NumberStyles.Float, System.Globalization.CultureInfo.InvariantCulture, dValue) Then
- dValue = dDefault
- End If
- Return dValue
- End Function
-
-
- Private Function GetPrivateProfileString(
- lpAppName As String,
- lpKeyName As String,
- lpDefault As String,
- lpReturnedString As StringBuilder,
- nSize As Integer,
- lpFileName As String) As Integer
- End Function
- Public Function GetPrivateProfileString(
- lpAppName As String,
- lpKeyName As String,
- lpDefault As String,
- ByRef lpString As String,
- lpFileName As String) As Integer
- Dim sb As New StringBuilder(1024)
- Dim nRet As Integer = GetPrivateProfileString(lpAppName, lpKeyName, lpDefault, sb, sb.Capacity, lpFileName)
- lpString = sb.ToString
- Return nRet
- End Function
-
- '-------------------------------- IniFile : Write ------------------------------------------------
-
- Public Function WritePrivateProfileString(
- lpAppName As String,
- lpKeyName As String,
- lpString As String,
- lpFileName As String) As Boolean
- End Function
-
- '-------------------------------- Windows --------------------------------------------------------
- Public Enum SW As Integer
- HIDE = 0
- SHOWMAXIMIZED = 3
- RESTORE = 9
- End Enum
-
-
- Public Function ShowWindow(hWnd As IntPtr, nCmdShow As Integer) As Boolean
- End Function
-
-
-End Module
diff --git a/Effector.Plugin.FiveLakes/Utility/IdNameStruct.vb b/Effector.Plugin.FiveLakes/Utility/IdNameStruct.vb
deleted file mode 100644
index 656e028..0000000
--- a/Effector.Plugin.FiveLakes/Utility/IdNameStruct.vb
+++ /dev/null
@@ -1,97 +0,0 @@
-Imports System.Collections.ObjectModel
-
-Public Structure IdNameStruct
-
- Private m_Id As Integer
- Public Property Id As Integer
- Get
- Return m_Id
- End Get
- Set(value As Integer)
- m_Id = value
- End Set
- End Property
-
- Private m_Name As String
- Public Property Name As String
- Get
- Return m_Name
- End Get
- Set(value As String)
- m_Name = value
- End Set
- End Property
-
- Sub New(Id As Integer, Name As String)
- m_Id = Id
- m_Name = Name
- End Sub
-
- Public Overrides Function ToString() As String
- Return Name
- End Function
-
- Public Shared Function IndFromId(Id As Integer, List As ObservableCollection(Of IdNameStruct)) As Integer
- For i = 0 To List.Count - 1
- If List(i).Id = Id Then Return i
- Next
- Return 0
- End Function
- Public Shared Function IndFromId(Id As Integer, List As List(Of IdNameStruct)) As Integer
- For i = 0 To List.Count - 1
- If List(i).Id = Id Then Return i
- Next
- Return 0
- End Function
-
- Public Shared Function IdFromInd(Ind As Integer, List As ObservableCollection(Of IdNameStruct)) As Integer
- Return List(Ind).Id
- End Function
- Public Shared Function IdFromInd(Ind As Integer, List As List(Of IdNameStruct)) As Integer
- Return List(Ind).Id
- End Function
-
- Public Shared Function IndFromId(Id As Integer, List As ObservableCollection(Of Object)) As Integer
- For i = 0 To List.Count - 1
- If TypeOf (List(i)) Is IdNameStruct AndAlso DirectCast(List(i), IdNameStruct).Id = Id Then
- Return i
- End If
- Next
- Return 0
- End Function
- Public Shared Function IndFromId(Id As Integer, List As List(Of Object)) As Integer
- For i = 0 To List.Count - 1
- If TypeOf (List(i)) Is IdNameStruct AndAlso DirectCast(List(i), IdNameStruct).Id = Id Then
- Return i
- End If
- Next
- Return 0
- End Function
-
- Public Shared Function IdFromInd(Ind As Integer, List As ObservableCollection(Of Object)) As Integer
- If TypeOf (List(Ind)) Is IdNameStruct Then
- Return DirectCast(List(Ind), IdNameStruct).Id
- End If
- Return 0
- End Function
- Public Shared Function IdFromInd(Ind As Integer, List As List(Of Object)) As Integer
- If TypeOf (List(Ind)) Is IdNameStruct Then
- Return DirectCast(List(Ind), IdNameStruct).Id
- End If
- Return 0
- End Function
-
- Public Shared Function IdFromName(Name As String, List As ObservableCollection(Of Object)) As Integer
- For i = 0 To List.Count - 1
- If DirectCast(List(i), IdNameStruct).Name = Name Then Return DirectCast(List(i), IdNameStruct).Id
- Next
- Return 0
- End Function
- Public Shared Function IdFromName(Name As String, List As List(Of Object)) As Integer
- For i = 0 To List.Count - 1
- If DirectCast(List(i), IdNameStruct).Name = Name Then Return DirectCast(List(i), IdNameStruct).Id
- Next
- Return 0
- End Function
-
-End Structure
diff --git a/Effector.Plugin.FiveLakes/Utility/IniFile.vb b/Effector.Plugin.FiveLakes/Utility/IniFile.vb
deleted file mode 100644
index 658b230..0000000
--- a/Effector.Plugin.FiveLakes/Utility/IniFile.vb
+++ /dev/null
@@ -1,65 +0,0 @@
-'----------------------------------------------------------------------------
-' EgalTech 2017-2017
-'----------------------------------------------------------------------------
-' File : IniFile.vb Data : 08.05.24 Versione : 2.6e1
-' Contenuto : Modulo IniFile per gestione lettura/scrittura da file INI.
-'
-'
-'
-' Modifiche : 08.05.24 ES Creazione modulo.
-'
-'
-'----------------------------------------------------------------------------
-
-
-Imports System.Collections.ObjectModel
-
-Public Module IniFile
-
- Private m_sPath As String
- Public ReadOnly Property sPath As String
- Get
- Return m_sPath
- End Get
- End Property
- Friend Sub SetIniFile(sPath)
- m_sPath = sPath
- End Sub
-
- Public Function GetPluginPrivateProfileInt(IpAppName As String, IpKeyName As String, nDefault As Integer) As Integer
- Return GetPrivateProfileInt(IpAppName, IpKeyName, nDefault, m_sPath)
- End Function
-
- Public Function GetPluginPrivateProfileDouble(IpAppName As String, IpKeyName As String, dDefault As Double) As Double
- Return GetPrivateProfileDouble(IpAppName, IpKeyName, dDefault, m_sPath)
- End Function
-
- Public Function GetPluginPrivateProfileString(IpAppName As String, IpKeyName As String, IpDefault As String, ByRef IpString As String) As Integer
- Return GetPrivateProfileString(IpAppName, IpKeyName, IpDefault, IpString, m_sPath)
- End Function
-
- 'Public Function GetPrivateProfileLanguage(lpAppName As String, lpKeyName As String, lpFileName As String) As Language
- ' Dim sVal As String = String.Empty
- ' GetPrivateProfileString(lpAppName, lpKeyName, "", sVal, lpFileName)
- ' Dim sItems() As String = sVal.Split(",".ToCharArray)
- ' If sItems.Count() = 2 Then
- ' Return New Language(sItems(0), sItems(1))
- ' End If
- ' Return Nothing
- 'End Function
-
- 'Public Function GetMainPrivateProfileLanguage(lpAppName As String, lpKeyName As String) As Language
- ' Dim sVal As String = String.Empty
- ' GetMainPrivateProfileString(lpAppName, lpKeyName, "", sVal)
- ' Dim sItems() As String = sVal.Split(",".ToCharArray)
- ' If sItems.Count() = 2 Then
- ' Return New Language(sItems(0), sItems(1))
- ' End If
- ' Return Nothing
- 'End Function
-
- Public Function WritePluginPrivateProfileString(IpAppName As String, IpKeyName As String, ByRef IpString As String) As Boolean
- Return WritePrivateProfileString(IpAppName, IpKeyName, IpString, m_sPath)
- End Function
-
-End Module
diff --git a/Effector.Plugin.FiveLakes/Utility/JsonUtility.vb b/Effector.Plugin.FiveLakes/Utility/JsonUtility.vb
index 226b531..1a149c4 100644
--- a/Effector.Plugin.FiveLakes/Utility/JsonUtility.vb
+++ b/Effector.Plugin.FiveLakes/Utility/JsonUtility.vb
@@ -1,6 +1,7 @@
Imports System.Globalization
Imports Newtonsoft.Json
Imports Newtonsoft.Json.Converters
+Imports Effector.Plugin.Lib
Imports Effector.Plugin.FiveLakes.Door
Public Class JsonDoor
diff --git a/Effector.Plugin.FiveLakes/Utility/StringConversion.vb b/Effector.Plugin.FiveLakes/Utility/StringConversion.vb
deleted file mode 100644
index 0a07106..0000000
--- a/Effector.Plugin.FiveLakes/Utility/StringConversion.vb
+++ /dev/null
@@ -1,66 +0,0 @@
-Imports System.Globalization
-
-Public Module StringConversion
-
- Public Function DoubleToString(ByVal dVal As Double, ByVal nNumDec As Integer) As String
- Dim sFormat As String = "F" + Math.Abs(nNumDec).ToString()
- Dim sVal As String = dVal.ToString(sFormat, CultureInfo.InvariantCulture)
- If nNumDec > 0 Then
- Return sVal.TrimEnd("0".ToCharArray()).TrimEnd(".".ToCharArray)
- Else
- Return sVal
- End If
- End Function
-
- Public Function StringToDouble(ByVal sVal As String, ByRef dVal As Double) As Boolean
- ' Return EgtLuaEvalNumExpr(sVal, dVal)
- Return Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal)
- End Function
-
- 'Public Function StringToDoubleAdv(ByVal sVal As String, ByRef dVal As Double, Optional bEval As Boolean = False) As Boolean
- ' If bEval Then
- ' Return EgtLuaEvalNumExpr(sVal, dVal)
- ' Else
- ' Return Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal)
- ' End If
- 'End Function
-
- Public Function StringToInt(sVal As String, ByRef nVal As Integer) As Boolean
- Dim dVal As Double = 0
- If Not StringToDouble(sVal, dVal) Then Return False
- nVal = CInt(Math.Round(dVal))
- Return True
- End Function
-
- 'Public Function LenToString(ByVal dVal As Double, ByVal nNumDec As Integer) As String
- ' Return DoubleToString(EgtToUiUnits(dVal), nNumDec)
- 'End Function
-
- 'Public Function StringToLen(ByVal sVal As String, ByRef dVal As Double) As Boolean
- ' If EgtLuaEvalNumExpr(sVal, dVal) Then
- ' dVal = EgtFromUiUnits(dVal)
- ' Return True
- ' Else
- ' Return False
- ' End If
- 'End Function
-
- 'Public Function StringToLenAdv(ByVal sVal As String, ByRef dVal As Double, Optional bEval As Boolean = False) As Boolean
- ' If bEval Then
- ' If EgtLuaEvalNumExpr(sVal, dVal) Then
- ' dVal = EgtFromUiUnits(dVal)
- ' Return True
- ' Else
- ' Return False
- ' End If
- ' Else
- ' If Double.TryParse(sVal, NumberStyles.Float, CultureInfo.InvariantCulture.NumberFormat, dVal) Then
- ' dVal = EgtFromUiUnits(dVal)
- ' Return True
- ' Else
- ' Return False
- ' End If
- ' End If
- 'End Function
-
-End Module
diff --git a/Effector.Plugin.FiveLakes/Utility/VMBase.vb b/Effector.Plugin.FiveLakes/Utility/VMBase.vb
deleted file mode 100644
index b2d5ce6..0000000
--- a/Effector.Plugin.FiveLakes/Utility/VMBase.vb
+++ /dev/null
@@ -1,12 +0,0 @@
-Imports System.ComponentModel
-
-Public Class VMBase
- Implements INotifyPropertyChanged
-
- Public Event PropertyChanged(sender As Object, e As PropertyChangedEventArgs) Implements INotifyPropertyChanged.PropertyChanged
-
- Public Sub NotifyPropertyChanged(propName As String)
- RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
- End Sub
-
-End Class