I am using GTK bindings for Go.
Trying to connect a gtk.RadioButton
toggle
signal to a function. This code works fine:
...
radioButton.Connect("toggled", doRadioToggle)
func doRadioToggle() {
fmt.Println("toggled")
}
...
When radioButton is toggled, doRadioToggle is called - Good.
But I want to connect to a function that takes a parameter, for example:
func doRadioToggle(button *gtk.RadioButton) {
fmt.Println(button.GetState())
}
The gtk.go.Connect()
function has this signature:
func (v *Widget) Connect(s string, f interface{}, datas ...interface{})
Based on what I know from gtkmm, I tried code like this (the go binding has apparently greatly simplified the call to connect())
radioButton.Connect("toggled", doRadioToggle, radioButton)
The third argument passed inconnect()
- radioButton
- corresponding todatas
in
gtk.Connect(s string, f interface{}, datas ...interface{})
which I understood to mean data arguments to be passed to the slot.
But with this code, the doRadioToggle() handler never gets called, and I immediately exit with a panic:
panic: reflect: Call using *glib.CallbackContext as type *gtk.RadioButton
My question: How do I set up slot (event handler) that takes parameters using gtk.go.Connect()?