Esempio n. 1
0
        private void OpenFileInternal(string filename)
        {
            var exitingFile = _openFiles.FirstOrDefault(openfile => openfile.FileName == filename);

            if (exitingFile != null)
            {
                SelectedFile = exitingFile;
                return;
            }

            var file = new OpenFileViewModel(this);

            file.Ready += delegate {
                Dispatcher.CurrentDispatcher.InvokeAsync(() => {
                    try {
                        file.OpenFile(filename);
                    }
                    catch (Exception ex) {
                        OpenFiles.Remove(file);
                        MessageBoxService.ShowMessage($"Error: {ex.Message}", Constants.AppTitle);
                    }
                });
            };
            OpenFiles.Add(file);
            _recentFiles.Remove(filename);
            _recentFiles.Insert(0, filename);
            if (_recentFiles.Count > 10)
            {
                _recentFiles.RemoveAt(9);
            }
            SelectedFile = file;
        }
Esempio n. 2
0
        public void CloseFile(OpenFileViewModel file)
        {
            int index = OpenFiles.IndexOf(file);

            Debug.Assert(index >= 0);
            file.Dispose();
            OpenFiles.RemoveAt(index);
            if (--index < 0)
            {
                index = 0;
            }
            if (OpenFiles.Count > 0)
            {
                SelectedFile = OpenFiles[index];
            }
        }