public void ImportImages(string[] imagepaths) { bool java = (SelectedWorld is JavaWorld); var import = new ImportWindow(java); import.InterpolationModeBox.SelectedIndex = Properties.Settings.Default.InterpIndex; import.ApplyAllCheck.Checked = Properties.Settings.Default.ApplyAllCheck; import.DitherChecked = Properties.Settings.Default.Dither; import.StartImports(UI, imagepaths); Properties.Settings.Default.InterpIndex = import.InterpolationModeBox.SelectedIndex; Properties.Settings.Default.ApplyAllCheck = import.ApplyAllCheck.Checked; Properties.Settings.Default.Dither = import.DitherChecked; long id = GetSafeID(); var tasks = new List <Task>(); UI.OpenButton.Enabled = false; UI.SendButton.Enabled = false; foreach (var settings in import.OutputSettings) { var boxes = new List <MapIDControl>(); for (int i = 0; i < settings.SplitH * settings.SplitW; i++) { var box = new MapIDControl(id); boxes.Add(box); SendToZone(box, MapStatus.Importing); id++; } var t = new Task <IEnumerable <Map> >(() => { if (java) { return(JavaMap.FromSettings(settings)); } else { return(BedrockMap.FromSettings(settings)); } }); t.Start(); t.ContinueWith((prev) => { var results = prev.Result.ToArray(); for (int i = 0; i < settings.SplitH * settings.SplitW; i++) { boxes[i].SetBox(new MapPreviewBox(results[i])); } }, TaskScheduler.FromCurrentSynchronizationContext()); tasks.Add(t); } var done = Task.WhenAll(tasks); done.ContinueWith((t) => { UI.OpenButton.Enabled = true; UI.SendButton.Enabled = true; }, TaskScheduler.FromCurrentSynchronizationContext()); }
public void ImportImages(string[] imagepaths) { var import = new ImportWindow(); import.InterpolationModeBox.SelectedIndex = Properties.Settings.Default.InterpIndex; import.ApplyAllCheck.Checked = Properties.Settings.Default.ApplyAllCheck; import.StartImports(UI, imagepaths); Properties.Settings.Default.InterpIndex = import.InterpolationModeBox.SelectedIndex; Properties.Settings.Default.ApplyAllCheck = import.ApplyAllCheck.Checked; var taken = ImportingMapPreviews.Concat(ExistingMapPreviews).Select(x => x.ID).ToList(); taken.Add(-1); long id = taken.Max() + 1; foreach (var image in import.OutputImages) { MapIDControl mapbox = new MapIDControl(id, SelectedWorld is JavaWorld ? (Map) new JavaMap(image) : new BedrockMap(image)); ImportingMapPreviews.Add(mapbox); UI.ImportZone.Controls.Add(mapbox); mapbox.MouseDown += ImportingBox_MouseDown; id++; } }