Imports EgtUILib Imports EgtWPFLib5 Imports System.IO Public Class MainWindowVM Inherits VMBase ' Riferimento al Model della MainWindow Private m_MainWindowM As MainWindowM Friend ReadOnly Property MainWindowM As MainWindowM Get Return m_MainWindowM End Get End Property ' Variabile che indica che il programma è stato avviato correttamente (sia la mappa che l'ambiente Egt) Private m_bInitStatus As Boolean Friend ReadOnly Property bInitStatus As Boolean Get Return m_bInitStatus End Get End Property ' Titolo Private m_Title As String Public ReadOnly Property Title As String Get Return m_Title End Get End Property ' Finestra per VeinMatching Private m_VeinMatchingWnd As VeinMatchingWindow = Nothing Friend ReadOnly Property VeinMatchingWnd As VeinMatchingWindow Get Return m_VeinMatchingWnd End Get End Property ' definizione comandi Private m_cmdCloseApplication As ICommand #Region "CONSTRUCTOR" Sub New() ' Avvio l'inizializzazione della mappa passandogli il riferimento al MainWindowVM OmagOFFICEMap.BeginInit(Me) ' Creo Model della MainWindow m_MainWindowM = New MainWindowM End Sub #End Region ' CONSTRUCTOR #Region "METHODS" Friend Sub SetTitle(sTitle As String) m_Title = sTitle NotifyPropertyChanged("Title") End Sub Friend Sub ContentRendered() ' Verifico che l'inizializzazione di tutte le parti del programma sia andata a buon fine If OmagOFFICEMap.EndInit() Then m_bInitStatus = True Else 'altrimenti chiudo il programma m_bInitStatus = False End If ' Se abilitato e richiesto carico finestra per VeinMatching If OmagOFFICEMap.refMainWindowVM.MainWindowM.GetKeyOption(KEY_OPT.VM_MULTI) And GetMainPrivateProfileInt(S_VEINMATCHING, K_VEINMA_ENABLE, 0) <> 0 And IsNothing(m_VeinMatchingWnd) Then m_VeinMatchingWnd = New VeinMatchingWindow m_VeinMatchingWnd.Owner = Application.Current.MainWindow m_VeinMatchingWnd.Show() m_VeinMatchingWnd.Hide() VeinMatching.m_nVeinCtx = m_VeinMatchingWnd.VeinMatchingScene.GetCtx() EgtSetCurrentContext(OmagOFFICEMap.refSceneHostV.OmagOFFICEScene.GetCtx()) End If ' Aggiorno visualizzazione unità di misura OmagOFFICEMap.refStatusBarVM.SetMeasureUnit(If(EgtUiUnitsAreMM(), MeasureUnitOpt.MM, MeasureUnitOpt.INCH)) ' Verifico se aprire ultimo progetto If GetMainPrivateProfileInt(S_GENERAL, K_AUTOLOADLASTPROJ, 0) = 1 Then Dim sLastProjectPath As String = String.Empty GetMainPrivateProfileString(S_GENERAL, K_LASTPROJ, String.Empty, sLastProjectPath) If Not String.IsNullOrWhiteSpace(sLastProjectPath) AndAlso File.Exists(sLastProjectPath) Then OmagOFFICEMap.refTopCommandBarVM.OpenProject(sLastProjectPath) Else ' Nuovo progetto OmagOFFICEMap.refTopCommandBarVM.NewCmd() End If Else ' Nuovo progetto OmagOFFICEMap.refTopCommandBarVM.NewCmd() End If End Sub #End Region ' METHODS #Region "CloseApplicationCommand" ' Returns a command that manage the MainWindow_Unloaded command Public ReadOnly Property CloseApplicationCommand() As ICommand Get If m_cmdCloseApplication Is Nothing Then m_cmdCloseApplication = New Command(AddressOf CloseApplication) End If Return m_cmdCloseApplication End Get End Property ' Manage the MainWindow_Unloaded event. This method is invoked by the cmdMainWindow_Unloaded. Public Sub CloseApplication(ByVal param As Object) If OmagOFFICEMap.refOptionPanelVM.SelItem = OptionPanelVM.Tabs.SIMUL Then OmagOFFICEMap.refSimulTabVM.ResetSimulation() End If ' Gestisco eventuale file corrente modificato Dim bAllowClose As Boolean = OmagOFFICEMap.refSceneHostV.Controller.ManageModified() ' Se non confermata chiusura, esco If Not bAllowClose Then Return ' Termino il Model m_MainWindowM.Close() ' Termino il programma Application.Current.Shutdown() End Sub #End Region ' CloseApplicationCommand End Class