#include <gtk/gtk.h>
#include <time.h>
#include <stdio.h>

#define CLOCK_TICK 1000
#define PREF_LONGDATE 3

/* Written by Nick (see http://illx.org for more details)
 * Updated on 2004-08-04: Added TimeZone information
 */
GtkWidget *tzoffset_label;
GtkWidget *date_label;
GtkWidget *time_label;
GtkWidget *vbox;

gint timeout_date(gpointer data) {
  extern GtkWidget *date_label;
  extern GtkWidget *time_label;
  extern GtkWidget *tzoffset_label;

  char  strt[102];
  char  strd[102];
  char ctime[102];
  char  date[102];

  char  tzoffset[102];
  char  tzoffset_text[102];

  struct tm *loctime;
  time_t curtime;
  if (date_label==NULL) {
    return FALSE;
  }

  curtime = time (NULL);
  loctime = localtime (&curtime);
  strcpy(date, ("%C%y-%m-%d"));
  strcpy(ctime, ("%I:%M:%S %p"));
  strftime(strd, 100, date, loctime);
  strftime(strt, 100, ctime, loctime);

  strcpy(tzoffset, ("%Z %z"));
  strftime(tzoffset_text, 100, tzoffset, loctime);

  gtk_label_set_text(GTK_LABEL(tzoffset_label), tzoffset_text);
  gtk_label_set_text(GTK_LABEL(date_label), strd);
  gtk_label_set_text(GTK_LABEL(time_label), strt);
  return TRUE;
}

gint destroy( GtkWidget *widget, GdkEvent  *event, gpointer data ) {
  gtk_main_quit ();
  return(FALSE);
}

int main( int argc, char *argv[]) {

  GtkWidget *window, *separator;
  extern GtkWidget *vbox;

  int date_timer_tag = 0;

  gtk_set_locale();
  gtk_init(&argc, &argv);

  window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
  gtk_window_set_policy(GTK_WINDOW(window), FALSE, FALSE, TRUE);

  gtk_signal_connect (GTK_OBJECT(window), "destroy",
		      GTK_SIGNAL_FUNC(destroy), NULL);

  gtk_window_set_title (GTK_WINDOW (window), "Date/Time");
  gtk_container_border_width (GTK_CONTAINER(window), 0);

  vbox = gtk_vbox_new (FALSE, 0);
  gtk_container_add (GTK_CONTAINER (window), vbox);

  tzoffset_label = gtk_label_new (" ");
  date_label = gtk_label_new (" ");
  time_label = gtk_label_new (" ");
  gtk_box_pack_start(GTK_BOX (vbox), tzoffset_label, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX (vbox), date_label, FALSE, FALSE, 0);
  gtk_box_pack_start(GTK_BOX (vbox), time_label, FALSE, FALSE, 0);
  timeout_date(NULL);
  date_timer_tag = gtk_timeout_add(CLOCK_TICK, timeout_date, NULL);

  separator = gtk_hseparator_new();
  gtk_box_pack_start(GTK_BOX (vbox), separator, FALSE, FALSE, 0);

  gtk_widget_show_all (window);
  gtk_main();

  return(0);
}




