# Ruby & Gtk::CellRendererToggle

**URL:** <https://www.ruby-forum.com/t/ruby-gtk-cellrenderertoggle/147196>\
**Category:** IT\
**Created:** [August 29, 2008, 9:09am UTC](https://www.ruby-forum.com/t/ruby-gtk-cellrenderertoggle/147196 "2008-08-29T09:09:11Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![daneel\_olivaw](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/d/58f4c7/32.png) [@daneel\_olivaw](https://www.ruby-forum.com/u/daneel_olivaw)\
**Post date:** [August 29, 2008, 9:09am UTC](https://www.ruby-forum.com/t/ruby-gtk-cellrenderertoggle/147196/1 "2008-08-29T09:09:11Z")

</div>

Buongiorno lista.  
Dopo aver capito come fare per visualizzare i dati di una tabella (mi Ã¨  
sembrato di giocare col Lego: questo va dentro a quello che ha dentro  
quest’altro, ecc. 🙂 ), avevo intenzione di aggiungere una check box in  
modo che l’utente potesse selezionare i dati voluti ed eventualmente  
elaborarli. Ho quindi usato Gtk::CellRendererToggle e l’ho agganciato  
alla Gtk::TreeView. La tabella si vede esattamente come la voglio, solo  
che non riesco a capire come fare per “collegare” meglio i dati; mi  
spiego: poniamo che la TreeView si chiami vista, ebbene, richiamando  
vista.selection.selected[0] (o 1, 2, ecc.) riesco a vedere il valore del  
dato selezionato, perÃ² non c’Ã¨ verso di richiamare il valore del check  
box per sapere se Ã¨ true o false… ma potrebbe essere un problema  
secondario.  
Quello che mi preme di piÃ¹ Ã¨ capire come correlare la casella del check  
box a solo quella riga di dati in cui Ã¨: sono riuscito a fare in modo  
che premendo sulla casella questa si selezioni (o deselezioni), ma poi  
se passo (basta il semplice passaggio senza clic) col mouse sopra alle  
altre caselle, queste ne assumono lo stesso stato, come se fossero un  
unico oggetto (e forse Ã¨ cosÃ¬…).

Questo Ã¨ il codice che ho scritto (sÃ¬, coi sono alcuni “puts” di  
controllo e alcuni passaggi sono superflui, ma per verifica e sicurezza  
ho preferito fare cosÃ¬, in caso poi quando tutto Ã¨ a posto semplifico):

rendersel Ã¨ la CellRendererToggle

rendersel.signal\_connect(“toggled”) {  
valore = rendersel.active?  
puts valore  
valoreinverso = !valore  
puts valoreinverso  
rendersel.active = (valoreinverso)  
}

Che come risultato Ã¨ uguale a questo (se non ho fatto scemate in fase di  
controllo):

rendersel.signal\_connect(“toggled”) {  
if rendersel.active = true  
rendersel.active = false  
elsif rendersel.active = false  
rendersel.active = true  
end  
}

Forse devo specificargli di prendere esclusivamente la casella della  
riga selezionata selezionata? Ma in questo caso come si fa? Ho cercato  
esempi, ma non ho trovato niente di utile… eppure non mi pare che sia  
una funzione esotica… forse Ã¨ cosÃ¬ semplice che solo io non sono  
riuscito a capÃ²ire come funziona (e non mi meraviglierei se cosÃ¬ fosse)?  
🙂

Come sempre grazie per l’aiuto, sperando di farvi vedere il frutto dei  
vostri aiuti al piÃ¹ presto 🙂

Daneel O.
