/*cc -I../xforms/FORMS -O -o tcs tcs.c -L../xforms/FORMS -lforms -L/usr/X11R6/lib -lX11 -lm*/
#include "gui.h"


FD_mainform *create_form_mainform(void)
{
  FL_OBJECT *obj;
  FD_mainform *fdui = (FD_mainform *) fl_calloc(1, sizeof(*fdui));
  
  fdui->mainform = fl_bgn_form(FL_UP_BOX, 996, 860); /* change size in tcsv8_...c aswell*/  
  

  /*---------- CREATE AN EXPOSE BUTTON -------------*/
  
  fdui->expose_but = obj = fl_add_button(FL_NORMAL_BUTTON,70,28,95,25,"EXPOSE");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_DARKCYAN,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,expose_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION

  /*---------- CREATE BINNING BUTTONS -------------*/
  
  fdui->bin1x1_but = obj = fl_add_checkbutton(FL_RADIO_BUTTON,20,90,70,32,"1X1");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_callback(obj,bin1X1_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION

  fdui->bin2x2_but = obj = fl_add_checkbutton(FL_RADIO_BUTTON,20,130,70,32,"2X2");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_button(obj,  1);
  fl_set_object_callback(obj,bin2X2_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION


  /*---------- CREATE A CONTNOUS EXPOSE BUTTON -------------*/
  
  fdui->cont_expose_but = obj = fl_add_button(FL_NORMAL_BUTTON,380,28,100,30,"CONTINUOUS");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_DARKCYAN,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,cont_expose_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION

  /*---------- CREATE A STOP CONTNOUS EXPOSE BUTTON -------------*/
  
  fdui->stop_cont_expose_but = obj = fl_add_button(FL_NORMAL_BUTTON,490,28,95,30,"STOP CONT.");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_DARKCYAN,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,stop_cont_expose_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION

  /*---------- CREATE An ABORT  EXPOSE BUTTON -------------*/
  
  fdui->abort_expose_but = obj = fl_add_button(FL_NORMAL_BUTTON,600,28,95,30,"ABORT");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_RED,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,abort_expose_cb,0); // ASSIGN IT TO A CALLBACK FUNCTION


  /************* exposure time input field*************/
  fdui->set_exptime_inp = obj = fl_add_input(FL_NORMAL_INPUT,200,5,75,30,"");
  fl_set_object_lsize(obj, 12);
  fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,set_exptime_cb,0); // this doesnt seem to work, so addded button below
//  fl_set_input_return(obj,FL_RETURN_END_CHANGED) ;//this doesnt work on spupnic? xform1.4?

  /************* exposure time input button*************/
  fdui->set_exptime_but = obj = fl_add_button(FL_NORMAL_BUTTON,200,38,75,30,"ENTER");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_RED,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,set_exptime_cb,0); // ASSIGN IT TO A CALLBACK FUNC


  /********exposure countdown timer *************/
  fdui->timer = obj = fl_add_timer(FL_VALUE_TIMER,300,28,75,30,"") ;
  fl_set_object_boxtype(obj,FL_BORDER_BOX);
  fl_set_object_lsize(obj, 16);
  fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_color(obj,FL_WHEAT,FL_WHITE) ;



  /*---------- CREATE AN EXIT BUTTON -------------*/

  fdui->ext_prog_but = obj = fl_add_button(FL_NORMAL_BUTTON,800,28,95,25,"EXIT");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_RED,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,ext_prog_cb,0);// ASSIGN IT TO A CALLBACK FUNCTION


  /************* background input field*************/
  fdui->set_backgrd_inp = obj = fl_add_input(FL_NORMAL_INPUT,200,750,75,30,"");
  fl_set_object_lsize(obj, 12);
  fl_set_object_lalign(obj,FL_ALIGN_TOP);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,set_backgrd_cb,0); // this doesnt seem to work, so addded button below
//  fl_set_input_return(obj,FL_RETURN_END_CHANGED) ;//this doesnt work on spupnic? xform1.4?

  /************* background input button*************/
  fdui->set_backgrd_but = obj = fl_add_button(FL_NORMAL_BUTTON,200,780,75,30,"ENTER");
  fl_set_object_boxtype(obj, FL_UP_BOX) ;
  fl_set_object_color(obj,FL_RED,FL_COL1);
  fl_set_object_lsize(obj,FL_NORMAL_SIZE);
  fl_set_object_lalign(obj,FL_ALIGN_CENTER|FL_ALIGN_INSIDE);
  fl_set_object_lstyle(obj,FL_BOLD_STYLE);
  fl_set_object_callback(obj,set_backgrd_cb,0); // ASSIGN IT TO A CALLBACK FUNC
  fdui->backgrd_text = obj = fl_add_text(FL_NORMAL_BUTTON,200,810,300,40,"Subtract Background (typically 2700)");  


  
  
/*----------- CURSOR COORDINATE DISPLAY -------*/

   fdui->xyz_text = obj = fl_add_text(FL_NORMAL_TEXT,860,100,110,22,"" ) ;
   fl_set_object_boxtype(obj, FL_BORDER_BOX) ;
   fl_set_object_lsize(obj, 12);
   fl_set_object_lalign(obj, FL_ALIGN_RIGHT) ;
   fl_set_object_color(obj, FL_WHITE, FL_BLACK) ;

  
  
  /*---------- IMAGE DISPLAY CANVAS -------------*/
  
  fdui->image_canvas = obj = fl_add_canvas(FL_NORMAL_CANVAS,99,80,IMAGE_W,IMAGE_H,"");
  /*--------------- LUT CANVAS --------------*/ 
  
//  fdui->clut = obj = fl_add_canvas(FL_NORMAL_CANVAS,99,700,IMAGE_W,LUT_H,""); 
//  //  fl_set_object_color(obj,FL_TOP_BCOL,FL_WHITE); // , app_background=0
//  //  fl_add_canvas_handler(obj, ButtonPress,canvas2_but, 0); 
  
  /*-------------max image scale slider--------------*/

//  fdui->slideup_but = obj = fl_add_slider( FL_HOR_NICE_SLIDER,99,680,IMAGE_W,10,"");
//  fl_set_object_boxtype(obj,FL_FLAT_BOX);
//  fl_set_slider_step(obj, 100) ;
//  fl_set_slider_bounds(obj, 0.0, 65000) ;
//  fl_set_slider_value(obj, 65000) ;
////  fl_set_slider_return(obj, FL_RETURN_END_CHANGED) ; //this doesnt work on spupnic? xform1.4?
//  fl_set_object_callback(obj,SliderUP_cb,0);
//  fl_set_slider_size(obj, 0.01);
//  fl_set_object_bw(obj,-1);

  /*-------------min image scale slider--------------*/
//  fdui->slidebot_but = obj = fl_add_slider( FL_HOR_NICE_SLIDER,99,720,IMAGE_W,10,"");
//  fl_set_object_color(obj,FL_TOP_BCOL,FL_WHITE); 
//  fl_set_object_boxtype(obj,FL_FLAT_BOX);
//  fl_set_slider_step(obj, 100) ;
//  fl_set_slider_bounds(obj, 0.0, 65000) ;
//  fl_set_slider_value(obj, 0) ;
////  fl_set_slider_return(obj, FL_RETURN_END_CHANGED) ;//this doesnt work on spupnic? xform1.4?
//  fl_set_object_callback(obj,SliderBOT_cb,0);
//  fl_set_slider_size(obj, 0.01);
//  fl_set_object_bw(obj,-1);

  /*-------------gamma image scale slider--------------*/
//  fdui->slide_gama = obj = fl_add_slider( FL_VERT_NICE_SLIDER,75,600,15,120,"");
//  fl_set_object_color(obj,FL_TOP_BCOL,FL_TOP_BCOL); 
//  fl_set_object_boxtype(obj,FL_FLAT_BOX);
//  fl_set_slider_step(obj, 1.0) ;
//  fl_set_slider_bounds(obj, 0.0, 100.0) ;
//  fl_set_slider_value(obj, 50.0) ; 
////  fl_set_slider_return(obj, FL_RETURN_END_CHANGED) ;//this doesnt work on spupnic? xform1.4?
//  fl_set_object_callback(obj,Slidergam_cb,0);
//  fl_set_slider_size(obj, 0.01); 
//  fl_set_object_bw(obj,-1);

  /*-------------brightness image scale slider--------------*/
// note that brighness is applied to image .. gamma is applied to lookup table
  fdui->slide_bright = obj = fl_add_slider( FL_VERT_NICE_SLIDER,860,300,20,320,"");
  fl_set_object_color(obj,FL_TOP_BCOL,FL_TOP_BCOL); 
  fl_set_object_boxtype(obj,FL_FLAT_BOX);
  fl_set_slider_step(obj, 1.0) ;
  fl_set_slider_bounds(obj, 100.0, 1.0) ;
  fl_set_slider_value(obj, 1.0) ; 
//  fl_set_slider_return(obj, FL_RETURN_END_CHANGED) ;//this doesnt work on spupnic? xform1.4?
  fl_set_object_callback(obj,Sliderbright_cb,0);
  fl_set_slider_size(obj, 0.01); 
  fl_set_object_bw(obj,-1);
  fdui->bright_text = obj = fl_add_text(FL_NORMAL_BUTTON,860,270,70,30,"Brightness");  
  
  fdui->mainform->fdui = fdui;
 
  fl_end_form();
  return fdui;
  
}
