Aggiunte multiple anziché singolo [GTK2HS
-
11-11-2019 - |
Domanda
Ho un altro problema che non riesco a risolvere
Ho un codice seguente che aggiunge un utente (nome, cognome ed età) in un albero. Funziona tutto bene tranne una piccola cosa: funziona bene solo quando si aggiunge un utente per la prima volta. Quando si preme Aggiungi e quindi provi ad aggiungere un altro utente, tenterà di aggiungere 2 utenti, quindi 3, 4 e così via, aumentando con ogni aggiunta. Ecco il codice che cattura l'evento Click:
onClicked (dodajUczBt gui) (dodajUcz gui dbh stores)
Ed ecco la funzione dodajUcz
che gestisce il clic:
dodajUcz gui dbh stores =
do entrySetText (nImie gui) ""
entrySetText (nNazwisko gui) ""
entrySetText (nWiek gui) ""
onClicked (cancelAddUczBt gui) (widgetHide (dodajUzDialog gui))
onClicked (zapiszUczBtn gui) procADD
windowPresent (dodajUzDialog gui)
where procADD = do
ucz <- getUczestnik
let store = uczestnicy stores
New.listStoreAppend store ucz
dlugosc <- New.listStoreGetSize store
labelSetText (lblLiczbaUcz gui) $ "Liczba uczestników: "++ show dlugosc
widgetHide (dodajUzDialog gui)
addUser ucz dbh
getUczestnik = do
imie <- entryGetText (nImie gui)
nazwisko <- entryGetText (nNazwisko gui)
wiek <- entryGetText (nWiek gui)
let wiek' = read wiek :: Integer
return $ Uczestnik 0 imie nazwisko wiek' False
Uczestnik
è un tipo di dati algebrici e addUser
è una funzione che aggiunge un Uczestnik
nel database. La GUI è anche un tipo di dati algebrici GUI
, che contiene tutti gli elementi della GUI creati da castToXml
Me lo sembra widgetHide
è il problema principale, perché anche se non fai nulla (basta aprire la finestra di dialogo e quindi chiuderla) proverà ad aggiungere 2 utenti la prossima volta che lo aprirai.
Qualche idea su come risolvere questo problema? Qualsiasi aiuto sarebbe molto apprezzato :)
Nessuna soluzione corretta