Пример #1
0
static void
gcrd_day_selected (GtkWidget *popup_window, GncCellRendererDate *cell)
{
	guint    year;
	guint    month;
	guint    day;
	time64   t;
	gchar   *str;

	gtk_calendar_get_date (GTK_CALENDAR (cell->calendar),
			       &year,
			       &month,
			       &day);

        t = gcrd_dmy2time ( day, month + 1, year);

	cell->time = t;

	str = gcrd_time2dmy_string (t);

	gnc_popup_entry_set_text (
		GNC_POPUP_ENTRY (GNC_CELL_RENDERER_POPUP (cell)->editable), str);
	g_free (str);

}
static gboolean
gpw_key_press_event (GtkWidget   *box,
		     GdkEventKey *key_event)
{
	GncPopupEntry *widget = GNC_POPUP_ENTRY (box);
	GdkEvent       tmp_event;
	
	if (key_event->keyval == GDK_Escape) {
		widget->editing_canceled = TRUE;

		gtk_cell_editable_editing_done (GTK_CELL_EDITABLE (widget));
		gtk_cell_editable_remove_widget (GTK_CELL_EDITABLE (widget));
		
		return TRUE;
	}

	gtk_widget_grab_focus (widget->entry);

	/* Hackish :/ Synthesize a key press event for the entry. */
	memcpy (&tmp_event, key_event, sizeof (GdkEventKey));

	tmp_event.key.window = widget->entry->window;
	tmp_event.key.send_event = TRUE;
	
	gtk_widget_event (widget->entry, &tmp_event);

	return GTK_WIDGET_CLASS (parent_class)->key_press_event (GTK_WIDGET (widget), 
								 key_event);
}
Пример #3
0
static void
gcrd_show (GncCellRendererPopup *cell,
	   const gchar              *path,
	   gint                      x1,
	   gint                      y1,
	   gint                      x2,
	   gint                      y2)
{
	GncCellRendererDate     *date;
	gint                     year;
	gint                     month;
	gint                     day;
	gint                     index;
	const gchar             *text;

	if (parent_class->show_popup) {
		parent_class->show_popup (cell,
					  path,
					  x1, y1,
					  x2, y2);
	}

	date = GNC_CELL_RENDERER_DATE (cell);

	text = gnc_popup_entry_get_text (GNC_POPUP_ENTRY (GNC_CELL_RENDERER_POPUP (cell)->editable));

        if (!(g_strcmp0(text, "")))
        {
	    date->time = gnc_time (NULL);
            gcrd_time2dmy ( date->time, &day, &month, &year);
        }
        else
        {
            date->time = gcrd_string_dmy2time (text);
            gcrd_time2dmy ( date->time, &day, &month, &year);
        }

	gtk_calendar_clear_marks (GTK_CALENDAR (date->calendar));
	gtk_calendar_select_month (GTK_CALENDAR (date->calendar), month - 1, year);

	gtk_calendar_select_day (GTK_CALENDAR (date->calendar), day);
	gtk_calendar_mark_day (GTK_CALENDAR (date->calendar), day);
	
}
static void
gpw_start_editing (GtkCellEditable *cell_editable,
		   GdkEvent        *event)
{
	GncPopupEntry *widget = GNC_POPUP_ENTRY (cell_editable);

	gtk_editable_select_region (GTK_EDITABLE (widget->entry), 0, -1);

	g_signal_connect (G_OBJECT (widget->entry),
			  "activate",
			  G_CALLBACK (gtk_cell_editable_entry_activated),
			  widget);
	g_signal_connect (G_OBJECT (widget->entry),
			  "key_press_event",
			  G_CALLBACK (gtk_cell_editable_key_press_event),
			  widget);
	g_signal_connect (G_OBJECT (widget->button),
			  "clicked",
			  (GCallback) gpw_arrow_clicked,
			  widget);
}