Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line | 
|---|---|---|---|
| 146 | f9daq | 1 | #include "../include/substructure.h" | 
        
| 2 | #include "../include/workstation.h" | 
        ||
| 3 | #include <stdio.h>  | 
        ||
| 4 | |||
| 5 | TSubStructure::TSubStructure()  | 
        ||
| 6 | { | 
        ||
| 7 |    // ID of certain objects | 
        ||
| 8 |    /* | 
        ||
| 9 |     * id = 0 -> Label + Text Entry | 
        ||
| 10 |     * id = 1 -> Label + Text Entry + Button | 
        ||
| 11 |     * id = 2 -> Label + Button | 
        ||
| 12 |     * id = 3 -> Label + Number Entry | 
        ||
| 13 |     * id = 4 -> Text Entry + Button | 
        ||
| 14 |     * id = 5 -> Label + Dropdown menu | 
        ||
| 15 |     * id = 6 -> 2 or more buttons | 
        ||
| 16 |     * id = 7 -> Label + 2 Number Entries | 
        ||
| 17 |     * id = 8 -> Checkbutton list | 
        ||
| 18 |     * id = 9 -> Button + horizontal progress bar | 
        ||
| 19 |     * id = 10 -> Label + horizontal progress bar | 
        ||
| 20 |     * id = 11 -> Button + horizontal progress bar + Text Entry | 
        ||
| 21 |     * id = 12 -> Checkbutton + Number Entry | 
        ||
| 22 |     * id = 13 -> Checkbutton + Text Entry | 
        ||
| 23 |    */ | 
        ||
| 24 | } | 
        ||
| 25 | |||
| 26 | TSubStructure::~TSubStructure()  | 
        ||
| 27 | { | 
        ||
| 28 |    // TODO (delete and new not working as they should) | 
        ||
| 29 | } | 
        ||
| 30 | |||
| 31 | // Widget with Label and Text Entry | 
        ||
| 32 | bool TSubStructure::TGLabelTEntry(TGWindow *parent, int w, int h, const char *label, const char *deftext = "", const char *layout = "oneline")  | 
        ||
| 33 | { | 
        ||
| 34 | id = 0;  | 
        ||
| 35 | |||
| 36 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 37 | |||
| 38 | if(strcmp("oneline", layout) == 0)  | 
        ||
| 39 |    { | 
        ||
| 40 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 41 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 42 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,6,2,2,2);  | 
        ||
| 43 |    } | 
        ||
| 44 | else if(strcmp("twoline", layout) == 0)  | 
        ||
| 45 |    { | 
        ||
| 46 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 47 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 48 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,0,2,2,2);  | 
        ||
| 49 |    } | 
        ||
| 50 | lab = new TGLabel(outsidebox, label);  | 
        ||
| 51 | outsidebox->AddFrame(lab, f0);  | 
        ||
| 52 | widgetTE = new TGTextEntry(outsidebox, deftext);  | 
        ||
| 53 | outsidebox->AddFrame(widgetTE, f0expandX);  | 
        ||
| 54 | |||
| 55 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 56 | |||
| 57 | return true;  | 
        ||
| 58 | } | 
        ||
| 59 | |||
| 60 | // Widget with Label, Text Entry and Button | 
        ||
| 61 | bool TSubStructure::TGLabelTEntryButton(TGWindow *parent, int w, int h, const char *label, const char *deftext = "", const char *buttext = "Set", const char *layout = "oneline")  | 
        ||
| 62 | { | 
        ||
| 63 | id = 1;  | 
        ||
| 64 | |||
| 65 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 66 | |||
| 67 | if(strcmp("oneline", layout) == 0)  | 
        ||
| 68 |    { | 
        ||
| 69 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 70 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 71 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,6,6,2,2);  | 
        ||
| 72 | lab = new TGLabel(outsidebox, label);  | 
        ||
| 73 | outsidebox->AddFrame(lab, f0);  | 
        ||
| 74 | widgetTE = new TGTextEntry(outsidebox, deftext);  | 
        ||
| 75 | widgetTE->Resize(w-12,22);  | 
        ||
| 76 | outsidebox->AddFrame(widgetTE, f0expandX);  | 
        ||
| 77 | widgetTB[0] = new TGTextButton(outsidebox, buttext);  | 
        ||
| 78 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 79 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 80 | widgetTB[0]->Resize(60,22);  | 
        ||
| 81 | outsidebox->AddFrame(widgetTB[0], f0);  | 
        ||
| 82 |    } | 
        ||
| 83 | else if(strcmp("twoline", layout) == 0)  | 
        ||
| 84 |    { | 
        ||
| 85 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 86 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 87 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,0,6,2,2);  | 
        ||
| 88 | lab = new TGLabel(outsidebox, label);  | 
        ||
| 89 | outsidebox->AddFrame(lab, f0);  | 
        ||
| 90 | |||
| 91 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 92 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 93 | widgetTE = new TGTextEntry(fH1, deftext);  | 
        ||
| 94 | widgetTE->Resize(w-12,22);  | 
        ||
| 95 | fH1->AddFrame(widgetTE, f0expandX);  | 
        ||
| 96 | widgetTB[0] = new TGTextButton(fH1, buttext);  | 
        ||
| 97 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 98 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 99 | widgetTB[0]->Resize(60,22);  | 
        ||
| 100 | fH1->AddFrame(widgetTB[0], f0);  | 
        ||
| 101 | outsidebox->AddFrame(fH1, f0expandX);  | 
        ||
| 102 |    } | 
        ||
| 103 | |||
| 104 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 105 | |||
| 106 | return true;  | 
        ||
| 107 | } | 
        ||
| 108 | |||
| 109 | // Widget with Label and Button | 
        ||
| 110 | bool TSubStructure::TGLabelButton(TGWindow *parent, int w, int h, const char *label, const char *buttext = "Set", const char *pos = "left")  | 
        ||
| 111 | { | 
        ||
| 112 | id = 2;  | 
        ||
| 113 | |||
| 114 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 115 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 116 | if(strcmp("left",pos) == 0)  | 
        ||
| 117 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 118 | else if(strcmp("center",pos) == 0)  | 
        ||
| 119 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 120 | else if(strcmp("right",pos) == 0)  | 
        ||
| 121 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 122 | |||
| 123 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 124 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 125 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 126 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 127 | lab = new TGLabel(fH1, label);  | 
        ||
| 128 | fH1->AddFrame(lab, f0);  | 
        ||
| 129 | widgetTB[0] = new TGTextButton(fH1, buttext);  | 
        ||
| 130 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 131 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 132 | widgetTB[0]->Resize(60,22);  | 
        ||
| 133 | fH1->AddFrame(widgetTB[0], f1);  | 
        ||
| 134 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 135 | |||
| 136 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 137 | |||
| 138 | return true;  | 
        ||
| 139 | } | 
        ||
| 140 | |||
| 141 | // Widget with Label and Number Entry | 
        ||
| 142 | bool TSubStructure::TGLabelNEntry(TGWindow *parent, int w, int h, const char *label, double defval, double *format, const char *pos)  | 
        ||
| 143 | { | 
        ||
| 144 | id = 3;  | 
        ||
| 145 | |||
| 146 | TGNumberFormat::EStyle numtype;  | 
        ||
| 147 | TGNumberFormat::EAttribute negpos;  | 
        ||
| 148 | TGNumberFormat::ELimit numlim;  | 
        ||
| 149 | bool arelimits[] = {false,false};  | 
        ||
| 150 | |||
| 151 |    // Number type (integer, real) | 
        ||
| 152 | if( (int)format[1] == 0 ) numtype = TGNumberFormat::kNESInteger;  | 
        ||
| 153 | else if( (int)format[1] == 1 ) numtype = TGNumberFormat::kNESRealOne;  | 
        ||
| 154 | else if( (int)format[1] == 2 ) numtype = TGNumberFormat::kNESRealTwo;  | 
        ||
| 155 | else if( (int)format[1] == 3 ) numtype = TGNumberFormat::kNESRealThree;  | 
        ||
| 156 | else if( (int)format[1] == 4 ) numtype = TGNumberFormat::kNESRealFour;  | 
        ||
| 157 | else if( (int)format[1] == -1 ) numtype = TGNumberFormat::kNESReal;  | 
        ||
| 158 | |||
| 159 |    // Negative or positive | 
        ||
| 160 | if( (int)format[2] == 0 ) negpos = TGNumberFormat::kNEAAnyNumber;  | 
        ||
| 161 | else if( (int)format[2] == 1 ) negpos = TGNumberFormat::kNEAPositive;  | 
        ||
| 162 | else if( (int)format[2] == 2 ) negpos = TGNumberFormat::kNEANonNegative;  | 
        ||
| 163 | |||
| 164 |    // Limits | 
        ||
| 165 | if( (int)format[3] == 0 ) numlim = TGNumberFormat::kNELNoLimits;  | 
        ||
| 166 | else if( (int)format[3] == 1 ) { numlim = TGNumberFormat::kNELLimitMax; arelimits[1] = true; }  | 
        ||
| 167 | else if( (int)format[3] == 2 ) { numlim = TGNumberFormat::kNELLimitMinMax; arelimits[0] = true; arelimits[1] = true; }  | 
        ||
| 168 | else if( (int)format[3] == -1 ) { numlim = TGNumberFormat::kNELLimitMin; arelimits[0] = true; }  | 
        ||
| 169 | |||
| 170 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 171 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 172 | if(strcmp("left",pos) == 0)  | 
        ||
| 173 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 174 | else if(strcmp("center",pos) == 0)  | 
        ||
| 175 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 176 | else if(strcmp("right",pos) == 0)  | 
        ||
| 177 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 178 | |||
| 179 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 180 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 181 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 182 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 183 | lab = new TGLabel(fH1, label);  | 
        ||
| 184 | fH1->AddFrame(lab, f0);  | 
        ||
| 185 | if( (int)format[1] == 0 )  | 
        ||
| 186 |    { | 
        ||
| 187 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 188 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, (int)format[4], (int)format[5]);  | 
        ||
| 189 | else if( arelimits[0] )  | 
        ||
| 190 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, (int)format[4], 0);  | 
        ||
| 191 | else if( arelimits[1] )  | 
        ||
| 192 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, 0, (int)format[4]);  | 
        ||
| 193 |       else | 
        ||
| 194 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim);  | 
        ||
| 195 |    } | 
        ||
| 196 | else if( (((int)format[1] > 0) && ((int)format[1] < 5)) || ((int)format[1] == -1) )  | 
        ||
| 197 |    { | 
        ||
| 198 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 199 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, format[4], format[5]);  | 
        ||
| 200 | else if( arelimits[0] )  | 
        ||
| 201 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, format[4], 0);  | 
        ||
| 202 | else if( arelimits[1] )  | 
        ||
| 203 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, 0, format[4]);  | 
        ||
| 204 |       else | 
        ||
| 205 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim);  | 
        ||
| 206 |    } | 
        ||
| 207 |    else | 
        ||
| 208 |    { | 
        ||
| 209 | delete outsidebox;  | 
        ||
| 210 | delete lab;  | 
        ||
| 211 | return false;  | 
        ||
| 212 |    } | 
        ||
| 213 | fH1->AddFrame(widgetNE[0], f1);  | 
        ||
| 214 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 215 | |||
| 216 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 217 | |||
| 218 | return true;  | 
        ||
| 219 | } | 
        ||
| 220 | |||
| 221 | // Widget with Text Entry and Button | 
        ||
| 222 | bool TSubStructure::TGTEntryButton(TGWindow *parent, int w, int h, const char *deftext = "", const char *buttext = "Set")  | 
        ||
| 223 | { | 
        ||
| 224 | id = 4;  | 
        ||
| 225 | |||
| 226 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 227 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,2,6,2,2);  | 
        ||
| 228 | |||
| 229 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 230 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 231 | widgetTE = new TGTextEntry(outsidebox, deftext);  | 
        ||
| 232 | widgetTE->Resize(w-12,22);  | 
        ||
| 233 | outsidebox->AddFrame(widgetTE, f0expandX);  | 
        ||
| 234 | widgetTB[0] = new TGTextButton(outsidebox, buttext);  | 
        ||
| 235 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 236 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 237 | widgetTB[0]->Resize(60,22);  | 
        ||
| 238 | outsidebox->AddFrame(widgetTB[0], f0);  | 
        ||
| 239 | |||
| 240 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 241 | |||
| 242 | return true;  | 
        ||
| 243 | } | 
        ||
| 244 | |||
| 245 | // Widget with Label and Dropdown menu | 
        ||
| 246 | bool TSubStructure::TGLabelDrop(TGWindow *parent, int w, int h, const char *label, int nrentries, const char *entrytext[512], const char *selecttext)  | 
        ||
| 247 | { | 
        ||
| 248 | id = 5;  | 
        ||
| 249 | |||
| 250 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 251 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,6,2,2,2);  | 
        ||
| 252 | |||
| 253 | int sel = 0;  | 
        ||
| 254 | |||
| 255 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 256 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 257 | lab = new TGLabel(outsidebox, label);  | 
        ||
| 258 | outsidebox->AddFrame(lab, f0);  | 
        ||
| 259 | widgetCB = new TGComboBox(outsidebox, 200);  | 
        ||
| 260 | for(int i = 0; i < nrentries; i++)  | 
        ||
| 261 |    { | 
        ||
| 262 | widgetCB->AddEntry(entrytext[i], i);  | 
        ||
| 263 | if( strcmp(entrytext[i], selecttext) == 0 )  | 
        ||
| 264 | sel = i;  | 
        ||
| 265 |    } | 
        ||
| 266 | widgetCB->Resize(50,22);  | 
        ||
| 267 | widgetCB->Select(sel);  | 
        ||
| 268 | outsidebox->AddFrame(widgetCB, f0expandX);  | 
        ||
| 269 | |||
| 270 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 271 | |||
| 272 | return true;  | 
        ||
| 273 | } | 
        ||
| 274 | |||
| 275 | // Widget with 2 or more buttons (up to 6) | 
        ||
| 276 | bool TSubStructure::TGMultiButton(TGWindow *parent, int w, int h, int nrbuttons, const char *buttext[512], const char *pos)  | 
        ||
| 277 | { | 
        ||
| 278 | id = 6;  | 
        ||
| 279 | |||
| 280 | if(nrbuttons > 6) return false;  | 
        ||
| 281 | |||
| 282 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 283 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 284 | if(strcmp("left",pos) == 0)  | 
        ||
| 285 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 286 | else if(strcmp("center",pos) == 0)  | 
        ||
| 287 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 288 | else if(strcmp("right",pos) == 0)  | 
        ||
| 289 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 290 | |||
| 291 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 292 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 293 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 294 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 295 | for(int i = 0; i < nrbuttons; i++)  | 
        ||
| 296 |    { | 
        ||
| 297 | widgetTB[i] = new TGTextButton(fH1, buttext[i]);  | 
        ||
| 298 | widgetTB[i]->SetTextJustify(36);  | 
        ||
| 299 | widgetTB[i]->SetWrapLength(-1);  | 
        ||
| 300 | widgetTB[i]->Resize((w-6-8)/nrbuttons,22);  | 
        ||
| 301 | if(i == 0) fH1->AddFrame(widgetTB[i], f0);  | 
        ||
| 302 | else fH1->AddFrame(widgetTB[i], f1);  | 
        ||
| 303 |    } | 
        ||
| 304 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 305 | |||
| 306 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 307 | |||
| 308 | return true;  | 
        ||
| 309 | } | 
        ||
| 310 | |||
| 311 | // Widget with Label and two Number Entries | 
        ||
| 312 | bool TSubStructure::TGLabelDoubleNEntry(TGWindow *parent, int w, int h, const char *label, double defval1, double *format1, double defval2, double *format2, const char *pos)  | 
        ||
| 313 | { | 
        ||
| 314 | id = 7;  | 
        ||
| 315 | |||
| 316 | TGNumberFormat::EStyle numtype1, numtype2;  | 
        ||
| 317 | TGNumberFormat::EAttribute negpos1, negpos2;  | 
        ||
| 318 | TGNumberFormat::ELimit numlim1, numlim2;  | 
        ||
| 319 | bool arelimits[] = {false,false,false,false};  | 
        ||
| 320 | |||
| 321 |    // Number type (integer, real) | 
        ||
| 322 | if( (int)format1[1] == 0 ) numtype1 = TGNumberFormat::kNESInteger;  | 
        ||
| 323 | else if( (int)format1[1] == 1 ) numtype1 = TGNumberFormat::kNESRealOne;  | 
        ||
| 324 | else if( (int)format1[1] == 2 ) numtype1 = TGNumberFormat::kNESRealTwo;  | 
        ||
| 325 | else if( (int)format1[1] == 3 ) numtype1 = TGNumberFormat::kNESRealThree;  | 
        ||
| 326 | else if( (int)format1[1] == 4 ) numtype1 = TGNumberFormat::kNESRealFour;  | 
        ||
| 327 | else if( (int)format1[1] == -1 ) numtype1 = TGNumberFormat::kNESReal;  | 
        ||
| 328 | |||
| 329 | if( (int)format2[1] == 0 ) numtype2 = TGNumberFormat::kNESInteger;  | 
        ||
| 330 | else if( (int)format2[1] == 1 ) numtype2 = TGNumberFormat::kNESRealOne;  | 
        ||
| 331 | else if( (int)format2[1] == 2 ) numtype2 = TGNumberFormat::kNESRealTwo;  | 
        ||
| 332 | else if( (int)format2[1] == 3 ) numtype2 = TGNumberFormat::kNESRealThree;  | 
        ||
| 333 | else if( (int)format2[1] == 4 ) numtype2 = TGNumberFormat::kNESRealFour;  | 
        ||
| 334 | else if( (int)format2[1] == -1 ) numtype2 = TGNumberFormat::kNESReal;  | 
        ||
| 335 | |||
| 336 |    // Negative or positive | 
        ||
| 337 | if( (int)format1[2] == 0 ) negpos1 = TGNumberFormat::kNEAAnyNumber;  | 
        ||
| 338 | else if( (int)format1[2] == 1 ) negpos1 = TGNumberFormat::kNEAPositive;  | 
        ||
| 339 | else if( (int)format1[2] == 2 ) negpos1 = TGNumberFormat::kNEANonNegative;  | 
        ||
| 340 | |||
| 341 | if( (int)format2[2] == 0 ) negpos2 = TGNumberFormat::kNEAAnyNumber;  | 
        ||
| 342 | else if( (int)format2[2] == 1 ) negpos2 = TGNumberFormat::kNEAPositive;  | 
        ||
| 343 | else if( (int)format2[2] == 2 ) negpos2 = TGNumberFormat::kNEANonNegative;  | 
        ||
| 344 | |||
| 345 |    // Limits | 
        ||
| 346 | if( (int)format1[3] == 0 ) numlim1 = TGNumberFormat::kNELNoLimits;  | 
        ||
| 347 | else if( (int)format1[3] == 1 ) { numlim1 = TGNumberFormat::kNELLimitMax; arelimits[1] = true; }  | 
        ||
| 348 | else if( (int)format1[3] == 2 ) { numlim1 = TGNumberFormat::kNELLimitMinMax; arelimits[0] = true; arelimits[1] = true; }  | 
        ||
| 349 | else if( (int)format1[3] == -1 ) { numlim1 = TGNumberFormat::kNELLimitMin; arelimits[0] = true; }  | 
        ||
| 350 | |||
| 351 | if( (int)format2[3] == 0 ) numlim2 = TGNumberFormat::kNELNoLimits;  | 
        ||
| 352 | else if( (int)format2[3] == 1 ) { numlim2 = TGNumberFormat::kNELLimitMax; arelimits[3] = true; }  | 
        ||
| 353 | else if( (int)format2[3] == 2 ) { numlim2 = TGNumberFormat::kNELLimitMinMax; arelimits[2] = true; arelimits[3] = true; }  | 
        ||
| 354 | else if( (int)format2[3] == -1 ) { numlim2 = TGNumberFormat::kNELLimitMin; arelimits[2] = true; }  | 
        ||
| 355 | |||
| 356 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 357 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 358 | if(strcmp("left",pos) == 0)  | 
        ||
| 359 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 360 | else if(strcmp("center",pos) == 0)  | 
        ||
| 361 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 362 | else if(strcmp("right",pos) == 0)  | 
        ||
| 363 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 364 | |||
| 365 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 366 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 367 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 368 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 369 | lab = new TGLabel(fH1, label);  | 
        ||
| 370 | fH1->AddFrame(lab, f0);  | 
        ||
| 371 | if( (int)format1[1] == 0 )  | 
        ||
| 372 |    { | 
        ||
| 373 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 374 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, (int)format1[4], (int)format1[5]);  | 
        ||
| 375 | else if( arelimits[0] )  | 
        ||
| 376 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, (int)format1[4], 0);  | 
        ||
| 377 | else if( arelimits[1] )  | 
        ||
| 378 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, 0, (int)format1[4]);  | 
        ||
| 379 |       else | 
        ||
| 380 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval1, (int)format1[0], 999, numtype1, negpos1, numlim1);  | 
        ||
| 381 |    } | 
        ||
| 382 | else if( (((int)format1[1] > 0) && ((int)format1[1] < 5)) || ((int)format1[1] == -1) )  | 
        ||
| 383 |    { | 
        ||
| 384 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 385 | widgetNE[0] = new TGNumberEntry(fH1, defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, format1[4], format1[5]);  | 
        ||
| 386 | else if( arelimits[0] )  | 
        ||
| 387 | widgetNE[0] = new TGNumberEntry(fH1, defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, format1[4], 0);  | 
        ||
| 388 | else if( arelimits[1] )  | 
        ||
| 389 | widgetNE[0] = new TGNumberEntry(fH1, defval1, (int)format1[0], 999, numtype1, negpos1, numlim1, 0, format1[4]);  | 
        ||
| 390 |       else | 
        ||
| 391 | widgetNE[0] = new TGNumberEntry(fH1, defval1, (int)format1[0], 999, numtype1, negpos1, numlim1);  | 
        ||
| 392 |    } | 
        ||
| 393 | fH1->AddFrame(widgetNE[0], f1);  | 
        ||
| 394 | |||
| 395 | if( (int)format2[1] == 0 )  | 
        ||
| 396 |    { | 
        ||
| 397 | if( arelimits[2] && arelimits[3] )  | 
        ||
| 398 | widgetNE[1] = new TGNumberEntry(fH1, (int)defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, (int)format2[4], (int)format2[5]);  | 
        ||
| 399 | else if( arelimits[2] )  | 
        ||
| 400 | widgetNE[1] = new TGNumberEntry(fH1, (int)defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, (int)format2[4], 0);  | 
        ||
| 401 | else if( arelimits[3] )  | 
        ||
| 402 | widgetNE[1] = new TGNumberEntry(fH1, (int)defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, 0, (int)format2[4]);  | 
        ||
| 403 |       else | 
        ||
| 404 | widgetNE[1] = new TGNumberEntry(fH1, (int)defval2, (int)format2[0], 999, numtype2, negpos2, numlim2);  | 
        ||
| 405 |    } | 
        ||
| 406 | else if( (((int)format2[1] > 0) && ((int)format2[1] < 5)) || ((int)format2[1] == -1) )  | 
        ||
| 407 |    { | 
        ||
| 408 | if( arelimits[2] && arelimits[3] )  | 
        ||
| 409 | widgetNE[1] = new TGNumberEntry(fH1, defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, format2[4], format2[5]);  | 
        ||
| 410 | else if( arelimits[2] )  | 
        ||
| 411 | widgetNE[1] = new TGNumberEntry(fH1, defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, format2[4], 0);  | 
        ||
| 412 | else if( arelimits[3] )  | 
        ||
| 413 | widgetNE[1] = new TGNumberEntry(fH1, defval2, (int)format2[0], 999, numtype2, negpos2, numlim2, 0, format2[4]);  | 
        ||
| 414 |       else | 
        ||
| 415 | widgetNE[1] = new TGNumberEntry(fH1, defval2, (int)format2[0], 999, numtype2, negpos2, numlim2);  | 
        ||
| 416 |    } | 
        ||
| 417 |    else | 
        ||
| 418 |    { | 
        ||
| 419 | delete outsidebox;  | 
        ||
| 420 | delete lab;  | 
        ||
| 421 | return false;  | 
        ||
| 422 |    } | 
        ||
| 423 | fH1->AddFrame(widgetNE[1], f1);  | 
        ||
| 424 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 425 | |||
| 426 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 427 | |||
| 428 | return true;  | 
        ||
| 429 | } | 
        ||
| 430 | |||
| 431 | // Widget with 1 or more check boxes (up to 9) | 
        ||
| 432 | bool TSubStructure::TGCheckList(TGWindow *parent, int w, int h, int nrchecks, const char *labels[512], int *onoff, const char *layout, const char *pos)  | 
        ||
| 433 | { | 
        ||
| 434 | id = 8;  | 
        ||
| 435 | |||
| 436 | if(nrchecks > 8) return false;  | 
        ||
| 437 | |||
| 438 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 439 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 440 | if(strcmp("left",pos) == 0)  | 
        ||
| 441 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 442 | else if(strcmp("center",pos) == 0)  | 
        ||
| 443 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 444 | else if(strcmp("right",pos) == 0)  | 
        ||
| 445 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 446 | |||
| 447 | if(strcmp("left",pos) == 0)  | 
        ||
| 448 | f3 = new TGLayoutHints(kLHintsLeft,2,2,2,2);  | 
        ||
| 449 | else if(strcmp("center",pos) == 0)  | 
        ||
| 450 | f3 = new TGLayoutHints(kLHintsCenterX,2,2,2,2);  | 
        ||
| 451 | else if(strcmp("right",pos) == 0)  | 
        ||
| 452 | f3 = new TGLayoutHints(kLHintsRight,2,2,2,2);  | 
        ||
| 453 | |||
| 454 | if(strcmp("horizontal", layout) == 0)  | 
        ||
| 455 |    { | 
        ||
| 456 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 457 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 458 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 459 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 460 | |||
| 461 | for(int i = 0; i < nrchecks; i++)  | 
        ||
| 462 |       { | 
        ||
| 463 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 464 | if(onoff[i] == 0)  | 
        ||
| 465 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 466 | else if(onoff[i] == 1)  | 
        ||
| 467 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 468 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 469 | if(i == 0) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 470 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 471 |       } | 
        ||
| 472 | |||
| 473 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 474 |    } | 
        ||
| 475 | else if(strcmp("vertical", layout) == 0)  | 
        ||
| 476 |    { | 
        ||
| 477 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 478 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 479 | |||
| 480 | for(int i = 0; i < nrchecks; i++)  | 
        ||
| 481 |       { | 
        ||
| 482 | widgetChBox[i] = new TGCheckButton(outsidebox, labels[i]);  | 
        ||
| 483 | if(onoff[i] == 0)  | 
        ||
| 484 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 485 | else if(onoff[i] == 1)  | 
        ||
| 486 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 487 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 488 | outsidebox->AddFrame(widgetChBox[i], f3);  | 
        ||
| 489 |       } | 
        ||
| 490 |    } | 
        ||
| 491 | else if(strcmp("twoline", layout) == 0)  | 
        ||
| 492 |    { | 
        ||
| 493 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 494 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 495 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 496 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 497 | |||
| 498 | for(int i = 0; i < TMath::Ceil(nrchecks/2.); i++)  | 
        ||
| 499 |       { | 
        ||
| 500 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 501 | if(onoff[i] == 0)  | 
        ||
| 502 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 503 | else if(onoff[i] == 1)  | 
        ||
| 504 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 505 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 506 | if(i == 0) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 507 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 508 |       } | 
        ||
| 509 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 510 | |||
| 511 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 512 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 513 | |||
| 514 | for(int i = TMath::Ceil(nrchecks/2.); i < nrchecks; i++)  | 
        ||
| 515 |       { | 
        ||
| 516 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 517 | if(onoff[i] == 0)  | 
        ||
| 518 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 519 | else if(onoff[i] == 1)  | 
        ||
| 520 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 521 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 522 | if(i == TMath::Ceil(nrchecks/2.)) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 523 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 524 |       } | 
        ||
| 525 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 526 |    } | 
        ||
| 527 | else if(strcmp("threeline", layout) == 0)  | 
        ||
| 528 |    { | 
        ||
| 529 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 530 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 531 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 532 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 533 | |||
| 534 | for(int i = 0; i < TMath::Ceil(nrchecks/3.); i++)  | 
        ||
| 535 |       { | 
        ||
| 536 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 537 | if(onoff[i] == 0)  | 
        ||
| 538 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 539 | else if(onoff[i] == 1)  | 
        ||
| 540 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 541 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 542 | if(i == 0) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 543 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 544 |       } | 
        ||
| 545 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 546 | |||
| 547 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 548 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 549 | |||
| 550 | for(int i = TMath::Ceil(nrchecks/3.); i < TMath::Ceil(2.*nrchecks/3.); i++)  | 
        ||
| 551 |       { | 
        ||
| 552 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 553 | if(onoff[i] == 0)  | 
        ||
| 554 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 555 | else if(onoff[i] == 1)  | 
        ||
| 556 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 557 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 558 | if(i == TMath::Ceil(nrchecks/3.)) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 559 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 560 |       } | 
        ||
| 561 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 562 | |||
| 563 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 564 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 565 | |||
| 566 | for(int i = TMath::Ceil(2.*nrchecks/3.); i < nrchecks; i++)  | 
        ||
| 567 |       { | 
        ||
| 568 | widgetChBox[i] = new TGCheckButton(fH1, labels[i]);  | 
        ||
| 569 | if(onoff[i] == 0)  | 
        ||
| 570 | widgetChBox[i]->SetState(kButtonUp);  | 
        ||
| 571 | else if(onoff[i] == 1)  | 
        ||
| 572 | widgetChBox[i]->SetState(kButtonDown);  | 
        ||
| 573 | widgetChBox[i]->Resize((w-6-8)/nrchecks,22);  | 
        ||
| 574 | if(i == TMath::Ceil(2.*nrchecks/3.)) fH1->AddFrame(widgetChBox[i], f0);  | 
        ||
| 575 | else fH1->AddFrame(widgetChBox[i], f1);  | 
        ||
| 576 |       } | 
        ||
| 577 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 578 |    } | 
        ||
| 579 |    else | 
        ||
| 580 | return false;  | 
        ||
| 581 | |||
| 582 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 583 | |||
| 584 | return true;  | 
        ||
| 585 | } | 
        ||
| 586 | |||
| 587 | // Widget with Button and horizontal progress bar | 
        ||
| 588 | bool TSubStructure::TGButtonProgress(TGWindow *parent, int w, int h, const char *buttext = "Set")  | 
        ||
| 589 | { | 
        ||
| 590 | id = 9;  | 
        ||
| 591 | |||
| 592 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 593 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,20,2,2,2);  | 
        ||
| 594 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 595 | |||
| 596 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 597 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 598 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 599 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 600 | widgetTB[0] = new TGTextButton(fH1, buttext);  | 
        ||
| 601 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 602 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 603 | widgetTB[0]->Resize(60,22);  | 
        ||
| 604 | fH1->AddFrame(widgetTB[0], f0);  | 
        ||
| 605 | widgetPB = new TGHProgressBar(fH1, TGProgressBar::kStandard, w/2);  | 
        ||
| 606 | widgetPB->ShowPosition();  | 
        ||
| 607 | widgetPB->SetRange(0,100);  | 
        ||
| 608 | widgetPB->SetBarColor("green");  | 
        ||
| 609 | fH1->AddFrame(widgetPB, f1);  | 
        ||
| 610 | |||
| 611 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 612 | |||
| 613 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 614 | |||
| 615 | return true;  | 
        ||
| 616 | } | 
        ||
| 617 | |||
| 618 | // Widget with Button and horizontal progress bar | 
        ||
| 619 | bool TSubStructure::TGButtonProgressTEntry(TGWindow *parent, int w, int h, const char *buttext = "Set", const char *deftext = "Remaining time: ")  | 
        ||
| 620 | { | 
        ||
| 621 | id = 11;  | 
        ||
| 622 | |||
| 623 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 624 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,20,2,2,2);  | 
        ||
| 625 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,20,2,2,2);  | 
        ||
| 626 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 627 | |||
| 628 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 629 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 630 | fH1 = new TGHorizontalFrame(outsidebox, 5*w/6, h, kFixedWidth);  | 
        ||
| 631 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 632 | widgetTB[0] = new TGTextButton(fH1, buttext);  | 
        ||
| 633 | widgetTB[0]->SetTextJustify(36);  | 
        ||
| 634 | widgetTB[0]->SetWrapLength(-1);  | 
        ||
| 635 | widgetTB[0]->Resize(60,22);  | 
        ||
| 636 | fH1->AddFrame(widgetTB[0], f0);  | 
        ||
| 637 | widgetPB = new TGHProgressBar(fH1, TGProgressBar::kStandard, w/4);  | 
        ||
| 638 | widgetPB->ShowPosition();  | 
        ||
| 639 | widgetPB->SetRange(0,100);  | 
        ||
| 640 | widgetPB->SetBarColor("green");  | 
        ||
| 641 | fH1->AddFrame(widgetPB, f1);  | 
        ||
| 642 | widgetTE = new TGTextEntry(fH1, deftext);  | 
        ||
| 643 | fH1->AddFrame(widgetTE, f0expandX);  | 
        ||
| 644 | |||
| 645 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 646 | |||
| 647 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 648 | |||
| 649 | return true;  | 
        ||
| 650 | } | 
        ||
| 651 | |||
| 652 | // Widget with Label and horizontal progress bar | 
        ||
| 653 | bool TSubStructure::TGLabelProgress(TGWindow *parent, int w, int h, const char *label)  | 
        ||
| 654 | { | 
        ||
| 655 | id = 10;  | 
        ||
| 656 | |||
| 657 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 658 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,20,2,2,2);  | 
        ||
| 659 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 660 | |||
| 661 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 662 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 663 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 664 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 665 | lab = new TGLabel(fH1, label);  | 
        ||
| 666 | fH1->AddFrame(lab, f0);  | 
        ||
| 667 | widgetPB = new TGHProgressBar(fH1, TGProgressBar::kStandard, w/2);  | 
        ||
| 668 | widgetPB->ShowPosition();  | 
        ||
| 669 | widgetPB->SetRange(0,100);  | 
        ||
| 670 | widgetPB->SetBarColor("green");  | 
        ||
| 671 | fH1->AddFrame(widgetPB, f1);  | 
        ||
| 672 | |||
| 673 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 674 | |||
| 675 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 676 | |||
| 677 | return true;  | 
        ||
| 678 | } | 
        ||
| 679 | |||
| 680 | // Widget with checkbutton and number entry | 
        ||
| 681 | bool TSubStructure::TGCheckNEntry(TGWindow *parent, int w, int h, const char *label, int onoff, double defval, double *format, const char *pos)  | 
        ||
| 682 | { | 
        ||
| 683 | id = 12;  | 
        ||
| 684 | |||
| 685 | TGNumberFormat::EStyle numtype;  | 
        ||
| 686 | TGNumberFormat::EAttribute negpos;  | 
        ||
| 687 | TGNumberFormat::ELimit numlim;  | 
        ||
| 688 | bool arelimits[] = {false,false};  | 
        ||
| 689 | |||
| 690 |    // Number type (integer, real) | 
        ||
| 691 | if( (int)format[1] == 0 ) numtype = TGNumberFormat::kNESInteger;  | 
        ||
| 692 | else if( (int)format[1] == 1 ) numtype = TGNumberFormat::kNESRealOne;  | 
        ||
| 693 | else if( (int)format[1] == 2 ) numtype = TGNumberFormat::kNESRealTwo;  | 
        ||
| 694 | else if( (int)format[1] == 3 ) numtype = TGNumberFormat::kNESRealThree;  | 
        ||
| 695 | else if( (int)format[1] == 4 ) numtype = TGNumberFormat::kNESRealFour;  | 
        ||
| 696 | else if( (int)format[1] == -1 ) numtype = TGNumberFormat::kNESReal;  | 
        ||
| 697 | |||
| 698 |    // Negative or positive | 
        ||
| 699 | if( (int)format[2] == 0 ) negpos = TGNumberFormat::kNEAAnyNumber;  | 
        ||
| 700 | else if( (int)format[2] == 1 ) negpos = TGNumberFormat::kNEAPositive;  | 
        ||
| 701 | else if( (int)format[2] == 2 ) negpos = TGNumberFormat::kNEANonNegative;  | 
        ||
| 702 | |||
| 703 |    // Limits | 
        ||
| 704 | if( (int)format[3] == 0 ) numlim = TGNumberFormat::kNELNoLimits;  | 
        ||
| 705 | else if( (int)format[3] == 1 ) { numlim = TGNumberFormat::kNELLimitMax; arelimits[1] = true; }  | 
        ||
| 706 | else if( (int)format[3] == 2 ) { numlim = TGNumberFormat::kNELLimitMinMax; arelimits[0] = true; arelimits[1] = true; }  | 
        ||
| 707 | else if( (int)format[3] == -1 ) { numlim = TGNumberFormat::kNELLimitMin; arelimits[0] = true; }  | 
        ||
| 708 | |||
| 709 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 710 | f1 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,6,2,2,2);  | 
        ||
| 711 | if(strcmp("left",pos) == 0)  | 
        ||
| 712 | f2 = new TGLayoutHints(kLHintsLeft,0,0,0,0);  | 
        ||
| 713 | else if(strcmp("center",pos) == 0)  | 
        ||
| 714 | f2 = new TGLayoutHints(kLHintsCenterX,0,0,0,0);  | 
        ||
| 715 | else if(strcmp("right",pos) == 0)  | 
        ||
| 716 | f2 = new TGLayoutHints(kLHintsRight,0,0,0,0);  | 
        ||
| 717 | |||
| 718 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 719 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 720 | fH1 = new TGHorizontalFrame(outsidebox, 100, h);  | 
        ||
| 721 | if(DBGSIG > 1) fH1->SetBackgroundColor(200);  | 
        ||
| 722 | widgetChBox[0] = new TGCheckButton(fH1, label);  | 
        ||
| 723 | if(onoff == 0)  | 
        ||
| 724 | widgetChBox[0]->SetState(kButtonUp);  | 
        ||
| 725 | else if(onoff == 1)  | 
        ||
| 726 | widgetChBox[0]->SetState(kButtonDown);  | 
        ||
| 727 | //   widgetChBox[0]->Resize(w-14,22); | 
        ||
| 728 | fH1->AddFrame(widgetChBox[0], f0);  | 
        ||
| 729 | if( (int)format[1] == 0 )  | 
        ||
| 730 |    { | 
        ||
| 731 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 732 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, (int)format[4], (int)format[5]);  | 
        ||
| 733 | else if( arelimits[0] )  | 
        ||
| 734 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, (int)format[4], 0);  | 
        ||
| 735 | else if( arelimits[1] )  | 
        ||
| 736 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim, 0, (int)format[4]);  | 
        ||
| 737 |       else | 
        ||
| 738 | widgetNE[0] = new TGNumberEntry(fH1, (int)defval, (int)format[0], 999, numtype, negpos, numlim);  | 
        ||
| 739 |    } | 
        ||
| 740 | else if( (((int)format[1] > 0) && ((int)format[1] < 5)) || ((int)format[1] == -1) )  | 
        ||
| 741 |    { | 
        ||
| 742 | if( arelimits[0] && arelimits[1] )  | 
        ||
| 743 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, format[4], format[5]);  | 
        ||
| 744 | else if( arelimits[0] )  | 
        ||
| 745 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, format[4], 0);  | 
        ||
| 746 | else if( arelimits[1] )  | 
        ||
| 747 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim, 0, format[4]);  | 
        ||
| 748 |       else | 
        ||
| 749 | widgetNE[0] = new TGNumberEntry(fH1, defval, (int)format[0], 999, numtype, negpos, numlim);  | 
        ||
| 750 |    } | 
        ||
| 751 |    else | 
        ||
| 752 |    { | 
        ||
| 753 | delete outsidebox;  | 
        ||
| 754 | delete lab;  | 
        ||
| 755 | return false;  | 
        ||
| 756 |    } | 
        ||
| 757 | fH1->AddFrame(widgetNE[0], f1);  | 
        ||
| 758 | outsidebox->AddFrame(fH1, f2);  | 
        ||
| 759 | |||
| 760 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 761 | |||
| 762 | return true;  | 
        ||
| 763 | } | 
        ||
| 764 | |||
| 765 | // Widget with checkbutton and text entry | 
        ||
| 766 | bool TSubStructure::TGCheckTEntry(TGWindow *parent, int w, int h, const char *label, int onoff, const char *deftext, const char *layout)  | 
        ||
| 767 | { | 
        ||
| 768 | id = 13;  | 
        ||
| 769 | |||
| 770 | f0 = new TGLayoutHints(kLHintsLeft | kLHintsCenterY,2,2,2,2);  | 
        ||
| 771 | |||
| 772 | if(strcmp("oneline", layout) == 0)  | 
        ||
| 773 |    { | 
        ||
| 774 | outsidebox = new TGCompositeFrame(parent, w-6, h, kHorizontalFrame | kFixedWidth);  | 
        ||
| 775 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 776 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,6,2,2,2);  | 
        ||
| 777 |    } | 
        ||
| 778 | else if(strcmp("twoline", layout) == 0)  | 
        ||
| 779 |    { | 
        ||
| 780 | outsidebox = new TGCompositeFrame(parent, w-6, h, kVerticalFrame | kFixedWidth);  | 
        ||
| 781 | if(DBGSIG > 1) outsidebox->SetBackgroundColor(0);  | 
        ||
| 782 | f0expandX = new TGLayoutHints(kLHintsExpandX | kLHintsCenterY,0,2,2,2);  | 
        ||
| 783 |    } | 
        ||
| 784 | |||
| 785 | widgetChBox[0] = new TGCheckButton(outsidebox, label);  | 
        ||
| 786 | if(onoff == 0)  | 
        ||
| 787 | widgetChBox[0]->SetState(kButtonUp);  | 
        ||
| 788 | else if(onoff == 1)  | 
        ||
| 789 | widgetChBox[0]->SetState(kButtonDown);  | 
        ||
| 790 | outsidebox->AddFrame(widgetChBox[0], f0);  | 
        ||
| 791 | widgetTE = new TGTextEntry(outsidebox, deftext);  | 
        ||
| 792 | outsidebox->AddFrame(widgetTE, f0expandX);  | 
        ||
| 793 | |||
| 794 | if(DBGSIG > 1) printf("id = %d\n",id);  | 
        ||
| 795 | |||
| 796 | return true;  | 
        ||
| 797 | } |