[ruby-gnome2-doc-cvs] [Hiki] update - tut-gtk2-packing-demo

アーカイブの一覧に戻る

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 11日 (日) 12:47:21 JST


-------------------------
REMOTE_ADDR = 200.216.145.78
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-gtk2-packing-demo
-------------------------
  = Programa de Demonstra$Bgc(Bo de Posicionamento
  {{link "tut-gtk2-packing-box-details", "tut-gtk2-packing-intro", "tut-gtk", "tut-gtk2-packing-tables"}}
  
    #!/usr/bin/env ruby
  
    require 'gtk2'
  
    # Cria uma nova caixa hbox preenchida com bot$B(Bs-r$B(Bulos. Os areumentos para Gtk::HBox.new e 
    # Gtk::Box#pack_start em que estamos interessados s$BeP(B passados para este m$BqU(Bodo.
    def make_box(homogeneous, spacing, expand, fill, padding)
        box = Gtk::HBox.new(homogeneous, spacing)
        
        "Gtk::Box#pack_start (button, #{expand}, #{fill}, #{padding})".split(/ /).each do |s|
            button = Gtk::Button.new(s)
            box.pack_start(button, expand, fill, padding)
        end
        box
    end
  
    # "Parse" o argumento de linha de comando.
    which = ARGV.shift
    unless which
        $stderr.puts "uso: #{$0} num"
        $stderr.puts "	onde num 1, 2, ou 3."
        exit 1
    end
  
    # N$BeP(B esque$BmB(B de inicializar a Ruby/GTK2!
    Gtk.init
  
    # Cria a janela principal.
    window = Gtk::Window.new
    
    # Vocdeve sempre lembrar-se de conectar o sinal delete_event
    # a janela principal. Isso bastante importante para comportamento intuitivo apropriado.
    window.signal_connect("delete_event") do
        Gtk::main_quit
        false
    end
    window.border_width = 10
  
    # A gente cria uma caixa vertical (vbox) e posiciona as caixas horizontais dentro (criado por make_box).
    # Isso nos permite empilhar as caixas horizontais preenchidas com bot$B(Bs uma sobre a outra nesta vbox.
    box1 = Gtk::VBox.new(false, 0)
  
    case which.to_i
    when 1
        # Cria e alinha um novo r$B(Bulo ao lado esquerdo.  
        # Discutiremos esta fun$Bne(Bo e outras na se$Bne(Bo sobre atributos de componentes.
        label = Gtk::Label.new("Gtk::HBox.new(false, 0)")
        label.set_alignment(0, 0)
        box1.pack_start(label, false, false, 0)
  
        # As primeiras 2 entradas s$BeP(B para os par$BcN(Betros homog$BsO(Beo e espa$BmB(Bmento para Gtk::HBox.new.
        # As 3 $B(Btimas entradas s$BeP(B para os argumentos "expandir", "preencher" e espa$BmP(B_externo para Gtk::HBox#pack_start.
        [
            [false, 0, false, false, 0],
            [false, 0, true,  false, 0],
            [false, 0, true,  true,  0],
        ].each do |args|
            # Cria uma caixa horizontal com os par$BcN(Betros especificados 
            # e o posiciona acima da caixa vertical.
  
            box2 = make_box(*args)
            box1.pack_start(box2, false, false, 0)
        end
  
        # Insere um separador na caixa vertical.
        separator = Gtk::HSeparator.new
        box1.pack_start(separator, false, true, 5)
  
        # Mesmo do anterior.
        label = Gtk::Label.new("Gtk::HBox.new(true, 0)")
        label.set_alignment(0, 0)
        box1.pack_start(label, false, false, 0)
        [
            [true, 0, true, false, 0],
            [true, 0, true, true,  0],
        ].each do |args|
            box2 = make_box(*args)
            box1.pack_start(box2, false, false, 0)
        end
  
        separator = Gtk::HSeparator.new
        box1.pack_start(separator, false, true, 5)
  
    when 2
        label = Gtk::Label.new("Gtk::HBox.new(false, 10)")
        label.set_alignment(0, 0)
        box1.pack_start(label, false, false, 0)
  
        [
            [false, 10, true, false, 0],
            [false, 10, true, true,  0],
        ].each do |args|
            box2 = make_box(*args)
            box1.pack_start(box2, false, false, 0)
        end
  
        separator = Gtk::HSeparator.new
        box1.pack_start(separator, false, true, 5)
  
        label = Gtk::Label.new("Gtk::HBox.new(false, 0)")
        label.set_alignment(0, 0)
        box1.pack_start(label, false, false, 0)
  
        [
            [false, 0, true, false, 10],
            [false, 0, true, true,  10],
        ].each do |args|
            box2 = make_box(*args)
            box1.pack_start(box2, false, false, 0)
        end
  
        separator = Gtk::HSeparator.new
        box1.pack_start(separator, false, true, 5)
  
    when 3
        # Isto demonstra a habilidade de usar Gtk::Box#pack_end para justificar
        # a direita os componentes. Primeiramente, a gente cria uma nova caixa como antes.
        box2 = make_box(false, 0, false, false, 0);
  
        # Cria um r$B(Bulo que sercolocado no fim.
        label = Gtk::Label.new("fim")
        box2.pack_end(label, false, false, 0)
        box1.pack_start(box2, false, false, 0)
  
        # Um separador para o bot$BeP(B.
        separator = Gtk::HSeparator.new
  
        # Isto explicitamente configura o separador para 400 pixels de largura por 5 de altura.
        # Isto para que a caixa hbox que a gente criou seja tamb$BqN(B 400 pixels de largura,
        # e o r$B(Bulo "fim" seja separado dos outros r$B(Bulos na caixa hbox.
        # De outra maneira, todos os componentes na hbox seriam posicionados t$BeP(B pr$B(Bimos 
        # uns dos outros quanto poss$ByW(Bel. 
  
        separator.set_size_request(400, 5)
        box1.pack_start(separator, false, true, 5)
    end
  
    # Cria uma nova caixa box, e posiciona um bot$BeP(B 'Sair' a ela.
    # Esse bot$BeP(B pode ser usado para terminar o programa, exatamente como o X da janela.
    quitbox = Gtk::HBox.new(false, 0)
    button = Gtk::Button.new("Sair")
    button.signal_connect("clicked") do
        Gtk.main_quit
    end 
  
    quitbox.pack_start(button, true, false, 0)
    box1.pack_start(quitbox, true, false, 0)
    window.add(box1)
  
    # Mostra todos os componentes.
    window.show_all
  
    # Como sempre, a gente termina ao entrar no loop principal, com Gtk.main.
    Gtk.main





ruby-gnome2-cvs メーリングリストの案内
アーカイブの一覧に戻る