namespace PrepStep; /// Guida interattiva richiamabile da "Aiuto ▸ Guida" (F1): sintesi delle 5 fasi del /// wizard, per chi apre l'app senza aver letto i docs. Il dettaglio completo (formato .asm, /// schema DB, ecc.) resta solo in docs/architettura.md e affini, per non duplicarlo qui. public class GuidaForm : Form { private static readonly (string Titolo, string Testo)[] Sezioni = { ("Panoramica", """ Cevolani StepPrep prepara i file CAD Pro-ENGINEER/Creo da passare a Creo Distributed Batch per l'esportazione STEP: indicizza i file di una share di rete e guida attraverso 5 fasi, una alla volta, con "Avanti"/"Indietro". "File ▸ Nuova estrazione" (Ctrl+N) azzera distinta/raw/verifica per ripartire con una nuova distinta base, senza dover ricaricare il database. """), ("1. Database", """ Carica o aggiorna l'indice "cad_index.db" a partire dalle cartelle di primo livello del disco/share (radice di default X:\). Qui si sceglie anche la cartella di lavoro, dove finiscono CSV, "raw" e "step". """), ("2. Importa Distinta Base", """ Converte il file della distinta (trascinabile nella finestra) in un CSV componente;descrizione nella cartella di lavoro. Se il file segue la convenzione del gestionale, aggiunge anche l'assieme generale come riga. """), ("3. Crea cartella raw", """ Cerca nell'indice i file CAD dei componenti del CSV e li copia nella sottocartella "raw" della cartella di lavoro. """), ("4. Trova componenti referenziati", """ Legge i file .asm già in "raw" per risolvere ricorsivamente sotto-assiemi e parti citate, copiando anche quelli in "raw": componenti soppressi (non in distinta ma necessari per aprire l'assieme) e riferimenti esterni (assembly feature, datum copiati) inclusi. """), ("5. Verifica completezza", """ Mostra i file .asm della distinta già in "raw", trascinabili su Creo per l'esportazione STEP (passo manuale, fuori da quest'app). "Verifica completezza assiemi" controlla che tutti i sotto-componenti risultino presenti nell'indice. """), }; public GuidaForm() { Text = "Guida"; ClientSize = new Size(640, 420); MinimumSize = new Size(480, 320); StartPosition = FormStartPosition.CenterParent; Font = new Font("Segoe UI", 9.5f); var lista = new ListBox { Dock = DockStyle.Left, Width = 200, IntegralHeight = false, BorderStyle = BorderStyle.None, }; foreach (var (titolo, _) in Sezioni) lista.Items.Add(titolo); var testo = new RichTextBox { Dock = DockStyle.Fill, ReadOnly = true, BorderStyle = BorderStyle.None, BackColor = Color.White, Font = new Font(Font.FontFamily, 10f), }; lista.SelectedIndexChanged += (_, _) => { if (lista.SelectedIndex >= 0) testo.Text = Sezioni[lista.SelectedIndex].Testo.Trim(); }; var btnChiudi = new Button { Text = "Chiudi", Dock = DockStyle.Bottom, Height = 34 }; UiStile.Secondario(btnChiudi); btnChiudi.Click += (_, _) => Close(); var contenuto = new Panel { Dock = DockStyle.Fill, Padding = new Padding(16) }; contenuto.Controls.Add(testo); Controls.Add(contenuto); Controls.Add(lista); Controls.Add(btnChiudi); lista.SelectedIndex = 0; } }