// generated by Fast Light User Interface Designer (fluid) version 1.0300

#ifndef estGUI_h
#define estGUI_h
#include <FL/Fl.H>
#include "fltk/Cartesian.h"
#include "fltk/Table.h"
#include <string>
#include <FL/Fl_Double_Window.H>
#include <FL/Fl_File_Input.H>
#include <FL/Fl_Button.H>
#include <FL/Fl_Progress.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Round_Button.H>
#include <FL/Fl_Value_Input.H>
#include <FL/Fl_Check_Button.H>
#include <FL/Fl_Choice.H>
#include <FL/Fl_Input_Choice.H>
#include <FL/Fl_Menu_Button.H>
#include <FL/Fl_Return_Button.H>

class EstGUI {
public:
  EstGUI();
  Fl_Double_Window *estWindow;
  static Fl_Menu_Item menu_[];
private:
  void cb_Quit_i(Fl_Menu_*, void*);
  static void cb_Quit(Fl_Menu_*, void*);
  void cb_About_i(Fl_Menu_*, void*);
  static void cb_About(Fl_Menu_*, void*);
public:
  Fl_File_Input *estImgInput;
private:
  void cb_Browse_i(Fl_Button*, void*);
  static void cb_Browse(Fl_Button*, void*);
public:
  Fl_File_Input *estPsfInput;
private:
  void cb_Browse1_i(Fl_Button*, void*);
  static void cb_Browse1(Fl_Button*, void*);
public:
  Fl_File_Input *estEstInput;
private:
  void cb_Browse2_i(Fl_Button*, void*);
  static void cb_Browse2(Fl_Button*, void*);
public:
  Fl_Progress *estProgress;
  Fl_Group *estLinearGroup;
  Fl_Round_Button *estLlsCheck;
private:
  void cb_estLlsCheck_i(Fl_Round_Button*, void*);
  static void cb_estLlsCheck(Fl_Round_Button*, void*);
public:
  Fl_Round_Button *estMapCheck;
private:
  void cb_estMapCheck_i(Fl_Round_Button*, void*);
  static void cb_estMapCheck(Fl_Round_Button*, void*);
public:
  Fl_Value_Input *estLinearParameterInput;
private:
  void cb_Run_i(Fl_Button*, void*);
  static void cb_Run(Fl_Button*, void*);
public:
  Fl_Group *estIterativeGroup;
private:
  void cb_Run1_i(Fl_Button*, void*);
  static void cb_Run1(Fl_Button*, void*);
  void cb_Stop_i(Fl_Button*, void*);
  static void cb_Stop(Fl_Button*, void*);
public:
  Fl_Value_Input *estIterationsInput;
  Fl_Value_Input *estUpdateInput;
  Fl_Value_Input *estWriteInput;
  Fl_Group *estInvariantGroup;
  Fl_Round_Button *estEmCheck;
private:
  void cb_estEmCheck_i(Fl_Round_Button*, void*);
  static void cb_estEmCheck(Fl_Round_Button*, void*);
public:
  Fl_Round_Button *estJvcCheck;
private:
  void cb_estJvcCheck_i(Fl_Round_Button*, void*);
  static void cb_estJvcCheck(Fl_Round_Button*, void*);
public:
  Fl_Round_Button *estSiCheck;
private:
  void cb_estSiCheck_i(Fl_Round_Button*, void*);
  static void cb_estSiCheck(Fl_Round_Button*, void*);
public:
  Fl_Value_Input *estInvariantParameterInput;
  Fl_Check_Button *estInvariantDoubleInput;
  Fl_Choice *estInvariantPenaltyInput;
  static Fl_Menu_Item menu_estInvariantPenaltyInput[];
  Fl_Group *estVariantGroup;
  Fl_Round_Button *estSvCheck;
private:
  void cb_estSvCheck_i(Fl_Round_Button*, void*);
  static void cb_estSvCheck(Fl_Round_Button*, void*);
public:
  Fl_Round_Button *estOsCheck;
private:
  void cb_estOsCheck_i(Fl_Round_Button*, void*);
  static void cb_estOsCheck(Fl_Round_Button*, void*);
public:
  Fl_Round_Button *estDvCheck;
private:
  void cb_estDvCheck_i(Fl_Round_Button*, void*);
  static void cb_estDvCheck(Fl_Round_Button*, void*);
public:
  Fl_Value_Input *estVariantParameterInput;
  Fl_Check_Button *estVariantDoubleInput;
  Fl_Choice *estVariantBigInput;
  static Fl_Menu_Item menu_estVariantBigInput[];
private:
  void cb_OTF_i(Fl_Menu_*, void*);
  static void cb_OTF(Fl_Menu_*, void*);
  void cb_OTF1_i(Fl_Menu_*, void*);
  static void cb_OTF1(Fl_Menu_*, void*);
public:
  Fl_Value_Input *estVariantStrataStartInput;
  Fl_File_Input *estOtfInput;
  Fl_Value_Input *estVariantStrataSizeInput;
  Fl_Value_Input *estVariantStrataNumberInput;
  Fl_Value_Input *estVariantPCAComponentsInput;
  Fl_Value_Input *estVariantPCAStartInput;
  Fl_Value_Input *estVariantPCANumberInput;
  Fl_Choice *estVariantModelInput;
  static Fl_Menu_Item menu_estVariantModelInput[];
private:
  void cb_Strata_i(Fl_Menu_*, void*);
  static void cb_Strata(Fl_Menu_*, void*);
  void cb_PCA_i(Fl_Menu_*, void*);
  static void cb_PCA(Fl_Menu_*, void*);
public:
  Fl_Choice *estVariantPenaltyInput;
  static Fl_Menu_Item menu_estVariantPenaltyInput[];
  Fl_File_Input *estPhaInput;
private:
  void cb_Browse3_i(Fl_Button*, void*);
  static void cb_Browse3(Fl_Button*, void*);
public:
  Ca_Canvas *estCanvas;
  Ca_X_Axis *estXAxis;
  Ca_Y_Axis *estYAxis;
private:
  void cb_Clear_i(Fl_Button*, void*);
  static void cb_Clear(Fl_Button*, void*);
public:
  Fl_Input_Choice *estConvergenceMinimumChoice;
private:
  void cb_estConvergenceMinimumChoice_i(Fl_Input_Choice*, void*);
  static void cb_estConvergenceMinimumChoice(Fl_Input_Choice*, void*);
  static Fl_Menu_Item menu_estConvergenceMinimumChoice[];
public:
  Fl_Input_Choice *estConvergenceMaximumChoice;
private:
  void cb_estConvergenceMaximumChoice_i(Fl_Input_Choice*, void*);
  static void cb_estConvergenceMaximumChoice(Fl_Input_Choice*, void*);
  static Fl_Menu_Item menu_estConvergenceMaximumChoice[];
public:
  Fl_Menu_Button *estConvergenceMeasureMenu;
  static Fl_Menu_Item menu_estConvergenceMeasureMenu[];
private:
  void cb_Table_i(Fl_Button*, void*);
  static void cb_Table(Fl_Button*, void*);
public:
  Fl_File_Input *estXmlInput;
private:
  void cb_Browse4_i(Fl_Button*, void*);
  static void cb_Browse4(Fl_Button*, void*);
  void cb_Open_i(Fl_Button*, void*);
  static void cb_Open(Fl_Button*, void*);
public:
  Fl_Check_Button *estCenteredPsfCheck;
  void show(int argc, char* argv[]);
  void processing();
  void readXml( const std::string& filename );
  void writeXml( const std::string& filename );
  void make_table_dialog( void );
  Fl_Double_Window *tableDialog;
  Table *estTable;
private:
  void cb_Close_i(Fl_Return_Button*, void*);
  static void cb_Close(Fl_Return_Button*, void*);
  void cb_Save_i(Fl_Button*, void*);
  static void cb_Save(Fl_Button*, void*);
public:
  void make_table_entries(void);
  void make_save_csv( const char* filename);
};
#endif
