// Mouse on cell? Show some screenshots to remember game! void loadImagesThread(object s) { var code = s.ToString(); try { var images = new List <Image>(); using (var save = new MemoryStream()) { hakchi.Shell.Execute("cd /var/lib/clover/profiles/0 && tar -cz " + code, null, save, null, 10000, true); save.Seek(0, SeekOrigin.Begin); using (var extractor = ArchiveFactory.Open(save)) { using (var tar = new MemoryStream()) { extractor.Entries.First().OpenEntryStream().CopyTo(tar); using (var extractorTar = SharpCompress.Archives.Tar.TarArchive.Open(tar)) { foreach (var f in extractorTar.Entries) { if (Path.GetExtension(f.Key).ToLower() == ".png") { var o = new MemoryStream(); f.OpenEntryStream().CopyTo(o); o.Seek(0, SeekOrigin.Begin); images.Add(Image.FromStream(o)); } } } } } } Trace.WriteLine("Loaded " + images.Count + " imags"); if (images.Count == 0) { return; } if (menuOpened) { return; // Right click... } Invoke(new Action(delegate { // Maybe it's too late? var p = listViewSaves.PointToClient(Cursor.Position); var item = listViewSaves.GetItemAt(p.X, p.Y); if (item == null) { return; // No rows at all } if (item.SubItems["colCode"].Text != code) { return; // Other item } if (imagesForm == null) { imagesForm = new ImagesForm(); } imagesForm.Left = Cursor.Position.X + 5; imagesForm.Top = Cursor.Position.Y + 5; imagesForm.Text = item.SubItems["colName"].Text; imagesForm.ShowImages(images); imagesForm.Show(); })); } catch (Exception ex) { Trace.WriteLine(ex.Message + ex.StackTrace); } }
// Mouse on cell? Show some screenshots to remember game! void loadImagesThread(object s) { var code = s.ToString(); try { var clovershell = MainForm.Clovershell; var images = new List <Image>(); using (var save = new MemoryStream()) { clovershell.Execute("cd /var/lib/clover/profiles/0 && tar -cz " + code, null, save, null, 10000, true); save.Seek(0, SeekOrigin.Begin); SevenZipExtractor.SetLibraryPath(Path.Combine(MainForm.BaseDirectory, IntPtr.Size == 8 ? @"tools\7z64.dll" : @"tools\7z.dll")); using (var szExtractor = new SevenZipExtractor(save)) { var tar = new MemoryStream(); szExtractor.ExtractFile(0, tar); tar.Seek(0, SeekOrigin.Begin); using (var szExtractorTar = new SevenZipExtractor(tar)) { foreach (var f in szExtractorTar.ArchiveFileNames) { if (Path.GetExtension(f).ToLower() == ".png") { var o = new MemoryStream(); szExtractorTar.ExtractFile(f, o); o.Seek(0, SeekOrigin.Begin); images.Add(Image.FromStream(o)); } } } } } Debug.WriteLine("Loaded " + images.Count + " imags"); if (images.Count == 0) { return; } if (menuOpened) { return; // Right click... } Invoke(new Action(delegate { // Maybe it's too late? var p = listViewSaves.PointToClient(Cursor.Position); var item = listViewSaves.GetItemAt(p.X, p.Y); if (item == null) { return; // No rows at all } if (item.SubItems["colCode"].Text != code) { return; // Other item } if (imagesForm == null) { imagesForm = new ImagesForm(); } imagesForm.Left = Cursor.Position.X + 5; imagesForm.Top = Cursor.Position.Y + 5; imagesForm.Text = item.SubItems["colName"].Text; imagesForm.ShowImages(images); imagesForm.Show(); })); } catch (Exception ex) { Debug.WriteLine(ex.Message + ex.StackTrace); } }