private IEnumerable <SideloaderUpdateItem> CollectTasks(List <INode> nodes, CancellationToken cancellationToken) { cancellationToken.ThrowIfCancellationRequested(); var root = nodes.Single(x => x.Type == NodeType.Root); var modsDirPath = InstallDirectoryHelper.GetModsPath(); modsDirPath.Create(); var results = Enumerable.Empty <SideloaderUpdateItem>(); foreach (var remoteModpackDir in GetSubNodes(root).Where(x => x.Type == NodeType.Directory)) { cancellationToken.ThrowIfCancellationRequested(); if (remoteModpackDir.Name.StartsWith("Sideloader Modpack")) { var localModpackDir = new DirectoryInfo(Path.Combine(modsDirPath.FullName, remoteModpackDir.Name)); if (localModpackDir.Exists) { results = results.Concat(ProcessDirectory(remoteModpackDir, localModpackDir, cancellationToken)); } } else { Console.WriteLine("Skipping non-modpack directory " + remoteModpackDir.Name); } } return(results); }
private void toolStripButtonOpenModsDir_Click(object sender, EventArgs e) { try { Process.Start(InstallDirectoryHelper.GetModsPath().FullName); } catch (SystemException ex) { MessageBox.Show(ex.Message, "Failed to start application", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
public void ReloadList() { CancelListReload(); objectListView1.ClearObjects(); _cancellationTokenSource = new CancellationTokenSource(); var token = _cancellationTokenSource.Token; var observable = SideloaderModLoader.TryReadSideloaderMods(InstallDirectoryHelper.GetModsPath().FullName, token); observable .Buffer(TimeSpan.FromSeconds(3)) .ObserveOn(this) .Subscribe(list => objectListView1.AddObjects((ICollection)list), () => { objectListView1.FastAutoResizeColumns(); MainWindow.SetStatusText("Done loading zipmods"); }, token); }