93bc8aaf9c
-> correzione annullamento nuovo assemblato, -> gestione automatico del ricalcolo della ferramenta in caso di inversione delle ante (cambio Swing) -> evidenziazione dei parametri modificati (sui telai) e segnalazione in caso di ricalcolo (si: ricalcolo, no: ognora il ricalcolo, annulla: ripristina l'ultimo valore inserito) -> aggiunta dei bottoni per il ricalcolo su ogni componente della porta (solo se la componente ha un riferimento valido)
1548 lines
68 KiB
VB.net
1548 lines
68 KiB
VB.net
Imports combit.ListLabel25
|
|
Imports combit.ListLabel25.DataProviders
|
|
Imports System.Collections.ObjectModel
|
|
Imports System.Collections.Generic
|
|
Imports System.ComponentModel
|
|
Imports System.IO
|
|
Imports EgtUILib
|
|
Imports EgtWPFLib5
|
|
Imports Ionic.zip
|
|
|
|
Public Class ProjectManagerVM
|
|
Implements INotifyPropertyChanged
|
|
|
|
#Region "FIELDS & PROPERTIES"
|
|
|
|
Friend m_CurrProject As Project
|
|
|
|
Friend m_MruFiles As New MruList
|
|
Public ReadOnly Property MruFileNames As ObservableCollection(Of String)
|
|
Get
|
|
Return m_MruFiles.FileNames
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DisableHM As Visibility
|
|
Get
|
|
If OptionModule.m_DisableHM Then
|
|
Return Visibility.Visible
|
|
Else
|
|
Return Visibility.Collapsed
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property VisibilityDeleteDDF As Visibility
|
|
Get
|
|
If OptionModule.m_SingleDoor Then
|
|
Return Visibility.Visible
|
|
Else
|
|
Return Visibility.Collapsed
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property VisibilityTemplate As Visibility
|
|
Get
|
|
If OptionModule.m_DisableTemplate Then
|
|
Return Visibility.Collapsed
|
|
Else
|
|
Return Visibility.Visible
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DeleteProjectVisibility As Visibility
|
|
Get
|
|
If OptionModule.m_SingleDoor Then
|
|
Return Visibility.Visible
|
|
End If
|
|
If OptionModule.m_DeleteProject Then
|
|
Return Visibility.Visible
|
|
Else
|
|
Return Visibility.Collapsed
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
Private m_IsModifiedImage As String = "/Resources/TopCommandBar/Save.png"
|
|
Public Property IsModifiedImage As String
|
|
Get
|
|
Return m_IsModifiedImage
|
|
End Get
|
|
Set(value As String)
|
|
m_IsModifiedImage = value
|
|
NotifyPropertyChanged("IsModifiedImage")
|
|
End Set
|
|
End Property
|
|
|
|
Public ReadOnly Property EnableProjectManager As Boolean
|
|
Get
|
|
If Not IsNothing(Map.refInstrumentPanelVM) Then
|
|
Return Map.refInstrumentPanelVM.EnablePage
|
|
Else
|
|
Return True
|
|
End If
|
|
End Get
|
|
End Property
|
|
|
|
' Definizione comandi
|
|
Private m_cmdNew As ICommand
|
|
Private m_cmdDelete As ICommand
|
|
Private m_cmdOpen As ICommand
|
|
Private m_cmdOpenMruFile As ICommand
|
|
|
|
Private m_cmdReload As ICommand
|
|
|
|
Private m_cmdSave As ICommand
|
|
Private m_cmdSaveAs As ICommand
|
|
Private m_cmdInsert As ICommand
|
|
Private m_cmdImport As ICommand
|
|
Private m_cmdExport As ICommand
|
|
Private m_cmdPrint As ICommand
|
|
Private m_cmdOptions As ICommand
|
|
Private m_CmdLastProject As ICommand
|
|
Private m_cmdSendFeedback As ICommand
|
|
Private m_CmdCreateTemplate As ICommand
|
|
Private m_cmdGuide As ICommand
|
|
Private m_cmdCopy As ICommand
|
|
Private m_cmdDuplica As ICommand
|
|
Private m_cmdHardware As ICommand
|
|
Private m_cmdRefreshDir As ICommand
|
|
Private m_cmdCreateAssembly As ICommand
|
|
|
|
#Region "ToolTip"
|
|
|
|
'Proprietà ToolTip
|
|
Public ReadOnly Property NewToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 1)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property DeleteToolTip As String
|
|
Get
|
|
' Delete
|
|
Return EgtMsg(50126)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property OpenToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 2)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property ReloadToolTip As String
|
|
Get
|
|
' 50421 = Reload Directories
|
|
Return EgtMsg(50421)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property SaveToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 3)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property SaveAsToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 4)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property InsertToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 5)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property ImportToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_TOPCOMMANDBAR + 6)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property SendFeedbackToolTip As String
|
|
Get
|
|
Return EgtMsg(50046)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property OptionsToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_MAINWINDOW + 209)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property TemplateDoorToolTip As String
|
|
Get
|
|
Return EgtMsg(MSG_MAINWINDOW + 223)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property GuideToolTip As String
|
|
Get
|
|
Return EgtMsg(50305)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property Help As String
|
|
Get
|
|
Return EgtMsg(50305)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CopyToolTip As String
|
|
Get
|
|
' Export to machine
|
|
Return EgtMsg(50416)
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property DuplicaToolTip As String
|
|
Get
|
|
' Duplicate
|
|
Return EgtMsg(50415)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property PrintToolTip As String
|
|
Get
|
|
' Print
|
|
Return EgtMsg(50411)
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property HardwareToolTip As String
|
|
Get
|
|
' Hardware
|
|
Return EgtMsg(50413).ToUpper
|
|
End Get
|
|
End Property
|
|
Public ReadOnly Property DoorToolTip As String
|
|
Get
|
|
' Door
|
|
Return EgtMsg(50308).ToUpper
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CreateAssemblyToolTip As String
|
|
Get
|
|
' Create Assembly
|
|
Return EgtMsg(50420)
|
|
End Get
|
|
End Property
|
|
|
|
#End Region ' ToolTip
|
|
|
|
#End Region ' Fields & Properties
|
|
|
|
#Region "CONSTRUCTOR"
|
|
|
|
Sub New()
|
|
Map.SetRefProjectManagerVM(Me)
|
|
' Impostazioni MruLists
|
|
m_MruFiles.Init(S_MRUFILES, 8)
|
|
End Sub
|
|
|
|
#End Region ' Constructor
|
|
|
|
#Region "COMMANDS"
|
|
|
|
#Region "NewCommand"
|
|
|
|
Public ReadOnly Property NewCommand As ICommand
|
|
Get
|
|
If m_cmdNew Is Nothing Then
|
|
m_cmdNew = New Command(AddressOf NewCmd)
|
|
End If
|
|
Return m_cmdNew
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub NewCmd()
|
|
Utility.OutLog(" +++ NewProject +++")
|
|
' Gestisco porta corrente modificata
|
|
If Not Map.refAssemblyManagerVM.ManageModified() Then Return
|
|
' Modalità Progetto
|
|
If Not OptionModule.m_SingleDoor Then
|
|
Utility.UnLockDir()
|
|
' Richiedo il nome del progetto (cioè la directory da creare)
|
|
Dim SaveFileDialog As New MySaveFileDialogVM
|
|
Dim SaveFileDialogWnd As New EgtWPFLib5.SaveFileDialogV(Application.Current.MainWindow, SaveFileDialog)
|
|
SaveFileDialog.Title = EgtMsg(50304)
|
|
SaveFileDialog.Directory = IniFile.m_MyProjectDir
|
|
SaveFileDialog.Extension = "\"
|
|
' se annullo la creazione di un nuovo direttorio, rimango in quello attuale (verifico che l'ultimo file non sia già in lettura)
|
|
If Not SaveFileDialogWnd.ShowDialog Then
|
|
Utility.OutLog("Annullata la creazione di un nuovo progetto")
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
If Not String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
If Not Utility.IsFileLocked(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName
|
|
End If
|
|
End If
|
|
End If
|
|
Return
|
|
End If
|
|
' Se decido di continuare la creazione controllo che il direttorio non esista
|
|
Dim MsgResult As MessageBoxResult = MessageBoxResult.Yes
|
|
If Directory.Exists(SaveFileDialog.FileName) Then
|
|
' se il direttorio contiene almento un file di .lock esco
|
|
If Utility.IsFileLocked(SaveFileDialog.FileName) Then
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
If Not String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
If Not Utility.IsFileLocked(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName
|
|
End If
|
|
End If
|
|
End If
|
|
Return
|
|
End If
|
|
|
|
' Vuoi sovrascrivere il direttorio?
|
|
String.Format(EgtMsg(50526), SaveFileDialog.FileName)
|
|
MsgResult = MessageBox.Show(String.Format(EgtMsg(50526), SaveFileDialog.FileName), EgtMsg(50144), MessageBoxButton.YesNo, MessageBoxImage.Asterisk)
|
|
' se decido di non cancellare il direttorio esco
|
|
If MsgResult = MessageBoxResult.No Then
|
|
Utility.OutLog("Annullata sovrascrittura delprogetto esistente : " & SaveFileDialog.FileName)
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
If Not String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
If Not Utility.IsFileLocked(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName
|
|
End If
|
|
End If
|
|
End If
|
|
Return
|
|
End If
|
|
|
|
' cancello il direttorio
|
|
Try
|
|
Directory.Delete(SaveFileDialog.FileName, True)
|
|
Utility.OutLog("Sovrascrivo il progetto : " & SaveFileDialog.FileName)
|
|
Catch ex As Exception
|
|
' 50527 = Impossible to overwrite {0}
|
|
MessageBox.Show(String.Format(EgtMsg(50527), SaveFileDialog.FileName), EgtMsg(501001), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End Try
|
|
End If
|
|
' Se decido di non sovrascrivere allora rimango in quello attuale
|
|
|
|
Utility.OutLog("Creazione nuovo progetto : " & SaveFileDialog.FileName)
|
|
' Creo nuovo progetto
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
Directory.CreateDirectory(SaveFileDialog.FileName)
|
|
Dim CurrProject As Project = New Project
|
|
' salvo il riferimento al progetto corrente
|
|
m_CurrProject = CurrProject
|
|
' salvo path progetto
|
|
If SaveFileDialog.FileName.EndsWith("\") Then
|
|
SaveFileDialog.FileName = SaveFileDialog.FileName.Remove(SaveFileDialog.FileName.LastIndexOf("\"))
|
|
End If
|
|
CurrProject.Name = SaveFileDialog.FileName
|
|
' Ripulisco lista porte
|
|
CurrProject.AssemblyList.Clear()
|
|
EgtNewFile()
|
|
EgtZoom(ZM.ALL)
|
|
Map.refAssemblyManagerVM.CurrProject = CurrProject
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
|
|
' Creo nuova porta
|
|
Map.refAssemblyManagerVM.AddAssembly()
|
|
' Map.refOptionsVM.MyProjectDir = CurrProject.Name
|
|
If Not IsNothing(CurrProject.SelAssemblyName) AndAlso Not String.IsNullOrEmpty(CurrProject.SelAssemblyName.GraphicName) Then
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName = CurrProject.SelAssemblyName
|
|
End If
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Visible
|
|
Return
|
|
End If
|
|
'-------------------------------------------------------------------------------------------------------------------------
|
|
|
|
'Prima di tutto chiedo se vuole aprire un template
|
|
Dim sImportTemplate As String = Map.refAssemblyManagerVM.ShowDialogImportTemplate
|
|
|
|
' dichiaro la finestra di dialogo
|
|
Dim saveFileDialog1 As New System.Windows.Forms.SaveFileDialog()
|
|
saveFileDialog1.Filter = "(*.ddf) |*.ddf"
|
|
saveFileDialog1.FilterIndex = 2
|
|
saveFileDialog1.InitialDirectory = Map.refOptionsVM.MyProjectDir
|
|
' carico l'ultimo file, se questo procediento fallisce allora parto dal direttorio inserito di default
|
|
If File.Exists(OptionModule.m_sLastProject) Then
|
|
saveFileDialog1.InitialDirectory = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
ElseIf Path.HasExtension(OptionModule.m_sLastProject) AndAlso Directory.Exists(Path.GetDirectoryName(OptionModule.m_sLastProject)) Then
|
|
saveFileDialog1.InitialDirectory = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
ElseIf Not Path.HasExtension(OptionModule.m_sLastProject) AndAlso Directory.Exists(OptionModule.m_sLastProject) Then
|
|
saveFileDialog1.InitialDirectory = OptionModule.m_sLastProject
|
|
End If
|
|
' apro la finestra di dialogo
|
|
If saveFileDialog1.ShowDialog() = System.Windows.Forms.DialogResult.OK Then
|
|
' se decido di salvare
|
|
If Utility.IsFileLocked(Path.GetDirectoryName(saveFileDialog1.FileName), Path.GetFileNameWithoutExtension(saveFileDialog1.FileName)) Then
|
|
' apro l'ultimo progetto valido
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
If Not String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
Dim bShowMessage As Boolean = False
|
|
If Not Utility.IsFileLocked(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName, bShowMessage) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName
|
|
End If
|
|
End If
|
|
End If
|
|
Return
|
|
End If
|
|
Utility.UnLockDir()
|
|
' elimino eventuali file con lo stesso nome
|
|
If File.Exists(saveFileDialog1.FileName) Then
|
|
Try
|
|
File.Delete(saveFileDialog1.FileName)
|
|
Catch ex As Exception
|
|
Utility.OutLog("Impossibilie sovrascrivere il file: " & saveFileDialog1.FileName)
|
|
Return
|
|
End Try
|
|
End If
|
|
|
|
Dim FilePath As String = Path.GetFileNameWithoutExtension(saveFileDialog1.FileName)
|
|
saveFileDialog1.FileName = saveFileDialog1.FileName.Replace(FilePath, Trim(FilePath))
|
|
Dim FilePathComplete As String = saveFileDialog1.FileName
|
|
Dim CurrProject As Project = New Project
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
CurrProject = Map.refAssemblyManagerVM.CurrProject
|
|
End If
|
|
|
|
' salvo il riferimento al progetto corrente
|
|
m_CurrProject = CurrProject
|
|
' salvo path progetto
|
|
CurrProject.Name = Path.GetDirectoryName(FilePathComplete)
|
|
' Ripulisco lista porte
|
|
CurrProject.AssemblyList.Clear()
|
|
EgtNewFile()
|
|
EgtZoom(ZM.ALL)
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
|
|
' creo un nuovo assemblato
|
|
Dim Local_AssemblyName As New AssemblyName
|
|
Local_AssemblyName.Name = FilePathComplete
|
|
m_CurrProject.AssemblyList.Add(Local_AssemblyName)
|
|
' Seleziono AssembyName creato
|
|
m_CurrProject.SelAssemblyName = Local_AssemblyName
|
|
' carico il nome come Assemblato selezionato
|
|
If Not OptionModule.m_DisableWindowOrder Then
|
|
Dim OrderWindow As New OrderV(Application.Current.MainWindow, New OrderVM())
|
|
OrderWindow.ShowDialog()
|
|
End If
|
|
' tolgo la visualizzazione della lista dei nomi
|
|
Map.refAssemblyManagerVM.CurrProject = CurrProject
|
|
Map.refAssemblyManagerVM.ImportTemplate(sImportTemplate)
|
|
' Creo nuovo assembly
|
|
Map.refAssemblyManagerVM.NewCmd(Local_AssemblyName)
|
|
Utility.OutLog("Creazione nuovo progetto : " & saveFileDialog1.FileName)
|
|
Utility.LockDir(Path.GetDirectoryName(saveFileDialog1.FileName), Path.GetFileNameWithoutExtension(saveFileDialog1.FileName))
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
|
|
CurrProject.NotifyPropertyChanged("Name")
|
|
End If
|
|
|
|
End Sub
|
|
|
|
#End Region ' NewCommand
|
|
|
|
#Region "DeleteCommand"
|
|
|
|
Public ReadOnly Property DeleteCommand As ICommand
|
|
Get
|
|
If m_cmdDelete Is Nothing Then
|
|
m_cmdDelete = New Command(AddressOf DeleteCmd)
|
|
End If
|
|
Return m_cmdDelete
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub DeleteCmd()
|
|
Utility.OutLog(" +++ Delete +++")
|
|
Utility.UnLockDir()
|
|
If OptionModule.m_SingleDoor Then
|
|
Map.refAssemblyManagerVM.RemoveAssembly()
|
|
Else
|
|
DeleteProject()
|
|
End If
|
|
|
|
End Sub
|
|
|
|
Public Sub DeleteProject()
|
|
If Not OptionModule.m_DeleteProject Then Return
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.Name) Then
|
|
' 50535 = Impossible to delete a project if there is not a project!
|
|
MessageBox.Show(EgtMsg(50535), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
' 50536 = Do you want to delete entire project?
|
|
If MessageBox.Show(EgtMsg(50536), EgtMsg(50144), MessageBoxButton.YesNo, MessageBoxImage.Asterisk) <> MessageBoxResult.Yes Then
|
|
Return
|
|
End If
|
|
' svuoto il direttorio corrente dei file
|
|
If Not DeleteDDFFile(Map.refAssemblyManagerVM.CurrProject.Name) Then
|
|
Return
|
|
End If
|
|
' elimina il direttorio solo se è vuoto
|
|
Try
|
|
If Directory.GetFiles(Map.refAssemblyManagerVM.CurrProject.Name).Count = 0 Then
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
EgtNewFile()
|
|
EgtZoom(ZM.ALL)
|
|
Directory.Delete(Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Map.refAssemblyManagerVM.CurrProject = Nothing
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Hidden
|
|
Map.refMainWindowVM.ProjectNameMsg = ""
|
|
Return
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) Then
|
|
Map.refAssemblyManagerVM.RefreshAssembly()
|
|
End If
|
|
End Sub
|
|
|
|
Private Function DeleteDDFFile(sDirPath As String) As Boolean
|
|
' recupero l'elenco dei file presenti nel direttorio
|
|
Dim FileArray() As String = Directory.GetFiles(sDirPath)
|
|
' verificio che non ci siano file bloccati nel direttorio indicato
|
|
For Each sFile In FileArray
|
|
If Utility.IsFileLocked(Path.GetDirectoryName(sFile), Path.GetFileNameWithoutExtension(sFile)) Then
|
|
Return False
|
|
End If
|
|
Next
|
|
' procedo all'eliminazione dei file nel direttorio corrente
|
|
For Each sFile In FileArray
|
|
Try
|
|
File.Delete(sFile)
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
' recupero l'elenco dei sottodirettori presenti nel direttorio corrente
|
|
Dim SubDirArray() As String = Directory.GetDirectories(sDirPath)
|
|
If SubDirArray.Count > 0 Then
|
|
For Each sSubDir In SubDirArray
|
|
' 50537 = Do you want to delete subdirectory {0} ?
|
|
If MessageBox.Show(String.Format(EgtMsg(50537), sSubDir), EgtMsg(50144), MessageBoxButton.YesNo, MessageBoxImage.Question) <> MessageBoxResult.Yes Then
|
|
Continue For
|
|
End If
|
|
' se decido di eliminare il sottodirettorio devo svuotarlo da tutti i file
|
|
If Not DeleteDDFFile(sSubDir) Then
|
|
Continue For
|
|
End If
|
|
Try
|
|
' se il direttorio è vuoto allora posso eliminarlo
|
|
If Directory.GetFiles(sSubDir).Count = 0 Then
|
|
Directory.Delete(sSubDir)
|
|
End If
|
|
Catch ex As Exception
|
|
End Try
|
|
Next
|
|
End If
|
|
|
|
Return True
|
|
End Function
|
|
|
|
#End Region ' DeleteCommand
|
|
|
|
#Region "OpenCommand"
|
|
|
|
Public ReadOnly Property OpenCommand As ICommand
|
|
Get
|
|
If m_cmdOpen Is Nothing Then
|
|
m_cmdOpen = New Command(AddressOf Open)
|
|
End If
|
|
Return m_cmdOpen
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Open()
|
|
OpenProject("")
|
|
End Sub
|
|
|
|
Public Sub OpenProject(sFilePath As String)
|
|
Utility.OutLog(" +++ OpenProject +++")
|
|
'Utility.UnLockDir()
|
|
' se true carica una singola porta del progetto
|
|
Dim bIsSingleDoor As Boolean = OptionModule.m_SingleDoor
|
|
Dim sFilePathComplete As String = String.Empty
|
|
Dim bValidPath As Boolean = False
|
|
' verifico se selezionato esiste e modificato
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified Then
|
|
Dim sText As String = String.Format(EgtMsg(50109), Path.GetFileNameWithoutExtension(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name))
|
|
Select Case MessageBox.Show(sText, "", MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
|
|
Case MessageBoxResult.Yes
|
|
Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
|
|
Case MessageBoxResult.No
|
|
Utility.UnLockDir()
|
|
Case MessageBoxResult.Cancel
|
|
Return
|
|
End Select
|
|
End If
|
|
|
|
' VERIFICO IL NOME PROGETTO ( DIERTTORIO/ FILE)
|
|
If Directory.Exists(sFilePath) AndAlso bIsSingleDoor Then
|
|
m_MruFiles.Remove(sFilePath)
|
|
bValidPath = False
|
|
ElseIf Directory.Exists(sFilePath) AndAlso Not bIsSingleDoor Then
|
|
sFilePathComplete = sFilePath
|
|
bValidPath = True
|
|
ElseIf File.Exists(sFilePath) Then
|
|
sFilePathComplete = sFilePath
|
|
sFilePath = Path.GetDirectoryName(sFilePath)
|
|
' se esiste un file in lettura con questo nome allora blocco tutto
|
|
If Utility.IsFileLocked(sFilePath, Path.GetFileNameWithoutExtension(sFilePathComplete)) Then
|
|
Utility.OutLog("Annullo l'apertura di : " & sFilePathComplete)
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
'Map.refAssemblyManagerVM.Open(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
|
|
End If
|
|
Return
|
|
End If
|
|
bValidPath = True
|
|
Else
|
|
' elimino eventual FilePath inesistente dalla lista dei recenti
|
|
m_MruFiles.Remove(sFilePath)
|
|
bValidPath = False
|
|
End If
|
|
|
|
' CARCIO IL NOME DIRETTORIO
|
|
' Se FilePath non valida
|
|
If Not bValidPath Then
|
|
'If OptionModule.m_SingleDoor OrElse Keyboard.Modifiers.HasFlag(ModifierKeys.Shift) Then
|
|
' se in modalità porta singola
|
|
If OptionModule.m_SingleDoor Then
|
|
bIsSingleDoor = True
|
|
' definisco la finestra di dialogo per la scelta dei file
|
|
Dim fd As System.Windows.Forms.OpenFileDialog = New System.Windows.Forms.OpenFileDialog()
|
|
fd.Title = "Open File Dialog"
|
|
' indirizzo la scelta verso una cartella
|
|
fd.InitialDirectory = Map.refOptionsVM.MyProjectDir
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not String.IsNullOrWhiteSpace(Map.refAssemblyManagerVM.CurrProject.Name) Then
|
|
fd.InitialDirectory = Map.refAssemblyManagerVM.CurrProject.Name
|
|
ElseIf Not String.IsNullOrEmpty(OptionModule.m_sLastProject) Then
|
|
fd.InitialDirectory = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
Else
|
|
fd.InitialDirectory = IniFile.m_MyProjectDir
|
|
End If
|
|
' seleziono il filtro di apertura
|
|
fd.Filter = "(*.ddt) |*.ddt|(*.ddf) |*.ddf"
|
|
fd.FilterIndex = 2
|
|
fd.RestoreDirectory = True
|
|
' apro la finestra di dialogo
|
|
If fd.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
End If
|
|
Return
|
|
End If
|
|
Utility.UnLockDir()
|
|
' salvo il nome del direttorio
|
|
sFilePath = Path.GetDirectoryName(fd.FileName)
|
|
' salvo il nome completo del file
|
|
sFilePathComplete = fd.FileName
|
|
' se esiste un file in lettura con questo nome allora blocco tutto
|
|
If Utility.IsFileLocked(sFilePath, Path.GetFileNameWithoutExtension(sFilePathComplete)) Then
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
End If
|
|
Return
|
|
End If
|
|
Else
|
|
' dichiaro la finestra di scelta cartella di progetto
|
|
Dim FolderBrowserDialog As New System.Windows.Forms.FolderBrowserDialog
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not String.IsNullOrWhiteSpace(Map.refAssemblyManagerVM.CurrProject.Name) Then
|
|
FolderBrowserDialog.SelectedPath = Map.refAssemblyManagerVM.CurrProject.Name
|
|
ElseIf Not String.IsNullOrEmpty(OptionModule.m_sLastProject) Then
|
|
FolderBrowserDialog.SelectedPath = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
Else
|
|
FolderBrowserDialog.SelectedPath = IniFile.m_MyProjectDir
|
|
End If
|
|
' mostriamo la finestra di dialogo aperta nel direttorio selzionato sopra
|
|
If FolderBrowserDialog.ShowDialog <> Forms.DialogResult.OK Then
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
End If
|
|
' se la risposta è diversa da OK esce
|
|
Return
|
|
End If
|
|
' salvo il nome del direttorio
|
|
sFilePath = FolderBrowserDialog.SelectedPath
|
|
' se sto eseguendo la selezione dello stesso direttorio allora interrompo
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) Then
|
|
If Map.refAssemblyManagerVM.CurrProject.Name = sFilePath Then
|
|
Return
|
|
End If
|
|
End If
|
|
' se esiste un file in lettura con questo nome allora blocco tutto
|
|
'If Utility.VerifyFileLocked(sFilePath) Then
|
|
' Return
|
|
'End If
|
|
End If
|
|
End If
|
|
|
|
' CARICO ELENCO FILE
|
|
Dim CurrProject As Project = New Project
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject) Then
|
|
CurrProject = Map.refAssemblyManagerVM.CurrProject
|
|
Else
|
|
Map.refAssemblyManagerVM.CurrProject = CurrProject
|
|
End If
|
|
' salvo il riferimento al progetto corrente
|
|
m_CurrProject = CurrProject
|
|
' salvo path progetto
|
|
CurrProject.Name = sFilePath
|
|
' Ripulisco lista porte
|
|
CurrProject.AssemblyList.Clear()
|
|
|
|
' caricamento elenco porte
|
|
If Not bIsSingleDoor Then
|
|
' Aggiungo porte trovate nella cartella ad un vettore
|
|
Dim DDFFileArray() As String = Directory.GetFiles(sFilePath)
|
|
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
|
|
For DDFIndex = 0 To DDFFileArray.Count - 1
|
|
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
|
|
' lo aggiungo alla lista delle porte
|
|
Dim Local_Assembly As New AssemblyName
|
|
Local_Assembly.Name = DDFFileArray(DDFIndex)
|
|
Local_Assembly.IsModified = False
|
|
CurrProject.AssemblyList.Add(Local_Assembly)
|
|
End If
|
|
Next
|
|
Else
|
|
' carcio la singola porta
|
|
Dim Local_Assembly As New AssemblyName
|
|
Local_Assembly.Name = sFilePathComplete
|
|
Local_Assembly.IsModified = False
|
|
CurrProject.AssemblyList.Add(Local_Assembly)
|
|
End If
|
|
|
|
' SELEZIONE FILE DA ELENCO
|
|
' Notifico aggiornamento DoorList per aggiornare la grafica
|
|
CurrProject.NotifyPropertyChanged("AssemblyList")
|
|
Utility.UnLockDir()
|
|
' Se c'è almeno una porta la visualizzo
|
|
If CurrProject.AssemblyList.Count > 0 Then
|
|
Dim bAssemblyIsSelected As Boolean = False
|
|
If Not String.IsNullOrWhiteSpace(sFilePathComplete) Then
|
|
For Each ItemFile In CurrProject.AssemblyList
|
|
If sFilePathComplete = ItemFile.Name Then
|
|
If Not Utility.IsFileLocked(Path.GetDirectoryName(ItemFile.Name), ItemFile.GraphicName, False) Then
|
|
CurrProject.SelAssemblyName = ItemFile
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
bAssemblyIsSelected = True
|
|
Exit For
|
|
End If
|
|
End If
|
|
Next
|
|
End If
|
|
If Not bAssemblyIsSelected Then
|
|
For IndexFile As Integer = 0 To CurrProject.AssemblyList.Count - 1
|
|
If Not Utility.IsFileLocked(Path.GetDirectoryName(CurrProject.AssemblyList(IndexFile).Name), CurrProject.AssemblyList(IndexFile).GraphicName, False) Then
|
|
CurrProject.SelAssemblyName = CurrProject.AssemblyList(IndexFile)
|
|
Utility.OutLog("Apertura progetto : " & Map.refAssemblyManagerVM.CurrProject.Name)
|
|
Utility.LockDir(Map.refAssemblyManagerVM.CurrProject.Name, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
Exit For
|
|
End If
|
|
Next
|
|
End If
|
|
Else
|
|
Map.refPartPageVM.CurrPart = Nothing
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
EgtNewFile()
|
|
EgtZoom(ZM.ALL)
|
|
End If
|
|
|
|
' carico il nome del direttorio e la visbilità della lista delle porte
|
|
If bIsSingleDoor Then
|
|
If Not IsNothing(CurrProject.SelAssemblyName.Name) Then
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.SelAssemblyName.Name
|
|
End If
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
|
|
Else
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Visible
|
|
End If
|
|
' aggiorno la grafica
|
|
CurrProject.NotifyPropertyChanged("Name")
|
|
' salvo il nome del file corrente in lettura
|
|
If Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
|
|
WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name)
|
|
Else
|
|
WriteMainPrivateProfileString(S_LAUNCHERWINDOW, K_LASTPROJECT, Map.refAssemblyManagerVM.CurrProject.Name)
|
|
End If
|
|
|
|
' Aggiungo alla lista dei recenti/ verifico se esite anche se posso salvare un indirizzo comlpeto
|
|
If bIsSingleDoor Then
|
|
m_MruFiles.Add(CurrProject.SelAssemblyName.Name)
|
|
Else
|
|
m_MruFiles.Add(sFilePath)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' OpenCommand
|
|
|
|
#Region "OpenMruFileCommand"
|
|
|
|
Public ReadOnly Property OpenMruFileCommand As ICommand
|
|
Get
|
|
If m_cmdOpenMruFile Is Nothing Then
|
|
m_cmdOpenMruFile = New Command(AddressOf OpenMruFile)
|
|
End If
|
|
Return m_cmdOpenMruFile
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub OpenMruFile(ByVal param As Object)
|
|
Dim sLastProject As String = DirectCast(param, String).Replace("__", "_")
|
|
Utility.UnLockDir()
|
|
OpenProject(sLastProject)
|
|
End Sub
|
|
|
|
#End Region ' OpenMruFileCommand
|
|
|
|
#Region "ReloadCommand"
|
|
|
|
Public ReadOnly Property ReloadCommand As ICommand
|
|
Get
|
|
If m_cmdReload Is Nothing Then
|
|
m_cmdReload = New Command(AddressOf ReloadCmd)
|
|
End If
|
|
Return m_cmdReload
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub ReloadCmd()
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Assembly Then Map.SetRefCompoPanelVM(New CompoPanelVM("PartPage"))
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
Return
|
|
End If
|
|
' Map.refAssemblyManagerVM.LoadTempFile()
|
|
' Map.refMainWindowVM.selectedWatcher = MainWindowVM.WatcherCalling.OnLoadTempFile
|
|
Map.refAssemblyManagerVM.RefreshAssembly()
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
End Sub
|
|
|
|
#End Region ' ReloadCommand
|
|
|
|
#Region "SaveCommand"
|
|
|
|
Public ReadOnly Property SaveCommand As ICommand
|
|
Get
|
|
If m_cmdSave Is Nothing Then
|
|
m_cmdSave = New Command(AddressOf Save)
|
|
End If
|
|
Return m_cmdSave
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Save()
|
|
' Verifico esista elemento selezionato
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) OrElse IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
|
|
' Impossibile savare un file se non esiste una porta! Errore
|
|
MessageBox.Show(EgtMsg(50128), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
' Eseguo salvataggio
|
|
Map.refAssemblyManagerVM.Save(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName)
|
|
If DdfFile.DDFIsCorrect Then Map.refSceneManagerVM.RefreshBtn() ' aggiorno l'immagine solo se il salvataggio è andato a buon fine
|
|
' Aggiungo alla lista dei recenti/ verifico se esite anche se posso salvare un indirizzo comlpeto
|
|
' Map.refOptionsVM.MyProjectDir = Map.refAssemblyManagerVM.CurrProject.Name
|
|
If OptionModule.m_SingleDoor Then
|
|
m_MruFiles.Add(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name)
|
|
Else
|
|
m_MruFiles.Add(Map.refAssemblyManagerVM.CurrProject.Name)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' SaveCommand
|
|
|
|
#Region "OptionsCommand"
|
|
|
|
Public ReadOnly Property OptionsCommand As ICommand
|
|
Get
|
|
If m_cmdOptions Is Nothing Then
|
|
m_cmdOptions = New Command(AddressOf Options)
|
|
End If
|
|
Return m_cmdOptions
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Options(ByVal param As Object)
|
|
Dim OptionsWindow As New OptionsV
|
|
OptionsWindow.Height = 750
|
|
OptionsWindow.Width = 650
|
|
OptionsWindow.DataContext = New OptionsVM()
|
|
OptionsWindow.Owner = Application.Current.MainWindow
|
|
OptionsWindow.ShowDialog()
|
|
End Sub
|
|
|
|
#End Region ' OptionsCommand
|
|
|
|
#Region "LastProject"
|
|
|
|
Public ReadOnly Property LastProjectCommand As ICommand
|
|
Get
|
|
If m_CmdLastProject Is Nothing Then
|
|
m_CmdLastProject = New Command(AddressOf OpenLastProject)
|
|
End If
|
|
Return m_CmdLastProject
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub OpenLastProject()
|
|
Utility.OutLog(" +++ OpenLastProject +++")
|
|
Dim CurrProject As Project = Map.refAssemblyManagerVM.CurrProject
|
|
' carico il percorso dell'ultimo progetto salvato (sul file Config.ini)
|
|
If IsNothing(CurrProject.Name) Then
|
|
If File.Exists(OptionModule.m_sLastProject) Then
|
|
CurrProject.Name = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
ElseIf Path.HasExtension(OptionModule.m_sLastProject) AndAlso Directory.Exists(Path.GetDirectoryName(OptionModule.m_sLastProject)) Then
|
|
CurrProject.Name = Path.GetDirectoryName(OptionModule.m_sLastProject)
|
|
ElseIf Not Path.HasExtension(OptionModule.m_sLastProject) AndAlso Directory.Exists(OptionModule.m_sLastProject) Then
|
|
CurrProject.Name = OptionModule.m_sLastProject
|
|
End If
|
|
End If
|
|
|
|
' CARICAMENTO LISTA
|
|
' ripulisco la lista di porte
|
|
CurrProject.AssemblyList.Clear()
|
|
' verifico che esista la cartella
|
|
If Directory.Exists(CurrProject.Name) Then
|
|
' se sono in modalità porta singola
|
|
If OptionModule.m_SingleDoor Then
|
|
Dim Local_Assembly As New AssemblyName
|
|
' nascondo l'elenco delle porte
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
|
|
' verifico che il file selezionato esista e non sia in lettura
|
|
If File.Exists(OptionModule.m_sLastProject) And
|
|
Not Utility.IsFileLocked(Path.GetDirectoryName(OptionModule.m_sLastProject), Path.GetFileNameWithoutExtension(OptionModule.m_sLastProject)) Then
|
|
Local_Assembly.Name = OptionModule.m_sLastProject
|
|
Local_Assembly.IsModified = False
|
|
CurrProject.AssemblyList.Add(Local_Assembly)
|
|
Else
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
Return
|
|
End If
|
|
Else
|
|
' carico un vettore con i file della cartella
|
|
Dim DDFFileArray() As String = Directory.GetFiles(CurrProject.Name)
|
|
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
|
|
For DDFIndex = 0 To DDFFileArray.Count - 1
|
|
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
|
|
' lo aggiungo alla lista delle porte
|
|
Dim Local_Assembly As New AssemblyName
|
|
Local_Assembly.Name = DDFFileArray(DDFIndex)
|
|
Local_Assembly.IsModified = False
|
|
CurrProject.AssemblyList.Add(Local_Assembly)
|
|
End If
|
|
Next
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Visible
|
|
End If
|
|
' Notifico aggiornamento DoorList e Name per aggiornare la grafica
|
|
CurrProject.NotifyPropertyChanged("Name")
|
|
CurrProject.NotifyPropertyChanged("AssemblyList")
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.Name
|
|
|
|
' CARICAMENTO ELEMENTO LISTA
|
|
' Se c'è almeno una porta la visualizzo
|
|
If CurrProject.AssemblyList.Count > 0 Then
|
|
' provo a caricare l'ultimo file aperto cercando nell'elenco dei file del progetto
|
|
If File.Exists(OptionModule.m_sLastProject) Then
|
|
For Each ItemFile In CurrProject.AssemblyList
|
|
Dim Index As Integer = 1
|
|
If ItemFile.Name = OptionModule.m_sLastProject Then
|
|
If Utility.IsFileLocked(Path.GetDirectoryName(OptionModule.m_sLastProject), Path.GetFileNameWithoutExtension(OptionModule.m_sLastProject)) Then
|
|
Utility.OutLog("Annullata apertura ultimo progetto : " & OptionModule.m_sLastProject)
|
|
Exit For
|
|
End If
|
|
CurrProject.SelAssemblyName = ItemFile
|
|
'If OptionModule.m_SingleDoor Then
|
|
Map.refMainWindowVM.ProjectNameMsg = OptionModule.m_sLastProject
|
|
Utility.OutLog("Blocco progetto : " & CurrProject.SelAssemblyName.GraphicName)
|
|
Utility.LockDir(CurrProject.Name, CurrProject.SelAssemblyName.GraphicName)
|
|
'End If
|
|
Return
|
|
End If
|
|
Index = Index + 1
|
|
Next
|
|
End If
|
|
' se non esiste il file allora provo a caricare il primo della lista
|
|
Dim bFileExist As Boolean = False
|
|
For IndexFile As Integer = 0 To CurrProject.AssemblyList.Count - 1
|
|
If File.Exists(CurrProject.AssemblyList(IndexFile).Name) And
|
|
Not Utility.IsFileLocked(Path.GetDirectoryName(CurrProject.AssemblyList(IndexFile).Name),
|
|
Path.GetFileNameWithoutExtension(CurrProject.AssemblyList(IndexFile).Name), False) Then
|
|
'CurrProject.VerifySelAssemblyName(CurrProject.AssemblyList(IndexFile))
|
|
CurrProject.SelAssemblyName = CurrProject.AssemblyList(IndexFile)
|
|
'If OptionModule.m_SingleDoor Then
|
|
Utility.LockDir(CurrProject.Name, CurrProject.SelAssemblyName.GraphicName)
|
|
Map.refMainWindowVM.ProjectNameMsg = CurrProject.AssemblyList(IndexFile).Name
|
|
'End If
|
|
bFileExist = True
|
|
Exit For
|
|
'Else
|
|
' Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
End If
|
|
Next
|
|
If Not bFileExist Then
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
End If
|
|
Else
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
End If
|
|
Else
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nNothingSelected
|
|
Map.refAssemblyManagerVM.VisibilityDoorList = Visibility.Collapsed
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' LastProject
|
|
|
|
#Region "SendFeedbackCommand"
|
|
|
|
''' <summary>
|
|
''' Returns a command that do SendFeedback.
|
|
''' </summary>
|
|
Public ReadOnly Property SendFeedbackCommand As ICommand
|
|
Get
|
|
If m_cmdSendFeedback Is Nothing Then
|
|
m_cmdSendFeedback = New Command(AddressOf SendFeedback)
|
|
End If
|
|
Return m_cmdSendFeedback
|
|
End Get
|
|
End Property
|
|
|
|
''' <summary>
|
|
''' Execute the SendFeedback. This method is invoked by the SendFeedbackCommand.
|
|
''' </summary>
|
|
Public Sub SendFeedback()
|
|
' Recupero indirizzo a cui spedire la mail
|
|
Dim sSupportAddress As String = String.Empty
|
|
GetMainPrivateProfileString(S_GENERAL, K_SUPPORT, "support@egaltech.com", sSupportAddress)
|
|
' se vuoto do messaggio di errore ed esco
|
|
If String.IsNullOrWhiteSpace(sSupportAddress) Then
|
|
MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 10), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End If
|
|
' Recupero numero chiave
|
|
Dim sKey As String = String.Empty
|
|
EgtGetKeyInfo(sKey)
|
|
' Recupero file del progetto corrente (tipo file .nge)
|
|
Dim sCurrProject As String = String.Empty
|
|
EgtGetCurrFilePath(sCurrProject)
|
|
' se nome file vuoto, chiedo se si vuole salvare (file .nge)
|
|
If String.IsNullOrWhiteSpace(sCurrProject) Then
|
|
If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
Save()
|
|
End If
|
|
EgtGetCurrFilePath(sCurrProject)
|
|
' se modificato, chiedo se si vuole salvare
|
|
Else
|
|
If EgtGetModified() Then
|
|
If MessageBox.Show(EgtMsg(MSG_TOPCOMMANDBAR + 11), "", MessageBoxButton.YesNo, MessageBoxImage.Question) = MessageBoxResult.Yes Then
|
|
Save()
|
|
End If
|
|
End If
|
|
End If
|
|
' recuro il file DDF associato al file .nge
|
|
Dim sCurrProjectDDF As String = String.Empty
|
|
sCurrProjectDDF = IniFile.m_sTempDir & "\CurrPart.ddf"
|
|
' recupero il file di log
|
|
Dim sFileLog As String = String.Empty
|
|
sFileLog = IniFile.m_sTempDir & "\EgtDOORCreatorLog1.txt"
|
|
|
|
' Creo zip file da allegare
|
|
Dim sZipToCreate As String = IniFile.m_sTempDir & "\Feedback.zip"
|
|
If File.Exists(sZipToCreate) Then
|
|
File.Delete(sZipToCreate)
|
|
End If
|
|
Try
|
|
Using zip As New Ionic.Zip.ZipFile(sZipToCreate, Console.Out)
|
|
' aggiungo progetto corrente .nge
|
|
If File.Exists(sCurrProject) Then
|
|
zip.AddItem(sCurrProject, "")
|
|
End If
|
|
' aggiungo progetto corrente .ddf
|
|
If File.Exists(sCurrProjectDDF) Then
|
|
zip.AddItem(sCurrProjectDDF, "")
|
|
End If
|
|
' aggiungo file log
|
|
If File.Exists(sFileLog) Then
|
|
zip.AddItem(sFileLog, "")
|
|
End If
|
|
' aggiungo la cartella Doors
|
|
If Directory.Exists(IniFile.m_sDoorsDirPath) Then
|
|
zip.AddItem(IniFile.m_sDoorsDirPath, Path.GetFileName(IniFile.m_sDoorsDirPath))
|
|
End If
|
|
zip.Save()
|
|
End Using
|
|
Catch ex1 As Exception
|
|
EgtOutLog("Exception in zip: " & ex1.ToString())
|
|
End Try
|
|
|
|
' preparo la mail per il supporto
|
|
Dim bEx As Boolean = False
|
|
Try
|
|
Dim SendFeedbackWindow As New EgtWPFLib5.MapiMailMessage("EgtDOORCreator Feedback - " & sKey)
|
|
SendFeedbackWindow.Recipients.Add(sSupportAddress)
|
|
If Not String.IsNullOrWhiteSpace(sZipToCreate) AndAlso File.Exists(sZipToCreate) Then
|
|
SendFeedbackWindow.Files.Add(IniFile.m_sTempDir & "\Feedback.zip")
|
|
End If
|
|
SendFeedbackWindow.ShowDialog()
|
|
Catch ex As Exception
|
|
EgtOutLog("Feedback exception: " & ex.ToString)
|
|
bEx = True
|
|
End Try
|
|
If bEx OrElse EgtWPFLib5.MapiMailMessage.m_ErrorCode <> 0 Then
|
|
MessageBox.Show(String.Format(EgtMsg(MSG_TOPCOMMANDBAR + 12), sSupportAddress, sZipToCreate), EgtMsg(MSG_EGTDOORCREATOR + 118), MessageBoxButton.OK, MessageBoxImage.Information)
|
|
' stampo il messaggio nella StatusBar
|
|
Map.refStatusBarVM.StatusOutput = EgtMsg(MSG_TOPCOMMANDBAR + 14)
|
|
Else
|
|
' stampo il messaggio nella StatusBar
|
|
Map.refStatusBarVM.StatusOutput = EgtMsg(MSG_TOPCOMMANDBAR + 14)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' SendFeedbackCommand
|
|
|
|
#Region "CreateTemplate"
|
|
Public ReadOnly Property CreateTemplateCommand As ICommand
|
|
Get
|
|
If m_CmdCreateTemplate Is Nothing Then
|
|
m_CmdCreateTemplate = New Command(AddressOf CreateTemplate)
|
|
End If
|
|
Return m_CmdCreateTemplate
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub CreateTemplate()
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) OrElse IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name) Then
|
|
' 50538 = Impossibile savare un file se non esiste una porta! Errore
|
|
MessageBox.Show(EgtMsg(50538), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
Return
|
|
End If
|
|
' se esite una porta, allora rendo possibile la creazione di un template della porta corrente
|
|
If Not IsNothing(Map.refPartPageVM.CurrPart) Then
|
|
' Stampo il file correte nella cartella Template
|
|
Dim SaveFileDialog As New MySaveFileDialogVM
|
|
Dim SaveFileDialogWnd As New EgtWPFLib5.SaveFileDialogV(Application.Current.MainWindow, SaveFileDialog)
|
|
SaveFileDialog.Title = EgtMsg(50417)
|
|
SaveFileDialog.Directory = IniFile.m_TemplateDir
|
|
SaveFileDialog.Extension = DDT_EXTENSION
|
|
'SaveFileDialog.FileName = m_CurrProject.Name & "\"
|
|
' se decido di chiuedere la finestra
|
|
If Not SaveFileDialogWnd.ShowDialog Then
|
|
Return
|
|
End If
|
|
' Controllo se ha estensione il nome della porta
|
|
If Path.HasExtension(SaveFileDialog.FileName) Then
|
|
Dim sExtension As String = Path.GetExtension(SaveFileDialog.FileName)
|
|
If Not sExtension.ToLower = DDT_EXTENSION Then
|
|
SaveFileDialog.FileName = SaveFileDialog.FileName.Replace(sExtension, DDT_EXTENSION)
|
|
End If
|
|
Else
|
|
SaveFileDialog.FileName &= DDT_EXTENSION
|
|
End If
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then
|
|
DdfFile.WriteDDFPart(Map.refPartPageVM.CurrPart, SaveFileDialog.FileName, False, False)
|
|
Else
|
|
DdfFile.WriteDDFAssembly(Map.refAssemblyPageVM.CurrAssembly, SaveFileDialog.FileName, False)
|
|
End If
|
|
Else
|
|
MessageBox.Show(EgtMsg(50155), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Exclamation)
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' CreateTemplate
|
|
|
|
#Region "Guide"
|
|
Public ReadOnly Property GuideCommand As ICommand
|
|
Get
|
|
If m_cmdGuide Is Nothing Then
|
|
m_cmdGuide = New Command(AddressOf Guide)
|
|
End If
|
|
Return m_cmdGuide
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Guide()
|
|
Dim GuideWindow As New GuideV(Application.Current.MainWindow, New GuideVM)
|
|
If Not OptionModule.m_SmartHelp = HelpPage.WebBrowserPC Then GuideWindow.Show()
|
|
End Sub
|
|
|
|
#End Region ' Guide
|
|
|
|
#Region "Copy"
|
|
|
|
Public ReadOnly Property CopyCommand As ICommand
|
|
Get
|
|
If m_cmdCopy Is Nothing Then
|
|
m_cmdCopy = New Command(AddressOf CopyDDF)
|
|
End If
|
|
Return m_cmdCopy
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub CopyDDF()
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse
|
|
IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
' 50192 = Impossible to export to machine a door if there is not a door!
|
|
MessageBox.Show(EgtMsg(50192), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
'Verifico che tutto sia salvato, altrimenti esco con messaggio
|
|
If Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified() Then
|
|
' Project must be saved before copying
|
|
MessageBox.Show(EgtMsg(50186), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
' Do you want to copy all files ? {0} (No to copy only the current file)
|
|
Dim sMsg As String = String.Format(EgtMsg(50187), vbCrLf & vbCrLf)
|
|
' Export to machine
|
|
Dim Result = MessageBox.Show(sMsg, EgtMsg(50188), MessageBoxButton.YesNoCancel, MessageBoxImage.Question)
|
|
Dim CurrProjetc As String = Map.refAssemblyManagerVM.CurrProject.Name
|
|
Dim MachinProject As String = IniFile.m_MachinProject
|
|
If String.IsNullOrEmpty(MachinProject) Then
|
|
' Machine Directory not found
|
|
MessageBox.Show(EgtMsg(50189), EgtMsg(50101), MessageBoxButton.OK, MessageBoxImage.Error)
|
|
Return
|
|
End If
|
|
Select Case Result
|
|
Case MessageBoxResult.Yes
|
|
For IndexFile As Integer = 0 To Map.refAssemblyManagerVM.CurrProject.AssemblyList.Count - 1
|
|
' controllo che abbia estensione ddf
|
|
If Path.GetExtension(Map.refAssemblyManagerVM.CurrProject.AssemblyList(IndexFile).Name) = ".ddf" Then
|
|
Dim SouFile As String = Map.refAssemblyManagerVM.CurrProject.AssemblyList(IndexFile).Name
|
|
Dim DestFile As String = Path.Combine(MachinProject, Path.GetFileName(SouFile))
|
|
Try
|
|
File.Copy(SouFile, DestFile, True)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying: {0}
|
|
MessageBox.Show(String.Format(EgtMsg(50189), ex.Message))
|
|
Exit For
|
|
End Try
|
|
End If
|
|
Next
|
|
Case MessageBoxResult.No
|
|
Dim SouFile As String = Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name
|
|
Dim DestFile As String = Path.Combine(MachinProject, Path.GetFileName(SouFile))
|
|
Try
|
|
File.Copy(SouFile, DestFile, True)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying: {0}
|
|
MessageBox.Show(String.Format(EgtMsg(50189), ex.Message))
|
|
End Try
|
|
Case Else
|
|
End Select
|
|
End Sub
|
|
|
|
#End Region ' Copy
|
|
|
|
#Region "Duplica"
|
|
|
|
Public ReadOnly Property DuplicaCommand As ICommand
|
|
Get
|
|
If m_cmdDuplica Is Nothing Then
|
|
m_cmdDuplica = New Command(AddressOf Duplica)
|
|
End If
|
|
Return m_cmdDuplica
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Duplica()
|
|
Utility.OutLog(" +++ SaveAs +++")
|
|
' questo test potrebbe essere sostituito con il controllo : If IsNothing(Map.refPartPageVM.CurrPart) Then Return
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse
|
|
IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
' 50191 = Impossible to copy a door if there is not a door!
|
|
MessageBox.Show(EgtMsg(50191), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
If Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified() Then
|
|
' Project must be saved before copying
|
|
MessageBox.Show(EgtMsg(50186), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
Dim LocalCurrProject As New Project
|
|
'LocalCurrProject = Map.refAssemblyManagerVM.CurrProject
|
|
' Creo nuovo assembly
|
|
Dim SaveFileDialog As New System.Windows.Forms.SaveFileDialog()
|
|
SaveFileDialog.Filter = "(*.ddf) |*.ddf"
|
|
SaveFileDialog.FilterIndex = 2
|
|
' avvio la ricerca nell'ultimo direttorio aperto
|
|
SaveFileDialog.InitialDirectory = Map.refAssemblyManagerVM.CurrProject.Name
|
|
' apro la finestra di dialogo
|
|
Dim bChangeProject As Boolean = True
|
|
If SaveFileDialog.ShowDialog() <> System.Windows.Forms.DialogResult.OK Then
|
|
Utility.OutLog("Annullata creazione di una copia di : " & Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name)
|
|
Return
|
|
ElseIf Trim(SaveFileDialog.InitialDirectory.ToLower) <> Trim(Path.GetDirectoryName(SaveFileDialog.FileName).ToLower) And Not OptionModule.m_SingleDoor Then
|
|
' 50539 = Do you want to change project? Question
|
|
Dim ResultMsg As MessageBoxResult = MessageBox.Show(EgtMsg(50539), EgtMsg(50110), MessageBoxButton.YesNoCancel, MessageBoxImage.Warning)
|
|
If ResultMsg = MessageBoxResult.Cancel Then
|
|
Return
|
|
ElseIf ResultMsg = MessageBoxResult.No Then
|
|
bChangeProject = False
|
|
End If
|
|
End If
|
|
|
|
' aggiorno 'elenco dei file presenti nel direttorio selezionato
|
|
LocalCurrProject.Name = Path.GetDirectoryName(SaveFileDialog.FileName)
|
|
LocalCurrProject.AssemblyList = New ObservableCollection(Of AssemblyName)
|
|
Dim DDFFileArray() As String = Directory.GetFiles(LocalCurrProject.Name)
|
|
' ripulisco il nome della porta (cancello tutto il percorso del file lasciando solo il nome del file)
|
|
For DDFIndex = 0 To DDFFileArray.Count - 1
|
|
If Path.GetExtension(DDFFileArray(DDFIndex)).ToLower = ".ddf" Then
|
|
If Path.GetExtension(DDFFileArray(DDFIndex)) <> DDF_EXTENSION Then
|
|
Continue For
|
|
End If
|
|
' lo aggiungo alla lista delle porte
|
|
Dim Local_Assembly As New AssemblyName
|
|
Local_Assembly.Name = DDFFileArray(DDFIndex)
|
|
Local_Assembly.IsModified = False
|
|
LocalCurrProject.AssemblyList.Add(Local_Assembly)
|
|
End If
|
|
Next
|
|
|
|
Dim FilePath As String = Path.GetFileNameWithoutExtension(SaveFileDialog.FileName)
|
|
SaveFileDialog.FileName = SaveFileDialog.FileName.Replace(FilePath, Trim(FilePath))
|
|
' Controllo se il nome della porta ha estensione
|
|
If Path.HasExtension(SaveFileDialog.FileName) Then
|
|
Dim sExtension As String = Path.GetExtension(SaveFileDialog.FileName)
|
|
If Not sExtension.ToLower = DDF_EXTENSION Then
|
|
SaveFileDialog.FileName = SaveFileDialog.FileName.Replace(sExtension, DDF_EXTENSION)
|
|
End If
|
|
Else
|
|
SaveFileDialog.FileName &= DDF_EXTENSION
|
|
End If
|
|
|
|
If Utility.IsFileLocked(Path.GetDirectoryName(SaveFileDialog.FileName), Path.GetFileNameWithoutExtension(SaveFileDialog.FileName)) Then
|
|
Utility.OutLog("Annullata creazione di una copia di : " & Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name & " -> " & SaveFileDialog.FileName)
|
|
Return
|
|
End If
|
|
|
|
' controllo che il nome non sia presente nella lista degli assemblati
|
|
Dim bNameExist As Boolean = False
|
|
Dim IndexDoorList As Integer
|
|
For IndexDoorList = 0 To LocalCurrProject.AssemblyList.Count - 1
|
|
If LocalCurrProject.AssemblyList(IndexDoorList).Name = SaveFileDialog.FileName Then
|
|
bNameExist = True
|
|
Exit For
|
|
End If
|
|
bNameExist = False
|
|
Next
|
|
' se il nome è nella lista allora sovrascrivo la porta esistente
|
|
If bNameExist Then
|
|
' elimino la porta esistente
|
|
If File.Exists(SaveFileDialog.FileName) Then
|
|
Try
|
|
Utility.OutLog("Sovrascrivo file : " & SaveFileDialog.FileName)
|
|
File.Delete(SaveFileDialog.FileName)
|
|
Catch ex As FileNotFoundException
|
|
' non è un problema
|
|
Catch ex As Exception
|
|
' non è un problema
|
|
End Try
|
|
End If
|
|
|
|
' elimino dalla lista
|
|
LocalCurrProject.AssemblyList.RemoveAt(IndexDoorList)
|
|
End If
|
|
|
|
' aggiungo il nome del file alla lista degli assemblati
|
|
Dim Local_AssemblyName As New AssemblyName
|
|
Local_AssemblyName.Name = SaveFileDialog.FileName
|
|
LocalCurrProject.AssemblyList.Add(Local_AssemblyName)
|
|
' Seleziono AssembyName creato
|
|
Try
|
|
Utility.OutLog("Creazione copia : " & Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name & " -> " & Local_AssemblyName.Name)
|
|
File.Copy(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name, Local_AssemblyName.Name, True)
|
|
Catch ex As System.IO.IOException
|
|
' Error in copying: {0}
|
|
MessageBox.Show(String.Format(EgtMsg(50190), ex.Message))
|
|
' interrompo la copia e la creazione del nuovo file
|
|
File.Delete(Local_AssemblyName.Name)
|
|
Return
|
|
End Try
|
|
|
|
If bChangeProject Then
|
|
Try
|
|
Map.refAssemblyManagerVM.CurrProject = LocalCurrProject
|
|
LocalCurrProject.SelAssemblyName = LocalCurrProject.AssemblyList.First(Function(x) x.Name = Local_AssemblyName.Name)
|
|
Catch ex As Exception
|
|
EgtOutLog("Impossibile trovare" & Local_AssemblyName.Name & " nel direttorio " & LocalCurrProject.Name)
|
|
Return
|
|
End Try
|
|
End If
|
|
|
|
Map.refAssemblyManagerVM.Save(LocalCurrProject.SelAssemblyName)
|
|
|
|
'Map.refAssemblyManagerVM.Open(LocalCurrProject.AssemblyList(LocalCurrProject.AssemblyList.Count - 1))
|
|
If OptionModule.m_SingleDoor Then
|
|
m_MruFiles.Add(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name)
|
|
Utility.LockDir(Path.GetDirectoryName(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name),
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
Else
|
|
m_MruFiles.Add(Map.refAssemblyManagerVM.CurrProject.Name)
|
|
If Not String.IsNullOrEmpty(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName) Then
|
|
Utility.LockDir(Path.GetDirectoryName(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.Name),
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.GraphicName)
|
|
End If
|
|
End If
|
|
End Sub
|
|
|
|
|
|
#End Region ' Duplica
|
|
|
|
#Region "Hardware"
|
|
|
|
Public ReadOnly Property HardwareCommand As ICommand
|
|
Get
|
|
If m_cmdHardware Is Nothing Then
|
|
m_cmdHardware = New Command(AddressOf GoToHardwarePage)
|
|
End If
|
|
Return m_cmdHardware
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub GoToHardwarePage()
|
|
' se decido di annullare l'operazione di salvataggio
|
|
If Not Map.refAssemblyManagerVM.ManageModified() Then Return
|
|
Utility.OutLog(" +++ HardwarePage +++")
|
|
Utility.UnLockDir()
|
|
' prima di continuare salvo il riferimento all'ultima cartella aperta
|
|
Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nHardwarePage
|
|
' nascondo la visibilità del bottone goback dalla lista dei bottoni
|
|
Map.refCompoPanelHardwareVM.GoBackVisibility = Visibility.Collapsed
|
|
Map.refHardwarePageVM.VisibilityGeneral = Visibility.Collapsed
|
|
' disabilito DimensioningPanel
|
|
Map.refDimensioningPanelVM.SetDimensioningPanel_Visibility(False)
|
|
' creo una porta per il disegno dell'Hardware
|
|
Map.refHardwarePageVM.CreateDoor()
|
|
' creo un pezzo di telaio per il disegno dell'hardware
|
|
Map.refHardwarePageVM.CreateJamb()
|
|
Map.refSceneManagerVM.RefreshBtn()
|
|
' carico la lista dei nomi delle geometrie
|
|
CompoMatch.LoadTableGeometry()
|
|
Map.refHardwareHelpSceneHostV.CleanHelpProject()
|
|
Map.refRefreshPanelVM.ButtonVisibility = Visibility.Collapsed
|
|
Map.refRefreshPanelVM.DimensionVisibility = Visibility.Visible
|
|
Map.refInstrumentPanelVM.DimensionVisibility = OptionModule.m_DimensionHardware
|
|
Map.refInstrumentPanelVM.SaveImgHardware = OptionModule.m_DimensionHardware
|
|
Map.refProjectManagerHardwareVM.HardwareIsChecked = True
|
|
End Sub
|
|
|
|
Private m_DoorIsChecked As Boolean = True
|
|
Public Property DoorIsChecked As Boolean
|
|
Get
|
|
Return m_DoorIsChecked
|
|
End Get
|
|
Set(value As Boolean)
|
|
m_DoorIsChecked = value
|
|
NotifyPropertyChanged("DoorIsChecked")
|
|
End Set
|
|
End Property
|
|
|
|
#End Region ' Hardware
|
|
|
|
#Region "PrintCommand"
|
|
|
|
Public ReadOnly Property PrintCommand As ICommand
|
|
Get
|
|
If m_cmdPrint Is Nothing Then
|
|
m_cmdPrint = New Command(AddressOf Print)
|
|
End If
|
|
Return m_cmdPrint
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub Print(ByVal param As Object)
|
|
Utility.OutLog(" +++ PrintDoor +++")
|
|
' questo test potrebbe essere sostituito con il controllo : If IsNothing(Map.refPartPageVM.CurrPart) Then Return
|
|
If IsNothing(Map.refAssemblyManagerVM.CurrProject) OrElse
|
|
IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) Then
|
|
' 50193 = Impossible to print a door if there is not a door!
|
|
MessageBox.Show(EgtMsg(50193), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
If Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.IsModified() Then
|
|
' Project must be saved before printing
|
|
MessageBox.Show(EgtMsg(50186), EgtMsg(50144), MessageBoxButton.OK, MessageBoxImage.Warning)
|
|
Return
|
|
End If
|
|
|
|
Dim PrintWindow As New PrintWndV(Application.Current.MainWindow, New PrintWndVM)
|
|
PrintWindow.ShowDialog()
|
|
End Sub
|
|
|
|
#End Region ' PrintCommand
|
|
|
|
#Region "CreateAssemblyCommand"
|
|
|
|
Private m_VisibilityCreateAssembly As Visibility = Visibility.Collapsed
|
|
Public ReadOnly Property VisibilityCreateAssembly As Visibility
|
|
Get
|
|
If OptionModule.m_ConfigurationSoftware = ConfigType.Door Then Return Visibility.Collapsed
|
|
' verifco di essere nelle condizioni di poter mostrare il bottone
|
|
If Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nDDFPage AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM) AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM.CurrProject) AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName) AndAlso
|
|
Not IsNothing(Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly) AndAlso
|
|
Map.refAssemblyManagerVM.CurrProject.SelAssemblyName.SelAssembly.JambExists AndAlso
|
|
Not IsNothing(Map.refPartPageVM) AndAlso Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso
|
|
Not IsNothing(Map.refPartPageVM.CurrPart.refPartDoor) AndAlso
|
|
Not IsNothing(Map.refPartPageVM.CurrPart.refPartDoor.Door) AndAlso
|
|
Map.refPartPageVM.CurrPart.refPartDoor.Door.TypePart.Contains("DO_") Then
|
|
' se sono sono nella schermata principale oppure su un'anta
|
|
'If (Not IsNothing(Map.refPartPageVM) AndAlso Not IsNothing(Map.refPartPageVM.CurrPart) AndAlso
|
|
' Not IsNothing(Map.refPartPageVM.CurrPart.refPartDoor) AndAlso
|
|
' Not IsNothing(Map.refPartPageVM.CurrPart.refPartDoor.Door) AndAlso
|
|
' Map.refPartPageVM.CurrPart.refPartDoor.Door.TypePart.Contains("DO_")) OrElse
|
|
' Map.refMainWindowVM.SelectedPage = MainWindowVM.ListPageEnum.nAssemblyPage Then
|
|
' m_VisibilityCreateAssembly = Visibility.Visible
|
|
'Else
|
|
' m_VisibilityCreateAssembly = Visibility.Collapsed
|
|
'End If
|
|
m_VisibilityCreateAssembly = Visibility.Visible
|
|
Else
|
|
m_VisibilityCreateAssembly = Visibility.Collapsed
|
|
End If
|
|
Return m_VisibilityCreateAssembly
|
|
End Get
|
|
End Property
|
|
|
|
Public ReadOnly Property CreateAssemblyCommand As ICommand
|
|
Get
|
|
If m_cmdCreateAssembly Is Nothing Then
|
|
m_cmdCreateAssembly = New Command(AddressOf CreateAssembly)
|
|
End If
|
|
Return m_cmdCreateAssembly
|
|
End Get
|
|
End Property
|
|
|
|
Public Sub CreateAssembly()
|
|
If Not IsNothing(Map.refAssemblyPageVM) AndAlso Not IsNothing(Map.refAssemblyPageVM.CurrAssembly) Then
|
|
Map.refAssemblyPageVM.CurrAssembly.CreateAssembly()
|
|
End If
|
|
End Sub
|
|
|
|
#End Region ' CreateAssemblyCommand
|
|
|
|
#End Region ' Commands
|
|
|
|
Public Event PropertyChanged As PropertyChangedEventHandler Implements INotifyPropertyChanged.PropertyChanged
|
|
|
|
Public NotInheritable Class ObjectDataProvider
|
|
'Implements ICanHandleUsedIdentifiers, IDataProvider, ISupportsLogger
|
|
End Class
|
|
|
|
Public Sub NotifyPropertyChanged(propName As String)
|
|
RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propName))
|
|
End Sub
|
|
|
|
End Class
|
|
|
|
Public NotInheritable Class ObjectDataProvider
|
|
Private order As ReportOrder
|
|
Public Sub New(order As ReportOrder)
|
|
Me.order = order
|
|
End Sub
|
|
End Class |