Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TGuiBldHintsEditor.cxx
Go to the documentation of this file.
1// @(#)root/guibuilder:$Id$
2// Author: Valeriy Onuchin 12/09/04
3
4/*************************************************************************
5 * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. *
6 * All rights reserved. *
7 * *
8 * For the licensing terms see $ROOTSYS/LICENSE. *
9 * For the list of contributors see $ROOTSYS/README/CREDITS. *
10 *************************************************************************/
11
12#include "TGuiBldHintsEditor.h"
13#include "TGuiBldHintsButton.h"
14#include "TGNumberEntry.h"
15#include "TGuiBldEditor.h"
16#include "TGLabel.h"
17#include "TG3DLine.h"
18#include "TGuiBldNameFrame.h"
20#include "TRootGuiBuilder.h"
21#include "TGTableLayout.h"
22
23
24/** \class TGuiBldHintsEditor
25 \ingroup guibuilder
26
27Editor of widget's layout hints used by the ROOT GUI builder.
28
29*/
30
31
32
33////////////////////////////////////////////////////////////////////////////////
53
54////////////////////////////////////////////////////////////////////////////////
55/// Constructor.
56
58 TGuiBldHintsEditor *hints) :
59 TGVerticalFrame(p, 1, 1), fEditor(e), fHints(hints)
60{
63 fRows = 0;
64 fColumns = 0;
65
66 //-----check button to layout subframes was moved to HintsEditor to be generalized ------
67
68 // "Matrix layout" group frame
69 TGGroupFrame *fGroupFrame4066 = new TGGroupFrame(this, "Matrix layout");
70 TGHorizontalFrame *f = new TGHorizontalFrame(fGroupFrame4066);
71
72 f->AddFrame(new TGLabel(f," Cols "), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
74 f->AddFrame(fColumns, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
75
76 f->AddFrame(new TGLabel(f," Rows "), new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
78 f->AddFrame(fRows, new TGLayoutHints(kLHintsLeft | kLHintsCenterY, 2, 2, 2, 2));
79
80 fGroupFrame4066->AddFrame(f, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 2, 2, 2, 2));
81
82 TGTextButton *fAppButton = new TGTextButton(fGroupFrame4066, " Apply ");
83 fGroupFrame4066->AddFrame(fAppButton, new TGLayoutHints(kLHintsExpandX | kLHintsCenterY, 5, 5, 2, 2));
84
85 AddFrame(fGroupFrame4066, new TGLayoutHints(kLHintsTop | kLHintsExpandX));
86
87 fAppButton->Connect("Clicked()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
88 //fRows->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
89 //fColumns->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
90 fRows->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
91 fColumns->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", fHints, "MatrixLayout()");
94
95 fPadTop = 2;
96 fPadBottom = 2;
97 fPadLeft = 2;
98 fPadRight = 2;
99
101 Resize();
102 MapWindow();
103}
104
105////////////////////////////////////////////////////////////////////////////////
106/// action when selected/grabbed frame was changed
107
109{
110 fMatrix = 0;
111
112 if (!frame) {
113 UnmapWindow();
114 fHints->fLayButton->SetEnabled(kFALSE);
115 fHints->fLayButton->SetDown(kFALSE);
116 fRows->SetNumber(0);
117 fColumns->SetNumber(0);
118 return;
119 }
120
121 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
123
124 if (!enable) {
125 UnmapWindow();
126 fHints->fLayButton->SetEnabled(kFALSE);
127 fHints->fLayButton->SetDown(kFALSE);
128 fRows->SetNumber(0);
129 fColumns->SetNumber(0);
130 } else {
131 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
132 TGLayoutManager *lm = comp->GetLayoutManager();
133
134 if (!lm) {
135 return;
136 }
137 Int_t n = comp->GetList()->GetEntries();
138
139 MapWindow();
140 fHints->fLayButton->SetEnabled(kTRUE);
141 fHints->fLayButton->SetDown(kFALSE);
142
143 if (lm->IsA() == TGVerticalLayout::Class()) {
144 fRows->SetNumber(n);
145 fColumns->SetNumber(1);
146 } else if (lm->IsA() == TGHorizontalLayout::Class()) {
147 fColumns->SetNumber(n);
148 fRows->SetNumber(1);
149 } else if (lm->IsA() == TGMatrixLayout::Class()) {
150 fMatrix = (TGMatrixLayout*)lm;
151
152 fColumns->SetNumber(fMatrix->fColumns);
153 fRows->SetNumber(fMatrix->fRows);
154 }
155 }
156 DoRedraw();
157}
158
159///////////////////////////////////////////////////////////////////////////////
160////////////////////////////////////////////////////////////////////////////////
161/// ctor.
162
164 TGVerticalFrame(p, 1, 1), fEditor(e)
165{
167
169
170 TGVerticalFrame *frame3 = new TGVerticalFrame(this,262,18,kVerticalFrame);
171
172 // horizontal frame - layout subframes (token from matrix layout)
173 TGHorizontalFrame *framez399 = new TGHorizontalFrame(frame3,123,40,kHorizontalFrame);
174 fLayButton = new TGCheckButton(framez399,"");
175 framez399->AddFrame(fLayButton, new TGLayoutHints(kLHintsLeft | kLHintsTop,0,1,2,2));
176 TGLabel *framez401 = new TGLabel(framez399,"Layout subframes");
177 framez399->AddFrame(framez401, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop,1,1,2,2));
178
179 frame3->AddFrame(framez399, new TGLayoutHints(kLHintsLeft | kLHintsCenterX | kLHintsTop,1,1,1,1));
180
181 fLayButton->Connect("Toggled(Bool_t)", "TGuiBldHintsEditor", this, "LayoutSubframes(Bool_t)");
182
183 //--------layout hints in new layout---------------------------------------
184
185 // "Padding" group frame
186 fPaddingFrame = new TGGroupFrame(frame3, "Padding");
187 fPaddingFrame->SetLayoutManager(new TGTableLayout(fPaddingFrame, 2, 4));
188
189 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame,"Top "),
190 new TGTableLayoutHints(0, 1, 0, 1,
191 kLHintsRight | kLHintsCenterY, 0, 2, 2, 2));
193 fPaddingFrame->AddFrame(fPadTop, new TGTableLayoutHints(1, 2, 0, 1,
194 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
195
196 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame," Left "),
197 new TGTableLayoutHints(2, 3, 0, 1,
198 kLHintsRight | kLHintsCenterY, 2, 2, 2, 2));
200 fPaddingFrame->AddFrame(fPadLeft, new TGTableLayoutHints(3, 4, 0, 1,
201 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
202
203 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame,"Bottom "),
204 new TGTableLayoutHints(0, 1, 1, 2,
205 kLHintsRight | kLHintsCenterY, 0, 2, 2, 2));
207 fPaddingFrame->AddFrame(fPadBottom, new TGTableLayoutHints(1, 2, 1, 2,
208 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
209
210 fPaddingFrame->AddFrame(new TGLabel(fPaddingFrame," Right "),
211 new TGTableLayoutHints(2, 3, 1, 2,
212 kLHintsRight | kLHintsCenterY, 2, 2, 2, 2));
214 fPaddingFrame->AddFrame(fPadRight, new TGTableLayoutHints(3, 4, 1, 2,
215 kLHintsLeft | kLHintsCenterY, 0, 0, 2, 2));
216
217 frame3->AddFrame(fPaddingFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
218
219 // "Layout" group frame
220 fHintsFrame = new TGGroupFrame(frame3,"Layout");
221
222 fHintsFrame->SetLayoutManager(new TGTableLayout(fHintsFrame, 4, 2));
223
224 fCbTop = new TGCheckButton(fHintsFrame, "Top");
225 fHintsFrame->AddFrame(fCbTop, new TGTableLayoutHints(0, 1, 0, 1,
226 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
227
228 fCbBottom = new TGCheckButton(fHintsFrame, "Bottom");
229 fHintsFrame->AddFrame(fCbBottom, new TGTableLayoutHints(0, 1, 1, 2,
230 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
231
232 fCbLeft = new TGCheckButton(fHintsFrame, "Left");
233 fHintsFrame->AddFrame(fCbLeft, new TGTableLayoutHints(0, 1, 2, 3,
234 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
235
236 fCbRight = new TGCheckButton(fHintsFrame, "Right");
237 fHintsFrame->AddFrame(fCbRight, new TGTableLayoutHints(0, 1, 3, 4,
238 kLHintsLeft | kLHintsCenterY, 5, 2, 2, 2));
239
240 fCbCenterX = new TGCheckButton(fHintsFrame, "Center in X");
241 fHintsFrame->AddFrame(fCbCenterX, new TGTableLayoutHints(1, 2, 0, 1,
242 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
243
244 fCbCenterY = new TGCheckButton(fHintsFrame, "Center in Y");
245 fHintsFrame->AddFrame(fCbCenterY, new TGTableLayoutHints(1, 2, 1, 2,
246 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
247
248 fCbExpandX = new TGCheckButton(fHintsFrame, "Expand in X");
249 fHintsFrame->AddFrame(fCbExpandX, new TGTableLayoutHints(1, 2, 2, 3,
250 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
251
252 fCbExpandY = new TGCheckButton(fHintsFrame, "Expand in Y");
253 fHintsFrame->AddFrame(fCbExpandY, new TGTableLayoutHints(1, 2, 3, 4,
254 kLHintsLeft | kLHintsCenterY, 9, 2, 2, 2));
255
256 frame3->AddFrame(fHintsFrame, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
257
258 fHintsManager = new TGuiBldHintsManager(frame3, e, this);
260 fHintsManager->UnmapWindow();
261 AddFrame(frame3);
262
264 Resize();
266 MapWindow();
267
268 fCbTop->Connect("Clicked()", "TGButton", fCbBottom, "SetDown(=kFALSE)");
269 fCbBottom->Connect("Clicked()", "TGButton", fCbTop, "SetDown(=kFALSE)");
270 fCbRight->Connect("Clicked()", "TGButton", fCbLeft, "SetDown(=kFALSE)");
271 fCbLeft->Connect("Clicked()", "TGButton", fCbRight, "SetDown(=kFALSE)");
272
273 fCbTop->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
274 fCbBottom->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
275 fCbRight->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
276 fCbLeft->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
277 fCbExpandX->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
278 fCbCenterX->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
279 fCbExpandY->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
280 fCbCenterY->Connect("Clicked()", "TGuiBldHintsEditor", this, "UpdateState()");
281
282 fPadTop->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
283 fPadLeft->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
284 fPadRight->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
285 fPadBottom->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", this, "UpdateState()");
286
287 fPadTop->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
288 fPadLeft->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
289 fPadRight->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
290 fPadBottom->GetNumberEntry()->Connect("ReturnPressed()", "TGuiBldHintsEditor", this, "UpdateState()");
291}
292
293
294////////////////////////////////////////////////////////////////////////////////
295/// Change selected
296
298{
299 if (!frame) {
300 return;
301 }
302 TGFrameElement *fe = frame->GetFrameElement();
303
304 if (!fe) {
305 return;
306 }
307
308 fHintsManager->ChangeSelected(frame);
309
310 ULong_t lh = fe->fLayout->GetLayoutHints();
311
312 fCbCenterX->SetEnabled(kTRUE);
313 fCbCenterY->SetEnabled(kTRUE);
314 fCbExpandX->SetEnabled(!(frame->GetEditDisabled() & kEditDisableWidth));
315 fCbExpandY->SetEnabled(!(frame->GetEditDisabled() & kEditDisableHeight));
316 fClient->NeedRedraw(fCbExpandX);
317 fClient->NeedRedraw(fCbExpandY);
318
319 fCbTop->SetEnabled(kTRUE);
320 fCbRight->SetEnabled(kTRUE);
321 fCbLeft->SetEnabled(kTRUE);
322 fCbBottom->SetEnabled(kTRUE);
323
324 fCbCenterX->SetDown(lh & kLHintsCenterX);
325 fCbCenterY->SetDown(lh & kLHintsCenterY);
326 fCbExpandX->SetDown(lh & kLHintsExpandX);
327 fCbExpandY->SetDown(lh & kLHintsExpandY);
328
329 fCbTop->SetDown(lh & kLHintsTop);
330 fCbRight->SetDown(lh & kLHintsRight);
331 fCbLeft->SetDown(lh & kLHintsLeft);
332 fCbBottom->SetDown(lh & kLHintsBottom);
333
334 fPadTop->SetIntNumber(fe->fLayout->GetPadTop());
335 fPadLeft->SetIntNumber(fe->fLayout->GetPadLeft());
336 fPadRight->SetIntNumber(fe->fLayout->GetPadRight());
337 fPadBottom->SetIntNumber(fe->fLayout->GetPadBottom());
338}
339
340////////////////////////////////////////////////////////////////////////////////
341/// Update state
342
344{
345 TGFrame *frame = fEditor->GetSelected();
346
347 if (!frame) {
348 return;
349 }
350
351 TGFrameElement *fe = frame->GetFrameElement();
352
353 if (!fe) {
354 return;
355 }
356
357 if (fLayButton->IsDown() &&
358 ((gTQSender == fPadTop) || (gTQSender == fPadBottom) ||
359 (gTQSender == fPadLeft) || (gTQSender == fPadRight))) {
360 SetMatrixSep();
361 return;
362 }
363
364 ULong_t lh = fe->fLayout->GetLayoutHints();
365
366 if (fCbCenterX->IsDown()) {
367 lh |= kLHintsCenterX;
368 } else {
369 lh &= ~kLHintsCenterX;
370 }
371
372 if (fCbCenterY->IsDown()) {
373 lh |= kLHintsCenterY;
374 } else {
375 lh &= ~kLHintsCenterY;
376 }
377
378 if (fCbExpandX->IsDown()) {
379 lh |= kLHintsExpandX;
380 } else {
381 lh &= ~kLHintsExpandX;
382 }
383
384 if (fCbExpandY->IsDown()) {
385 lh |= kLHintsExpandY;
386 } else {
387 lh &= ~kLHintsExpandY;
388 }
389
390 if (fCbTop->IsDown()) {
391 lh |= kLHintsTop;
392 lh &= ~kLHintsBottom;
393 } else {
394 lh &= ~kLHintsTop;
395 }
396
397 if (fCbBottom->IsDown()) {
398 lh |= kLHintsBottom;
399 lh &= ~kLHintsTop;
400 } else {
401 lh &= ~kLHintsBottom;
402 }
403
404 if (fCbRight->IsDown()) {
405 lh |= kLHintsRight;
406 lh &= ~kLHintsLeft;
407 } else {
408 lh &= ~kLHintsRight;
409 }
410
411 if (fCbLeft->IsDown()) {
412 lh |= kLHintsLeft;
413 lh &= ~kLHintsRight;
414 } else {
415 lh &= ~kLHintsLeft;
416 }
417
418 if (fPadLeft->GetIntNumber() >=0) {
419 fe->fLayout->SetPadLeft(fPadLeft->GetIntNumber());
420 }
421 if (fPadRight->GetIntNumber() >=0) {
422 fe->fLayout->SetPadRight(fPadRight->GetIntNumber());
423 }
424 if (fPadTop->GetIntNumber() >=0) {
425 fe->fLayout->SetPadTop(fPadTop->GetIntNumber());
426 }
427 if (fPadBottom->GetIntNumber() >=0) {
428 fe->fLayout->SetPadBottom(fPadBottom->GetIntNumber());
429 }
430
431 if (fe->fLayout->References() > 1) {
432 TGLayoutHints *lh2 = new TGLayoutHints(*fe->fLayout);
434 lh2->AddReference();
435 fe->fLayout = lh2;
436 } else {
437 fe->fLayout->SetLayoutHints(lh);
438 }
439
440 fEditor->UpdateSelected(frame);
441}
442
443////////////////////////////////////////////////////////////////////////////////
444/// Set the position of selected frame when adjusted by the right panel input.
445
447{
448 if (!fEditor) {
449 return;
450 }
451 TGFrame *frame = fEditor->GetSelected();
452
453 if (!frame) {
454 //fNameFrame->Reset();
455 return;
456 }
457
458 if ((fEditor->GetXPos() >= 0) && (fEditor->GetYPos() >= 0)) {
459 frame->MoveResize(fEditor->GetXPos(), fEditor->GetYPos(),
460 frame->GetWidth(), frame->GetHeight());
461 fClient->NeedRedraw(frame, kTRUE);
462 TGWindow *root = (TGWindow*)fClient->GetRoot();
463 fClient->NeedRedraw(root, kTRUE);
464 if (fBuilder) {
465 fClient->NeedRedraw(fBuilder, kTRUE);
466 }
467 } else {
468 fEditor->SetYPos(frame->GetY());
469 fEditor->SetXPos(frame->GetX());
470 }
471}
472
473
474////////////////////////////////////////////////////////////////////////////////
475/// Layout subframes.
476
478{
479 if (!fEditor) {
480 return;
481 }
482 TGFrame *frame = fEditor->GetSelected();
483
484 if (!frame) {
485 //fNameFrame->Reset();
486 return;
487 }
488
489 TGFrameElement *fe = frame->GetFrameElement();
490
491 if (!fe) {
492 //fNameFrame->Reset();
493 return;
494 }
495
496 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
498
499 if (!on) {
500 fPadTop->SetIntNumber(fHintsManager->fPadTop);
501 fPadBottom->SetIntNumber(fHintsManager->fPadBottom);
502 fPadLeft->SetIntNumber(fHintsManager->fPadLeft);
503 fPadRight->SetIntNumber(fHintsManager->fPadRight);
504
505 ChangeSelected(frame);
506 return;
507 }
508 if (!enable) {
509 return;
510 }
511
512 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
513 fHintsManager->fRows->SetState(kTRUE);
514 fHintsManager->fColumns->SetState(kTRUE);
515 comp->SetLayoutBroken(kFALSE);
516
517 if (!fHintsManager->fMatrix) {
518 if (!(frame->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
519 //comp->Resize();
520 comp->Layout();
521 } else {
522 if (comp->GetLayoutManager()) {
523 comp->GetLayoutManager()->Layout();
524 } else {
525 comp->Layout();
526 }
527 }
528 return;
529 }
530
531 MatrixLayout();
532
533}
534
535////////////////////////////////////////////////////////////////////////////////
536/// Set matrix layout separator.
537
539{
540 TGFrame *frame = fEditor->GetSelected();
541
542 if (!frame) {
543 //fNameFrame->Reset();
544 return;
545 }
546
547 TGFrameElement *fe = frame->GetFrameElement();
548
549 if (!fe) {
550 //fNameFrame->Reset();
551 return;
552 }
553
554 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
555 !(frame->GetEditDisabled() & kEditDisableLayout) &&
556 ((TGCompositeFrame*)frame)->GetLayoutManager() &&
557 ((TGCompositeFrame*)frame)->GetLayoutManager()->InheritsFrom(TGMatrixLayout::Class());
558
559 if (!enable) {
560 return;
561 }
562
564 UInt_t sep = ne->GetIntNumber();
565
566 fPadTop->SetIntNumber(sep);
567 fPadLeft->SetIntNumber(sep);
568 fPadRight->SetIntNumber(sep);
569 fPadBottom->SetIntNumber(sep);
570 fLayButton->SetDown(kTRUE);
571
572 fHintsManager->fMatrix->fSep = sep;
573 frame->SetLayoutBroken(kFALSE);
574
575 if (!(frame->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
576 frame->Resize();
577 } else {
578 fHintsManager->fMatrix->Layout();
579 }
580 fClient->NeedRedraw(frame, kTRUE);
581}
582
583////////////////////////////////////////////////////////////////////////////////
584/// Apply matrix layout.
585
587{
588 TGFrame *frame = fEditor->GetSelected();
589
590 if (!frame) {
591 //fNameFrame->Reset();
592 return;
593 }
594
595 TGFrameElement *fe = frame->GetFrameElement();
596
597 if (!fe) {
598 //fNameFrame->Reset();
599 return;
600 }
601
602 Bool_t enable = frame->InheritsFrom(TGCompositeFrame::Class()) &&
604
605 if (!enable) {
606 return;
607 }
608
609 TGCompositeFrame *comp = (TGCompositeFrame*)frame;
610
611 UInt_t rows = fHintsManager->fRows->GetIntNumber();
612 UInt_t cols = fHintsManager->fColumns->GetIntNumber();
613 UInt_t sep = fPadTop->GetIntNumber();
614
615 fCbCenterX->SetEnabled(kFALSE);
616 fCbCenterY->SetEnabled(kFALSE);
617 fCbExpandX->SetEnabled(kFALSE);
618 fCbExpandY->SetEnabled(kFALSE);
619
620 fCbTop->SetEnabled(kFALSE);
621 fCbRight->SetEnabled(kFALSE);
622 fCbLeft->SetEnabled(kFALSE);
623 fCbBottom->SetEnabled(kFALSE);
624
625 fHintsManager->fPadTop = fPadTop->GetIntNumber();
626 fHintsManager->fPadBottom = fPadBottom->GetIntNumber();
627 fHintsManager->fPadLeft = fPadLeft->GetIntNumber();
628 fHintsManager->fPadRight = fPadRight->GetIntNumber();
629
630 fPadTop->SetIntNumber(sep);
631 fPadLeft->SetIntNumber(sep);
632 fPadRight->SetIntNumber(sep);
633 fPadBottom->SetIntNumber(sep);
634
635 fHintsManager->fRows->SetState(kTRUE);
636 fHintsManager->fColumns->SetState(kTRUE);
637
638 comp->SetLayoutBroken(kFALSE);
639
640 fHintsManager->fMatrix = new TGMatrixLayout(comp, rows, cols, sep, 0);
641 comp->SetLayoutManager(fHintsManager->fMatrix);
642
643 if (!(comp->GetParent()->GetEditDisabled() & kEditDisableLayout)) {
644 comp->Layout(); //resize?
645 } else {
646 fHintsManager->fMatrix->Layout();
647 }
648 fClient->NeedRedraw(comp, kTRUE);
649}
@ kVerticalFrame
Definition GuiTypes.h:382
@ kHorizontalFrame
Definition GuiTypes.h:383
#define f(i)
Definition RSha256.hxx:104
#define e(i)
Definition RSha256.hxx:103
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
unsigned long ULong_t
Unsigned long integer 4 bytes (unsigned long). Size depends on architecture.
Definition RtypesCore.h:69
bool Bool_t
Boolean (0=false, 1=true) (bool).
Definition RtypesCore.h:77
constexpr Bool_t kFALSE
Definition RtypesCore.h:108
constexpr Bool_t kTRUE
Definition RtypesCore.h:107
@ kDeepCleanup
Definition TGFrame.h:42
@ kLHintsRight
Definition TGLayout.h:26
@ kLHintsExpandY
Definition TGLayout.h:31
@ kLHintsLeft
Definition TGLayout.h:24
@ kLHintsCenterY
Definition TGLayout.h:28
@ kLHintsCenterX
Definition TGLayout.h:25
@ kLHintsBottom
Definition TGLayout.h:29
@ kLHintsTop
Definition TGLayout.h:27
@ kLHintsExpandX
Definition TGLayout.h:30
externvoid * gTQSender
Definition TQObject.h:46
virtual Int_t GetEntries() const
Selects different options.
Definition TGButton.h:264
virtual void SetLayoutManager(TGLayoutManager *l)
Set the layout manager for the composite frame.
Definition TGFrame.cxx:992
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition TGFrame.cxx:1109
virtual TList * GetList() const
Definition TGFrame.h:312
virtual TGLayoutManager * GetLayoutManager() const
Definition TGFrame.h:340
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
Definition TGFrame.cxx:1156
TGCompositeFrame(const TGCompositeFrame &)=delete
void Layout() override
Layout the elements of the composite frame.
Definition TGFrame.cxx:1249
void SetCleanup(Int_t mode=kLocalCleanup) override
Turn on automatic cleanup of child frames in dtor.
Definition TGFrame.cxx:1064
void SetEditDisabled(UInt_t on=1) override
Set edit disable flag for this frame and subframes.
Definition TGFrame.cxx:1014
static TClass * Class()
void SetLayoutBroken(Bool_t on=kTRUE) override
Set broken layout. No Layout method is called.
Definition TGFrame.cxx:1004
TGLayoutHints * fLayout
Definition TGLayout.h:114
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition TGFrame.h:80
void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0) override
Move and/or resize the frame.
Definition TGFrame.cxx:621
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition TGFrame.cxx:597
TGFrame(const TGFrame &)=delete
void DoRedraw() override
Redraw the frame.
Definition TGFrame.cxx:422
void MapWindow() override
map window
Definition TGFrame.h:206
TGFrameElement * GetFrameElement() const
Definition TGFrame.h:237
virtual void SetLayoutBroken(Bool_t=kTRUE)
Definition TGFrame.h:217
Int_t GetX() const
Definition TGFrame.h:233
void UnmapWindow() override
unmap window
Definition TGFrame.h:208
UInt_t GetHeight() const
Definition TGFrame.h:227
Int_t GetY() const
Definition TGFrame.h:234
UInt_t GetWidth() const
Definition TGFrame.h:226
A composite frame with a border and a title.
Definition TGFrame.h:532
A composite frame that layout their children in horizontal way.
Definition TGFrame.h:387
static TClass * Class()
This class handles GUI labels.
Definition TGLabel.h:24
This class describes layout hints used by the layout classes.
Definition TGLayout.h:50
Int_t GetPadRight() const
Definition TGLayout.h:86
Int_t GetPadBottom() const
Definition TGLayout.h:84
ULong_t GetLayoutHints() const
Definition TGLayout.h:82
virtual void SetPadRight(Int_t v)
Definition TGLayout.h:92
virtual void SetPadLeft(Int_t v)
Definition TGLayout.h:91
Int_t GetPadTop() const
Definition TGLayout.h:83
virtual void SetPadTop(Int_t v)
Definition TGLayout.h:89
Int_t GetPadLeft() const
Definition TGLayout.h:85
virtual void SetPadBottom(Int_t v)
Definition TGLayout.h:90
virtual void SetLayoutHints(ULong_t lh)
Definition TGLayout.h:88
Frame layout manager.
Definition TGLayout.h:135
TClass * IsA() const override
Definition TGLayout.h:149
virtual void Layout()=0
This layout managers does not make use of TGLayoutHints.
Definition TGLayout.h:269
static TClass * Class()
TGNumberEntry is a number entry input widget with up/down buttons.
virtual Long_t GetIntNumber() const
@ kNELLimitMin
Lower limit only.
TGClient * fClient
Connection to display server.
Definition TGObject.h:25
This class describes layout hints used by the TGTableLayout class.
A layout manager, which places child frames in a table arranged in rows and columns,...
Yield an action as soon as it is clicked.
Definition TGButton.h:142
TGVerticalFrame(const TGWindow *p=nullptr, UInt_t w=1, UInt_t h=1, UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground())
Definition TGFrame.h:378
static TClass * Class()
ROOT GUI Window base class.
Definition TGWindow.h:23
virtual UInt_t GetEditDisabled() const
Definition TGWindow.h:112
@ kEditDisableHeight
window height cannot be edited
Definition TGWindow.h:62
@ kEditDisableLayout
window layout cannot be edited
Definition TGWindow.h:60
@ kEditDisableWidth
window width cannot be edited
Definition TGWindow.h:63
@ kEditDisable
disable edit of this window
Definition TGWindow.h:57
const TGWindow * GetParent() const
Definition TGWindow.h:83
UInt_t fEditDisabled
flags used for "guibuilding"
Definition TGWindow.h:32
The property editor.
Editor of widget's layout hints used by the ROOT GUI builder.
TGCheckButton * fCbLeft
void MatrixLayout()
Apply matrix layout.
void LayoutSubframes(Bool_t on=kTRUE)
Layout subframes.
TGCheckButton * fCbTop
TGuiBldEditor * fEditor
TGCheckButton * fLayButton
TGGroupFrame * fHintsFrame
TGNumberEntry * fPadBottom
TGNumberEntry * fPadLeft
TRootGuiBuilder * fBuilder
TGuiBldHintsManager * fHintsManager
TGNumberEntry * fPadRight
void ChangeSelected(TGFrame *)
Change selected.
TGuiBldHintsEditor(const TGWindow *p, TGuiBldEditor *e)
ctor.
TGGroupFrame * fPaddingFrame
TGCheckButton * fCbExpandY
TGCheckButton * fCbRight
void SetMatrixSep()
Set matrix layout separator.
TGCheckButton * fCbCenterX
TGCheckButton * fCbExpandX
void UpdateState()
Update state.
TGCheckButton * fCbCenterY
void SetPosition()
Set the position of selected frame when adjusted by the right panel input.
TGNumberEntry * fPadTop
TGCheckButton * fCbBottom
TGuiBldHintsEditor * fHints
TGuiBldHintsManager(const TGWindow *p, TGuiBldEditor *editor, TGuiBldHintsEditor *hints)
Constructor.
void ChangeSelected(TGFrame *frame)
action when selected/grabbed frame was changed
static TGuiBuilder * Instance()
return an instance of TGuiBuilder object
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition TObject.cxx:549
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
Definition TQObject.cxx:865
void AddReference()
Definition TRefCnt.h:40
UInt_t RemoveReference()
Definition TRefCnt.h:41
UInt_t References() const
Definition TRefCnt.h:38
const Int_t n
Definition legend1.C:16