/* Demo buttons using sgtk */
#include "gtk/gtk.h"
#include "sgtk.h"

#define LAB_Quit "Quit"
#define LAB_Test "Testing"

#define LAB_CHECK1 "Check"
#define LAB_CHECK2 "Toggle1"
#define LAB_CHECK3 "Toggle2"

#define LAB_RADIOA1 "Radio group a, 1"
#define LAB_RADIOA2 "Radio group a, 2"
#define LAB_RADIOA3 "Radio group a, 3"
#define LAB_RADIOB1 "Radio group b, 1"
#define LAB_RADIOB2 "Radio group b, 2"

#define LAB_Entry1 "Entry1"
#define LAB_Entry2 "Entry2"

#define LAB_SPIN1 "Spin integer; 0:100           "
#define LAB_SPIN2 "Spin integer; -10:100         "
#define LAB_SPIN3 "Spin integer; 1:100 start=5   "
#define LAB_SPIN4 "Spin float; 1.5:100 start=5.22"

#define LAB_SCALE1 "Scale h; 0:100"
#define LAB_SCALE2 "Scale v; 0:100"


void func(GtkWidget *widget, gpointer data)
{
  char *name=(char *)data;
  if (!strcmp(name,LAB_Quit))
  {
    Close_Window(gtk_widget_get_toplevel(widget));
  }
  if (!strcmp(name,LAB_Test))
  {
    puts("Normal button");
  }

  if (!strcmp(name,LAB_CHECK1))
  {
    printf("Check: %d\n",GTK_WIDGET_STATE(widget));
  }
  if (!strcmp(name,LAB_CHECK2))
  {
    printf("Toggle1: %d\n",GTK_WIDGET_STATE(widget));
  }
  if (!strcmp(name,LAB_CHECK3))
  {
    printf("Toggle2: %d\n",GTK_WIDGET_STATE(widget));
  }

  if ((!strcmp(name,LAB_RADIOA1)) ||
      (!strcmp(name,LAB_RADIOA2)) ||
      (!strcmp(name,LAB_RADIOA3)) ||
      (!strcmp(name,LAB_RADIOB1)) ||
      (!strcmp(name,LAB_RADIOB2)))
  {
    printf("Radio: %s  State: %d\n",name,GTK_WIDGET_STATE(widget));
  }

  if (!strcmp(name,LAB_Entry1))
  {
    printf("Text=%s\n",gtk_entry_get_text(GTK_ENTRY(widget)));
  }

  if ((!strcmp(name,LAB_SPIN1)) ||
      (!strcmp(name,LAB_SPIN2)) ||
      (!strcmp(name,LAB_SPIN3)))
  {
    printf("Spin integer: %d\n",(int)GTK_ADJUSTMENT(widget)->value);
  }
  if (!strcmp(name,LAB_SPIN4))
  {
    printf("Spin float: %d\n",(int)GTK_ADJUSTMENT(widget)->value);
  }

  if ((!strcmp(name,LAB_SCALE1)) ||
      (!strcmp(name,LAB_SCALE2)))
  {
    printf("Scale integer: %d\n",(int)GTK_ADJUSTMENT(widget)->value);
  }

}

int main(int argc, char **argv)
{
  GtkWidget *wnd,*w1,*w2,*w3,*w4,*w5;
  GtkWidget *wp1,*wp2,*wp3,*wp4,*wp5,*wp6,*wptot;
  gtk_init(&argc, &argv);
  wnd=Create_Window(NULL,0,0,"Test",gtk_main_quit);

/* Normal buttons */
  w1=Create_Button(LAB_Quit,func);
  w2=Create_Button(LAB_Test,func);
  wp1=Pack("Normal",'v',w1,5,w2,5,NULL);

/* Check buttons */
  w1=Create_Check (LAB_CHECK1,func,FALSE);
  w2=Create_Toggle(LAB_CHECK2,func,FALSE);
  w3=Create_Toggle(LAB_CHECK3,func,TRUE);
  wp2=Pack("Check",'v',w1,5,w2,5,w3,5,NULL);

/* Radio buttons */
/* Radioset A  */
  w1=Create_Radio(LAB_RADIOA1,TRUE,func,FALSE);
  w2=Create_Radio(LAB_RADIOA2,FALSE,func,FALSE);
  w3=Create_Radio(LAB_RADIOA3,FALSE,func,FALSE);

/* Radioset B  */
  w4=Create_Radio(LAB_RADIOB1,TRUE,func,FALSE);
  w5=Create_Radio(LAB_RADIOB2,FALSE,func,FALSE);
  wp3=Pack("Radio",'v',w1,5,w2,5,w3,5,w4,5,w5,5,NULL);

/* Entry buttons */
  w1=Create_Entry(LAB_Entry1,func,"Abcd%d",4);
  w2=Create_Entry(LAB_Entry2,NULL,"Fixed");
  wp4=Pack("Entry",'v',w1,5,w2,5,NULL);

/* Spin buttons */
  w1=Create_Spin(LAB_SPIN1,func,"%d",100);          /* max-val */
  w2=Create_Spin(LAB_SPIN2,func,"%d%d",1,100);      /* min/max-val */
  w3=Create_Spin(LAB_SPIN3,func,"%d%d%d",5,1,100);  /* start/min/max */
  w4=Create_Spin(LAB_SPIN4,func,"%f%f%f",5.2,1.5,100.0);     /* float */
  wp5=Pack("Spin",'v',w1,5,w2,5,w3,5,w4,5,NULL);

/* Scale widgets */
  w1=Create_Scale(LAB_SCALE1,'h',func,"%d", 100);
  w2=Create_Scale(LAB_SCALE2,'v',func,"%d", 100);
  wp6=Pack("Scale",'v',w1,5,w2,5,NULL);

/* */
  wptot=Pack(NULL,'h',wp1,10,wp2,10,wp3,10,wp4,10,wp5,10,wp6,10,NULL);
  gtk_container_add(GTK_CONTAINER(wnd),wptot);
  gtk_widget_show_all(wnd);
  gtk_main();
  return 0;
}
