Crear  Editar  FrontPage  Indexes  Buscar  Cambios  History  RSS  Login

tut-treeview-selection-contextmenu

Menús contextuales

Los menús contextuales son menús dependientes del contexto que se despligan cuando el usuario hace click-derecho sobre una lista o árbol, y generalmente le permiten hacer algo con el elemento (o elementos) seleccionado o manipular la lista de alguna forma.

Un click-derecho sobre un TreeView se captura de la misma forma que un click normal con cualquier otro widget, a saber, conectandolo al manejador de señal "button_press_event" del TreeView (que es una señal de Gtk::Widget, y ya que Gtk::TreeView deriva de Gtk::Widget también hereda sus señales). Además, se debería conectar a la señal "popup-menu", para que el usuario pueda acceder al menú contextual sin usar el ratón. La seál "popup_menu" es emitida cuando el usuario pulsa Shift-F10. También hay que asegurarse de que todas las acciones del menú contextual se puedan realizar por otros medio, como el menú principal de la aplicación. Lea el GNOME Human Interface Guidelines (HIG) si quiere más detalles. Teniendo en cuenta que un-poco-de-código-dice-más-que-mil-palabras, aquí hay un poco:

# Crea el ménu 
menu = Gtk::Menu.new

# Agregar un elemento con una respuesta estúpida 
item = Gtk::MenuItem.new("Haz algo!")
item.signal_connect("activate") { puts "Haz algo!" }
menu.append(item)

menu.show_all

# Muestra el menú al hacer doble-click 
view.signal_connect("button_press_event") do |widget, event|
  if event.kind_of? Gdk::EventButton and event.button == 3
    menu.popup(nil, nil, event.button, event.time)
  end
end

# Muestra el menú al pulsar Shift-F10
view.signal_connect("popup_menu") { menu.popup(nil, nil, 0, Gdk::Event::CURRENT_TIME) }
Ultimas actualizaciones:2011/06/11 03:00:54
Clave:
Referencias:[tut-treeview]