/**
  * @name __construct($widget, $signal, $icon_widget=null, $label=null)
  * @param GtkWidget $widget GtkWidget que ficará dentro do container
  * @param string $signal Sinal do widget que fechará o dialogo
  * @param GtkWidget $icon_widget GtkWidget entrará como imagem do botão
  * @param string $label String do label do botão
  * @return GtkToolButton
  */
 public function __construct($widget, $signal, $icon_widget = null, $label = null)
 {
     // Constroi o parent
     parent::__construct();
     // Armazena o widget
     $this->widget = $widget;
     // Verifica se possui stock_id
     if ($icon_widget != null) {
         parent::set_stock_id($icon_widget);
     }
     // Verifica se possui label
     if ($label != null) {
         parent::set_label($label);
     }
     // Cria o dialogo
     $this->dialog = new GtkDialog(NULL, NULL, Gtk::DIALOG_NO_SEPARATOR);
     $this->dialog->set_decorated(FALSE);
     // Adiciona o widget ao dinalog
     $this->dialog->vbox->pack_start($this->widget, 0, 0);
     $this->dialog->action_area->set_size_request(-1, 0);
     // Adiciona os eventos para abertura
     parent::connect("clicked", array($this, "__openContainer"));
     // Adiciona os eventos para fechamento
     $this->widget->connect($signal, array($this, "__onlostfocusContainer"));
     $this->widget->connect("focus-out-event", array($this, "__onlostfocusContainer"));
 }
Ejemplo n.º 2
0
 function evt__mostrar_opciones()
 {
     $objeto_cmd = $this->get_objeto_comando($this->seleccion);
     $this->opciones = $objeto_cmd->inspeccionar_opciones();
     $this->comp['label_info']->set_markup($objeto_cmd->get_info_extra());
     //------ Cambia algunas cosas de lugar
     if ($objeto_cmd instanceof comando_base) {
         $opciones_a_sacar = array('listar', 'registrar');
         $hay_que_sacar = $objeto_cmd->tiene_definido_base();
         foreach (array_keys($this->opciones) as $id) {
             $existe = in_array($id, $opciones_a_sacar);
             if ($existe && $hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
             if (!$existe && !$hay_que_sacar) {
                 unset($this->opciones[$id]);
             }
         }
     }
     //-----------------------------------
     $i = 0;
     foreach ($this->opciones as $opcion => $atributos) {
         if (!isset($atributos['tags']['gtk_no_mostrar'])) {
             $nombre = ucwords(str_replace('_', ' ', $opcion));
             $boton = new GtkToolButton();
             $boton->set_label($nombre);
             if (isset($atributos['tags']['gtk_icono'])) {
                 $archivo = $atributos['tags']['gtk_icono'];
                 $img = GtkImage::new_from_file(toba_dir() . '/www/img/' . $archivo);
                 $boton->set_property('icon-widget', $img);
             }
             $boton->set_tooltip($this->tooltips, $atributos['ayuda']);
             $boton->connect('clicked', array($this, 'evt__ejecutar'), $opcion, $atributos);
             $this->comp['caja_opciones']->insert($boton, $i);
             //--- Desactivar algunos
             if ($objeto_cmd instanceof comando_instalacion && ($opcion == 'instalar' || $opcion == 'crear') && toba_modelo_instalacion::existe_info_basica()) {
                 $boton->set_sensitive(false);
             }
             //----
             $i++;
         }
         if (isset($atributos['tags']['gtk_separador'])) {
             $boton = new GtkSeparatorToolItem();
             $this->comp['caja_opciones']->insert($boton, $i);
             $i++;
         }
     }
     $this->comp['caja_opciones']->show_all();
 }