diff --git a/_wip/gtkdtp/dtp.h b/_wip/gtkdtp/dtp.h index 4781c722..a5f4a37f 100644 --- a/_wip/gtkdtp/dtp.h +++ b/_wip/gtkdtp/dtp.h @@ -4,5 +4,6 @@ #define GDK_VERSION_MIN_REQUIRED GDK_VERSION_3_4 #define GDK_VERSION_MAX_ALLOWED GDK_VERSION_3_4 #include +#include extern GtkWidget *newDTP(void); diff --git a/_wip/gtkdtp/dtpwidget.c b/_wip/gtkdtp/dtpwidget.c index d8cc8b74..6962a2c7 100644 --- a/_wip/gtkdtp/dtpwidget.c +++ b/_wip/gtkdtp/dtpwidget.c @@ -37,10 +37,13 @@ struct dateTimePickerWidgetClass { G_DEFINE_TYPE(dateTimePickerWidget, dateTimePickerWidget, GTK_TYPE_TOGGLE_BUTTON) +// TODO switch to GDateTime? static void setLabel(dateTimePickerWidget *d) { guint year, month, day; struct tm tm; + time_t tt; + gchar *str; gtk_calendar_get_date(GTK_CALENDAR(d->calendar), &year, &month, &day); tm.tm_hour = (int) gtk_spin_button_get_value(GTK_SPIN_BUTTON(d->hours)) - 1; @@ -50,9 +53,14 @@ static void setLabel(dateTimePickerWidget *d) tm.tm_mday = day; tm.tm_year = year - 1900; tm.tm_isdst = -1; // not available - // TODO strip \n - // TODO find the locale-preferred short date format - gtk_button_set_label(GTK_BUTTON(d), asctime(&tm)); + // fill in the missing fields + tt = mktime(&tm); + tm = *localtime(&tt); + // and strip the newline + str = g_strdup(asctime(&tm)); + str[strlen(str) - 1] = '\0'; + gtk_button_set_label(GTK_BUTTON(d), str); + g_free(str); } // we don't want ::toggled to be sent again @@ -285,7 +293,6 @@ static void dateTimePickerWidget_init(dateTimePickerWidget *d) d->mouse = NULL; // TODO set current time to now - setLabel(d); } static void dateTimePickerWidget_dispose(GObject *obj) @@ -306,5 +313,9 @@ static void dateTimePickerWidget_class_init(dateTimePickerWidgetClass *class) GtkWidget *newDTP(void) { - return GTK_WIDGET(g_object_new(dateTimePickerWidgetType, NULL)); + GtkWidget *w; + + w = GTK_WIDGET(g_object_new(dateTimePickerWidgetType, "label", "", NULL)); + setLabel(dateTimePickerWidget(w)); + return w; }