diff --git a/ConstIni.vb b/ConstIni.vb index 3f68023..a6370ee 100644 --- a/ConstIni.vb +++ b/ConstIni.vb @@ -24,6 +24,7 @@ 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" diff --git a/Controller.vb b/Controller.vb index 8e843c6..0685c75 100644 --- a/Controller.vb +++ b/Controller.vb @@ -24,6 +24,8 @@ Public Class Controller Public Event OnOpenProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Public Event OnSavingProject(ByVal sender As Object) Public Event OnSavedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) + Public Event OnSavingObject(ByVal sender As Object) + Public Event OnSavedObject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Public Event OnImportingProject(ByVal sender As Object, ByVal bOkType As Boolean) Public Event OnImportedProject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Public Event OnExportingProject(ByVal sender As Object) @@ -330,6 +332,59 @@ Public Class Controller Return bOk End Function + Public Function SaveObject(ByVal nId As Integer, Optional ByVal sDir As String = "", Optional ByVal nType As NGE = NGE.CMPTEXT) As Boolean + 'Creo nome di default + Dim sName As String = String.Empty + If Not EgtGetName(nId, sName) Then + Dim nObjType As Integer = EgtGetType(nId) + If nObjType = GDB_TY.GROUP Then + If EgtIsPart(nId) Then + sName = "Part" & nId.ToString() + ElseIf EgtIsLayer(nId) Then + sName = "Layer" & nId.ToString() + Else + sName = "Group" & nId.ToString() + End If + ElseIf nObjType <> GDB_TY.NONE Then + Dim sTitle As String = String.Empty + EgtGetTitle(nId, sTitle) + sName = sTitle & nId.ToString() + Else + sName = "Unknown" & nId.ToString() + End If + End If + 'Sistemo path + Dim sFile As String + If String.IsNullOrWhiteSpace(sDir) Then + sFile = sName + Else + sFile = sDir.TrimEnd("\") & "\" & sName + End If + 'Assegnazione nome file con dialogo + Dim SaveFileDialog As New SaveFileDialog + SaveFileDialog.Title = "Save Object" + SaveFileDialog.Filter = "New geometry EgalTech(*.nge)|*.nge" + SaveFileDialog.FileName = sFile + SaveFileDialog.InitialDirectory = sDir.TrimEnd("\") + If SaveFileDialog.ShowDialog <> Windows.Forms.DialogResult.OK Then + Return True + End If + Dim sFileName As String = SaveFileDialog.FileName + 'Prima del salvataggio + RaiseEvent OnSavingObject(Me) + 'Salvataggio dell'oggetto con la sua ascendenza + m_Scene.Cursor = Cursors.WaitCursor + EnableCommandLog() + Dim bOk As Boolean = EgtSaveObjToFile(nId, sFileName, nType) + DisableCommandLog() + m_Scene.Cursor = Cursors.Default + 'Aggiorno + RaiseEvent UpdateUI(Me, False) + 'Gestione risultato + RaiseEvent OnSavedObject(Me, sFileName, bOk) + Return bOk + End Function + Public Function ImportProject(Optional ByVal sDir As String = "", Optional ByVal bWithDlg As Boolean = True) As Boolean ' gestisco eventuale file corrente modificato If Not ManageModified() Then diff --git a/EgtInterface.vb b/EgtInterface.vb index 798567f..cb24923 100644 --- a/EgtInterface.vb +++ b/EgtInterface.vb @@ -797,6 +797,10 @@ End Function Public Function EgtSaveFile(ByVal sFilePath As String, ByVal nFlag As NGE) As Boolean End Function + +Public Function EgtSaveObjToFile(ByVal nId As Integer, ByVal sFilePath As String, ByVal nFlag As NGE) As Boolean +End Function + '---------- Exchange ----------------------------------------------------------- diff --git a/Form1.Designer.vb b/Form1.Designer.vb index 4ec2b0b..ee74bd2 100644 --- a/Form1.Designer.vb +++ b/Form1.Designer.vb @@ -154,6 +154,7 @@ Partial Class Form1 Me.cmdRelocatePartLayObj = New System.Windows.Forms.ToolStripMenuItem() Me.cmdCopyPartLayObj = New System.Windows.Forms.ToolStripMenuItem() Me.cmdDeletePartLayObj = New System.Windows.Forms.ToolStripMenuItem() + Me.cmdSavePartLay = New System.Windows.Forms.ToolStripMenuItem() Me.OpenFileDialog = New System.Windows.Forms.OpenFileDialog() Me.SaveFileDialog = New System.Windows.Forms.SaveFileDialog() Me.btnGetDist = New System.Windows.Forms.CheckBox() @@ -2126,11 +2127,11 @@ Partial Class Form1 ' 'ContextMenuTreeView1 ' - Me.ContextMenuTreeView1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectPartLayObj, Me.cmdDeselectPartLayObj, Me.ToolStripSeparator1, Me.cmdSetName, Me.cmdSetInfo, Me.ToolStripSeparator2, Me.cmdRelocatePartLayObj, Me.cmdCopyPartLayObj, Me.cmdDeletePartLayObj}) + Me.ContextMenuTreeView1.Items.AddRange(New System.Windows.Forms.ToolStripItem() {Me.cmdSelectPartLayObj, Me.cmdDeselectPartLayObj, Me.ToolStripSeparator1, Me.cmdSetName, Me.cmdSetInfo, Me.ToolStripSeparator2, Me.cmdRelocatePartLayObj, Me.cmdCopyPartLayObj, Me.cmdDeletePartLayObj, Me.cmdSavePartLay}) Me.ContextMenuTreeView1.Name = "ContextMenuStrip1" Me.ContextMenuTreeView1.ShowCheckMargin = True Me.ContextMenuTreeView1.ShowImageMargin = False - Me.ContextMenuTreeView1.Size = New System.Drawing.Size(120, 170) + Me.ContextMenuTreeView1.Size = New System.Drawing.Size(120, 192) ' 'cmdSelectPartLayObj ' @@ -2184,6 +2185,12 @@ Partial Class Form1 Me.cmdDeletePartLayObj.Size = New System.Drawing.Size(119, 22) Me.cmdDeletePartLayObj.Text = "Delete" ' + 'cmdSavePartLay + ' + Me.cmdSavePartLay.Name = "cmdSavePartLay" + Me.cmdSavePartLay.Size = New System.Drawing.Size(119, 22) + Me.cmdSavePartLay.Text = "Save" + ' 'OpenFileDialog ' Me.OpenFileDialog.DefaultExt = "Nge" @@ -2578,5 +2585,6 @@ End Sub Friend WithEvents btnChangeStartCurve As System.Windows.Forms.Button Friend WithEvents btnFillet As System.Windows.Forms.Button Friend WithEvents btnExplodeSurf As System.Windows.Forms.Button + Friend WithEvents cmdSavePartLay As System.Windows.Forms.ToolStripMenuItem End Class diff --git a/Form1.resx b/Form1.resx index f2455f8..0b5bc7c 100644 --- a/Form1.resx +++ b/Form1.resx @@ -883,7 +883,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAAC2 - DQAAAk1TRnQBSQFMAgEBDgEAAXgBEAF4AhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA + DQAAAk1TRnQBSQFMAgEBDgEAAZABEAGQAhABAAEQAQAE/wEJAQAI/wFCAU0BNgEEBgABNgEEAgABKAMA AUADAAFAAwABAQEAAQgGAAEQGAABgAIAAYADAAKAAQABgAMAAYABAAGAAQACgAIAA8ABAAHAAdwBwAEA AfABygGmAQABMwUAATMBAAEzAQABMwEAAjMCAAMWAQADHAEAAyIBAAMpAQADVQEAA00BAANCAQADOQEA AYABfAH/AQACUAH/AQABkwEAAdYBAAH/AewBzAEAAcYB1gHvAQAB1gLnAQABkAGpAa0CAAH/ATMDAAFm @@ -952,7 +952,7 @@ AAEAAAD/////AQAAAAAAAAAMAgAAAFdTeXN0ZW0uV2luZG93cy5Gb3JtcywgVmVyc2lvbj00LjAuMC4w LCBDdWx0dXJlPW5ldXRyYWwsIFB1YmxpY0tleVRva2VuPWI3N2E1YzU2MTkzNGUwODkFAQAAACZTeXN0 ZW0uV2luZG93cy5Gb3Jtcy5JbWFnZUxpc3RTdHJlYW1lcgEAAAAERGF0YQcCAgAAAAkDAAAADwMAAADW - CAAAAk1TRnQBSQFMAgEBAgEAAZgBBwGYAQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo + CAAAAk1TRnQBSQFMAgEBAgEAAbABBwGwAQcBEAEAARABAAT/AQkBAAj/AUIBTQE2AQQGAAE2AQQCAAEo AwABQAMAARADAAEBAQABCAYAAQQYAAGAAgABgAMAAoABAAGAAwABgAEAAYABAAKAAgADwAEAAcAB3AHA AQAB8AHKAaYBAAEzBQABMwEAATMBAAEzAQACMwIAAxYBAAMcAQADIgEAAykBAANVAQADTQEAA0IBAAM5 AQABgAF8Af8BAAJQAf8BAAGTAQAB1gEAAf8B7AHMAQABxgHWAe8BAAHWAucBAAGQAakBrQIAAf8BMwMA @@ -1092,11 +1092,11 @@ - iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8 - YQUAAAAJcEhZcwAADsQAAA7EAZUrDhsAAAAHdElNRQffBBwHAxGEIS8JAAAAq0lEQVRYR+3TUQqDMBBF - UReWxbkWV9ddxKRN4qgXppTOSz8qHAjXgcyHLjnnqTAqYVTCqIRRCaMSRiWMShiVML6jPKmohy7RnAej - p172vHR7HD5cAqPndrlZ4jrrwej5L1Ceud9ANZY46P6Cb8KohFEJY6Trt3J6Ga1eXqx2idtQlH55O48l - cDhCu9Qu8DrboWh2gdH6QeEnFuhGswMzYFTCqIRRCaMSRp287IDzhJ/eCN+kAAAAAElFTkSuQmCC + iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAABGdBTUEAALGPC/xhBQAAAAlwSFlzAAAO + xAAADsQBlSsOGwAAAAd0SU1FB98EHAcDEYQhLwkAAACrSURBVFhH7dNRCoMwEEVRF5bFuRZX113EpE3i + qBemlM5LPyocCNeBzIcuOeepMCphVMKohFEJoxJGJYxKGJUwvqM8qaiHLtGcB6OnXva8dHscPlwCo+d2 + uVniOuvB6PkvUJ6530A1ljjo/oJvwqiEUQljpOu3cnoZrV5erHaJ21CUfnk7jyVwOEK71C7wOtuhaHaB + 0fpB4ScW6EazAzNgVMKohFEJoxJGnbzsgPOEn94I36QAAAAASUVORK5CYII= diff --git a/Form1.vb b/Form1.vb index 124d903..7d64ff0 100644 --- a/Form1.vb +++ b/Form1.vb @@ -448,6 +448,20 @@ Public Class Form1 End If End Sub + Private Sub OnSavingObject(ByVal sender As Object) Handles m_Controller.OnSavingObject + End Sub + + Private Sub OnSavedObject(ByVal sender As Object, ByVal sFile As String, ByVal bOk As Boolean) Handles m_Controller.OnSavedObject + WritePrivateProfileString(S_GENERAL, K_LASTNGEOBJDIR, Path.GetDirectoryName(sFile), m_sIniFile) + If bOk Then + m_MruFiles.Add(sFile) + Else + m_MruFiles.Remove(sFile) + Dim sMsg As String = EgtMsg(10004) & " '" & sFile & "'" 'Error saving file + MessageBox.Show(sMsg, EgtMsg(10001), MessageBoxButtons.OK, MessageBoxIcon.Error) ' Error + End If + End Sub + Private Sub OnImportingProject(ByVal sender As Object, ByVal bOkType As Boolean) Handles m_Controller.OnImportingProject If bOkType Then ClearObjTree() @@ -1493,8 +1507,12 @@ Public Class Form1 ' verifico stato visualizzazione per abilitare voci menĂ¹ Dim nStat As GDB_ST = GDB_ST.ON_ Dim bOn As Boolean = EgtGetCalcStatus(m_nObjTreeMenuId, nStat) And nStat <> GDB_ST.OFF - For Each i As ToolStripItem In ContextMenuTreeView1.Items - i.Enabled = bOn + For Each Item As ToolStripItem In ContextMenuTreeView1.Items + If Item.Name = "cmdSetName" Or Item.Name = "cmdSetInfo" Then + Item.Enabled = True + Else + Item.Enabled = bOn + End If Next ContextMenuTreeView1.Show(TreeView1, e.Location) End If @@ -1592,6 +1610,12 @@ Public Class Form1 ElseIf e.ClickedItem.Name = "cmdDeletePartLayObj" Then m_Controller.SetLastInteger(m_nObjTreeMenuId) m_Controller.ExecuteCommand(CMD.DELETE) + ElseIf e.ClickedItem.Name = "cmdSavePartLay" Then + ContextMenuTreeView1.Close() + Dim sDir As String = String.Empty + GetPrivateProfileString(S_GENERAL, K_LASTNGEOBJDIR, "", sDir, m_sIniFile) + Dim nType As NGE = GetPrivateProfileInt(S_GEOMDB, K_SAVETYPE, NGE.CMPTEXT, m_sIniFile) + m_Controller.SaveObject(m_nObjTreeMenuId, sDir, nType) End If End Sub @@ -1700,6 +1724,7 @@ Public Class Form1 Private Sub OnMenuMruFiles_ItemClick(sender As Object, e As ToolStripItemClickedEventArgs) Handles ContextMenuMruFiles.ItemClicked If e.ClickedItem.Text <> "" Then + ContextMenuMruFiles.Close() m_Controller.OpenProject(e.ClickedItem.Text, False) End If End Sub diff --git a/My Project/AssemblyInfo.vb b/My Project/AssemblyInfo.vb index 9586589..54af953 100644 --- a/My Project/AssemblyInfo.vb +++ b/My Project/AssemblyInfo.vb @@ -46,5 +46,5 @@ Imports System.Runtime.InteropServices ' utilizzando l'asterisco (*) come descritto di seguito: ' - - + +