Logo ROOT  
Reference Guide
Loading...
Searching...
No Matches
TGuiBldEditor.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/** \class TGuiBldEditor
13 \ingroup guibuilder
14
15The property editor
16
17*/
18
19
20#include "TGuiBldEditor.h"
21#include "TRootGuiBuilder.h"
22#include "TGuiBldHintsEditor.h"
23#include "TGuiBldNameFrame.h"
25#include "TGResourcePool.h"
26#include "TGTab.h"
27#include "TGLabel.h"
28#include "TGButtonGroup.h"
29#include "TGNumberEntry.h"
30#include "TG3DLine.h"
31#include "TGColorSelect.h"
32#include "TGuiBldDragManager.h"
33#include "TGMsgBox.h"
34#include "TGFrame.h"
35#include "TGSplitter.h"
36#include "TGTableLayout.h"
37
38
39
40////////////////////////////////////////////////////////////////////////////////
61
62////////////////////////////////////////////////////////////////////////////////
63/// Constructor.
64
66 TGVerticalFrame(p, 1, 1)
67{
68 fEditor = editor;
69 fEditDisabled = 1;
70 fBgndFrame = 0;
71
73
74 fBtnGroup = new TGButtonGroup(this, "Border Mode");
75
76 TGRadioButton *frame299 = new TGRadioButton(fBtnGroup," Sunken",kBldBorderSunken);
77 frame299->SetToolTipText("Set a sunken border of the frame");
79 frame302->SetToolTipText("Set no border of the frame");
80 TGRadioButton *frame305 = new TGRadioButton(fBtnGroup," Raised",kBldBorderRaised);
81 frame305->SetToolTipText("Set a raised border of the frame");
82 frame305->SetState(kButtonDown);
84 check->SetToolTipText("Set double border of the frame");
85 //TQObject::Disconnect(check);
86
87 fBtnGroup->SetRadioButtonExclusive(kTRUE);
89 fBtnGroup->Connect("Pressed(Int_t)", "TGuiBldEditor", fEditor, "UpdateBorder(Int_t)");
90 check->Connect("Pressed()", "TGuiBldEditor", fEditor, "UpdateBorder(=4)");
91 check->Connect("Released()", "TGuiBldEditor", fEditor, "UpdateBorder(=5)");
92
93 TGCompositeFrame *f = new TGGroupFrame(this, "Palette");
94 TGHorizontalFrame *hf = new TGHorizontalFrame(f ,1, 1);
95 fBgndFrame = new TGColorSelect(hf, 0, 1);
96 fBgndFrame->SetEditDisabled();
98 fBgndFrame->Connect("ColorSelected(Pixel_t)", "TGuiBldEditor", fEditor,
99 "UpdateBackground(Pixel_t)");
100 hf->AddFrame(fBgndFrame, new TGLayoutHints(kLHintsTop | kLHintsLeft, 2, 2, 2, 2));
101 hf->AddFrame(new TGLabel(hf, "Backgrnd"), new TGLayoutHints(kLHintsTop |
102 kLHintsLeft, 2, 2, 2, 2));
103 f->AddFrame(hf, new TGLayoutHints(kLHintsCenterX | kLHintsTop, 2, 2, 2, 2));
105}
106
107////////////////////////////////////////////////////////////////////////////////
108/// Perform actions when selected frame was changed.
109
111{
112 fSelected = frame;
113
114 if (!frame) {
115 return;
116 }
117
118 UInt_t opt = fSelected->GetOptions();
119
120 fBtnGroup->SetButton(kBldBorderDouble, opt & kDoubleBorder);
121 fBtnGroup->SetButton(kBldBorderSunken, opt & kSunkenFrame);
122 fBtnGroup->SetButton(kBldBorderRaised, opt & kRaisedFrame);
123 fBtnGroup->SetButton(kBldBorderPlain, !(opt & kRaisedFrame) && !(opt & kSunkenFrame));
124
125 if (fBgndFrame) {
127 fBgndFrame->SetColor(fSelected->GetBackground());
128 fBgndFrame->Connect("ColorSelected(Pixel_t)", "TGuiBldEditor", fEditor, "UpdateBackground(Pixel_t)");
129 }
130}
131
132////////////////////////////////////////////////////////////////////////////////
133////////////////////////////////////////////////////////////////////////////////
134/// Constructor.
135
137{
139 TGVerticalFrame *vf;
140 fSelected = 0;
142
143 fNameFrame = new TGuiBldNameFrame(this, this);
145
146 TGHSplitter *splitter = new TGHSplitter(this,100,5);
147 AddFrame(splitter, new TGLayoutHints(kLHintsTop | kLHintsExpandX,0,0,5,5));
148 splitter->SetFrame(fNameFrame, kTRUE);
149
150 //------------frame with layout switch
151 hf = new TGHorizontalFrame(this);
152 hf->AddFrame(new TGLabel(hf, "Composite Frame Layout"),
153 new TGLayoutHints(kLHintsLeft | kLHintsTop, 2, 2, 2, 2));
155 kLHintsExpandX, 2, 2, 2, 2));
156 AddFrame(hf, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
157
158 vf = new TGVerticalFrame(this);
159 fLayoutLabel = new TGLabel(vf, "Automatic Layout Disabled");
161 2, 2, 2, 2));
162
163 fLayoutButton = new TGTextButton(vf," Enable layout ");
164 fLayoutButton->SetEnabled(kFALSE);
166 2, 2, 2, 2));
167
168 AddFrame(vf, new TGLayoutHints(kLHintsTop | kLHintsExpandX, 2, 2, 2, 2));
169
171 kLHintsExpandX, 2, 2, 2, 2));
172
173 fLayoutButton->Connect("Clicked()", "TGuiBldEditor", this, "SwitchLayout()");
174 fLayoutButton->SetToolTipText("If layout is on, all the frame \nelements get layouted automatically.");
175
176 //-----------------------------
177
178 fTab = new TGTab(this, 80, 40);
180 fTablay = fTab->AddTab("Layout");
181 TGCompositeFrame *tabcont = fTab->AddTab("Style");
182 fLayoutId = 1; // 2nd tab
183 fTab->Connect("Selected(Int_t)", "TGuiBldEditor", this, "TabSelected(Int_t)");
184
187 2, 2, 2, 2));
188
191 2, 2, 2, 2));
192
193 //----------------Position X,Y boxes---------------
194
195 fPositionFrame = new TGGroupFrame(fTablay, "Position");
196
198
199 vf = new TGVerticalFrame(hf);
200 vf->SetLayoutManager(new TGTableLayout(vf, 2, 2));
201
202 vf->AddFrame(new TGLabel(vf, " X "), new TGTableLayoutHints(0, 1, 0, 1,
203 kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2));
204 fXpos = new TGNumberEntry(vf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
205 vf->AddFrame(fXpos, new TGTableLayoutHints(1, 2, 0, 1, kLHintsCenterY |
206 kLHintsLeft, 2, 2, 2, 2));
207
208 vf->AddFrame(new TGLabel(vf, " Y "), new TGTableLayoutHints(0, 1, 1, 2,
209 kLHintsCenterY | kLHintsLeft, 2, 2, 2, 2));
210 fYpos = new TGNumberEntry(vf, 0.0, 4, -1, (TGNumberFormat::EStyle)5);
211 vf->AddFrame(fYpos, new TGTableLayoutHints(1, 2, 1, 2, kLHintsCenterY |
212 kLHintsLeft, 2, 2, 2, 2));
213
215
216 vf = new TGVerticalFrame(hf);
217 vf->SetLayoutManager(new TGTableLayout(vf, 3, 3));
218
219 TGTextButton *fTextButton6366 = new TGTextButton(vf, "^", -1,
223 fTextButton6366->Resize(20,20);
224 vf->AddFrame(fTextButton6366, new TGTableLayoutHints(1, 2, 0, 1,
225 kLHintsLeft | kLHintsTop, 1, 1, 1, 1));
226
227 TGTextButton *fTextButton6367 = new TGTextButton(vf, "v", -1,
231 fTextButton6367->Resize(20,20);
232 vf->AddFrame(fTextButton6367, new TGTableLayoutHints(1, 2, 2, 3,
233 kLHintsLeft | kLHintsTop, 1, 1, 1, 1));
234
235 TGTextButton *fTextButton6364 = new TGTextButton(vf, "<", -1,
239 fTextButton6364->Resize(20,20);
240 vf->AddFrame(fTextButton6364, new TGTableLayoutHints(0, 1, 1, 2,
241 kLHintsLeft | kLHintsTop, 1, 1, 1, 1));
242
243 TGTextButton *fTextButton6365 = new TGTextButton(vf, ">", -1,
247 fTextButton6365->Resize(20,20);
248 vf->AddFrame(fTextButton6365, new TGTableLayoutHints(2, 3, 1, 2,
249 kLHintsLeft | kLHintsTop, 1, 1, 1, 1));
250
252
254
256
257 fXpos->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
258 fYpos->Connect("ValueSet(Long_t)", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
259
260 fTextButton6364->Connect("Clicked()", "TGNumberEntry", fXpos, "IncreaseNumber(TGNumberFormat::EStepSize=0,-1)");
261 fTextButton6364->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
262 fTextButton6365->Connect("Clicked()", "TGNumberEntry", fXpos, "IncreaseNumber()");
263 fTextButton6365->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
264 fTextButton6366->Connect("Clicked()", "TGNumberEntry", fYpos, "IncreaseNumber(TGNumberFormat::EStepSize=0,-1)");
265 fTextButton6366->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
266 fTextButton6367->Connect("Clicked()", "TGNumberEntry", fYpos, "IncreaseNumber()");
267 fTextButton6367->Connect("Clicked()", "TGuiBldHintsEditor", fHintsFrame, "SetPosition()");
268
269 //----------------------------------------------------
270
271 fBorderFrame = new TGuiBldBorderFrame(tabcont, this);
272 tabcont->AddFrame(fBorderFrame, new TGLayoutHints(kLHintsExpandX, 2, 2, 2, 2));
273
275 SetWindowName("Frame Property Editor");
277
279}
280
281////////////////////////////////////////////////////////////////////////////////
282/// Destructor.
283
287
288////////////////////////////////////////////////////////////////////////////////
289/// Remove a frame.
290
292{
293 fNameFrame->RemoveFrame(frame);
294}
295
296////////////////////////////////////////////////////////////////////////////////
297/// Handle selected.
298
300{
301 if (id == fLayoutId) {
302 //printf("%d\n", fSelected);
303 }
304}
305
306////////////////////////////////////////////////////////////////////////////////
307/// Hide editor.
308
310{
311 UnmapWindow();
312}
313
314////////////////////////////////////////////////////////////////////////////////
315/// Change selected frame.
316
318{
319 TGTabElement *tab = fTab->GetTabTab(fLayoutId);
320
321 if (!frame) {
322 fNameFrame->ChangeSelected(0);
323 //fTab->SetTab(0);
324 if (tab) {
325 tab->SetEnabled(kFALSE);
326 fClient->NeedRedraw(tab);
327 }
328 return;
329 }
330
331 fSelected = frame;
332 TGWindow *parent = (TGWindow*)fSelected->GetParent();
333
334 fNameFrame->ChangeSelected(fSelected);
335
336 Bool_t enable_layout = kFALSE;
337 enable_layout |= parent && !(parent->GetEditDisabled() & kEditDisableLayout);
338 enable_layout |= !(fSelected->GetEditDisabled() & kEditDisableLayout);
339 enable_layout |= parent && (parent->InheritsFrom(TGCompositeFrame::Class()) &&
340 !((TGCompositeFrame*)parent)->IsLayoutBroken());
341 enable_layout |= (fSelected->InheritsFrom(TGCompositeFrame::Class()) &&
343
344 if (enable_layout) {
345 fHintsFrame->ChangeSelected(fSelected);
346
347 if (tab) {
348 tab->SetEnabled(kTRUE);
349 fClient->NeedRedraw(tab);
350 }
351 } else {
352 fHintsFrame->ChangeSelected(0);
353
354 if (tab) {
355 fTab->SetTab(0);
356 tab->SetEnabled(kFALSE);
357 fClient->NeedRedraw(tab);
358 }
359 }
360
361 if ((frame->InheritsFrom(TGHorizontalFrame::Class())) ||
363 (frame->InheritsFrom(TGGroupFrame::Class())) ) {
364
365 fLayoutButton->SetEnabled(kTRUE);
366 if (fSelected->IsLayoutBroken()) {
367 fLayoutButton->SetText(" Enable layout ");
368 fLayoutLabel->SetText("Automatic layout disabled");
369 if (fTablay) {
370 fTablay->ShowFrame(fGeomFrame);
371 fTablay->ShowFrame(fPositionFrame);
372 fTablay->HideFrame(fHintsFrame);
373 }
374 } else {
375 fLayoutButton->SetText(" Disable layout ");
376 fLayoutLabel->SetText("Automatic layout enabled");
377 if (fTablay) {
378 fTablay->HideFrame(fGeomFrame);
379 fTablay->HideFrame(fPositionFrame);
380 fTablay->ShowFrame(fHintsFrame);
381 }
382 }
383 }
384 else {
385 fLayoutButton->SetEnabled(kFALSE);
386 TGFrame *parentf = (TGFrame*)frame->GetParent();
387 if (parentf->IsLayoutBroken()) {
388 fLayoutButton->SetText(" Enable layout ");
389 fLayoutLabel->SetText("Automatic layout disabled");
390 fTablay->ShowFrame(fGeomFrame);
391 fTablay->ShowFrame(fPositionFrame);
392 fTablay->HideFrame(fHintsFrame);
393 } else {
394 fLayoutButton->SetText(" Disable layout ");
395 fLayoutLabel->SetText("Automatic layout enabled");
396 fTablay->HideFrame(fGeomFrame);
397 fTablay->HideFrame(fPositionFrame);
398 fTablay->ShowFrame(fHintsFrame);
399 }
400 }
401
402 fYpos->SetIntNumber(frame->GetY());
403 fXpos->SetIntNumber(frame->GetX());
404
405 if (fBorderFrame) fBorderFrame->ChangeSelected(fSelected);
406 if (fGeomFrame) fGeomFrame->ChangeSelected(fSelected);
407
408 Emit("ChangeSelected(TGFrame*)", (Longptr_t)fSelected);
409
410 MapRaised();
411}
412
413////////////////////////////////////////////////////////////////////////////////
414/// Update selected frame.
415
417{
418 Emit("UpdateSelected(TGFrame*)", (Longptr_t)frame);
419}
420
421////////////////////////////////////////////////////////////////////////////////
422/// Update border of selected frame.
423
425{
426 if (!fSelected) return;
427
428 UInt_t opt = fSelected->GetOptions();
429
430 switch (b) {
431 case 1:
432 opt &= ~kRaisedFrame;
433 opt |= kSunkenFrame;
434 break;
435 case 2:
436 opt &= ~kSunkenFrame;
437 opt &= ~kRaisedFrame;
438 break;
439 case 3:
440 opt &= ~kSunkenFrame;
441 opt |= kRaisedFrame;
442 break;
443 case 4:
444 opt |= kDoubleBorder;
445 break;
446 case 5:
447 opt &= ~kDoubleBorder;
448 break;
449 default:
450 return;
451 }
452 fSelected->ChangeOptions(opt);
453 fClient->NeedRedraw(fSelected, kTRUE);
454}
455
456////////////////////////////////////////////////////////////////////////////////
457/// Update background.
458
460{
461 if (!fSelected) return;
462
463 fSelected->SetBackgroundColor(col);
464 fClient->NeedRedraw(fSelected, kTRUE);
465}
466
467////////////////////////////////////////////////////////////////////////////////
468/// Update foreground.
469
471{
472 if (!fSelected) return;
473
474 fSelected->SetForegroundColor(col);
475 fClient->NeedRedraw(fSelected, kTRUE);
476}
477
478////////////////////////////////////////////////////////////////////////////////
479/// Reset the editor.
480
482{
483 fSelected = 0;
484 fNameFrame->Reset();
485 TGTabElement *tab = fTab->GetTabTab(fLayoutId);
486 if (tab) {
487 fTab->SetTab(0);
488 tab->SetEnabled(kFALSE);
489 }
490}
491
492////////////////////////////////////////////////////////////////////////////////
493/// Popup dialog to set layout of edited frame off. If layout is on, all
494/// the elements in the frame get laid out automatically.
495
497{
498 if (!fSelected) {
499 fLayoutButton->SetText(" Enable layout ");
500 fLayoutButton->SetEnabled(kFALSE);
501 fLayoutLabel->SetText("Automatic layout disabled");
502 if (fTablay) {
503 fTablay->ShowFrame(fGeomFrame);
504 fTablay->ShowFrame(fPositionFrame);
505 fTablay->HideFrame(fHintsFrame);
506 }
507 return;
508 }
509
511 TGFrame *frame = fSelected;
512 TGCompositeFrame *cf = fNameFrame->GetMdi(frame);
513 if (cf == 0)
514 return;
515 if (frame->IsLayoutBroken()) {
516 Int_t retval;
517 builder->GetManager()->SetEditable(kFALSE);
518 new TGMsgBox(gClient->GetDefaultRoot(), builder, "Layout change",
519 "Enabling layout will automatically align and resize all the icons. \n Do you really want to layout them?",
521
522 cf->SetEditable(kTRUE);
523 // hack against selecting the message box itself
524 builder->GetManager()->SelectFrame(frame);
525 frame->SetEditable(kTRUE);
526
527 if (retval == kMBOk) {
528 frame->SetLayoutBroken(kFALSE);
529 frame->Layout();
530 fLayoutButton->SetText(" Disable layout ");
531 fLayoutLabel->SetText("Automatic layout enabled");
532 if (fTablay) {
533 fTablay->HideFrame(fGeomFrame);
534 fTablay->HideFrame(fPositionFrame);
535 fTablay->ShowFrame(fHintsFrame);
536 fTablay->Resize(fHintsFrame->GetWidth(),fHintsFrame->GetHeight());
537 }
538 }
539 } else {
540 //set layout off - without dialog, because nothing "bad" can happen
541 frame->SetLayoutBroken(kTRUE);
542 fLayoutButton->SetText(" Enable layout ");
543 fLayoutLabel->SetText("Automatic layout disabled");
544 if (fTablay) {
545 fTablay->ShowFrame(fGeomFrame);
546 fTablay->ShowFrame(fPositionFrame);
547 fTablay->HideFrame(fHintsFrame);
548 }
549 }
550 fClient->NeedRedraw(frame, kTRUE);
551 if (fTablay) fClient->NeedRedraw(fTablay, kTRUE);
552}
553
554
555
@ kRaisedFrame
Definition GuiTypes.h:385
@ kSunkenFrame
Definition GuiTypes.h:384
@ kDoubleBorder
Definition GuiTypes.h:386
@ kFixedSize
Definition GuiTypes.h:391
ULong_t Pixel_t
Pixel value.
Definition GuiTypes.h:41
#define b(i)
Definition RSha256.hxx:100
#define f(i)
Definition RSha256.hxx:104
int Int_t
Signed integer 4 bytes (int).
Definition RtypesCore.h:59
long Longptr_t
Integer large enough to hold a pointer (platform-dependent).
Definition RtypesCore.h:89
unsigned int UInt_t
Unsigned integer 4 bytes (unsigned int).
Definition RtypesCore.h:60
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
@ kButtonDown
Definition TGButton.h:54
#define gClient
Definition TGClient.h:157
@ kDeepCleanup
Definition TGFrame.h:42
@ kLHintsExpandY
Definition TGLayout.h:31
@ kLHintsLeft
Definition TGLayout.h:24
@ kLHintsCenterY
Definition TGLayout.h:28
@ kLHintsNormal
Definition TGLayout.h:32
@ kLHintsCenterX
Definition TGLayout.h:25
@ kLHintsTop
Definition TGLayout.h:27
@ kLHintsExpandX
Definition TGLayout.h:30
@ kMBCancel
Definition TGMsgBox.h:37
@ kMBOk
Definition TGMsgBox.h:33
@ kMBIconExclamation
Definition TGMsgBox.h:24
Organizes TGButton widgets in a group.
static const TGGC & GetDefaultGC()
Return default graphics context.
Definition TGButton.cxx:464
virtual void SetToolTipText(const char *text, Long_t delayms=400)
Set tool tip text associated with this button.
Definition TGButton.cxx:439
Selects different options.
Definition TGButton.h:264
Like a checkbutton but instead of the check mark there is color area with a little down arrow.
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
void MapSubwindows() override
Map all sub windows that are part of the composite frame.
Definition TGFrame.cxx:1156
TGCompositeFrame(const TGCompositeFrame &)=delete
void SetCleanup(Int_t mode=kLocalCleanup) override
Turn on automatic cleanup of child frames in dtor.
Definition TGFrame.cxx:1064
Bool_t IsLayoutBroken() const override
Definition TGFrame.h:359
void SetEditable(Bool_t on=kTRUE) override
Switch ON/OFF edit mode.
Definition TGFrame.cxx:940
void SetEditDisabled(UInt_t on=1) override
Set edit disable flag for this frame and subframes.
Definition TGFrame.cxx:1014
static TClass * Class()
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition TGFrame.h:80
virtual Bool_t IsLayoutBroken() const
Definition TGFrame.h:218
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition TGFrame.cxx:597
TGFrame(const TGFrame &)=delete
virtual void SetLayoutBroken(Bool_t=kTRUE)
Definition TGFrame.h:217
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition TGFrame.cxx:675
Int_t GetX() const
Definition TGFrame.h:233
void UnmapWindow() override
unmap window
Definition TGFrame.h:208
Int_t GetY() const
Definition TGFrame.h:234
virtual void Layout()
Definition TGFrame.h:201
void SetEditable(Bool_t) override
Definition TGFrame.h:216
void MapRaised() override
map raised
Definition TGFrame.h:207
A composite frame with a border and a title.
Definition TGFrame.h:532
static TClass * Class()
void SetFrame(TGFrame *frame, Bool_t above) override
Set frame to be resized.
A horizontal 3D line is a line that typically separates a toolbar from the menubar.
Definition TG3DLine.h:18
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
TGNumberEntry is a number entry input widget with up/down buttons.
TGClient * fClient
Connection to display server.
Definition TGObject.h:25
Selects different options.
Definition TGButton.h:321
void SetState(EButtonState state, Bool_t emit=kFALSE) override
Set radio button state.
Service classes of the tab widget.
Definition TGTab.h:117
virtual void SetEnabled(Bool_t on=kTRUE)
Definition TGTab.h:149
A tab widget contains a set of composite frames each with a little tab with a name (like a set of fol...
Definition TGTab.h:46
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
static FontStruct_t GetDefaultFontStruct()
Return default font structure.
Definition TGButton.cxx:863
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
@ kEditDisableLayout
window layout cannot be edited
Definition TGWindow.h:60
virtual void SetWindowName(const char *name=nullptr)
Set window name.
Definition TGWindow.cxx:127
const TGWindow * GetParent() const
Definition TGWindow.h:83
UInt_t fEditDisabled
flags used for "guibuilding"
Definition TGWindow.h:32
TGButtonGroup * fBtnGroup
void ChangeSelected(TGFrame *)
Perform actions when selected frame was changed.
TGuiBldEditor * fEditor
TGuiBldBorderFrame(const TGWindow *p, TGuiBldEditor *editor)
Constructor.
~TGuiBldBorderFrame() override
TGColorSelect * fBgndFrame
void SelectFrame(TGFrame *frame, Bool_t add=kFALSE)
Grab/Select frame.
void SetEditable(Bool_t on=kTRUE) override
Grab server.
The property editor.
void ChangeSelected(TGFrame *)
Change selected frame.
TGuiBldHintsEditor * fHintsFrame
TGuiBldNameFrame * fNameFrame
void UpdateSelected(TGFrame *=nullptr)
Update selected frame.
void Reset()
Reset the editor.
void RemoveFrame(TGFrame *) override
Remove a frame.
TGTextButton * fLayoutButton
TGFrame * fSelected
TGNumberEntry * fXpos
TGuiBldGeometryFrame * fGeomFrame
TGLabel * fLayoutLabel
void TabSelected(Int_t id)
Handle selected.
TGNumberEntry * fYpos
TGuiBldEditor(const TGWindow *p=nullptr)
Constructor.
void SwitchLayout()
Popup dialog to set layout of edited frame off.
void Hide()
Hide editor.
void UpdateForeground(Pixel_t col)
Update foreground.
TGCompositeFrame * fTablay
TGGroupFrame * fPositionFrame
void UpdateBorder(Int_t)
Update border of selected frame.
void UpdateBackground(Pixel_t col)
Update background.
~TGuiBldEditor() override
Destructor.
TGuiBldBorderFrame * fBorderFrame
Editor of widget's layout hints used by the ROOT GUI builder.
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
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Definition TQObject.h:164
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
Bool_t Disconnect(const char *signal=nullptr, void *receiver=nullptr, const char *slot=nullptr)
Disconnects signal of this object from slot of receiver.
TGuiBldDragManager * GetManager() const