28 #include <gdk/gdkkeysyms.h> 39 static guint gnc_date_picker_signals[LAST_SIGNAL];
45 guint day, guint mon, guint year)
47 g_return_if_fail (IS_GNC_DATE_PICKER (date_picker));
48 g_return_if_fail (date_picker->calendar != NULL);
50 gtk_calendar_select_day (date_picker->calendar, 1);
51 gtk_calendar_select_month (date_picker->calendar, mon, year);
52 gtk_calendar_select_day (date_picker->calendar, day);
57 guint *day, guint *mon, guint *year)
59 g_return_if_fail (IS_GNC_DATE_PICKER (date_picker));
60 g_return_if_fail (date_picker->calendar != NULL);
62 gtk_calendar_get_date (date_picker->calendar, year, mon, day);
68 gtk_orientable_set_orientation (GTK_ORIENTABLE(date_picker), GTK_ORIENTATION_HORIZONTAL);
69 date_picker->calendar = NULL;
73 gnc_date_picker_button_event (GtkWidget *widget, GdkEventButton *event,
77 g_signal_stop_emission_by_name (widget,
"button_press_event");
83 gnc_date_picker_key_event(GtkWidget *widget, GdkEventKey *event, gpointer data)
88 switch (event->keyval)
91 case GDK_KEY_KP_Enter:
92 g_signal_emit (date_picker, gnc_date_picker_signals[DATE_PICKED], 0);
93 g_signal_stop_emission_by_name (widget,
"key_press_event");
110 g_signal_stop_emission_by_name (widget,
"key_press_event");
112 g_signal_emit_by_name (date_picker,
"key_press_event", event, &retval);
120 GObjectClass *object_class = G_OBJECT_CLASS (date_picker_class);
122 gtk_widget_class_set_css_name (GTK_WIDGET_CLASS(date_picker_class),
"gnc-id-date-picker");
124 gnc_date_picker_signals[DATE_SELECTED] =
125 g_signal_new(
"date_selected",
126 G_TYPE_FROM_CLASS(object_class),
130 g_cclosure_marshal_VOID__VOID,
133 gnc_date_picker_signals[DATE_PICKED] =
134 g_signal_new(
"date_picked",
135 G_TYPE_FROM_CLASS(object_class),
139 g_cclosure_marshal_VOID__VOID,
142 date_picker_class->date_selected = NULL;
143 date_picker_class->date_picked = NULL;
150 g_signal_emit (gdp, gnc_date_picker_signals [DATE_SELECTED], 0);
154 day_selected_double_click (GtkCalendar *calendar,
GNCDatePicker *gdp)
156 g_signal_emit (gdp, gnc_date_picker_signals [DATE_PICKED], 0);
161 gnc_date_picker_new (
void)
165 GtkAllocation allocation;
166 GtkRequisition requisition;
168 date_picker = g_object_new (GNC_TYPE_DATE_PICKER,
169 "homogeneous", FALSE,
172 calendar = gtk_calendar_new ();
173 date_picker->calendar = GTK_CALENDAR (calendar);
175 gtk_box_pack_start (GTK_BOX(date_picker), calendar, TRUE, TRUE, 0);
177 gtk_widget_get_preferred_size (calendar, &requisition, NULL);
180 allocation.width = requisition.width;
181 allocation.height = requisition.height;
182 gtk_widget_size_allocate (calendar, &allocation);
184 g_signal_connect_after (calendar,
"button_press_event",
185 G_CALLBACK (gnc_date_picker_button_event),
188 g_signal_connect (calendar,
"key_press_event",
189 G_CALLBACK (gnc_date_picker_key_event),
192 g_signal_connect (calendar,
"day_selected",
193 G_CALLBACK (day_selected),
196 g_signal_connect (calendar,
"day_selected_double_click",
197 G_CALLBACK (day_selected_double_click),
200 return GTK_WIDGET(date_picker);
Public declarations for GncDatePicker class.