[ruby-gnome2-doc-cvs] [Hiki] update - tut-treeview-model-add

Back to archive index

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


-------------------------
REMOTE_ADDR = 200.216.145.78
REMOTE_HOST = 
        URL = http://ruby-gnome2.sourceforge.jp/pt_BR/?tut-treeview-model-add
-------------------------
  = Adicionando Linhas a um Armazenador
  {{link "tut-treeview-model-reference", "tut-treeview-model", "tut-treeview", "tut-treeview-model-manipulate"}}
  
  == Adicionando Linhas a um Armazenador de Lista
  
  As linhas s$BeP(B adicionadas a um armazenador de lista com Gtk::ListStore#append. Isso inseriruma nova linha vazia no final da lista. Existem outros m$BqU(Bodos, documentados na documenta$Bne(Bo de refer$BsO(Bcia de Gtk::ListStore, que dmais controle sobre exatamente onde a nova linha inserida, mas como eles funcionam de maneira parecida ao Gtk::ListStore#append e s$BeP(B bastante diretos de usar, n$BeP(B trataremos com eles aqui.
  
  Eis um exemplo simples de como criar um armazenador de lista e adicionar uma linha vazia a ele:
  
   liststore = Gtk::ListStore.new(String)
  
   # Adicionar uma linha vazia ao armazenador de lista. O "iter" apontarpara a nova linha.
   iter = liststore.append
  
  Isso sozinho n$BeP(B de muito uso ainda, claro. N$B(B adicionaremos dados as linhas na pr$B(Bima se$Bne(Bo. 
  
  == Adicionando Linhas a um Armazenador de $BAr(Bvore
  
  Adicionar linhas a um armazenador de $Bar(Bvore funciona de maneira parecida com adicionar linhas a um armazenador de lista, a $Bzn(Bica coisa que o Gtk::TreeStore#append o m$Bit(Bodo usado e mais um argumento exigido, especificamente o "iter" de $Bar(Bvore para pai da linha que serinserida. Se vocfornecer nil em vez de fornecer um "iter" de $Bar(Bvore de outra linha, uma nova linha de n$Bmv(Bel superior serinserida. Se vocfornecer um "iter" de $Bar(Bvore pai, a nova linha vazia serinserida ap$Bss(B qualquer filho que jexista do pai. De novo, existem outras maneiras de inserir uma linha em um armazenador de $Bar(Bvore e elas est$Bco(B documentadas na documenta$Bgc(Bo de refer$Bjn(Bcia de Gtk::TreeStore. Outro exemplo curto:
  
   treestore = Gtk::TreeStore.new(String)
  
   # Adiciona uma linha vazia de n$Bmv(Bel superior ao armazenador de $Bar(Bvore. 
   parent_iter = treestore.append(nil)
  
   # Adiciona um filho a linha que acabamos de adicionar.
   child_iter = treestore.append(parent_iter)
  
  == Problemas de Performance ao Adicionar muitas Linhas
  
  Um caso comum que um model precisa ser preenchido com um bocado de linhas em algum momento, seja no in$Bmc(Bio ou quando algum arquivo for aberto. Um caso igualmente comum que isso leva um terr$Bmv(Bel tmepo longo, mesmo em m$Baq(Buinas poderosas, uma vez que o model contenha mais que alguns milhares de linhas, com uma taxa de inser$Bgc(Bo que vai diminuindo exponencialmente. Existem algumas coisas que vocpode fazer para contornar esse problema e acelerar um pouco as coisas.
  
  Primeiramente, vocdeve certificar-se que a ordena$Bgc(Bo estdesabilitada enquanto vocestfazendo a sua inser$Bgc(Bo em massa, de outra maneira o seu armazenador poderser reordenado ap$Bss(B cada inser$Bgc(Bo de linha simples, o que vai ser qualquer coisa, menos r$Bap(Bido..
  
  Segundo, vocn$Bco(B deve manter um monte de refer$Bjn(Bcias de linha de $Bar(Bvore se voctem tantas linhas, porque com cada inser$Bgc(Bo (ou remo$Bgc(Bo), cada refer$Bjn(Bcia de linha de $Bar(Bvore precisarchecar se o seu caminho precisa ser atualizado ou n$Bco(B.





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