public function __construct($window) { parent::__construct(Gtk::WINDOW_TOPLEVEL, $window, Gtk::DIALOG_NO_SEPARATOR); parent::set_decorated(FALSE); parent::set_size_request(150, 250); parent::set_skip_taskbar_hint(TRUE); parent::connect("delete-event", array($this, "autocomplete_window_destroy")); }
/** * 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(); }