Criar  Editar  FrontPage  Índices  Buscar  Alterações  History  RSS  Back  Login

tut-treeview-components Diff - Ruby-GNOME2 Project Website

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

= Componentes: Model, Renderer, Coluna, View
{{link "tut-treeview-intro", nil, "tut-treeview", "tut-treeview-model"}}

O conceito mais importante sob o Gtk::TreeView é o da separação completa entre os dados e como esses dados são mostrados na tela. Isso é comumente conhecido como design "Model/View/Controller" (MVC). Os dados de vários tipos (strings, números, imagens, etc.) são armazenados em um 'model'. O 'view' é então dito qual dado deve mostrar, onde mostrá-lo, e como mostrá-lo. Uma das vantagens desse modo é que você pode ter múltiplos views que mostram o mesmo dado (uma árvore de diretório por exemplo) de maneiras diferentes, ou da mesma maneira múltiplas vezes, com apenas uma cópia dos dados abaixo. Isso evita a duplicação de dados e esforço de programação se os mesmos dados forem reutilizados em contextos diferentes. Também, quando os dados no "model" são atualizados, todos os views automaticamente são atualizados também.

Assim, quando o Gtk::TreeModel é usado para armazenar os dados, existem outros componentes que determinam quais dados devem ser mostrados no the Gtk::TreeView e como eles devem ser mostrados. Esses componentes são o Gtk::TreeViewColumn e o Gtk::CellRenderer. A Gtk::TreeView é feita de colunas de "tree view". Essas são colunas que os usuários percebem como colunas. Elas têm um cabeçalho de coluna clicável com um título de coluna que pode ser escondido, e pode ser redimensionado e ordenado. Colunas de "tree view" não mostram qualquer dado, eles são apenas usados como um utilitário para representar o lado do usuário do "tree view" (ordenar, etc.) e servem como componentes de posicionamento para os componentes que realmente fazem a renderização dos dados na tela, especificamente os objetos da família de Gtk::CellRenderer (Eu os chamo de 'objetos' porque eles não são ((<Gtk::Widgets|Gtk::Widget>))). Existem um número diferente de renderizadores de células que se especializam em renderizar certos dados como strings, pixbufs, ou botões "toggle". Mais sobre isso depois.

Os renderizadores de células são posicionados dentro de colunas de "tree view" para mostrar os dados. Uma coluna de "tree view" precisa conter pelo menos um renderizador de células, mas pode conter múltiplos renderizadores de células. Por exemplo, se alguém quisesse mostrar uma coluna de 'Nome de Arquivo' onde cada nome de arquivo tivesse um pequeno ícone na esquerda indicando o tipo de arquivo, ele precisaria posicionar um Gtk::CellRendererPixbuf e um Gtk::CellRendererText em uma coluna de "tree view". Posicionar os renderizadores em uma coluna de "tree view" é similar a posicionar os componentes em uma caixa Gtk::HBox.