Avalonia solo in codiceEnglish

Dalla documentazione di RAVAL, la libreria MIT dei libri: la stessa che sta nel suo repository.

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);
MembroFa
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 · Detailsi testi, in inglese; un programma in italiano li cambia una volta all'avvio
Openingogni dialogo prima che si apra (prove, log delle domande, ritocchi)
RDialogBox: Answer · Pick(i) · Buttons · Input · Bodyla risposta (−1 finché non si preme); premere un bottone da codice; i bottoni; la casella di Ask; il contenuto (per una figura)
RDialogKindInfo «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

MembroFa
OpenAsync(controllo, titolo, tipi...) · OpenManyAsyncil 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
LastFolderdove 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.

MembroFa
SetText · GetTextun testo negli appunti; il testo che c'è (null se non c'è)
SetTable(righe) · GetTablerighe 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 · GetImageun'immagine (un grafico: RImage.Render(grafico, l, a, 192))
SetFiles(percorsi) · GetFilesfile da incollare in una cartella del sistema; i file copiati, come percorsi
Clearsvuota gli appunti

Il trascinamento — UI\RDrop.cs

MembroFa
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 dropareadrop 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. Answer vale −1 finché non si preme un bottone.
  • I percorsi come testo: un programma da scrivania scrive con StreamWriter, non con IStorageFile. 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.