static gboolean gtk_clock_draw (GtkWidget *widget, cairo_t *ctx)
{

    struct tm *tms;
    time_t t;
	GtkClockPrivate *priv = GTK_CLOCK(widget)->priv;

    g_free(priv->time);
    t = time (NULL);
    tms = localtime(&t);
    priv->time = 
        g_strdup_printf ("%.2d%c%.2d", tms->tm_hour, priv->secflash ? ':' : ' ', tms->tm_min);
    priv->date = 
        g_strdup_printf ("%s %s , %s", month[tms->tm_mon], day[tms->tm_mday], weekday[tms->tm_wday]);

    cairo_set_source_rgba (ctx, 0.0, 0.0, 0.0, 0.6);
    cairo_paint (ctx);

    cairo_move_to (ctx, 20, 50);
    cairo_select_font_face (ctx, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_BOLD);
    cairo_set_font_size (ctx, 45);
    cairo_set_source_rgb (ctx, 1.0, 1.0, 1.0);
    cairo_show_text (ctx, priv->time);

    cairo_select_font_face (ctx, "Sans", CAIRO_FONT_SLANT_NORMAL, CAIRO_FONT_WEIGHT_NORMAL);
    cairo_set_font_size (ctx, 24);
    cairo_move_to (ctx, 20, 84);
    cairo_show_text (ctx, priv->date);

	return FALSE;
}
Beispiel #2
0
static gboolean
gtk_clock_update (gpointer data)
{
	GtkClock *clock = GTK_CLOCK (data);
	GtkClockPrivate *priv = GTK_CLOCK_GET_PRIVATE (clock);
	time_t timet;

	time (&timet);
	localtime_r (&timet, &priv->time);

	gtk_clock_redraw_canvas (clock);

	return TRUE;
}
static void gtk_clock_realize (GtkWidget *widget)
{
    GtkClock *clock = GTK_CLOCK(widget);
	GTK_WIDGET_CLASS(gtk_clock_parent_class)->realize (widget); 
    clock->priv->timeout_id   = g_timeout_add(60000, (GSourceFunc)update_time, clock);
}