[ruby-gnome2-doc-cvs] [Hiki] create - tut-treeview-renderer-renderer

Back to archive index

ruby-gnome2-hiki-pt_BR****@sourc***** ruby-gnome2-hiki-pt_BR****@sourc*****
2004年 4月 10日 (土) 20:29:46 JST


-------------------------
REMOTE_ADDR = 200.216.145.78
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-treeview-renderer-renderer
-------------------------
= Renderizadores de C$BqM(Bula
{{link "tut-treeview-renderer", "tut-treeview-renderer", "tut-treeview", "tut-treeview-renderer-attributes"}}

Diferentes renderizadores de c$BqM(Bula existem para diferentes prop$B(Bitos:

* Gtk::CellRendererText renderiza valores de strings ou numbers ou boolean como strings de texto ("Silva", "99.32", "true")
* Gtk::CellRendererPixbuf usado para mostrar imagens; imagens definidas pelo usu$BaS(Bio ou um dos $ByD(Bones de estoque inclu$ByE(Bos.
* Gtk::CellRendererToggle mostra um valor boolean na forma de uma caixa de verifica$Bne(Bo ("check box") ou como um "radio button".
* Gtk::CellEditable uma c$BqM(Bula especial que implementa c$BqM(Bulas edit$BaW(Beis (i.e., Gtk::Entry ou Gtk::SpinButton em um "tree view")

Contrariamente a o que algu$BqN(B poderia pensar, um renderizador de c$BqM(Bula n$BeP(B renderiza apenas uma $B(Bica c$BqM(Bula, mas respons$BaW(Bel por renderizar parte ou tudo de uma coluna de "tree view" para cada linha. Ele basicamente inicia na primeira linha e renderiza a sua parte da coluna l Ent$BeP(B ele vai para a pr$B(Bima linha e renderiza a sua parte lnovamente. E assim por diante.

Como um renderizador de c$BqM(Bula sabe o que renderizar ? Um objeto de renderizador de c$BqM(Bula tem certas 'propriedades' que est$BeP(B na documenta$Bne(Bo de refer$BsO(Bcia (exatamente igual a maioria dos outros objetos e componentes). Essas propriedades determinam o que o renderizador de c$BqM(Bula vai renderizar e como serrenderizado. Sempre que o renderizador de c$BqM(Bula chamado para renderizar uma certa c$BqM(Bula, ele olha nas suas propriedades e renderiza a c$BqM(Bula de acordo. Isso significa que sempre que vocconfigurar uma propriedade ou alterar uma propriedade de um renderizador de c$BqM(Bula, isso afetartodas as linhas que ser$BeP(B renderizadas ap$B(B a altera$Bne(Bo, atque vocaltere a propriedade novamente.

Eis um exemplo simples e sem grande utilidade que demonstra esse comportamento e introduz algumas das propriedades mais comumente utilizadas de Gtk::CellRendererText:

  require 'gtk2'

  treestore = Gtk::TreeStore.new(String, String)
                                                                                                                               
  # Adiciona uma linha de n$ByW(Ble superior e a deixa vazia
  parent = treestore.append(nil)
                                                                                                                               
  # Adiciona um filho a linha de n$ByW(Bel superior e o preenche com alguns dados
  iter = treestore.append(parent)
  iter[0] = "Jos
  iter[1] = "Silva"
                                                                                                                               
  # Adiciona um segundo filho a linha de n$ByW(Bel superior e o preenche com alguns dados
  iter = treestore.append(parent)
  iter[0] = "Ana"
  iter[1] = "Maria"
                                                                                                                               
  view = Gtk::TreeView.new(treestore)
  view.selection.mode = Gtk::SELECTION_NONE                                                                                                                               
                                                                                                                               
  # Cria um renderizador e configura a propriedade 'text'
  renderer = Gtk::CellRendererText.new
  renderer.text = "Boooo!"
                                                                                                                               
  # Adiciona uma coluna usando o nosso renderizador
  col = Gtk::TreeViewColumn.new("Primeiro Nome", renderer)
  view.append_column(col)
                                                                                                                                                                                                                                                               
  # Cria outro renderizador e configura a propriedade 'background'
  renderer = Gtk::CellRendererText.new
  renderer.background = "orange"
                                                                                                                               
  # Adiciona uma coluna usando o segundo renderizador
  col = Gtk::TreeViewColumn.new("Segudo Nome", renderer)
  view.append_column(col)
                                                                                                                               
  Gtk.init
                                                                                                                               
  window = Gtk::Window.new(Gtk::Window::TOPLEVEL)
  window.signal_connect("delete_event") { Gtk.main_quit; exit! }
  window.add(view)
  window.show_all
                                                                                                                               
  Gtk.main

{{image_right "renderer.png"}}

Parece que a tela do "tree view" estparcialmente correta e parcialmente incompleta. Por um lado o "tree view" renderiza o n$B(Bero correto de linhas (note como n$BeP(B existe laranja ou "orange" na direita ap$B(B a linha 3), e ele mostra a hierarquia corretamente (na esquerda), mas n$BeP(B mostra qualquer dos dados que armazenamos no "model". Isso porque n$BeP(B fizemos conex$BeP(B entre o que os renderizadores de c$BqM(Bula devem renderizar e os dados no "model". N$B(B simplesmente configuramos algumas propriedades de renderizador de c$BqM(Bula durante a inicializa$Bne(Bo, e o renderizador de c$BqM(Bula adere meticulosamente a aquelas propriedades configuradas.





ruby-gnome2-cvs メーリングリストの案内
Back to archive index