From 9abeab0a877a705c3fbabacf54437096c22993a2 Mon Sep 17 00:00:00 2001 From: Dario Sassi Date: Sun, 13 Sep 2015 17:44:19 +0000 Subject: [PATCH] SarmaxWall 1.6i6 : - prima versione con generazione completata. --- ConstGen.vb | 33 ++++-- ConstIni.vb | 28 ++---- ConstMsg.vb | 3 +- DrawPageUC.xaml.vb | 3 +- ImportPageUC.xaml.vb | 3 +- MainWindow.xaml.vb | 59 ++++++++++- My Project/AssemblyInfo.vb | 4 +- OpenPageUC.xaml | 7 +- OpenPageUC.xaml.vb | 41 ++++++-- PlacePageUC.xaml | 27 +++-- PlacePageUC.xaml.vb | 199 +++++++++++++++++++++++++++++++------ 11 files changed, 324 insertions(+), 83 deletions(-) diff --git a/ConstGen.vb b/ConstGen.vb index 13bcb66..4d4903b 100644 --- a/ConstGen.vb +++ b/ConstGen.vb @@ -13,9 +13,9 @@ Module ConstGen -' File con direttorio radice dei dati -Public Const DAT_FILE_NAME As String = "DataRoot.Ini" -Public Const S_DATA As String = "Data" + ' File con direttorio radice dei dati + Public Const DAT_FILE_NAME As String = "DataRoot.Ini" + Public Const S_DATA As String = "Data" Public Const K_DATAROOT As String = "DataRoot" ' File con dati di licenza @@ -29,10 +29,29 @@ Public Const S_DATA As String = "Data" ' File di log dei comandi Public Const CMDLOG_FILE_NAME As String = "SarmaxWallLog.tua" -' Sottodirettorio di configurazione -Public Const CONF_DIR As String = "Config" + ' Sottodirettorio di configurazione + Public Const CONF_DIR As String = "Config" -' Sottodirettorio temporaneo -Public Const TEMP_DIR As String = "Temp" + ' Sottodirettorio temporaneo + Public Const TEMP_DIR As String = "Temp" + + ' Sottodirettorio di salvataggio progetti + Public Const DATA_DIR As String = "Data" + + ' Nome gruppo identificativo della macchina + Public Const NAME_MACHINE As String = "Machine" + + ' Nome sottogruppo identificativo della tavola + Public Const NAME_TABLE As String = "Table" + + ' Chiavi info per dimensioni tavola + Public Const KEY_TABLENGTH As String = "L" + Public Const KEY_TABWIDTH As String = "W" + + ' Nome gruppo identificativo di progetto SarmaxWall + Public Const NAME_PROJMARK As String = "SarmaxWall" + + ' Nome info di modificato nel gruppo precedente quando salvo corrente in uscita + Public Const INFO_MODIF As String = "Modif" End Module diff --git a/ConstIni.vb b/ConstIni.vb index 9883ff8..92d7436 100644 --- a/ConstIni.vb +++ b/ConstIni.vb @@ -18,17 +18,12 @@ Module ConstIni Public Const S_GENERAL As String = "General" Public Const K_DEBUG As String = "Debug" Public Const K_LICENCE As String = "Licence" - Public Const K_USERLEVEL As String = "UserLevel" - Public Const K_MAXINST As String = "MaxInstances" - Public Const K_INSTANCES As String = "Instances" Public Const K_COMMANDLOG As String = "CommandLog" Public Const K_MESSAGES As String = "Messages" Public Const K_WINPLACE As String = "WinPlace" - Public Const K_LASTNGEDIR As String = "LastNgeDir" - Public Const K_LASTNGEOBJDIR As String = "LastNgeObjDir" - Public Const K_LASTLUADIR As String = "LastLuaDir" - Public Const K_LASTIMPDIR As String = "LastImpDir" - Public Const K_LASTEXPDIR As String = "LastExpDir" + Public Const K_MAXPROJ As String = "MaxProj" + Public Const K_LASTPROJ As String = "LastProj" + Public Const K_AUTOLOADLASTPROJ As String = "AutoLoadLastProj" Public Const S_LUA As String = "Lua" Public Const K_LIBSDIR As String = "LibsDir" @@ -38,7 +33,6 @@ Module ConstIni Public Const K_DEFAULTFONT As String = "DefaultFont" Public Const K_NFEFONTDIR As String = "NfeFontDir" Public Const K_DEFAULTCOLOR As String = "DefaultColor" - Public Const K_SAVETYPE As String = "SaveType" Public Const S_OPENGL As String = "OpenGL" Public Const K_DOUBLEBUFFER As String = "DoubleBuffer" @@ -49,15 +43,11 @@ Module ConstIni Public Const S_SCENE As String = "Scene" Public Const K_BACKTOP As String = "BackTop" Public Const K_BACKBOTTOM As String = "BackBottom" - Public Const K_SHOWGFRAME As String = "ShowGFrame" Public Const K_MARK As String = "Mark" Public Const K_SELSURF As String = "SelSurf" Public Const K_SHOWMODE As String = "ShowMode" - Public Const K_CURVEDIR As String = "CurveDir" - Public Const K_SHOWTRIAADV As String = "ShowTriaAdv" Public Const K_ZOOMWIN As String = "ZoomWin" Public Const K_DISTLINE As String = "DistLine" - Public Const K_MMUNITS As String = "MmUnits" Public Const S_GRID As String = "Grid" Public Const K_SHOWGRID As String = "ShowGrid" @@ -70,23 +60,23 @@ Module ConstIni Public Const K_MINLNCOLOR As String = "MinLnColor" Public Const K_MAJLNCOLOR As String = "MajLnColor" - Public Const S_TABSPECIAL As String = "TabSpecial" - Public Const K_TSSHOW As String = "Show" - Public Const S_COMPO As String = "Compo" - Public Const K_CMPWINPLACE As String = "WinPlace" Public Const K_COMPODIR As String = "CompoDir" Public Const S_FLATPARTS As String = "FlatParts" - Public Const K_FLPWINPLACE As String = "WinPlace" Public Const K_FLPCURRDIR As String = "CurrDir" + Public Const S_FILEOPEN As String = "FileOpen" + Public Const K_LASTNGEDIR As String = "LastNgeDir" + Public Const S_MACHINE As String = "Machine" - Public Const K_MACHFILE As String = "File" + Public Const K_GEOMETRY As String = "Geometry" + Public Const K_PROCESSOR As String = "Processor" Public Const K_OFFSETX As String = "OffsetX" Public Const K_OFFSETY As String = "OffsetY" Public Const K_MINDIST As String = "MinDist" Public Const K_STEP As String = "Step" + Public Const K_LAYERTHICK As String = "LayerThickness" Public Const S_MRUFILES As String = "MruFiles" Public Const S_MRUSCRIPTS As String = "MruScripts" diff --git a/ConstMsg.vb b/ConstMsg.vb index 803424c..84bfdb8 100644 --- a/ConstMsg.vb +++ b/ConstMsg.vb @@ -6,6 +6,7 @@ Public Const MSG_DRAWPAGEUC As Integer = 101200 Public Const MSG_PLACEPAGEUC As Integer = 101300 Public Const MSG_OPTIONSPAGEUC As Integer = 101400 - Public Const MSG_MISSINGKEYWD As Integer = 101500 + Public Const MSG_OPENPAGEUC As Integer = 101500 + Public Const MSG_MISSINGKEYWD As Integer = 101600 End Module diff --git a/DrawPageUC.xaml.vb b/DrawPageUC.xaml.vb index c84a9fe..744e0e7 100644 --- a/DrawPageUC.xaml.vb +++ b/DrawPageUC.xaml.vb @@ -565,7 +565,8 @@ Public Class DrawPageUC Return End If ' Aggiorno ambiente principale - EgtZoom(ZM.ALL) + EgtZoom(ZM.ALL, False) + m_MainWindow.m_PlacePageUC.MyDraw() ' Istruzioni per chiudere DrawPageUC e aprire PlacePage UC m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_DrawPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_PlacePageUC) diff --git a/ImportPageUC.xaml.vb b/ImportPageUC.xaml.vb index 381a7e3..628b399 100644 --- a/ImportPageUC.xaml.vb +++ b/ImportPageUC.xaml.vb @@ -306,7 +306,8 @@ Public Class ImportPageUC End If Next ' Aggiorno ambiente principale - EgtZoom(ZM.ALL) + EgtZoom(ZM.ALL, False) + m_MainWindow.m_PlacePageUC.MyDraw() 'Istruzioni per chiudere ImportPageUC e aprire PlacePage UC m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_ImportPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_PlacePageUC) diff --git a/MainWindow.xaml.vb b/MainWindow.xaml.vb index f9e5c3a..2f9108d 100644 --- a/MainWindow.xaml.vb +++ b/MainWindow.xaml.vb @@ -1,4 +1,5 @@ Imports System.Collections.ObjectModel +Imports System.Threading Imports System.Windows.Threading Imports EgtUILib @@ -13,10 +14,13 @@ Class MainWindow Friend m_NumericKeyboardWD As NumericKeyboardWD Friend m_AboutBoxWD As AboutBoxWD + Private m_objMutex As New Mutex + '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 @@ -46,8 +50,13 @@ Class MainWindow Return m_sTempDir End Function - Private Sub MainWindow_Initialized(sender As Object, e As EventArgs) + 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 @@ -57,6 +66,8 @@ Class MainWindow 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 @@ -146,6 +157,41 @@ Class MainWindow 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 @@ -290,6 +336,17 @@ Class MainWindow 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 diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 1f8da67..802c1b2 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -60,5 +60,5 @@ Imports System.Windows ' by using the '*' as shown below: ' - - + + diff --git a/OpenPageUC.xaml b/OpenPageUC.xaml index e904c77..5b30c4b 100644 --- a/OpenPageUC.xaml +++ b/OpenPageUC.xaml @@ -4,7 +4,7 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" mc:Ignorable="d" - d:DesignHeight="704" d:DesignWidth="1024" Initialized="OpenPage_Initialized" Loaded="OpenPage_Loaded"> + d:DesignHeight="704" d:DesignWidth="1024" Initialized="OpenPage_Initialized" Loaded="OpenPage_Loaded" Unloaded="OpenPage_Unloaded"> @@ -27,6 +27,11 @@ + + + + diff --git a/OpenPageUC.xaml.vb b/OpenPageUC.xaml.vb index 1980546..75291ab 100644 --- a/OpenPageUC.xaml.vb +++ b/OpenPageUC.xaml.vb @@ -12,8 +12,8 @@ Public Class OpenPageUC ' Properties Private m_sCurrDir As String = String.Empty Private m_sCurrFile As String = String.Empty - Private m_nFileType As Integer = FT.NULL Private m_bFirst As Boolean = True + Private m_bFileOk As Boolean = False 'Dichiarazione Scene Friend WithEvents OpenScene As New Scene @@ -81,7 +81,7 @@ Public Class OpenPageUC ' Imposto griglia LoadGridData() ' leggo direttorio corrente - GetPrivateProfileString(S_FLATPARTS, K_FLPCURRDIR, "", m_sCurrDir, m_MainWindow.GetIniFile()) + GetPrivateProfileString(S_FILEOPEN, K_LASTNGEDIR, "", m_sCurrDir, m_MainWindow.GetIniFile()) ' lo carico LoadCurrDir() m_bFirst = False @@ -213,6 +213,10 @@ Public Class OpenPageUC EgtNewFile() ' Eseguo zoom OpenScene.ZoomAll() + ' Cancello messaggio + MessageTxBx.Text = "" + MessageBrd.Background = Brushes.White + OkBtn.IsEnabled = False Return True End Function @@ -222,15 +226,26 @@ Public Class OpenPageUC ' Costruisco path completa del componente Dim sPath = IO.Path.Combine(m_sCurrDir, m_sCurrFile) ' Riconoscimento tipo - m_nFileType = EgtGetFileType(sPath) - If m_nFileType = FT.NGE Then - ' Carico Btl + Dim nFileType As Integer = EgtGetFileType(sPath) + If nFileType = FT.NGE Then + ' Carico Nge bOk = bOk AndAlso EgtOpenFile(sPath) Else ' Formato sconosciuto - EgtNewFile() bOk = False End If + ' Cerco contrassegno di progetto SarmaxWall + Dim nMarkId As Integer = EgtGetFirstNameInGroup(GDB_ID.ROOT, NAME_PROJMARK) + m_bFileOk = bOk And (nMarkId <> GDB_ID.NULL) + If m_bFileOk Then + MessageTxBx.Text = "" + MessageBrd.Background = Brushes.White + OkBtn.IsEnabled = True + Else + MessageTxBx.Text = EgtMsg(MSG_OPENPAGEUC + 1) 'Progetto non valido + MessageBrd.Background = Brushes.Tomato + OkBtn.IsEnabled = False + End If ' Eseguo zoom OpenScene.ZoomAll() Return bOk @@ -240,14 +255,21 @@ Public Class OpenPageUC End Sub Private Sub ConfirmBtn_Click(sender As Object, e As RoutedEventArgs) Handles OkBtn.Click + ' Verifico che il file corrente sia valido + If Not m_bFileOk Then + Return + End If ' Passo al contesto principale EgtSetCurrentContext(m_MainWindow.m_PlacePageUC.PlaceScene.GetCtx()) ' Costruisco path completa del componente Dim sPath = IO.Path.Combine(m_sCurrDir, m_sCurrFile) ' Apro il progetto EgtOpenFile(sPath) + ' Dichiaro progetto modificato + EgtSetModified() ' Aggiorno ambiente principale - EgtZoom(ZM.ALL) + EgtZoom(ZM.ALL, False) + m_MainWindow.m_PlacePageUC.MyDraw() 'Istruzioni per chiudere ImportPageUC e aprire PlacePage UC m_MainWindow.MainWindowGrid.Children.Remove(m_MainWindow.m_OpenPageUC) m_MainWindow.MainWindowGrid.Children.Add(m_MainWindow.m_PlacePageUC) @@ -265,9 +287,10 @@ Public Class OpenPageUC m_MainWindow.PlaceBtn.IsChecked = True End Sub - Private Sub ImportPage_Unloaded(sender As Object, e As RoutedEventArgs) + Private Sub OpenPage_Unloaded(sender As Object, e As RoutedEventArgs) ' Salvo direttorio corrente - 'WritePrivateProfileString(S_FLATPARTS, K_FLPCURRDIR, m_sCurrDir, m_MainWindow.GetIniFile()) + WritePrivateProfileString(S_FILEOPEN, K_LASTNGEDIR, m_sCurrDir, m_MainWindow.GetIniFile()) End Sub + End Class diff --git a/PlacePageUC.xaml b/PlacePageUC.xaml index 4930f57..30c42c1 100644 --- a/PlacePageUC.xaml +++ b/PlacePageUC.xaml @@ -68,15 +68,15 @@ - + - - +