66320b8583
- aggiunta possibilità di impostare direttorio dei file dei messaggi (default Config)
354 lines
14 KiB
VB.net
354 lines
14 KiB
VB.net
Imports System.Collections.ObjectModel
|
|
Imports System.Threading
|
|
Imports System.Windows.Threading
|
|
Imports EgtUILib
|
|
|
|
Class MainWindow
|
|
|
|
' Mutex per avere una sola istanza del programma in esecuzione
|
|
Private m_objMutex As New Mutex
|
|
|
|
' Dichiarazione delle Page UserControl
|
|
Friend m_ImportPageUC As ImportPageUC
|
|
Friend m_DrawPageUC As DrawPageUC
|
|
Friend m_PlacePageUC As PlacePageUC
|
|
Friend m_OptionsPageUC As OptionsPageUC
|
|
Friend m_OpenPageUC As OpenPageUC
|
|
Friend m_NumericKeyboardWD As NumericKeyboardWD
|
|
Friend m_AboutBoxWD As AboutBoxWD
|
|
|
|
' Dichiarazione variabili direttori
|
|
Private m_sDataRoot As String = String.Empty
|
|
Private m_sConfigDir As String = String.Empty
|
|
Private m_sTempDir As String = String.Empty
|
|
Private m_sDataDir As String = String.Empty
|
|
Private Shared m_sIniFile As String = String.Empty
|
|
Private m_nDebug As Integer = 0
|
|
|
|
' Dichiarazione lista per ListBox della ImportPage
|
|
Friend ImportItemList As New ObservableCollection(Of IconListBoxItem)
|
|
Friend OpenItemList As New ObservableCollection(Of IconListBoxItem)
|
|
|
|
' Riferimento alla pagina correntemente attiva
|
|
Friend m_ActivePage As Pages
|
|
|
|
Enum Pages
|
|
Import
|
|
Draw
|
|
Place
|
|
Options
|
|
Open
|
|
End Enum
|
|
|
|
Public Function GetIniFile() As String
|
|
Return m_sIniFile
|
|
End Function
|
|
|
|
Public Function GetTempDir() As String
|
|
Return m_sTempDir
|
|
End Function
|
|
|
|
Public Function GetDataDir() As String
|
|
Return m_sDataDir
|
|
End Function
|
|
|
|
Private Sub MainWindow_Initialized(sender As Object, e As EventArgs)
|
|
' Verifico sia l'unica istanza
|
|
ManageSingleIstance()
|
|
' Impostazione path radice per i dati
|
|
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory.Substring(0, System.AppDomain.CurrentDomain.BaseDirectory.Length - 1)
|
|
If GetPrivateProfileString(S_DATA, K_DATAROOT, "", m_sDataRoot, m_sDataRoot & "\" & DAT_FILE_NAME) = 0 Then
|
|
m_sDataRoot = System.AppDomain.CurrentDomain.BaseDirectory.Substring(0, System.AppDomain.CurrentDomain.BaseDirectory.Length - 1)
|
|
End If
|
|
' Impostazione direttorio di configurazione
|
|
m_sConfigDir = m_sDataRoot & "\" & CONF_DIR
|
|
' Impostazione direttorio per file temporanei
|
|
m_sTempDir = m_sDataRoot & "\" & TEMP_DIR
|
|
' Impostazione direttorio per file di dati
|
|
m_sDataDir = m_sDataRoot & "\" & DATA_DIR
|
|
' Impostazione path Ini file
|
|
m_sIniFile = m_sConfigDir & "\" & INI_FILE_NAME
|
|
' Leggo e imposto chiave di protezione
|
|
Dim sLicFileName As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_LICENCE, LIC_FILE_NAME, sLicFileName, m_sIniFile)
|
|
Dim sLicFile As String = m_sConfigDir & "\" & sLicFileName
|
|
Dim sKey As String = String.Empty
|
|
GetPrivateProfileString(S_LICENCE, K_KEY, "", sKey, sLicFile)
|
|
EgtSetKey(sKey)
|
|
'Inizializzazione generale di EgtInterface
|
|
m_nDebug = GetPrivateProfileInt(S_GENERAL, K_DEBUG, 0, m_sIniFile)
|
|
Dim sLogFile As String = m_sTempDir & "\" & GENLOG_FILE_NAME
|
|
Dim sLogMsg As String = My.Application.Info.Description.ToString() & " ver. " & My.Application.Info.Version.ToString()
|
|
EgtInit(m_nDebug, sLogFile, sLogMsg)
|
|
' Leggo direttorio dei messaggi (se manca uso direttorio di configurazione)
|
|
Dim sMsgDir As String = String.Empty
|
|
If GetPrivateProfileString(S_GENERAL, K_MESSAGESDIR, "", sMsgDir, m_sIniFile) = 0 Then
|
|
sMsgDir = m_sConfigDir
|
|
End If
|
|
' Leggo file messaggi
|
|
Dim sMsgFile As String = String.Empty
|
|
GetPrivateProfileString(S_GENERAL, K_MESSAGES, "", sMsgFile, m_sIniFile)
|
|
Dim sMsgFilePath As String = sMsgDir & "\" & sMsgFile
|
|
If Not EgtLoadMessages(sMsgFilePath) Then
|
|
EgtOutLog("Error in EgtLoadMessages")
|
|
End If
|
|
' imposto dir font Nfe e font default
|
|
Dim sNfeDir As String = String.Empty
|
|
GetPrivateProfileString(S_GEOMDB, K_NFEFONTDIR, "", sNfeDir, m_sIniFile)
|
|
Dim sDefFont As String = String.Empty
|
|
GetPrivateProfileString(S_GEOMDB, K_DEFAULTFONT, "", sDefFont, m_sIniFile)
|
|
EgtSetFont(sNfeDir, sDefFont)
|
|
' imposto dir di default per libreria Lua e lancio libreria di base
|
|
Dim sLuaLibsDir As String = String.Empty
|
|
GetPrivateProfileString(S_LUA, K_LIBSDIR, "", sLuaLibsDir, m_sIniFile)
|
|
EgtSetLuaLibs(sLuaLibsDir)
|
|
Dim sLuaBaseLib As String = String.Empty
|
|
GetPrivateProfileString(S_LUA, K_BASELIB, "EgtBase", sLuaBaseLib, m_sIniFile)
|
|
EgtLuaRequire(sLuaBaseLib)
|
|
|
|
' Imposto posizione e dimensioni della MainWindow
|
|
Dim nFlag As Integer
|
|
Dim nLeft As Integer
|
|
Dim nTop As Integer
|
|
Dim nWidth As Integer
|
|
Dim nHeight As Integer
|
|
GetPrivateProfileWinPos(S_GENERAL, K_WINPLACE, nFlag, nLeft, nTop, nWidth, nHeight, m_sIniFile)
|
|
Me.WindowStartupLocation = Windows.WindowStartupLocation.Manual
|
|
Me.Top = nTop
|
|
Me.Left = nLeft
|
|
Me.Height = nHeight
|
|
Me.Width = nWidth
|
|
WindowState = If(nFlag = 1, WindowState.Maximized, WindowState.Normal)
|
|
|
|
'Creazione delle Page UserControl
|
|
m_ImportPageUC = New ImportPageUC
|
|
m_DrawPageUC = New DrawPageUC
|
|
m_PlacePageUC = New PlacePageUC
|
|
m_OptionsPageUC = New OptionsPageUC
|
|
m_OpenPageUC = New OpenPageUC
|
|
m_NumericKeyboardWD = New NumericKeyboardWD
|
|
m_AboutBoxWD = New AboutBoxWD
|
|
|
|
'Posizionemento nella griglia delle Page UserControl
|
|
m_ImportPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_ImportPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_DrawPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_DrawPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_PlacePageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_PlacePageUC.SetValue(Grid.RowProperty, 1)
|
|
m_OptionsPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_OptionsPageUC.SetValue(Grid.RowProperty, 1)
|
|
m_OpenPageUC.SetValue(Grid.ColumnProperty, 0)
|
|
m_OpenPageUC.SetValue(Grid.RowProperty, 1)
|
|
|
|
'Disabilita la possibilità di imitare il click del tasto destro del mouse tenendo premuto il dito sul touch
|
|
'NB: Se abilitato impedisce di utilizzare lo stato Pressed dei Button che quindi non si evidenziano quando premuti
|
|
Stylus.SetIsPressAndHoldEnabled(Me, False)
|
|
|
|
'Imposto i messaggi letti dal file dei messaggi
|
|
ImportBtn.Content = EgtMsg(MSG_GENERAL + 1) 'Import - Importa
|
|
DrawBtn.Content = EgtMsg(MSG_GENERAL + 2) 'Draw - Disegna
|
|
PlaceBtn.Content = EgtMsg(MSG_GENERAL + 3) 'Place - Posiziona
|
|
OptionsBtn.Content = EgtMsg(MSG_GENERAL + 4) 'Options - Opzioni
|
|
|
|
'AddHandler OpenTimer.Tick, AddressOf OpenTimer_tick
|
|
'OpenTimer.Interval = TimeSpan.FromMilliseconds(1)
|
|
'OpenTimer.Start()
|
|
'AddHandler OpenTimer2.Tick, AddressOf OpenTimer2_tick
|
|
'OpenTimer2.Interval = TimeSpan.FromMilliseconds(2)
|
|
'OpenTimer2.Start()
|
|
|
|
End Sub
|
|
|
|
Private Sub ManageSingleIstance()
|
|
Dim bCreated As Boolean
|
|
Try
|
|
m_objMutex = New Mutex(False, "Global\SarmaxWall", bCreated)
|
|
Catch
|
|
bCreated = False
|
|
End Try
|
|
If Not bCreated Then
|
|
' porto in primo piano la prima istanza
|
|
Dim bFound As Boolean = False
|
|
' processi del programma a 32 bit
|
|
Dim localProc As Process() = Process.GetProcessesByName("SarmaxWallR32")
|
|
For Each p As Process In localProc
|
|
If p.Id <> Process.GetCurrentProcess().Id Then
|
|
bFound = True
|
|
ShowWindow(p.MainWindowHandle, 1)
|
|
Exit For
|
|
End If
|
|
Next
|
|
' se non trovati processi a 32 bit provo a 64 bit
|
|
If Not bFound Then
|
|
localProc = Process.GetProcessesByName("SarmaxWallR64")
|
|
For Each p As Process In localProc
|
|
If p.Id <> Process.GetCurrentProcess().Id Then
|
|
bFound = True
|
|
ShowWindow(p.MainWindowHandle, SW.RESTORE)
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
' esco dal programma
|
|
End
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub MainWindow_Loaded(sender As Object, e As RoutedEventArgs)
|
|
|
|
'Assegno NumericKeyboardWD e AboutBoxWD come child della MainWindow
|
|
m_NumericKeyboardWD.Owner = Me
|
|
m_AboutBoxWD.Owner = Me
|
|
|
|
'Seleziono la Tab e la Page di apertura
|
|
MainWindowGrid.Children.Add(m_PlacePageUC)
|
|
m_ActivePage = Pages.Place
|
|
PlaceBtn.IsChecked = True
|
|
|
|
End Sub
|
|
|
|
Private Sub Border_MouseDown(sender As Object, e As MouseButtonEventArgs)
|
|
m_AboutBoxWD.Top = Me.Top + (Me.Height / 2 - m_AboutBoxWD.Height / 2)
|
|
m_AboutBoxWD.Left = Me.Left + (Me.Width / 2 - m_AboutBoxWD.Width / 2)
|
|
m_AboutBoxWD.Show()
|
|
End Sub
|
|
|
|
Private Sub ImportBtn_Click(sender As Object, e As RoutedEventArgs) Handles ImportBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.Import
|
|
ImportBtn.IsChecked = True
|
|
Case Pages.Draw
|
|
ImportBtn.IsChecked = False
|
|
DrawBtn.IsChecked = True
|
|
Case Pages.Place
|
|
ImportBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_PlacePageUC)
|
|
MainWindowGrid.Children.Add(m_ImportPageUC)
|
|
m_ActivePage = Pages.Import
|
|
Case Pages.Options
|
|
ImportBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
Case Pages.Open
|
|
ImportBtn.IsChecked = False
|
|
OpenBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub DrawBtn_Click(sender As Object, e As RoutedEventArgs) Handles DrawBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.Import
|
|
ImportBtn.IsChecked = True
|
|
DrawBtn.IsChecked = False
|
|
Case Pages.Draw
|
|
DrawBtn.IsChecked = True
|
|
Case Pages.Place
|
|
DrawBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_PlacePageUC)
|
|
MainWindowGrid.Children.Add(m_DrawPageUC)
|
|
m_ActivePage = Pages.Draw
|
|
Case Pages.Options
|
|
DrawBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
Case Pages.Open
|
|
DrawBtn.IsChecked = False
|
|
OpenBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub PlaceBtn_Click(sender As Object, e As RoutedEventArgs) Handles PlaceBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.Import
|
|
ImportBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
Case Pages.Draw
|
|
DrawBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
Case Pages.Place
|
|
PlaceBtn.IsChecked = True
|
|
Case Pages.Options
|
|
PlaceBtn.IsChecked = False
|
|
OptionsBtn.IsChecked = True
|
|
Case Pages.Open
|
|
PlaceBtn.IsChecked = False
|
|
OpenBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OptionsBtn_Click(sender As Object, e As RoutedEventArgs) Handles OptionsBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.Import
|
|
ImportBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
Case Pages.Draw
|
|
DrawBtn.IsChecked = True
|
|
OptionsBtn.IsChecked = False
|
|
Case Pages.Place
|
|
OptionsBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_PlacePageUC)
|
|
MainWindowGrid.Children.Add(m_OptionsPageUC)
|
|
m_ActivePage = Pages.Options
|
|
Case Pages.Options
|
|
OptionsBtn.IsChecked = True
|
|
Case Pages.Open
|
|
OptionsBtn.IsChecked = False
|
|
OpenBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
Private Sub OpenBtn_Click(sender As Object, e As RoutedEventArgs) Handles OpenBtn.Click
|
|
Select Case m_ActivePage
|
|
Case Pages.Import
|
|
ImportBtn.IsChecked = True
|
|
OpenBtn.IsChecked = False
|
|
Case Pages.Draw
|
|
DrawBtn.IsChecked = True
|
|
OpenBtn.IsChecked = False
|
|
Case Pages.Place
|
|
OpenBtn.IsChecked = True
|
|
PlaceBtn.IsChecked = False
|
|
MainWindowGrid.Children.Remove(m_PlacePageUC)
|
|
MainWindowGrid.Children.Add(m_OpenPageUC)
|
|
m_ActivePage = Pages.Open
|
|
Case Pages.Options
|
|
OptionsBtn.IsChecked = True
|
|
OpenBtn.IsChecked = False
|
|
Case Pages.Open
|
|
OpenBtn.IsChecked = True
|
|
End Select
|
|
End Sub
|
|
|
|
'Impedisce di clickare fuori dalla calcolatrice quando questa è attiva
|
|
Private Sub MainWindow_PreviewMouseDown(sender As Object, e As MouseButtonEventArgs)
|
|
If (m_NumericKeyboardWD.IsVisible And Not m_NumericKeyboardWD.IsMouseOver) Then
|
|
e.Handled = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub ExitBtn_Click(sender As Object, e As RoutedEventArgs)
|
|
' Recupero flag di modificato, per salvarlo nel progetto
|
|
Dim bModif As Boolean = EgtGetModified()
|
|
Dim nMarkId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK)
|
|
EgtSetInfo(nMarkId, INFO_MODIF, IIf(bModif, 1, 0))
|
|
' Salvo il progetto corrente
|
|
Dim sPath As String = GetDataDir() & "\0000.nge"
|
|
If Not EgtSaveFile(sPath, NGE.CMPTEXT) Then
|
|
Dim sOut As String = "Error saving file " & sPath
|
|
EgtOutLog(sOut)
|
|
End If
|
|
' Chiudo tutto
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub MainWindow_Unloaded(sender As Object, e As RoutedEventArgs)
|
|
' Terminazione generale di EgtInterface
|
|
EgtExit()
|
|
' Rilascio mutex
|
|
m_objMutex.Close()
|
|
End Sub
|
|
|
|
End Class
|