public MessageResult ShowMessage( ViewModelBase model, string title=null, string msg=null ) { MessageBoxWindow win = new MessageBoxWindow(); bool? result = win.ShowMessage( title, msg ); if( result == null ) { return MessageResult.Cancel; } else if( result == true ) { return MessageResult.Accept; } return MessageResult.Cancel; } //
public void Synchronize() { if (mainModel.NonFictionBookCount == 0) { MessageBoxWindow.ShowMessage("Ошибка", @"Перед синхронизацией списка нехудожественной литературы необходимо выполнить импорт из дампа базы данных (пункт ""Импорт"" в меню).", CurrentWindowContext); return; } if (mainModel.AppSettings.Mirrors.NonFictionSynchronizationMirrorName == null) { MessageBoxWindow.ShowMessage("Ошибка", @"Не выбрано зеркало для синхронизации списка нехудожественной литературы.", CurrentWindowContext); return; } if (mainModel.AppSettings.Network.OfflineMode) { if (MessageBoxWindow.ShowPrompt("Автономный режим", "Синхронизация невозможна при включенном автономном режиме. Выключить автономный режим?", CurrentWindowContext)) { mainModel.AppSettings.Network.OfflineMode = false; mainModel.SaveSettings(); } else { return; } } SynchronizationWindowViewModel synchronizationWindowViewModel = new SynchronizationWindowViewModel(mainModel); IWindowContext synchronizationWindowContext = WindowManager.CreateWindow(RegisteredWindows.WindowKey.SYNCHRONIZATION_WINDOW, synchronizationWindowViewModel, CurrentWindowContext); synchronizationWindowContext.ShowDialog(); if (IsDefaultSearchTabVisible) { DefaultSearchTabViewModel.SetFocus(); } else { if (SelectedTabViewModel is SearchTabViewModel searchTabViewModel) { searchTabViewModel.SetFocus(); } } }
private async void Export() { string directory = GetDirectoryPath(correctPath: false); if (directory == null) { MessageBoxWindow.ShowMessage("Ошибка", "Указанный путь файла для экспорта некорректен.", parentWindowContext); return; } if (!Directory.Exists(directory)) { MessageBoxWindow.ShowMessage("Ошибка", $"Директория {directory} не существует.", parentWindowContext); return; } string fileNameWithoutExtension = GetFileNameWithoutExtension(correctFileName: false); if (fileNameWithoutExtension == null) { MessageBoxWindow.ShowMessage("Ошибка", "Указанное имя файла для экспорта некорректно.", parentWindowContext); return; } string fileExtension = GetFileExtension(); if (File.Exists(FilePathTemplate) && !MessageBoxWindow.ShowPrompt("Перезаписать файл?", $"Файл {FilePathTemplate} существует. Вы действительно хотите перезаписать его?", parentWindowContext)) { return; } int?searchResultLimit = isNoLimitSelected ? (int?)null : mainModel.AppSettings.Search.MaximumResultCount; Progress <ExportProgress> exportProgressHandler = new Progress <ExportProgress>(HandleExportProgress); cancellationTokenSource = new CancellationTokenSource(); CancellationToken cancellationToken = cancellationTokenSource.Token; Func <MainModel, Task <ExportResult> > exportTask = null; if (IsXlsxSelected) { switch (libgenObjectType) { case LibgenObjectType.NON_FICTION_BOOK: exportTask = mainModel => mainModel.ExportNonFictionToXlsxAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; case LibgenObjectType.FICTION_BOOK: exportTask = mainModel => mainModel.ExportFictionToXlsxAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; case LibgenObjectType.SCIMAG_ARTICLE: exportTask = mainModel => mainModel.ExportSciMagToXlsxAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; } } else { char separator; if (IsCommaSeparatorSelected) { separator = ','; } else if (IsSemicolonSeparatorSelected) { separator = ';'; } else { separator = '\t'; } switch (libgenObjectType) { case LibgenObjectType.NON_FICTION_BOOK: exportTask = mainModel => mainModel.ExportNonFictionToCsvAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, separator, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; case LibgenObjectType.FICTION_BOOK: exportTask = mainModel => mainModel.ExportFictionToCsvAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, separator, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; case LibgenObjectType.SCIMAG_ARTICLE: exportTask = mainModel => mainModel.ExportSciMagToCsvAsync(Path.Combine(directory, fileNameWithoutExtension), fileExtension, separator, searchQuery, searchResultLimit, exportProgressHandler, cancellationToken); break; } } if (exportTask == null) { throw new Exception("Export task is null."); } UpdateProgressStatus(null, 0, 0); IsSettingsPanelVisible = false; IsProgressPanelVisible = true; AreExportResultButtonsVisible = false; CancelExportButtonText = "ПРЕРВАТЬ"; IsCancelExportButtonEnabled = true; IsCancelExportButtonVisible = true; SaveSettings(); bool error = false; exportResult = null; try { exportResult = await exportTask(mainModel); } catch (Exception exception) { ShowErrorWindow(exception, parentWindowContext); error = true; } IsCancelExportButtonVisible = false; if (!error) { if (exportResult.IsExportCancelled && exportResult.ItemsExported == 0) { IsSettingsPanelVisible = true; IsProgressPanelVisible = false; } else { string status = null; if (exportResult.IsExportCancelled || exportResult.IsRowsPerFileLimitReached) { status = "Экспорт прерван."; } UpdateProgressStatus(status, exportResult.ItemsExported, exportResult.FilesCreated); if (exportResult.IsRowsPerFileLimitReached) { MessageBoxWindow.ShowMessage("Предел количества строк", "Достигнут предел количества строк, допустимый для записи в файл Microsoft Excel. Дальнейший экспорт невозможен. " + @"Для экспорта большего числа строк включите опцию ""Делить на несколько файлов"" в настройках программы.", parentWindowContext); } AreExportResultButtonsVisible = true; IsShowResultButtonVisible = exportResult.ItemsExported > 0 && exportResult.FirstFilePath != null; if (IsShowResultButtonVisible && mainModel.AppSettings.Export.OpenResultsAfterExport && !exportResult.IsExportCancelled && !exportResult.IsRowsPerFileLimitReached) { ShowResult(); } } } else { ProgressStatus = "Экспорт завершился с ошибкой."; AreExportResultButtonsVisible = true; IsShowResultButtonVisible = false; } }
private void OkButtonClick() { if (IsCreateDatabaseSelected) { SaveFileDialogParameters saveFileDialogParameters = new SaveFileDialogParameters { DialogTitle = "Сохранение новой базы данных", Filter = "Базы данных (*.db)|*.db|Все файлы (*.*)|*.*", OverwritePrompt = true }; if (eventType == EventType.DATABASE_CORRUPTED) { string databaseFilePath = mainModel.GetDatabaseFullPath(mainModel.AppSettings.DatabaseFileName); saveFileDialogParameters.InitialDirectory = Path.GetDirectoryName(databaseFilePath); saveFileDialogParameters.InitialFileName = Path.GetFileName(databaseFilePath); } else { saveFileDialogParameters.InitialDirectory = Environment.AppDataDirectory; saveFileDialogParameters.InitialFileName = Constants.DEFAULT_DATABASE_FILE_NAME; } SaveFileDialogResult saveFileDialogResult = WindowManager.ShowSaveFileDialog(saveFileDialogParameters); if (saveFileDialogResult.DialogResult) { if (mainModel.CreateDatabase(saveFileDialogResult.SelectedFilePath)) { mainModel.AppSettings.DatabaseFileName = mainModel.GetDatabaseNormalizedPath(saveFileDialogResult.SelectedFilePath); mainModel.SaveSettings(); CurrentWindowContext.CloseDialog(true); } else { MessageBoxWindow.ShowMessage("Ошибка", "Не удалось создать базу данных.", CurrentWindowContext); } } } else { OpenFileDialogParameters openFileDialogParameters = new OpenFileDialogParameters { DialogTitle = "Выбор базы данных", Filter = "Базы данных (*.db)|*.db|Все файлы (*.*)|*.*", Multiselect = false }; OpenFileDialogResult openFileDialogResult = WindowManager.ShowOpenFileDialog(openFileDialogParameters); if (openFileDialogResult.DialogResult) { string databaseFilePath = openFileDialogResult.SelectedFilePaths.First(); if (mainModel.OpenDatabase(databaseFilePath)) { mainModel.AppSettings.DatabaseFileName = mainModel.GetDatabaseNormalizedPath(databaseFilePath); mainModel.SaveSettings(); CurrentWindowContext.CloseDialog(true); } else { UpdateHeaderAndEventType(Path.GetFileName(databaseFilePath)); NotifyPropertyChanged(nameof(Header)); } } } }
public void ShowMessage(string title, string text, string ok, IWindowContext parentWindowContext) { MessageBoxWindow.ShowMessage(title, text, ok, parentWindowContext); }