RubyLit - Ruby.del.litoral!
Status Bar

El widget statusbar se utiliza para poner información de contexto, generalmente se pone en la parte de abajo de la pantalla, pero puede ubicarse en cualquier lugar.

Para crear una statusbar se debe realizar una llamada a new de la siguiente manera:


sb = Gtk::StatusBar.new

Hay que tener en cuenta que los mensajes se apilan en un contexto determinado, pudiendo apilarse y desapilarse del mismo.

Es posible declarar varios contextos, un contexto se declara de la siguiente manera


contexto = sb.get_context_id("contexto_ayuda")

Para poner un mesaje en la barra de estado se debe seguir la siguiente secuencia.


sb = Gtk::Statusbar.new    
contexto_menu = sb.get_context_id("ayuda_menu")
sb.push(contexto_menu ,"Cerrar el programa")

El siguiente programa es un ejemplo completo de como usar dos contextos para poner y sacar mensajes.


require 'gtk2'

class Mi_app < Gtk::VBox
    def initialize()
        super()
        sb = Gtk::Statusbar.new    
        context1 = sb.get_context_id("bienvenida")
        context2 = sb.get_context_id("despedida")

        bt1 = Gtk::Button.new("push contexto 1")
        bt2 = Gtk::Button.new("pop contexto 1")
        bt3 = Gtk::Button.new("push contexto 2")
        bt4 = Gtk::Button.new("pop contexto 2")

        @contador=0

        bt1.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) do
            @contador+=1
            sb.push(context1 ,"hola Ruby #{@contador}")
        end

        bt2.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) do
            sb.pop(context1)
        end

        bt3.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) do
            lang = ["java","perl","php","python","tcl"]
            @contador+=1
            sb.push(context2 ,"chau #{lang[(@contador%5)]} #{@contador}")
        end

        bt4.signal_connect( "button_press_event", Gdk::Event::BUTTON_PRESS ) do
            sb.pop(context2)
        end

        pack_start( bt1, false, false, 3)
        pack_start( bt2, false, false, 3)
        pack_start( Gtk::HSeparator.new, false, false, 15)
        pack_start( bt3, false, false, 3)
        pack_start( bt4, false, false, 3)

        pack_end( sb, false, false, 0)

    end
end

if $0 == __FILE__
    class Viewer < Gtk::Window
        def initialize()
            super()
            set_title("Status Bar") 
            set_window_position(Gtk::Window::POS_CENTER)
            signal_connect("delete_event") { |i,a| Gtk::main_quit }
            set_default_size(300, 150)
            add(Mi_app.new)
        end
    end

    Gtk.init()

    view = Viewer.new
    view.show_all

    Gtk.main()
end

pacquiao vs marquez Philippine Travel Travel Asia home ideas Fifa World Cup pacquiao vs marquez tickets donaire vs narvaez cotto vs margarito donaire vs narvaez tickets cotto vs margarito live streaming essay writing guide cotto vs margarito tickets st-pierre vs diaz st-pierre vs diaz tickets pacquiao vs marquez velasquez vs dos santos velasquez vs dos santos tickets