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 void SettingsEditNoteButton_Click(object sender, System.Windows.RoutedEventArgs e) { var item = MainDataGrid.SelectedItems .Cast <UserSetting>() .FirstOrDefault(); if (item == null) { return; } var note = item.Comment ?? ""; var form = new MessageBoxWindow(); form.MessageTextBox.MaxLength = 1024; form.MessageTextBox.Text = note; var result = form.ShowPrompt(note, "X360CE - Edit Note"); if (result == MessageBoxResult.OK) { item.Comment = form.MessageTextBox.Text.Trim(); UpdateNoteLabel(); } }
public bool ShowPrompt(string title, string text, string yes, string no, IWindowContext parentWindowContext) { return(MessageBoxWindow.ShowPrompt(title, text, yes, no, parentWindowContext)); }
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 bool WindowClosing() { return(!settingsChanged || MessageBoxWindow.ShowPrompt("Отменить изменения?", "Настройки были изменены. Вы действительно хотите отменить сделанные изменения?", CurrentWindowContext)); }