/**
  * Método de abertuda do container
  * 
  * @name __openContainer($widget)
  * @access private
  * @param GtkWidget $widget GtkWidget que esta sendo ativado pelo sinal
  */
 public function __openContainer($widget)
 {
     // Busca a posição do botão
     $entryX = $widget->allocation->x;
     $entryY = $widget->allocation->y;
     // Busca a posição da janela parente
     $window = $widget->get_parent_window();
     $win_pos = $window->get_position();
     $windowX = $win_pos[0];
     $windowY = $win_pos[1];
     // Faz o calculo da posicao final
     $finalX = $entryX + $windowX;
     $finalY = $widget->allocation->height + $entryY + $windowY;
     // Seta a posição do dialogo
     $this->dialog->set_uposition($finalX, $finalY);
     // Mostra o dialogo
     $this->dialog->show_all();
     $this->dialog->run();
 }
Ejemplo n.º 2
0
function event_watcher_down($event_watcher_enter_id, $event_watcher_leave_id)
{
    if ($event_watcher_enter_id) {
        $signal_id = Gtk::signal_lookup('enter_notify_event', GtkWidget::get_type());
        gtk::signal_remove_emission_hook($signal_id, $event_watcher_enter_id);
        $event_watcher_enter_id = 0;
        $signal_id = Gtk::signal_lookup('leave_notify_event', GtkWidget::get_type());
        gtk::signal_remove_emission_hook($signal_id, $event_watcher_leave_id);
        $event_watcher_leave_id = 0;
    }
}
 /**
  * Método do click do GtkEntry em modo calendario
  * 
  * @name __openCalendar($widget, $event)
  * @access private
  * @param GtkWidget $widget GtkWidget emissor do sinal
  * @param GtkEvent $event GtkEvent emitito pelo sinal
  * @author Erick Eden Fróes
  */
 public function __openCalendar($widget, $event)
 {
     // Busca a posição do entry
     $entryX = $widget->allocation->x;
     $entryY = $widget->allocation->y;
     // Busca a posição da janela parente
     $window = $widget->get_parent_window();
     $win_pos = $window->get_position();
     $windowX = $win_pos[0];
     $windowY = $win_pos[1];
     // Faz o calculo da posicao final
     $finalX = $entryX + $windowX;
     $finalY = $widget->allocation->height + $entryY + $windowY;
     // Cria o dialogo para o calendario
     $dialog = new GtkDialog(NULL, NULL, Gtk::DIALOG_MODAL | Gtk::DIALOG_NO_SEPARATOR);
     $dialog->set_decorated(FALSE);
     $dialog->set_uposition($finalX, $finalY);
     // Cria o calendario e o coloca dentro do dialogo
     $calendar = new GtkCalendar();
     $dialog->vbox->pack_start($calendar, 0, 0);
     $dialog->action_area->set_size_request(-1, 0);
     // Busca o dia do entry
     $text = $widget->get_text();
     if (strlen($text) > 0) {
         // Separa as datas
         $date = explode("/", $text);
         // Marca o dia do entry no calendario
         $calendar->select_day($date[0]);
         $calendar->select_month($date[1] - 1, $date[2]);
     }
     // Faz as conexões do calendario
     $calendar->connect("day-selected", array($this, "__changedayCalendar"), $dialog);
     $calendar->connect("focus-out-event", array($this, "__onlostfocusCalendar"), $dialog);
     // Mostra o calendario
     $dialog->show_all();
     $dialog->run();
 }