Explicação
A classe GtkComboBoxEntry, nos ajuda quando precisamos dar opções de preenchimento ao ComboBox. Com esta classe, é possível simular as funcionalidades de um ComboBox e de um Entry ao mesmo tempo, e conta com um visual melhor que o ComboBox.. É possível criar o GtkComboBoxEntry diretamente do método new_text(), facilitando muito na criação. Para recuperar os dados, facilmente pegamos o filho do objeto, que é um Entry, e pegamos o texto.
Solução
Criar o objeto diretamente do método new_text() da classe GtkComboBoxEntry.
Manipular somente o GtkEntry filho
Exemplo
widgets['cmbTeste'] = &GtkComboBoxEntry::new_text();
$this->widgets['cmbTeste']->set_size_request(284, 25);
$fixed->put($this->widgets['cmbTeste'], 8, 8);
// Cria o Botão inserir
$this->widgets['btnInserir'] = new GtkButton("Inserir");
$this->widgets['btnInserir']->set_size_request(80, 28);
$fixed->put($this->widgets['btnInserir'], 8, 40);
$this->widgets['btnInserir']->connect_simple("clicked", array($this, "btnInserir_onClick"));
// Cria o Botão Buscar
$this->widgets['btnBuscar'] = new GtkButton("Buscar");
$this->widgets['btnBuscar']->set_size_request(80, 28);
$fixed->put($this->widgets['btnBuscar'], 88, 40);
$this->widgets['btnBuscar']->connect_simple("clicked", array($this, "btnBuscar_onClick"));
// Cria o Label
$this->widgets['lblTeste'] = new GtkLabel("");
$this->widgets['lblTeste']->set_size_request(80, 28);
$fixed->put($this->widgets['lblTeste'], 174, 40);
// Cria a janela
$this->widgets['frmTeste'] = new GtkWindow();
$this->widgets['frmTeste']->set_size_request(300, 75);
$this->widgets['frmTeste']->set_resizable(FALSE);
$this->widgets['frmTeste']->set_title("Teste");
$this->widgets['frmTeste']->add($fixed);
$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 do evento onClick do btnInsert
public function btnInserir_onClick()
{
static $total;
$this->widgets['cmbTeste']->append_text("Opcao " . ++$total);
}
// Método do evento onClick do btnBuscar
public function btnBuscar_onClick()
{
$value = $this->widgets['cmbTeste']->get_child()->get_text();
$this->widgets['lblTeste']->set_label($value);
}
}
// Inicia a aplicação
$teste = new Teste();
gtk::main();
Referências
http://gtk.php.net/manual/en/gtk.gtkcomboboxentry.constructor.new_text.php