private void menuItemServiceDocumentConverter_Click(object sender, EventArgs e) { openScenarioDialog.Title = "Выберите сценарий, созданный в предыдущей версии системы"; openScenarioDialog.Filter = "Сценарии предыдущих версий|*.scenario"; if (openScenarioDialog.ShowDialog(this) != DialogResult.OK) return; var scenario = new FileInfo(openScenarioDialog.FileName); var nameFrom = scenario.FullName; if (!nameFrom.EndsWith(".scenario")) nameFrom += ".scenario"; var nameTo = Path.Combine(scenario.DirectoryName, scenario.Name + ScenarioDocumentExtension); if (!nameTo.EndsWith(ScenarioDocumentExtension)) nameTo += ScenarioDocumentExtension; var cwd = new CancellableWorkerDialog { Information = "Производится конвертация файла сценария, созданного в более ранней версии системы, в наиболее оптимальный формат. Продолжительность этого процесса зависит от количества ветвей дерева сценария.\n\nНа медленных компьютерах эта процедура может занять продолжительное время.", Cancellable = false, UnknownProgress = true, }; cwd.Worker = x => { x.UpdateProgress(0, "Изучение файла сценария"); var prev = new ScenarioDepot {Vault = VaultApi.OpenZip(nameFrom)}; var curr = new ScenarioDepot {Vault = VaultApi.OpenZip(nameTo)}; var a = prev.Cast<ScenarioNode>(); var b = curr.Cast<ScenarioNode>(); x.UpdateProgress(0, "Конвертация Общих Характеристик"); MergeNodes(a.ElementAt(0), b.ElementAt(0)); x.UpdateProgress(0, "Конвертация Характеристик Объекта"); MergeNodes(a.ElementAt(1), b.ElementAt(1)); x.UpdateProgress(99, "Создание нового документа"); curr.Save(); x.UpdateProgress(0, "Почти все готово"); }; if (cwd.ShowDialog(this) != DialogResult.OK) return; }
private void menuItemNewAppraisal_Click(object sender, EventArgs e) { openScenarioDialog.Title = "Выберите сценарий для создаваемого отчета"; openScenarioDialog.Filter = "Сценарии|*" + ScenarioDocumentExtension; #if DEBUG && USE_TDISK openScenarioDialog.InitialDirectory = @"T:\"; #endif if (openScenarioDialog.ShowDialog(this) != DialogResult.OK) return; saveAsDialog.Title = "Введите имя файла отчета"; saveAsDialog.Filter = "Отчеты|*" + ApprasialDocumentExtension; #if DEBUG && USE_TDISK saveAsDialog.InitialDirectory = @"T:\"; #endif if (saveAsDialog.ShowDialog(this) != DialogResult.OK) return; var report = new FileInfo(saveAsDialog.FileName); if (report.Exists) report.Delete(); var nameTo = report.FullName; if (!nameTo.EndsWith(ApprasialDocumentExtension)) nameTo += ApprasialDocumentExtension; var scenario = new FileInfo(openScenarioDialog.FileName); var nameFrom = scenario.FullName; if (!nameFrom.EndsWith(ScenarioDocumentExtension)) nameFrom += ScenarioDocumentExtension; var cwd = new CancellableWorkerDialog { Information = "Производится создание файла отчета, интеграция дерева сценария и предварительная оптимизация плана расчета. Продолжительность этого процесса зависит от количества ветвей дерева сценария.\n\nНа медленных компьютерах эта процедура может занять продолжительное время.", Cancellable = false, UnknownProgress = true, }; cwd.Worker = x => { x.UpdateProgress(0, "Создание файла отчета"); File.Copy(nameFrom, nameTo); x.UpdateProgress(0, "Интеграция дерева сценариев"); var scenarioDepot = new ScenarioDepot {Vault = VaultApi.OpenZip(nameTo),}; x.UpdateProgress(0, "Оптимизация плана расчета"); scenarioDepot.Save(); x.UpdateProgress(0, "Почти все готово"); OpenScenarionWindow(nameTo, scenarioDepot); }; if (cwd.ShowDialog(this) != DialogResult.OK) return; InWork = true; }