#ifndef __TEST_H__
 
#define __TEST_H__
 
 
 
#include "root_include.h"
 
#include <string.h>
 
 
 
// Format for Number Entry fields:
 
// [digit space] [num type] [neg-pos] [limit] [min limit], [max limit]
 
//
 
// [digit space]: Number of spaces for the entered digits (width)
 
// [num type]: 0 = Integer, 1 = Real one digit, 2 = Real two digits, 3 = Real three digits, 4 = Real four digits, -1 = Arbitrary real
 
// [neg-pos]: 0 = Any number, 1 = Positive numbers, 2 = Nonnegative numbers
 
// [limit]: 0 = No limits, 1 = Maximum limit, 2 = Min and Max limits, -1 = Minimum limit
 
// [min limit], [max limit]: Min and Max limits, if applicable
 
 
 
class TSubStructure
 
{
 
RQ_OBJECT("TSubStructure")
 
 
 
protected:
 
   TGLabel *lab;
 
   TGHorizontalFrame *fH1;
 
   TGLayoutHints *f0, *f0expandX, *f1, *f2, *f3;
 
public:
 
   TSubStructure();
 
   virtual ~TSubStructure();
 
 
 
   // Label + Text Entry -> layout can be "oneline", "twoline"
 
   bool TGLabelTEntry(TGWindow *parent, int w, int h, const char *label, const char *deftext, const char *layout);
 
   // Label + Text Entry + Button -> layout can be "oneline", "twoline"
 
   bool TGLabelTEntryButton(TGWindow *parent, int w, int h, const char *label, const char *deftext, const char *buttext, const char *layout);
 
   // Label + Button
 
   bool TGLabelButton(TGWindow *parent, int w, int h, const char *label, const char *buttext, const char *pos);
 
   // Label + Number Entry
 
   bool TGLabelNEntry(TGWindow *parent, int w, int h, const char *label, double defval, double *format, const char *pos);
 
   // Text Entry + Button
 
   bool TGTEntryButton(TGWindow *parent, int w, int h, const char *deftext, const char *buttext);
 
   // Label + Dropdown menu
 
   bool TGLabelDrop(TGWindow *parent, int w, int h, const char *label, int nrentries, const char *entrytext[512], const char *selecttext);
 
   // 2 or more buttons
 
   bool TGMultiButton(TGWindow *parent, int w, int h, int nrbuttons, const char *buttext[512], const char *pos);
 
   // Label + 2 Number Entries
 
   bool TGLabelDoubleNEntry(TGWindow *parent, int w, int h, const char *label, double defval1, double *format1, double defval2, double *format2, const char *pos);
 
   // Checkbutton list (1 - 9) -> layout can be "horizontal", "vertical", "twoline", "threeline"
 
   bool TGCheckList(TGWindow *parent, int w, int h, int nrchecks, const char *labels[512], int *onoff, const char *layout, const char *pos);
 
   // Button + Horizontal progress bar
 
   bool TGButtonProgress(TGWindow *parent, int w, int h, const char *buttext);
 
   // Label + Horizontal progress bar
 
   bool TGLabelProgress(TGWindow *parent, int w, int h, const char *label);
 
   // Button + Horizontal progress bar + Text Entry
 
   bool TGButtonProgressTEntry(TGWindow *parent, int w, int h, const char *buttext, const char *deftext);
 
   // Checkbutton + Number entry
 
   bool TGCheckNEntry(TGWindow *parent, int w, int h, const char *label, int onoff, double defval, double *format, const char *pos);
 
   // Checkbutton + Text entry
 
   bool TGCheckTEntry(TGWindow *parent, int w, int h, const char *label, int onoff, const char *deftext, const char *layout);
 
 
 
   TGTextEntry *widgetTE;
 
   TGTextButton *widgetTB[6];
 
   TGNumberEntry *widgetNE[2];
 
   TGComboBox *widgetCB;
 
   TGCompositeFrame *outsidebox;
 
   TGCheckButton *widgetChBox[9];
 
   TGHProgressBar *widgetPB;
 
   int id;
 
};
 
 
 
#endif