Imports System.Collections.ObjectModel Imports EgtUILib Namespace EgtCAM5 Public Class TopCommandBarViewModel Inherits ViewModelBase #Region "FIELDS & PROPERTIES" Public ReadOnly Property MruFileNames As ObservableCollection(Of String) Get Return IniFile.m_MruFiles.m_FileNames End Get End Property ' Definizione comandi Private m_cmdNew As ICommand Private m_cmdOpen As ICommand Private Shared m_cmdOpenMruFile 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_cmdOptions 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 OpenToolTip As String Get Return EgtMsg(MSG_TOPCOMMANDBAR + 2) 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 ExportToolTip As String Get Return EgtMsg(MSG_TOPCOMMANDBAR + 7) End Get End Property Public ReadOnly Property OptionsToolTip As String Get Return EgtMsg(MSG_TOPCOMMANDBAR + 9) End Get End Property #End Region ' ToolTip Private m_DrawIsChecked As Boolean Public Property DrawIsChecked As Boolean Get Return m_DrawIsChecked End Get Set(value As Boolean) If value <> m_DrawIsChecked Then m_DrawIsChecked = value If value Then Application.Msn.NotifyColleagues(Application.DRAWMODE_ISCHECKED) EgtResetCurrMachGroup() EgtZoom(ZM.ALL) Application.Msn.NotifyColleagues(Application.LOADOBJTREE) IniFile.m_ProjectMode = ProjectModeOpt.DRAW End If End If End Set End Property Private m_MachiningIsChecked As Boolean Public Property MachiningIsChecked As Boolean Get Return m_MachiningIsChecked End Get Set(value As Boolean) If value <> m_MachiningIsChecked Then m_MachiningIsChecked = value If value Then Application.Msn.NotifyColleagues(Application.INITIALIZEMACHGROUPS) Else ' Deevidenzio l'ultima operazione evidenziata Application.Msn.NotifyColleagues(Application.REMOVEMARKFROMLASTOPERATION) ' e deseleziono tutto EgtDeselectAll() End If End If End Set End Property #End Region ' Fields & Properties #Region "CONSTRUCTOR" Sub New() ' Inizializzo la selezione della modilità Draw all'apertura del programma DrawIsChecked = True Application.Msn.Register(Application.SETMACHININGMODE, Sub() MachiningIsChecked = True OnPropertyChanged("MachiningIsChecked") End Sub) Application.Msn.Register(Application.MACHGROUPSRESULT, Sub(bOk As Boolean) If bOk Then Application.Msn.NotifyColleagues(Application.UPDATECURRENTMACHINE) Application.Msn.NotifyColleagues(Application.MACHININGMODE_ISCHECKED) EgtZoom(ZM.ALL) IniFile.m_ProjectMode = ProjectModeOpt.MACHINING Else m_MachiningIsChecked = False ' Error loading or creating Machining Group - Error MessageBox.Show(EgtMsg(10008), EgtMsg(10001), MessageBoxButton.OK, MessageBoxImage.Error) End If End Sub) End Sub #End Region #Region "COMMANDS" #Region "NewCommand" ''' ''' Returns a command that do New. ''' Public ReadOnly Property NewCommand As ICommand Get If m_cmdNew Is Nothing Then m_cmdNew = New RelayCommand(AddressOf NewCmd, AddressOf CanNew) End If Return m_cmdNew End Get End Property ''' ''' Execute the New. This method is invoked by the NewCommand. ''' Public Sub NewCmd(ByVal param As Object) Application.Msn.NotifyColleagues(Application.NEWPROJECT) OnPropertyChanged("MruFileNames") End Sub ''' ''' Returns always true. ''' Private Function CanNew(ByVal param As Object) As Boolean Return m_DrawIsChecked End Function #End Region ' NewCommand #Region "OpenCommand" ''' ''' Returns a command that do Open. ''' Public ReadOnly Property OpenCommand As ICommand Get If m_cmdOpen Is Nothing Then m_cmdOpen = New RelayCommand(AddressOf Open, AddressOf CanOpen) End If Return m_cmdOpen End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Public Sub Open(ByVal param As Object) Application.Msn.NotifyColleagues(Application.OPENPROJECT, String.Empty) End Sub ''' ''' Returns always true. ''' Private Function CanOpen(ByVal param As Object) As Boolean Return m_DrawIsChecked End Function #End Region ' OpenCommand #Region "OpenMruFileCommand" ''' ''' Returns a command that do Open. ''' Public Shared ReadOnly Property OpenMruFileCommand As ICommand Get If m_cmdOpenMruFile Is Nothing Then m_cmdOpenMruFile = New RelayCommand(AddressOf OpenMruFile) End If Return m_cmdOpenMruFile End Get End Property ''' ''' Execute the Open. This method is invoked by the OpenCommand. ''' Public Shared Sub OpenMruFile(ByVal param As Object) Application.Msn.NotifyColleagues(Application.OPENPROJECT, DirectCast(param, String)) End Sub #End Region ' OpenMruFileCommand #Region "SaveCommand" ''' ''' Returns a command that do Save. ''' Public ReadOnly Property SaveCommand As ICommand Get If m_cmdSave Is Nothing Then m_cmdSave = New RelayCommand(AddressOf Save) End If Return m_cmdSave End Get End Property ''' ''' Execute the Save. This method is invoked by the SaveCommand. ''' Public Sub Save(ByVal param As Object) Application.Msn.NotifyColleagues(Application.SAVEPROJECT) End Sub #End Region ' SaveCommand #Region "SaveAsCommand" ''' ''' Returns a command that do SaveAs. ''' Public ReadOnly Property SaveAsCommand As ICommand Get If m_cmdSaveAs Is Nothing Then m_cmdSaveAs = New RelayCommand(AddressOf SaveAs) End If Return m_cmdSaveAs End Get End Property ''' ''' Execute the SaveAs. This method is invoked by the SaveAsCommand. ''' Public Sub SaveAs(ByVal param As Object) Application.Msn.NotifyColleagues(Application.SAVEASPROJECT) End Sub #End Region ' SaveAsCommand #Region "InsertCommand" ''' ''' Returns a command that do Insert. ''' Public ReadOnly Property InsertCommand As ICommand Get If m_cmdInsert Is Nothing Then m_cmdInsert = New RelayCommand(AddressOf Insert, AddressOf CanInsert) End If Return m_cmdInsert End Get End Property ''' ''' Execute the Insert. This method is invoked by the InsertCommand. ''' Public Sub Insert(ByVal param As Object) Application.Msn.NotifyColleagues(Application.INSERTPROJECT) End Sub ''' ''' Returns always true. ''' Private Function CanInsert(ByVal param As Object) As Boolean Return m_DrawIsChecked End Function #End Region ' InsertCommand #Region "ImportCommand" ''' ''' Returns a command that do Import. ''' Public ReadOnly Property ImportCommand As ICommand Get If m_cmdImport Is Nothing Then m_cmdImport = New RelayCommand(AddressOf Import, AddressOf CanImport) End If Return m_cmdImport End Get End Property ''' ''' Execute the Import. This method is invoked by the ImportCommand. ''' Public Sub Import(ByVal param As Object) Application.Msn.NotifyColleagues(Application.IMPORTPROJECT) End Sub ''' ''' Returns always true. ''' Private Function CanImport(ByVal param As Object) As Boolean Return m_DrawIsChecked End Function #End Region ' ImportCommand #Region "ExportCommand" ''' ''' Returns a command that do Export. ''' Public ReadOnly Property ExportCommand As ICommand Get If m_cmdExport Is Nothing Then m_cmdExport = New RelayCommand(AddressOf Export, AddressOf CanExport) End If Return m_cmdExport End Get End Property ''' ''' Execute the Export. This method is invoked by the ExportCommand. ''' Public Sub Export(ByVal param As Object) Application.Msn.NotifyColleagues(Application.EXPORTPROJECT) End Sub ''' ''' Returns always true. ''' Private Function CanExport(ByVal param As Object) As Boolean Return m_DrawIsChecked End Function #End Region ' ExportCommand #Region "OptionsCommand" ''' ''' Returns a command that do Export. ''' Public ReadOnly Property OptionsCommand As ICommand Get If m_cmdOptions Is Nothing Then m_cmdOptions = New RelayCommand(AddressOf Options, AddressOf CanOptions) End If Return m_cmdOptions End Get End Property ''' ''' Execute the Export. This method is invoked by the ExportCommand. ''' Public Sub Options(ByVal param As Object) Dim OptionsWindow As New OptionsView OptionsWindow.Height = 614 OptionsWindow.Width = 1024 OptionsWindow.DataContext = New OptionsViewModel OptionsWindow.Owner = Application.Current.MainWindow OptionsWindow.ShowDialog() End Sub ''' ''' Returns always true. ''' Private Function CanOptions(ByVal param As Object) As Boolean Return True End Function #End Region ' OptionsCommand #End Region ' Commands End Class End Namespace