From the documentation of RAVAL, the MIT library of the books: the same as in its repository.
This page is available in Italian only for now.
Dialoghi, file, appunti e trascinamento — RAVAL 2.6
Le domande all'utente e la scelta dei file, ciascuna in una chiamata con await. Spiegazione con l'esempio completo (ESEMPI_RAVAL\Esempi\Appunti.cs, un blocco note): TUTORIAL.md, capitolo 18. Ogni membro, con la sua firma, è nel riferimento API.md. Le prove sono in TEST_RAVAL\ProveDialoghi.cs.
I dialoghi — UI\RDialog.cs
await RDialog.Info(this, "Salvato.");
if (await RDialog.Confirm(this, "Eliminare «Preventivo 42»?", "Elimina")) ...
string? nome = await RDialog.Ask(this, "Nome della copia", "Preventivo 43");
int a = await RDialog.Choose(this, RDialogKind.Warning, "Non salvato", "Salvare?", "Annulla", "Scarta", "Salva");
await RDialog.Error(this, "Salvataggio non riuscito", e);
| Membro | Fa |
|---|---|
Info · Warning · Error(testo, eccezione) | un messaggio con «OK»; Error mette l'eccezione sotto «Details» e la scrive nel log |
Confirm(domanda, sì) | «Cancel» e il bottone che conferma: true solo se premuto |
Ask(domanda, iniziale) | una casella già riempita e selezionata: il testo, o null |
Choose(tipo, titolo, testo, bottoni...) | l'indice del bottone premuto, −1 per Esc o la crocetta |
Show(controllo, RDialogBox) | un dialogo costruito dal chiamante, con un controllo suo sotto il testo |
Ok · Cancel · InfoTitle · WarningTitle · ErrorTitle · ConfirmTitle · InputTitle · Details | i testi, in inglese; un programma in italiano li cambia una volta all'avvio |
Opening | ogni dialogo prima che si apra (prove, log delle domande, ritocchi) |
RDialogBox: Answer · Pick(i) · Buttons · Input · Body | la risposta (−1 finché non si preme); premere un bottone da codice; i bottoni; la casella di Ask; il contenuto (per una figura) |
RDialogKind | Info «i» blu, Warning «!» arancio, Error «×» rosso, Question «?» blu |
Il primo argomento è un controllo qualunque della finestra, che deve già esserci (se no InvalidOperationException). L'ultimo bottone è quello di Invio, con il colore d'accento.
I file — UI\RFiles.cs
| Membro | Fa | ||
|---|---|---|---|
OpenAsync(controllo, titolo, tipi...) · OpenManyAsync | il percorso del file scelto (null se nessuno), o la lista; tipi come «CSV\ | *.csv», «Immagini\ | .png;.jpg» |
SaveAsync(controllo, titolo, nome, tipi...) | il percorso dove salvare; chiede prima di sostituire, aggiunge l'estensione del primo tipo | ||
FolderAsync(controllo, titolo) | una cartella | ||
LastFolder | dove si apre il selettore successivo: la cartella dell'ultimo file scelto | ||
Types(tipi...) | i FilePickerFileType di Avalonia da quei testi | ||
ReadText(percorso) · WriteText(percorso, testo) | un file di testo intero; la scrittura in UTF-8 senza BOM, via un temporaneo rinominato, con la cartella creata se manca |
Gli appunti — UI\RClipboard.cs
Spiegati nel capitolo 19 del tutorial, con l'esempio ESEMPI_RAVAL\Esempi\Scambio.cs; prove in TEST_RAVAL\ProveAppunti.cs.
| Membro | Fa |
|---|---|
SetText · GetText | un testo negli appunti; il testo che c'è (null se non c'è) |
SetTable(righe) · GetTable | righe di celle con le tabulazioni, come le copia e le incolla un foglio di calcolo |
Tsv(righe) · Cells(testo) | gli stessi passaggi su un testo: tabulazioni e a capo dentro una cella diventano spazi; l'ultima riga vuota dei fogli si toglie |
SetImage · GetImage | un'immagine (un grafico: RImage.Render(grafico, l, a, 192)) |
SetFiles(percorsi) · GetFiles | file da incollare in una cartella del sistema; i file copiati, come percorsi |
Clear | svuota gli appunti |
Il trascinamento — UI\RDrop.cs
| Membro | Fa |
|---|---|
RDrop.Files(controllo, Metodo, modelli...) | i file lasciati sul controllo arrivano al metodo come percorsi, solo quelli che corrispondono ai modelli («*.csv», «misura?.s2p»; nessuno: tutti) |
RDrop.Text(controllo, Metodo) | un testo lasciato sul controllo |
Accepts(percorso) · Deliver(percorsi) | se un nome va bene; i percorsi consegnati come in un rilascio (prove, un «Apri» che riusa il metodo) |
Stop() | il controllo non accetta più niente |
le classi drop e droparea | drop mentre sopra c'è qualcosa di accettato; con RStyles.Clean un Border.droparea ha il bordo grigio, e con drop blu con lo sfondo azzurrino |
Il puntatore mostra «copia» solo se almeno un file corrisponde, «vietato» altrimenti. Un trascinamento vero non si prova senza schermo: le prove controllano modelli e consegna.
Perché sono fatti così
- La risposta è nel dialogo, non nel valore di
Close:ShowDialog<int>dà 0 quando la finestra si chiude con la crocetta, lo stesso valore del primo bottone.Answervale −1 finché non si preme un bottone. - I percorsi come testo: un programma da scrivania scrive con
StreamWriter, non conIStorageFile. Un file che non ha un percorso sul disco (telefono, sandbox) dànull. - L'errore anche nel log: un riquadro chiuso con «OK» non lascia traccia; la riga del log sì.
- Il foglio di calcolo come formato degli appunti: le tabulazioni vanno e tornano da qualunque foglio.
- Il bordo del riquadro dallo stile: un valore scritto sul controllo vince su ogni stile, anche su
drop.