Página Inicial > Gtk/Gdk, GtkComboBoxEntry > Como desabilitar edição no GtkComboBoxEntry

Como desabilitar edição no GtkComboBoxEntry

Explicação

A classe GtkComboBoxEntry, nos ajuda quando precisamos dar opções de preenchimento ao ComboBox, mas por questão de estética e facilidade de uso, muitas vezes é utilizado no lugar do GtkComboBox. Para desativar utilizamos uma propriedade chamada editable do GtkEntry.. Para utilizarmos o GtkComboBoxEntry como se fosse um combo normal, precisamos retirar a propriedade de edição do mesmo. Como a parte editável é o GtkEntry, podemos utilizar a propriedade editable para desabilitar a edição.

Solução

Setar a propriedade editable como FALSE.

Exemplo

<?php
   // Classe de testes
   class Teste
   {
      // Vetor que armazena todos os widgets da interface
      public $widgets = array();
      
      // Construtor da classe
      public function __construct()
      {
         // Cria o container
         $fixed = new GtkFixed();
         
         // Cria o Entry
         $this->widgets['cmbTeste'] = &GtkComboBoxEntry::new_text();
         $this->widgets['cmbTeste']->set_size_request(284, 25);
         $fixed->put($this->widgets['cmbTeste'], 8, 8);
         
         // Desabilita a edição
         $this->widgets['cmbTeste']->get_child()->set_property("editable", FALSE);
         
         // 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.gtkentry.property.editable.php

Categories: Gtk/Gdk, GtkComboBoxEntry Tags:
  1. Nenhum comentário ainda.
  1. Nenhum trackback ainda.