using System.Diagnostics; namespace CadSearchGui; /// Mostra l'esito della risoluzione ricorsiva dell'albero componenti: i PRT e i /// sotto-assiemi trovati nell'indice e giĆ  copiati in "raw" a partire dagli assiemi iniziali. public class PrtMancantiForm : Form { public PrtMancantiForm(List<(string Codice, string Tipo, string Percorso)> righe, int codiciNonTrovati, string cartellaRaw) { int numPrt = righe.Count(r => r.Tipo == "prt"); int numAsm = righe.Count(r => r.Tipo == "asm"); Text = "Componenti referenziati trovati"; ClientSize = new Size(720, 440); StartPosition = FormStartPosition.CenterParent; Font = new Font("Segoe UI", 9.5f); var lblInfo = new Label { Dock = DockStyle.Top, AutoSize = false, Height = 44, Padding = new Padding(12, 8, 12, 8), Text = $"Copiati in \"{cartellaRaw}\": {numPrt} PRT e {numAsm} sotto-assiemi trovati nell'indice." + (codiciNonTrovati > 0 ? $" {codiciNonTrovati} codici referenziati non corrispondono a nessun file indicizzato " + "(probabilmente disegni, o falsi positivi della scansione)." : ""), }; var grid = new DataGridView { Dock = DockStyle.Fill, ReadOnly = true, AllowUserToAddRows = false, AllowUserToDeleteRows = false, RowHeadersVisible = false, SelectionMode = DataGridViewSelectionMode.FullRowSelect, AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.Fill, }; grid.Columns.Add("codice", "Codice"); grid.Columns.Add("tipo", "Tipo"); grid.Columns.Add("percorso", "Percorso CAD"); grid.Columns["codice"]!.FillWeight = 20; grid.Columns["tipo"]!.FillWeight = 10; grid.Columns["percorso"]!.FillWeight = 70; foreach (var (codice, tipo, percorso) in righe.OrderBy(r => r.Tipo).ThenBy(r => r.Codice)) { grid.Rows.Add(codice, tipo, percorso); } var btnApriCartella = new Button { Text = "Apri cartella raw", Dock = DockStyle.Bottom, Height = 34 }; btnApriCartella.Click += (_, _) => { try { Process.Start("explorer.exe", cartellaRaw); } catch (Exception ex) { MessageBox.Show(this, $"Impossibile aprire Esplora risorse:\n{ex.Message}", "Errore", MessageBoxButtons.OK, MessageBoxIcon.Error); } }; Controls.Add(grid); Controls.Add(lblInfo); Controls.Add(btnApriCartella); } }