Explicação
Trabalhar com as colunas do formato correto, muitas vezes pode facilitar bastante nossa vida. Para quem precisa criar uma coluna do tipo TYPE_DOUBLE, já percebeu que as casas decimais nunca estão no formato correto. Para podermos contornar isso temos um sinal da classe GtkCellLayout que é atribuído pelo método set_cell_data_func(). Com ele podemos executar uma função sempre que um novo valor for atribuído à uma celula. Assim podemos formatar o numero da maneira que o programador achar conveniente.
Imagem
Solução
Utilizamos o método set_cell_data_func() da classe GtkCellLayout.
Exemplo
widgets['trvTeste'] = new GtkTreeView($model);
// Cria a colunas
$render = new GtkCellRendererText();
$column = new GtkTreeViewColumn("Couna 1", $render, "text", 0);
$this->widgets['trvTeste']->append_column($column);
// Conecta a coluna ao sinal de renderização
$column->set_cell_data_func($render, array($this, "treeview_onRender"), 0);
$render = new GtkCellRendererText();
$column = new GtkTreeViewColumn("Coluna 2", $render, "text", 1);
$this->widgets['trvTeste']->append_column($column);
// Conecta a coluna ao sinal de renderização
$column->set_cell_data_func($render, array($this, "treeview_onRender"), 1);
// Popula o model
$model->append(array("Valor 1", 1.0));
$model->append(array("Valor 2", 2.2));
$model->append(array("Valor 3", 3.6));
$model->append(array("Valor 4", 4.1));
$model->append(array("Valor 5", 5.3));
// Cria a janela
$this->widgets['frmTeste'] = new GtkWindow();
$this->widgets['frmTeste']->set_size_request(200, 200);
$this->widgets['frmTeste']->set_resizable(FALSE);
$this->widgets['frmTeste']->set_title("Teste");
$this->widgets['frmTeste']->add($this->widgets['trvTeste']);
$this->widgets['frmTeste']->set_position(GTK::WIN_POS_CENTER);
$this->widgets['frmTeste']->show_all();
// Conecta o destroy
$this->widgets['frmTeste']->connect_simple(
"destroy",
array("Gtk", "main_quit")
);
}
// Método de renderização do treeview
public function treeview_onRender($column, $cell, $model, $iter, $col)
{
// Busca o valor da celula
$value = $model->get_value($iter, $col);
// Verifica se é a coluna de valor para formatar
if($col == 1)
{
$cell->set_property("text", number_format($value, 2, ",", "."));
}
}
}
// Inicia a aplicação
$teste = new Teste();
gtk::main();
Referências
http://gtk.php.net/manual/en/gtk.gtkcelllayout.method.set_cell_data_func.php