Pregunta

Estoy creando una aplicación con paneles en Rubí / GTK. Cuando se cambia el tamaño de los cristales, lo que necesito hacer algunas cosas. Pero no puedo averiguar qué señal a utilizar. Creo que es 'accept_position' - pero no parece funcionar. Esta es una aplicación de ejemplo que ilustra mi problema ...

#!/usr/bin/env ruby

require 'gtk2'

window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
window.set_title  "Panes"
window.border_width = 10
window.set_size_request(225, 150)
window.signal_connect('destroy') { Gtk.main_quit }
window.signal_connect('delete_event') { false }

button1 = Gtk::Button.new("Resize")
button2 = Gtk::Button.new("Me")

button1.signal_connect( "clicked" ) { window.destroy }
button2.signal_connect( "clicked" ) { window.destroy }

paned = Gtk::VPaned.new
paned.add1(button1)
paned.add2(button2)

paned.signal_connect( "accept_position" ) { 
 puts "hello"
 false
}

window.add(paned)
window.show_all
Gtk.main 

La llamada 'accept_position' nunca se dispara. Cualquier idea de lo que está causando este / cómo solucionarlo?

¿Fue útil?

Solución

'accept_position' es una señal de combinación de teclas, solamente emite cuando el panel se cambia el tamaño usando el teclado.

No sé Ruby, pero en C la señal que desea es 'notify::position'. notify es una señal GObject que dispara cada vez que una propiedad cambia su valor. Si agrega un detalle , como position, a nombre de la señal cuando se conecta, entonces sólo se activa cuando que específica propiedad cambia su valor.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top