All pastes #614473 Raw Edit

Kiba-Dock digital clock

public text v1 · immutable
·published 2007-07-11 15:58 UTC
rendered paste body
creation:
	/** GtkLabel digital clock ;) **/
	widget = gtk_label_new ("00:00:00");
	gtk_widget_show (widget);
	object = kiba_object_new_for_widget (widget);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_VISIBLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_MOVEABLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_PRELIGHTABLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_BOUNCEABLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_PULSEABLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_ROTATEABLE);
	SET_FLAG (KIBA_OBJECT(object)->props, KIBA_OBJECT_REFLECTABLE);
	kiba_object_set_group (KIBA_OBJECT(object), "GtkLabel");
	gtk_container_add(GTK_CONTAINER(object), widget);
	gtk_container_add(GTK_CONTAINER(dock), object);
	gtk_widget_show(object);
	kiba_object_set_title (KIBA_OBJECT(object), "GtkLabel");
	g_timeout_add (SECOND_INTERVAL, (GSourceFunc) clock_time_handler, widget);

timeout:
static gint clock_time_handler (gpointer data) {
	GtkWidget *clock = data;
	int seconds, minutes, hours, day, month;
	static time_t systime;
	struct tm* g_pTime;
	char date[9];
	
	time (&systime);
	g_pTime = localtime (&systime);
	minutes = g_pTime->tm_min;
	hours   = g_pTime->tm_hour;
	seconds = g_pTime->tm_sec;
	
	sprintf (date, "%s%i:%s%i:%s%i",
			(hours   < 10) ? "0" : "", hours,
			(minutes < 10) ? "0" : "", minutes,
			(seconds   < 10) ? "0" : "", seconds);
	
	gtk_label_set_text (GTK_LABEL(clock), date);
	
	return TRUE;
}