/** * 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(); }
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(); }