Aggiungi "Elimina CSV delle distinte" e allinea le guide alla cartella di installazione
Nuova voce "File → Elimina CSV delle distinte..." (EliminaCsv): elimina i *.csv al primo livello della cartella di lavoro, che altrimenti si accumulano uno per distinta importata. Chiede conferma mostrando l'elenco dei file; gli .xls del gestionale e raw/step non sono toccati. Guida utente e guida in-app: nuova sezione "Dove finiscono i file" (DB sempre nella cartella di installazione, CSV/raw/step nella cartella di lavoro, comandi di pulizia, come aprire la cartella nascosta in AppData), fase 1 allineata al DB fisso e ad "Apri DB..." solo per la sessione. Tolta dalla guida utente la sezione di installazione: chi la legge ha già il programma installato (resta nel README). Doc aggiornati nello stesso commit: CLAUDE.md, docs/architettura.md, docs/guida-utente.md, CHANGELOG.md. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
1 parent
64ff1d8770
commit
4ae3d0e087
6 files changed
+126
-31
No files matched your search
@@ -9,6 +9,12 @@ aderisce a [Semantic Versioning](https://semver.org/lang/it/).
|
||||
|
||||
### Aggiunto
|
||||
|
||||
- "File → Elimina CSV delle distinte...": elimina i CSV generati dall'import, che altrimenti si
|
||||
accumulano nella cartella di lavoro (uno per distinta).
|
||||
- Guida utente e guida in-app: nuova sezione "Dove finiscono i file" (cartella di lavoro,
|
||||
database, pulizia, come aprire la cartella nascosta in AppData); fase 1 allineata al DB
|
||||
sempre nella cartella di installazione.
|
||||
|
||||
- Setup di installazione per-utente (`installer/PrepStep.iss`, Inno Setup 6): installa in
|
||||
`%LOCALAPPDATA%\Programs\PrepStep` senza diritti di amministratore, con collegamento nel
|
||||
menu Start e disinstallazione dal menu Start, da "App installate" o rilanciando il setup (che, se l'app è
|
||||
|
||||
@@ -122,7 +122,8 @@ per ripartire con una nuova distinta, senza toccare DB/cartella di lavoro della
|
||||
volutamente alla fase 2, non alla 1: quei dati restano quelli già caricati); "File → Scegli
|
||||
cartella di lavoro..." cambia la cartella di CSV/`raw/`/`step/` in qualunque momento; "File →
|
||||
Pulisci raw e step..." svuota le cartelle `raw/`/`step/` nella cartella di lavoro (non tocca
|
||||
l'indice); "Aiuto → Guida" (F1) apre una sintesi interattiva delle 5 fasi (`GuidaForm.cs`).
|
||||
l'indice); "File → Elimina CSV delle distinte..." elimina i `*.csv` generati in fase 2, che
|
||||
altrimenti si accumulano uno per distinta nella cartella di lavoro; "Aiuto → Guida" (F1) apre una sintesi interattiva delle 5 fasi (`GuidaForm.cs`).
|
||||
|
||||
## Script standalone (`scripts/`)
|
||||
|
||||
|
||||
@@ -25,6 +25,7 @@ public partial class Form1 : Form
|
||||
private readonly MenuStrip _menu = new();
|
||||
private readonly ToolStripMenuItem _mnuNuovaEstrazione = new("Nuovo");
|
||||
private readonly ToolStripMenuItem _mnuPulisci = new("Pulisci raw e step...");
|
||||
private readonly ToolStripMenuItem _mnuEliminaCsv = new("Elimina CSV delle distinte...");
|
||||
private readonly ToolStripMenuItem _mnuCambiaCartella = new("Scegli cartella di lavoro...");
|
||||
|
||||
// Wizard: una fase alla volta occupa tutta la finestra, si avanza solo quando quella
|
||||
@@ -150,6 +151,9 @@ public partial class Form1 : Form
|
||||
_mnuPulisci.Click += (_, _) => PulisciRawEStep();
|
||||
mnuFile.DropDownItems.Add(_mnuPulisci);
|
||||
|
||||
_mnuEliminaCsv.Click += (_, _) => EliminaCsv();
|
||||
mnuFile.DropDownItems.Add(_mnuEliminaCsv);
|
||||
|
||||
var mnuAiuto = new ToolStripMenuItem("Aiuto");
|
||||
var mnuGuida = new ToolStripMenuItem("Guida") { ShortcutKeys = Keys.F1 };
|
||||
mnuGuida.Click += (_, _) => new GuidaForm().ShowDialog(this);
|
||||
@@ -770,6 +774,47 @@ public partial class Form1 : Form
|
||||
"Pulisci raw e step", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
/// <summary>Elimina i CSV generati dall'import delle distinte (fase 2), che altrimenti si
|
||||
/// accumulano uno per distinta nella cartella di lavoro. Solo i *.csv direttamente nella
|
||||
/// cartella di lavoro, non in sottocartelle; i file originali del gestionale (.xls) restano.</summary>
|
||||
private void EliminaCsv()
|
||||
{
|
||||
string radice = _cartellaLavoro!;
|
||||
var files = Directory.Exists(radice) ? Directory.GetFiles(radice, "*.csv") : [];
|
||||
if (files.Length == 0)
|
||||
{
|
||||
MessageBox.Show(this, $"Nessun file CSV trovato in {radice}.",
|
||||
"Elimina CSV", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
return;
|
||||
}
|
||||
|
||||
var nomi = files.Select(Path.GetFileName).Take(15).ToList();
|
||||
if (files.Length > nomi.Count)
|
||||
nomi.Add($"... e altri {files.Length - nomi.Count}");
|
||||
var conferma = MessageBox.Show(this,
|
||||
$"Eliminare {files.Length} file CSV da {radice}?\n\n{string.Join("\n", nomi)}\n\nL'operazione non è reversibile.",
|
||||
"Elimina CSV", MessageBoxButtons.YesNo, MessageBoxIcon.Warning);
|
||||
if (conferma != DialogResult.Yes)
|
||||
return;
|
||||
|
||||
int eliminati = 0;
|
||||
foreach (var file in files)
|
||||
{
|
||||
try
|
||||
{
|
||||
File.Delete(file);
|
||||
eliminati++;
|
||||
}
|
||||
catch (Exception ex) when (ex is IOException or UnauthorizedAccessException)
|
||||
{
|
||||
// ponytail: file in uso (es. aperto in Excel) -> si salta, non blocca gli altri
|
||||
}
|
||||
}
|
||||
|
||||
MessageBox.Show(this, $"{eliminati} file CSV eliminati da {radice}.",
|
||||
"Elimina CSV", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
||||
}
|
||||
|
||||
/// <summary>Tutti i codici prt/asm noti all'indice, con i relativi percorsi (ultima
|
||||
/// versione, un solo file per tipo - stesso criterio di dedup per data_modifica DESC
|
||||
/// usato ovunque in questa classe). Caricato in un'unica query invece che una per
|
||||
|
||||
+40
-8
@@ -38,6 +38,28 @@ public class GuidaForm : Form
|
||||
NotaTesto: "\"File ▸ Nuovo\" (Ctrl+N) azzera distinta/raw/verifica per ripartire " +
|
||||
"con una nuova distinta base, senza dover ricaricare il database."),
|
||||
|
||||
new("Dove finiscono i file",
|
||||
"Tutto sta nella cartella di lavoro, che di default è la cartella di " +
|
||||
"installazione (%LOCALAPPDATA%\\Programs\\PrepStep):",
|
||||
Passi:
|
||||
[
|
||||
"Il database cad_index.db sta sempre nella cartella di installazione.",
|
||||
"Il CSV di ogni distinta importata, \"raw\" (file CAD delle fasi 3-4) e " +
|
||||
"\"step\" (STEP esportati da Creo, cartella che indichi tu a Creo) stanno " +
|
||||
"nella cartella di lavoro. Il file .xls del gestionale resta dove l'hai " +
|
||||
"preso.",
|
||||
"Per cambiare la cartella di lavoro: \"File ▸ Scegli cartella di lavoro...\" " +
|
||||
"(viene ricordata agli avvii successivi).",
|
||||
"Per fare pulizia: \"File ▸ Pulisci raw e step...\" svuota \"raw\" e " +
|
||||
"\"step\"; \"File ▸ Elimina CSV delle distinte...\" elimina i CSV, che " +
|
||||
"altrimenti si accumulano uno per distinta. Nessuno dei due tocca il " +
|
||||
"database.",
|
||||
],
|
||||
NotaTesto: "AppData è una cartella nascosta in Esplora file: per aprirla scrivi " +
|
||||
"%LOCALAPPDATA%\\Programs\\PrepStep nella barra degli indirizzi (vale anche " +
|
||||
"per scegliere \"step\" in Creo). Disinstallando il programma questi file " +
|
||||
"restano: cancellali a mano se non servono più."),
|
||||
|
||||
new("Prima di iniziare",
|
||||
"Prima di importare la prima distinta:",
|
||||
Passi:
|
||||
@@ -50,9 +72,10 @@ public class GuidaForm : Form
|
||||
"Se il file segue la convenzione di nome DBP_<codice>_<timestamp>, l'app " +
|
||||
"aggiunge da sola l'assieme generale come componente in più: non serve " +
|
||||
"fare nulla di diverso.",
|
||||
"Conviene impostare la cartella di lavoro giusta (fase 1, o \"File ▸ Scegli " +
|
||||
"cartella di lavoro...\") prima di importare la distinta: è lì che " +
|
||||
"finiscono CSV, \"raw\" e, dopo l'esportazione con Creo, \"step\".",
|
||||
"Se non vuoi usare la cartella di installazione, scegli la cartella di " +
|
||||
"lavoro (\"File ▸ Scegli cartella di lavoro...\") prima di importare la " +
|
||||
"distinta: è lì che finiscono CSV, \"raw\" e, dopo l'esportazione con " +
|
||||
"Creo, \"step\".",
|
||||
"Se la cartella di lavoro è già stata usata per un'altra distinta, conviene " +
|
||||
"pulire \"raw\" e \"step\" prima di ripartire (\"File ▸ Pulisci raw e " +
|
||||
"step...\"): \"File ▸ Nuovo\" azzera solo lo stato dell'app, non i file " +
|
||||
@@ -60,10 +83,18 @@ public class GuidaForm : Form
|
||||
]),
|
||||
|
||||
new("1. Database",
|
||||
"Carica o aggiorna l'indice \"cad_index.db\" a partire dalle cartelle di primo " +
|
||||
"livello del disco/share (radice di default X:\\). Un pallino verde/rosso indica " +
|
||||
"se un database è caricato. La cartella di lavoro, dove finiscono CSV, \"raw\" e " +
|
||||
"\"step\", si cambia da \"File ▸ Scegli cartella di lavoro...\"."),
|
||||
"All'avvio l'app carica da sola \"cad_index.db\" dalla cartella di installazione. " +
|
||||
"Un pallino verde/rosso indica se un database è caricato.",
|
||||
Passi:
|
||||
[
|
||||
"Pallino rosso (nessun database): premi \"Aggiorna indice\" per scansionare " +
|
||||
"le cartelle di primo livello della share (X:\\) e crearlo. La prima volta " +
|
||||
"richiede qualche minuto, i giri successivi aggiornano solo quello che è " +
|
||||
"cambiato.",
|
||||
"Database da un'altra postazione: \"Apri DB...\" lo carica solo finché non " +
|
||||
"chiudi il programma. Per usarlo sempre, copialo nella cartella di " +
|
||||
"installazione come cad_index.db.",
|
||||
]),
|
||||
|
||||
new("2. Importa Distinta Base",
|
||||
"Due passi in sequenza:",
|
||||
@@ -132,7 +163,8 @@ public class GuidaForm : Form
|
||||
"il database o la cartella di lavoro (restano quelli già impostati in fase 1).",
|
||||
NotaTesto: "Per ripulire le cartelle \"raw\" e \"step\" della cartella di lavoro " +
|
||||
"prima di un nuovo giro (senza toccare l'indice), usa \"File ▸ Pulisci raw e " +
|
||||
"step...\"."),
|
||||
"step...\"; per eliminare i CSV che ogni distinta importata lascia nella " +
|
||||
"cartella di lavoro, usa \"File ▸ Elimina CSV delle distinte...\"."),
|
||||
};
|
||||
|
||||
public GuidaForm()
|
||||
|
||||
@@ -107,7 +107,8 @@ trascinano i `.asm` su Creo Distributed Batch, che scrive in `step/`.
|
||||
fase 1: database e cartella di lavoro restano quelli già caricati, non serve rifare lo scan;
|
||||
"File → Scegli cartella di lavoro..." → `ScegliCartellaLavoro`, cambia in qualunque momento
|
||||
la destinazione di CSV/`raw/`/`step/`; "File → Pulisci raw e step..." svuota le cartelle
|
||||
`raw/`/`step/` nella cartella di lavoro (`PulisciRawEStep`, non tocca l'indice); "Aiuto →
|
||||
`raw/`/`step/` nella cartella di lavoro (`PulisciRawEStep`, non tocca l'indice); "File → Elimina CSV delle
|
||||
distinte..." elimina i `*.csv` direttamente nella cartella di lavoro (`EliminaCsv`); "Aiuto →
|
||||
Guida" (F1) apre `GuidaForm`, sintesi interattiva delle 5 fasi per chi non ha letto questi
|
||||
docs.
|
||||
|
||||
@@ -119,6 +120,9 @@ trascinano i `.asm` su Creo Distributed Batch, che scrive in `step/`.
|
||||
silenziosamente quelli irraggiungibili (share offline/permessi).
|
||||
- `PulisciRawEStep` — svuota `raw/` e `step/` nella cartella di lavoro (manutenzione,
|
||||
richiede conferma).
|
||||
- `EliminaCsv` — elimina i `*.csv` generati dall'import (uno per distinta) nella cartella di
|
||||
lavoro, solo al primo livello; gli `.xls` del gestionale restano (richiede conferma, con
|
||||
l'elenco dei file).
|
||||
- `InizializzaDatabase` / `ScegliDatabase` — localizzazione del DB (sempre `cad_index.db` accanto
|
||||
all'eseguibile; "Apri DB..." ne carica un altro solo per la sessione).
|
||||
- `InizializzaCartellaLavoro` / `ScegliCartellaLavoro` — stesso pattern per la cartella di
|
||||
|
||||
+28
-21
@@ -7,22 +7,29 @@ fase vedi [`architettura.md`](architettura.md); questa guida si ferma a cosa cli
|
||||
cosa vede l'utente. La stessa sintesi è disponibile anche dentro l'app da **Aiuto → Guida**
|
||||
(F1).
|
||||
|
||||
## Installazione
|
||||
## Dove finiscono i file
|
||||
|
||||
1. Lancia `PrepStep-Setup-<versione>.exe` (non servono i diritti di amministratore).
|
||||
2. Alla fine lascia spuntato "Avvia PrepStep - Cevolani", oppure aprilo dal menu Start.
|
||||
Tutto sta nella **cartella di lavoro**, che di default è la cartella di installazione
|
||||
`%LOCALAPPDATA%\Programs\PrepStep`:
|
||||
|
||||
Il programma si installa in `%LOCALAPPDATA%\Programs\PrepStep`. Il database `cad_index.db` sta sempre in questa cartella.
|
||||
| Cosa | Dove |
|
||||
|---|---|
|
||||
| database `cad_index.db` | sempre nella cartella di installazione |
|
||||
| CSV di ogni distinta importata | cartella di lavoro |
|
||||
| `raw/` — file CAD copiati nelle fasi 3-4 | cartella di lavoro |
|
||||
| `step/` — file STEP esportati da Creo | cartella di lavoro (la indichi tu a Creo) |
|
||||
|
||||
Se il programma è già installato, il setup chiede cosa fare:
|
||||
Il file `.xls` del gestionale resta dove l'hai preso: l'app lo legge soltanto.
|
||||
|
||||
- **Sì** — lo aggiorna (o reinstalla): database e cartella di lavoro restano quelli di prima;
|
||||
- **No** — lo disinstalla;
|
||||
- **Annulla** — esce senza fare nulla.
|
||||
|
||||
Per **disinstallarlo** si può anche usare menu Start → "Disinstalla PrepStep - Cevolani", oppure
|
||||
Impostazioni → App installate → PrepStep - Cevolani → Disinstalla (il
|
||||
database `cad_index.db` e le impostazioni non vengono cancellati, vedi sotto).
|
||||
- **Cambiare la cartella di lavoro**: **File → Scegli cartella di lavoro...** (viene ricordata
|
||||
agli avvii successivi). Il database resta comunque nella cartella di installazione.
|
||||
- **Aprire la cartella**: `AppData` è nascosta in Esplora file; scrivi
|
||||
`%LOCALAPPDATA%\Programs\PrepStep` nella barra degli indirizzi (vale anche per scegliere
|
||||
`step/` in Creo). Dalla fase 4 si apre `raw/` con **Apri cartella raw**.
|
||||
- **Fare pulizia** (menu **File**): **Pulisci raw e step...** svuota `raw/` e `step/`;
|
||||
**Elimina CSV delle distinte...** elimina i CSV, che altrimenti si accumulano uno per
|
||||
distinta. Nessuno dei due tocca il database. Entrambi chiedono conferma.
|
||||
- **Disinstallando** il programma questi file restano: cancellali a mano se non servono più.
|
||||
|
||||
## Prima di iniziare
|
||||
|
||||
@@ -36,9 +43,9 @@ database `cad_index.db` e le impostazioni non vengono cancellati, vedi sotto).
|
||||
- Se il file segue la convenzione di nome del gestionale (`DBP_<codice>_<timestamp>`),
|
||||
l'app aggiunge da sola l'assieme generale come componente in più — non serve fare
|
||||
nulla di diverso.
|
||||
- Conviene definire la **cartella di lavoro** giusta (fase 1, o "File → Scegli cartella
|
||||
di lavoro...") prima di importare la distinta: è lì che finiscono CSV, `raw/` e, dopo
|
||||
l'esportazione con Creo, `step/`.
|
||||
- Se non vuoi usare la cartella di installazione, scegli la **cartella di lavoro**
|
||||
("File → Scegli cartella di lavoro...") prima di importare la distinta: è lì che
|
||||
finiscono CSV, `raw/` e, dopo l'esportazione con Creo, `step/`.
|
||||
- Se la cartella di lavoro è già stata usata per un'altra distinta, conviene **pulire
|
||||
`raw/` e `step/`** prima di ripartire ("File → Pulisci raw e step..."): evita di
|
||||
confondere i file CAD/STEP della copia precedente con quelli della nuova distinta (il
|
||||
@@ -47,8 +54,8 @@ database `cad_index.db` e le impostazioni non vengono cancellati, vedi sotto).
|
||||
|
||||
## 1. Database
|
||||
|
||||
Alla prima apertura, se un database (`cad_index.db`) è già stato creato in precedenza,
|
||||
l'app lo ricarica da sola: si vede il pallino verde accanto a "Database", il percorso del
|
||||
Se nella cartella di installazione c'è già un database (`cad_index.db`), l'app lo carica
|
||||
da sola all'avvio: si vede il pallino verde accanto a "Database", il percorso del
|
||||
file e la data dell'ultimo aggiornamento.
|
||||
|
||||
- **Se il pallino è rosso** (nessun database trovato): premi **Aggiorna indice** per
|
||||
@@ -59,10 +66,7 @@ file e la data dell'ultimo aggiornamento.
|
||||
selezionalo a mano. Vale solo finché non chiudi il programma: al prossimo avvio si riparte
|
||||
dal database nella cartella di installazione. Per usarlo sempre, copialo in
|
||||
`%LOCALAPPDATA%\Programs\PrepStep` come `cad_index.db`.
|
||||
- La **cartella di lavoro** (dove l'app scrive il CSV della distinta e la cartella
|
||||
`raw/`) è ricordata tra un avvio e l'altro; la prima volta è la cartella di installazione
|
||||
(`%LOCALAPPDATA%\Programs\PrepStep`); per cambiarla usa
|
||||
**File → Scegli cartella di lavoro...**.
|
||||
- La **cartella di lavoro** non si imposta qui: vedi [Dove finiscono i file](#dove-finiscono-i-file).
|
||||
|
||||
Premi **Avanti** quando il database è caricato.
|
||||
|
||||
@@ -143,3 +147,6 @@ la cartella di lavoro (restano quelli già impostati in fase 1).
|
||||
|
||||
Per ripulire le cartelle `raw/` e `step/` della cartella di lavoro prima di un nuovo giro
|
||||
(senza toccare l'indice), usa **File → Pulisci raw e step...**.
|
||||
|
||||
Ogni distinta importata lascia un CSV nella cartella di lavoro: per eliminarli tutti usa
|
||||
**File → Elimina CSV delle distinte...** (i file `.xls` del gestionale non vengono toccati).
|
||||
Reference in new issue
Block a user