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 | } |