Logo ROOT  
Reference Guide
TGListBox.cxx
Go to the documentation of this file.
1// @(#)root/gui:$Id$
2// Author: Fons Rademakers 12/01/98
3
4/*************************************************************************
5 * Copyright (C) 1995-2000, 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
13 This source is based on Xclass95, a Win95-looking GUI toolkit.
14 Copyright (C) 1996, 1997 David Barth, Ricky Ralston, Hector Peraza.
15
16 Xclass95 is free software; you can redistribute it and/or
17 modify it under the terms of the GNU Library General Public
18 License as published by the Free Software Foundation; either
19 version 2 of the License, or (at your option) any later version.
20
21**************************************************************************/
22
23
24/** \class TGListBox
25 \ingroup guiwidgets
26
27A listbox is a box, possibly with scrollbar, containing entries.
28Currently entries are simple text strings (TGTextLBEntry).
29A TGListBox looks a lot like a TGCanvas. It has a TGViewPort
30containing a TGLBContainer which contains the entries and it also
31has a vertical scrollbar which becomes visible if there are more
32items than fit in the visible part of the container.
33
34The TGListBox is user callable. The other classes are service
35classes of the listbox.
36
37A listbox contains a container frame which is viewed through a
38viewport. If the container is larger than the viewport than a
39vertical scrollbar is added.
40
41Selecting an item in the listbox will generate the event:
42 - kC_COMMAND, kCM_LISTBOX, listbox id, item id.
43
44\class TGLBEntry
45\ingroup guiwidgets
46
47Basic listbox entries.
48Listbox entries are created by a TGListBox and not by the user.
49
50\class TGTextLBEntry
51\ingroup guiwidgets
52
53Text string listbox entries.
54A TGTextLBEntry is for TGListBox internal use.
55
56\class TGLineLBEntry
57\ingroup guiwidgets
58
59Line style and width listbox entries.
60Line example and width number
61
62\class TGIconLBEntry
63\ingroup guiwidgets
64
65Icon + text listbox entry.
66
67\class TGLBContainer
68\ingroup guiwidgets
69
70A Composite frame that contains a list of TGLBEnties.
71A TGLBContainer is for TGListBox internal use.
72
73*/
74
75
76#include "TGPicture.h"
77#include "TGListBox.h"
78#include "TGResourcePool.h"
79#include "TSystem.h"
80#include "TMath.h"
81#include "TVirtualX.h"
82
83#include <cstdlib>
84#include <iostream>
85
86
89
95
96////////////////////////////////////////////////////////////////////////////////
97/// Base class entry constructor.
98
99TGLBEntry::TGLBEntry(const TGWindow *p, Int_t id, UInt_t options, Pixel_t back) :
100 TGFrame(p, 10, 10, options | kOwnBackground, back)
101{
102 fActive = kFALSE;
103 fEntryId = id;
104 fBkcolor = back;
106
108}
109
110////////////////////////////////////////////////////////////////////////////////
111/// Toggle active state of listbox entry.
112
114{
115 if (fActive == a) return;
116 fActive = a;
117 DoRedraw();
118}
119
120////////////////////////////////////////////////////////////////////////////////
121/// Toggle active state of listbox entry.
122
124{
125 fActive = !fActive;
126 DoRedraw();
127}
128
129
130////////////////////////////////////////////////////////////////////////////////
131/// Create a text listbox entry. The TGString is adopted.
132
134 GContext_t norm, FontStruct_t font, UInt_t options, Pixel_t back) :
135 TGLBEntry(p, id, options, back)
136{
137 fText = s;
139 fFontStruct = font;
140 fNormGC = norm;
141 fTWidth = 0;
142
143 int max_ascent, max_descent;
144
145 if (fText) fTWidth = gVirtualX->TextWidth(fFontStruct, fText->GetString(), fText->GetLength());
146 gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
147 fTHeight = max_ascent + max_descent;
148 Resize(fTWidth, fTHeight + 1);
151}
152
153////////////////////////////////////////////////////////////////////////////////
154/// Delete text listbox entry.
155
157{
158 if (fText) delete fText;
159}
160
161////////////////////////////////////////////////////////////////////////////////
162/// Draw text listbox entry on window/pixmap.
163
165{
166 int max_ascent, max_descent;
167
168 y += (fHeight - fTHeight) >> 1;
169
170 gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
171
172 if (fActive) {
174 gVirtualX->FillRectangle(id,fNormGC, x, y, fWidth, fHeight);
176 fText->Draw(id, fNormGC, x + 3, y + max_ascent);
177 } else {
178 gVirtualX->SetForeground(fNormGC, fBkcolor);
179 gVirtualX->FillRectangle(id, fNormGC, x, y, fWidth, fHeight);
180 gVirtualX->SetForeground(fNormGC, GetForeground());
181 fText->Draw(id, fNormGC, x + 3, y + max_ascent);
182 }
183}
184
185////////////////////////////////////////////////////////////////////////////////
186/// Redraw text listbox entry.
187
189{
190 if (fId) DrawCopy(fId, 0, 0);
191}
192
193////////////////////////////////////////////////////////////////////////////////
194/// Set or change text in text entry.
195
197{
198 if (fText) delete fText;
199 fText = new_text;
201
202 int max_ascent, max_descent;
204 gVirtualX->GetFontProperties(fFontStruct, max_ascent, max_descent);
205 fTHeight = max_ascent + max_descent;
206
207 Resize(fTWidth + 3, fTHeight + 1);
208
209 DoRedraw();
210}
211
212////////////////////////////////////////////////////////////////////////////////
213/// Return default font structure in use for a text listbox entry.
214
216{
217 if (!fgDefaultFont)
218 fgDefaultFont = gClient->GetResourcePool()->GetDefaultFont();
220}
221
222////////////////////////////////////////////////////////////////////////////////
223/// Return default graphics context in use for a text listbox entry.
224
226{
227 if (!fgDefaultGC)
228 fgDefaultGC = new TGGC(*gClient->GetResourcePool()->GetFrameGC());
229 return *fgDefaultGC;
230}
231
232
233////////////////////////////////////////////////////////////////////////////////
234/// Create the line style listbox entry.
235
236TGLineLBEntry::TGLineLBEntry(const TGWindow *p, Int_t id, const char *str,
237 UInt_t w, Style_t style, UInt_t options, Pixel_t back) :
238 TGTextLBEntry(p, new TGString(str), id, GetDefaultGC()(),
239 GetDefaultFontStruct(), options, back)
240{
241 GCValues_t gcv;
242
244 fLineWidth = gcv.fLineWidth = w;
246 gcv.fDashLen = 2;
247 gcv.fDashOffset = 0;
248 memcpy(gcv.fDashes, "\x5\x5", 3);
250 fLineGC = fClient->GetGC(&gcv, kTRUE);
252
253 int max_ascent, max_descent;
254
255 fTWidth = gVirtualX->TextWidth(GetDefaultFontStruct(), "8", 1);
256 fTWidth += 15; // for drawing
257 gVirtualX->GetFontProperties(GetDefaultFontStruct(),
258 max_ascent, max_descent);
259 fTHeight = max_ascent + max_descent;
260 fLineLength = 0;
261
262 Resize(fTWidth, fTHeight + 1);
265}
266
267////////////////////////////////////////////////////////////////////////////////
268/// Delete line style listbox entry.
269
271{
273}
274
275////////////////////////////////////////////////////////////////////////////////
276/// Update line style listbox entry.
277
279{
281
283 fLineGC = ((TGLineLBEntry *)e)->GetLineGC();
285}
286
287////////////////////////////////////////////////////////////////////////////////
288/// Set the line style corresponding to the TPad line styles.
289
291{
292 static const char* dashed = "\x3\x3";
293 static const char* dotted= "\x1\x2";
294 static const char* dasheddotted = "\x3\x4\x1\x4";
295 static const char* ls05 = "\x5\x3\x1\x3";
296 static const char* ls06 = "\x5\x3\x1\x3\x1\x3\x1\x3";
297 static const char* ls07 = "\x5\x5";
298 static const char* ls08 = "\x5\x3\x1\x3\x1\x3";
299 static const char* ls09 = "\x20\x5";
300 static const char* ls10 = "\x20\x10\x1\x10";
301
302
303 if (linestyle <= 1) {
305 } else {
306 switch (linestyle) {
307 case 2:
308 fLineGC->SetDashList(dashed, 2);
309 break;
310 case 3:
311 fLineGC->SetDashList(dotted, 2);
312 break;
313 case 4:
314 fLineGC->SetDashList(dasheddotted, 4);
315 break;
316 case 5:
317 fLineGC->SetDashList(ls05, 4);
318 break;
319 case 6:
320 fLineGC->SetDashList(ls06, 8);
321 break;
322 case 7:
323 fLineGC->SetDashList(ls07, 2);
324 break;
325 case 8:
326 fLineGC->SetDashList(ls08, 6);
327 break;
328 case 9:
329 fLineGC->SetDashList(ls09, 2);
330 break;
331 case 10:
332 fLineGC->SetDashList(ls10, 4);
333 break;
334 }
335 }
336 fLineGC->SetCapStyle(0); // flat cap
337 fLineStyle = linestyle;
338}
339
340////////////////////////////////////////////////////////////////////////////////
341/// Set or change line width in an entry.
342
344{
347}
348
349////////////////////////////////////////////////////////////////////////////////
350/// Draw copy on window/pixmap.
351
353{
355 if (!strcmp(TGTextLBEntry::GetTitle(),"None")) return;
356 if (fActive) {
357 gVirtualX->SetForeground(fLineGC->GetGC(),
359 } else {
360 gVirtualX->SetForeground(fLineGC->GetGC(),
362 }
363 gVirtualX->DrawLine(id, fLineGC->GetGC(), x + fTWidth + 5, y + fHeight/2,
364 x + fWidth - 5, y + fHeight/2);
365}
366
367////////////////////////////////////////////////////////////////////////////////
368/// Redraw line style listbox entry.
369
371{
372 if (fId) DrawCopy(fId, 0, 0);
373}
374
375
376////////////////////////////////////////////////////////////////////////////////
377/// Create the icon & text listbox entry.
378
379TGIconLBEntry::TGIconLBEntry(const TGWindow *p, Int_t id, const char *str,
380 const TGPicture *pic,
381 UInt_t /*w*/, Style_t /*style*/, UInt_t options, Pixel_t back) :
382 TGTextLBEntry(p, new TGString(str), id, GetDefaultGC()(),
383 GetDefaultFontStruct(), options, back)
384{
385 int max_ascent, max_descent;
386
387 fPicture = pic;
388 if (fPicture) {
389 fTWidth += fPicture->GetWidth() + 4;
390 ((TGPicture *)fPicture)->AddReference();
391 }
392 else
393 fTWidth += 20;
394 gVirtualX->GetFontProperties(GetDefaultFontStruct(),
395 max_ascent, max_descent);
396 fTHeight = max_ascent + max_descent;
399
400 Resize(fTWidth, fTHeight + 1);
403}
404
405////////////////////////////////////////////////////////////////////////////////
406/// Delete icon & text listbox entry.
407
409{
411}
412
413////////////////////////////////////////////////////////////////////////////////
414/// Update icon & text listbox entry.
415
417{
419}
420
421////////////////////////////////////////////////////////////////////////////////
422/// Draw copy on window/pixmap.
423
425{
426 Int_t off_x = 0;
427 if (fPicture) {
428 fPicture->Draw(id, fNormGC, x + 2, y);
429 off_x = fPicture->GetWidth() + 4;
430 }
431 TGTextLBEntry::DrawCopy(id, x + off_x, y);
432}
433
434////////////////////////////////////////////////////////////////////////////////
435/// Redraw icon & text listbox entry.
436
438{
439 if (fId) DrawCopy(fId, 0, 0);
440}
441
442////////////////////////////////////////////////////////////////////////////////
443/// Change the icon of listbox entry containing icon & text.
444
446{
448
449 if (pic) ((TGPicture *)pic)->AddReference();
450
451 fPicture = pic;
452}
453
454/////////////////////////////////////////////////////////////////////////////////
456public:
458 virtual ~TGLBFrameElement() {}
459
460 Bool_t IsSortable() const override { return kTRUE; }
461 Int_t Compare(const TObject *obj) const override
462 {
464 return 0;
465 }
468
469
470 double d1, d2;
471 const char *t1 = f1->GetText()->Data();
472 const char *t2 = f2->GetText()->Data();
473
474 if ((d1 = atof(t1)) && (d2 = atof(t2))) {
475 return (d1 > d2);
476 } else {
477 return strcmp(t1, t2);
478 }
479 return 0;
480 }
481};
482
483
484////////////////////////////////////////////////////////////////////////////////
485/// Create a listbox container.
486
488 UInt_t options, Pixel_t back) :
489 TGContainer(p, w, h, options, back)
490{
491 fLastActive = 0;
492 fMsgWindow = p;
495 fListBox = 0;
496
499}
500
501////////////////////////////////////////////////////////////////////////////////
502/// Delete the listbox container.
503
505{
506 Cleanup();
507}
508
509////////////////////////////////////////////////////////////////////////////////
510/// Layout container
511
513{
516}
517
518////////////////////////////////////////////////////////////////////////////////
519/// redraw
520
522{
523 return TGContainer::DoRedraw();
524}
525
526////////////////////////////////////////////////////////////////////////////////
527/// Add listbox entry with hints to container. To show entry call
528/// MapSubwindows() and Layout().
529
531{
532 // DEPRECATED: the color should always be set in the TGLBEntry ctor
533 //lbe->SetBackgroundColor(fgWhitePixel);
534
535 TGLBFrameElement *nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
536 fList->Add(nw);
538}
539
540////////////////////////////////////////////////////////////////////////////////
541/// Insert listbox entry after specified entry with id afterID. If afterID = -1
542/// then add entry at head of list. To show entry call MapSubwindows() and
543/// Layout().
544
546{
547 // DEPRECATED: the color should always be set in the TGLBEntry ctor
548 //lbe->SetBackgroundColor(fgWhitePixel);
549
550 TGLBEntry *e;
551 TGFrameElement *el, *nw;
552 TIter next(fList);
553
554 while ((el = (TGFrameElement *) next())) {
555 e = (TGLBEntry *) el->fFrame;
556 if (e->EntryId() == afterID) break;
557 }
558
559 if (!el && afterID != -1) {
560 nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
561 fList->Add(nw);
562 } else {
563 nw = new TGLBFrameElement(lbe, lhints);
564 nw->fFrame = lbe;
565 nw->fLayout = lhints;
566 nw->fState = 1;
567 //lbe->SetFrameElement(nw);
568
569 if (afterID == -1)
570 fList->AddFirst(nw);
571 else
572 fList->AddAfter(el, nw);
573 }
575}
576
577////////////////////////////////////////////////////////////////////////////////
578/// Insert listbox entry before the list box entry with a higher id.
579/// To show entry call MapSubwindows() and Layout().
580
582{
583 // DEPRECATED: the color should always be set in the TGLBEntry ctor
584 //lbe->SetBackgroundColor(fgWhitePixel);
585
586 TGLBEntry *e;
587 TGFrameElement *el, *nw;
588 TIter next(fList);
589
590 while ((el = (TGFrameElement *) next())) {
591 e = (TGLBEntry *) el->fFrame;
592 if (e->EntryId() > lbe->EntryId()) break;
593 }
594
595 if (!el) {
596 nw = new TGLBFrameElement(lbe, lhints ? lhints : fgDefaultHints);
597 fList->Add(nw);
598 } else {
599 nw = new TGLBFrameElement(lbe, lhints);
600 nw->fFrame = lbe;
601 nw->fLayout = lhints;
602 nw->fState = 1;
603 //lbe->SetFrameElement(nw);
604
605 fList->AddBefore(el, nw);
606 }
608}
609
610////////////////////////////////////////////////////////////////////////////////
611/// Remove the entry with specified id from the listbox container.
612/// To update the listbox call Layout().
613
615{
616 TGLBEntry *e;
617 TGFrameElement *el;
619
620 TIter next(fList);
621
622 while ((el = (TGFrameElement *) next())) {
623 e = (TGLBEntry *) el->fFrame;
624 l = el->fLayout;
625 if (e->EntryId() == id) {
626 if (fLastActive == e) fLastActive = 0;
627 e->DestroyWindow();
628 fList->Remove(el); // avoid calling RemoveFrame(e)
629 delete el; // item
630 delete e;
631 delete l;
632 break;
633 }
634 }
636}
637
638////////////////////////////////////////////////////////////////////////////////
639/// Remove entries from from_ID to to_ID (including).
640/// To update the listbox call Layout().
641
643{
644 TGLBEntry *e;
645 TGFrameElement *el;
647
648 TIter next(fList);
649
650 while ((el = (TGFrameElement *) next())) {
651 e = (TGLBEntry *) el->fFrame;
652 l = el->fLayout;
653 if ((e->EntryId() >= from_ID) && (e->EntryId() <= to_ID)) {
654 if (fLastActive == e) fLastActive = 0;
655 e->DestroyWindow();
656 fList->Remove(el); // avoid calling RemoveFrame(e)
657 delete el; // idem
658 delete e;
659 delete l;
660 }
661 }
663}
664
665////////////////////////////////////////////////////////////////////////////////
666/// Remove all entries in this container.
667
669{
670 TGLBEntry *e;
671 TGFrameElement *el;
673
674 TIter next(fList);
675
676 while ((el = (TGFrameElement *) next())) {
677 e = (TGLBEntry *) el->fFrame;
678 l = el->fLayout;
679 if (fLastActive == e) fLastActive = 0;
680 if (e)
681 e->DestroyWindow();
682 fList->Remove(el); // avoid calling RemoveFrame(e)
683 delete el; // item
684 delete e;
685 delete l;
686 }
688}
689
690////////////////////////////////////////////////////////////////////////////////
691/// Select the entry with the specified id.
692/// Returns the selected TGLBEntry.
693
695{
696 return Select(id, kTRUE);
697}
698
699////////////////////////////////////////////////////////////////////////////////
700/// Select / deselect the entry with the specified id.
701/// Returns the selected TGLBEntry.
702
704{
705 TGLBEntry *f;
706 TGFrameElement *el;
707
708 if (!fMultiSelect && fLastActive) {
710 fLastActive = 0;
711 }
712
713 TIter next(fList);
714 while ((el = (TGFrameElement *) next())) {
715 f = (TGLBEntry *) el->fFrame;
716 if (f->EntryId() == id) {
717 f->Activate(sel);
718 if (fMultiSelect == kFALSE && sel == kTRUE) {
719 fLastActive = f;
720 fLastActiveEl = el;
721 }
723 return f;
724 }
725 }
726
727 return 0;
728}
729
730////////////////////////////////////////////////////////////////////////////////
731/// Returns id of selected entry. In case of no selected entry or
732/// if multi selection is switched on returns -1.
733
735{
736 if (fLastActive == 0) return -1;
737 return fLastActive->EntryId();
738}
739
740////////////////////////////////////////////////////////////////////////////////
741/// Returns kTrue if entry id is selected.
742
744{
745 TGLBEntry *f;
746 TGFrameElement *el;
747
748 TIter next(fList);
749 while ((el = (TGFrameElement *) next())) {
750 f = (TGLBEntry *) el->fFrame;
751 if (f->EntryId() == id)
752 return f->IsActive();
753 }
754
755 return kFALSE;
756}
757
758////////////////////////////////////////////////////////////////////////////////
759/// Adds all selected entries (TGLBEntry) of the list box into
760/// the list selected.
761
763{
764 TGLBEntry *f;
765 TGFrameElement *el;
766
767 TIter next(fList);
768 while ((el = (TGFrameElement *) next())) {
769 f = (TGLBEntry *) el->fFrame;
770 if (f->IsActive()) {
771 selected->Add(f);
772 }
773 }
774}
775
776////////////////////////////////////////////////////////////////////////////////
777/// Enables and disables multiple selections of entries.
778
780{
781 TGFrameElement *el;
782
783 fMultiSelect = multi;
784 if (!fMultiSelect) {
785 // deselect all entries
786 TIter next(fList);
787 while ((el = (TGFrameElement *) next())) {
788 ((TGLBEntry *)(el->fFrame))->Activate(kFALSE);
789 }
790 }
791 fLastActive = 0;
792 fLastActiveEl = 0;
794}
795
796////////////////////////////////////////////////////////////////////////////////
797/// Return a pointer to vertical scroll bar.
798
800{
801 return fListBox ? fListBox->GetVScrollbar() : 0;
802}
803
804////////////////////////////////////////////////////////////////////////////////
805/// Set new vertical scroll bar position.
806
808{
810
811 if (vb && vb->IsMapped()) {
812 vb->SetPosition(newPos);
813 }
814}
815
816////////////////////////////////////////////////////////////////////////////////
817/// Handle mouse button event in the listbox container.
818
820{
821 int xf0, yf0, xff, yff;
822
823 TGLBEntry *f;
824 TGFrameElement *el;
825 TGLBEntry *last = fLastActive;
826
828 Int_t x = pos.fX + event->fX;
829 Int_t y = pos.fY + event->fY;
830 Bool_t activate = kFALSE;
831
832 // do not handle "context menu button" during guibuilding
833 if (fClient->IsEditable() && (event->fCode == kButton3)) {
834 return kTRUE;
835 }
836
838
839 if ((event->fCode == kButton4) && vb){
840 // scroll 2 lines up (a button down is always followed by a button up)
841 Int_t newpos = vb->GetPosition() - 1;
842 if (newpos < 0) newpos = 0;
843 vb->SetPosition(newpos);
845 return kTRUE;
846 }
847 if ((event->fCode == kButton5) && vb) {
848 // scroll 2 lines down (a button down is always followed by a button up)
849 Int_t newpos = vb->GetPosition() + 1;
850 vb->SetPosition(newpos);
852 return kTRUE;
853 }
854
855 gVirtualX->SetInputFocus(fId);
856
857 if (fMultiSelect) {
858 if (event->fType == kButtonPress) {
859 TIter next(fList);
860 while ((el = (TGFrameElement *) next())) {
861 f = (TGLBEntry *) el->fFrame;
862 xf0 = f->GetX();
863 yf0 = f->GetY();
864 xff = xf0 + f->GetWidth();
865 yff = yf0 + f->GetHeight();
866
867 activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
868 (x > xf0) && (x < xff) && (y > yf0) && (y < yff);
869
870 if (activate) {
871 fLastActive = f;
872 fLastActiveEl = el;
873 f->Toggle();
874 fChangeStatus = f->IsActive() ? 1 : 0;
876 f->EntryId(), 0);
877 break;
878 }
879 }
880 } else {
881 fChangeStatus = -1;
882 }
883 } else {
884 if (event->fType == kButtonPress) {
885 if (fLastActive) {
887 fLastActive = 0;
888 }
889 TIter next(fList);
890 while ((el = (TGFrameElement *) next())) {
891 f = (TGLBEntry *) el->fFrame;
892 xf0 = f->GetX();
893 yf0 = f->GetY();
894 xff = xf0 + f->GetWidth();
895 yff = yf0 + f->GetHeight();
896
897 activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
898 (x > xf0) && (x < xff) && (y > yf0) && (y < yff) && !f->IsActive();
899
900 if (activate) {
901 f->Activate(kTRUE);
902 fLastActive = f;
903 fLastActiveEl = el;
904 } else {
905 f->Activate(kFALSE);
906 }
907 }
908 } else {
909 if (fLastActive) {
910 f = fLastActive;
912 f->EntryId(), 0);
913 }
914 }
915 }
916 if (event->fType == kButtonRelease) {
919 }
920 if (fChangeStatus || (last != fLastActive))
922 // trick to avoid mouse move events between the mouse click
923 // and the unmapping...
924 if (fListBox->GetParent()->InheritsFrom("TGComboBoxPopup"))
926 return kTRUE;
927}
928
929////////////////////////////////////////////////////////////////////////////////
930/// Handle double click mouse event in the listbox container.
931
933{
934 if (!fMultiSelect) {
935 if (fLastActive) {
938 f->EntryId(), 0);
939 DoubleClicked(f, ev->fCode);
940 DoubleClicked(f, ev->fCode, ev->fXRoot, ev->fYRoot);
941 }
942 return kTRUE;
943 }
945}
946
947////////////////////////////////////////////////////////////////////////////////
948/// Handle mouse motion event in listbox container.
949
951{
952 int xf0, yf0, xff, yff;
953
954 static Long64_t was = gSystem->Now();
955 Long64_t now = gSystem->Now();
956
957 if ((now-was) < 50) return kFALSE;
958 was = now;
959
960 TGLBEntry *f;
961 TGFrameElement *el;
964 Int_t x = pos.fX + event->fX;
965 Int_t y = pos.fY + event->fY;
966 Bool_t activate = kFALSE;
967 TGLBEntry *last = fLastActive;
968
969 if (fMultiSelect) {
970
971 if ((event->fY < 10) || (event->fY > Int_t(dim.fHeight) - 10)) {
972 if (!fScrolling) {
975 }
977 }
978 else if (fChangeStatus >= 0) {
979 TIter next(fList);
980 while ((el = (TGFrameElement *) next())) {
981 f = (TGLBEntry *) el->fFrame;
982 xf0 = f->GetX();
983 yf0 = f->GetY();
984 xff = xf0 + f->GetWidth();
985 yff = yf0 + f->GetHeight();
986 activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
987 (x > xf0) && (x < xff) && (y > yf0) && (y < yff);
988
989 if (activate) {
990 if (fChangeStatus != (f->IsActive() ? 1 : 0)) {
991 f->Toggle();
994 f->EntryId(), 0);
995 }
996 break;
997 }
998 }
999 }
1000 } else if (fListBox->GetParent()->InheritsFrom("TGComboBoxPopup")) {
1001 TIter next(fList);
1002 while ((el = (TGFrameElement *) next())) {
1003 f = (TGLBEntry *) el->fFrame;
1004 xf0 = f->GetX();
1005 yf0 = f->GetY();
1006 xff = xf0 + f->GetWidth();
1007 yff = yf0 + f->GetHeight();
1008
1009 activate = fMapSubwindows ? (f->GetId() == (Window_t)event->fUser[0]) :
1010 (x > xf0) && (x < xff) && (y > yf0) && (y < yff) && !f->IsActive();
1011
1012 if (activate) {
1013 f->Activate(kTRUE);
1014 fLastActive = f;
1015 fLastActiveEl = el;
1016 } else {
1017 f->Activate(kFALSE);
1018 }
1019 if (last != fLastActive) {
1020 ClearViewPort();
1021 }
1022 }
1023 }
1024 return kTRUE;
1025}
1026
1027////////////////////////////////////////////////////////////////////////////////
1028/// Autoscroll while close to & beyond The Wall
1029
1031{
1032 TGFrameElement* el = 0;
1033 TGLBEntry *f = 0;
1034 Int_t yf0, yff;
1035 Bool_t changed = kFALSE;
1036
1039
1040 Window_t dum1, dum2;
1041 Event_t ev;
1042 ev.fType = kButtonPress;
1043 Int_t x, y;
1044
1045 // Where's the cursor?
1046 gVirtualX->QueryPointer(fId,dum1,dum2,ev.fXRoot,ev.fYRoot,x,y,ev.fState);
1048 if (vb && y > 0 && y < 10) {
1049 // scroll 1 line up
1050 Int_t newpos = vb->GetPosition() - 1;
1051 if (newpos < 0) newpos = 0;
1052 vb->SetPosition(newpos);
1053 changed = kTRUE;
1054 }
1055 else if (vb && y > (Int_t)dim.fHeight - 10 && y < (Int_t)dim.fHeight) {
1056 // scroll 1 line down
1057 Int_t newpos = vb->GetPosition() + 1;
1058 vb->SetPosition(newpos);
1059 changed = kTRUE;
1060 }
1061 if (changed && fChangeStatus >= 0) {
1062 pos = GetPagePosition();
1063 TIter next(fList);
1064 while ((el = (TGFrameElement *) next())) {
1065 f = (TGLBEntry *) el->fFrame;
1066 yf0 = f->GetY();
1067 yff = yf0 + f->GetHeight();
1068 if ((y + pos.fY > yf0) && (y + pos.fY < yff)) {
1069 if (fChangeStatus != (f->IsActive() ? 1 : 0)) {
1070 f->Toggle();
1071 ClearViewPort();
1073 f->EntryId(), 0);
1074 }
1075 break;
1076 }
1077 }
1078 }
1079}
1080
1081////////////////////////////////////////////////////////////////////////////////
1082/// Activate item.
1083
1085{
1087 fLastActive = (TGLBEntry *)el->fFrame;
1088}
1089
1090////////////////////////////////////////////////////////////////////////////////
1091/// Returns the position in the list box of the entry id.
1092/// The first position has position no 0. Returns -1 if entry id
1093/// is not in the list of entries.
1094
1096{
1097 Int_t pos = 0;
1098 TGLBEntry *f;
1099 TGFrameElement *el;
1100
1101 TIter next(fList);
1102 while ((el = (TGFrameElement *) next())) {
1103 f = (TGLBEntry *) el->fFrame;
1104 if (f->EntryId() == id)
1105 return pos;
1106 pos++;
1107 }
1108
1109 return -1;
1110}
1111
1112
1113////////////////////////////////////////////////////////////////////////////////
1114/// Create a listbox.
1115
1117 UInt_t options, Pixel_t back) :
1118 TGCompositeFrame(p, 10, 10, options, back)
1119{
1120 fMsgWindow = p;
1121 fWidgetId = id;
1122
1123 fItemVsize = 1;
1125
1126 InitListBox();
1127}
1128
1129////////////////////////////////////////////////////////////////////////////////
1130/// Delete a listbox widget.
1131
1133{
1134 if (!MustCleanup()) {
1135 delete fVScrollbar;
1136 delete fVport;
1137 delete fLbc;
1138 }
1139}
1140
1141////////////////////////////////////////////////////////////////////////////////
1142/// Initiate the internal classes of a list box.
1143
1145{
1150 fLbc->Associate(this);
1151 fLbc->SetListBox(this);
1153
1154 AddFrame(fVport, 0);
1156
1157 fVScrollbar->Associate(this);
1158
1163
1168
1169 // layout manager is not used
1170 delete fLayoutManager;
1171 fLayoutManager = 0;
1172}
1173
1174////////////////////////////////////////////////////////////////////////////////
1175/// Draw borders of the list box widget.
1176
1178{
1180
1182 gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, fWidth-2, 0);
1183 gVirtualX->DrawLine(fId, GetShadowGC()(), 0, 0, 0, fHeight-2);
1184 gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, fWidth-3, 1);
1185 gVirtualX->DrawLine(fId, GetBlackGC()(), 1, 1, 1, fHeight-3);
1186 if (gClient->GetStyle() > 1) break;
1187 gVirtualX->DrawLine(fId, GetHilightGC()(), 0, fHeight-1, fWidth-1, fHeight-1);
1188 gVirtualX->DrawLine(fId, GetHilightGC()(), fWidth-1, fHeight-1, fWidth-1, 0);
1189 gVirtualX->DrawLine(fId, GetBckgndGC()(), 1, fHeight-2, fWidth-2, fHeight-2);
1190 gVirtualX->DrawLine(fId, GetBckgndGC()(), fWidth-2, 1, fWidth-2, fHeight-2);
1191 break;
1192
1193 default:
1195 break;
1196 }
1197}
1198
1199////////////////////////////////////////////////////////////////////////////////
1200/// Add entry with specified string and id to listbox. The id will be
1201/// used in the event processing routine when the item is selected.
1202/// The string will be adopted by the listbox.
1203
1205{
1206 TGTextLBEntry *lbe;
1207 TGLayoutHints *lhints;
1208
1209 lbe = new TGTextLBEntry(fLbc, s, id);
1210 lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
1212 fLbc->AddEntry(lbe, lhints);
1213}
1214
1215////////////////////////////////////////////////////////////////////////////////
1216/// Add entry with specified string and id to listbox. The id will be
1217/// used in the event processing routine when the item is selected.
1218
1219void TGListBox::AddEntry(const char *s, Int_t id)
1220{
1221 AddEntry(new TGString(s), id);
1222}
1223
1224////////////////////////////////////////////////////////////////////////////////
1225/// Add specified TGLBEntry and TGLayoutHints to listbox. The
1226/// entry and layout will be adopted and later deleted by the listbox.
1227
1229{
1231 fLbc->AddEntry(lbe, lhints);
1232}
1233
1234////////////////////////////////////////////////////////////////////////////////
1235/// Add entry with specified string and id to listbox sorted by increasing id.
1236/// This sorting works properly only if EntrySort functions are used to add
1237/// entries without mixing them with other add or insert functions. The id will be
1238/// used in the event processing routine when the item is selected.
1239/// The string will be adopted by the listbox.
1240
1242{
1243 TGTextLBEntry *lbe;
1244 TGLayoutHints *lhints;
1245
1246 lbe = new TGTextLBEntry(fLbc, s, id);
1247 lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
1249 fLbc->AddEntrySort(lbe, lhints);
1250}
1251
1252////////////////////////////////////////////////////////////////////////////////
1253/// Add entry with specified string and id to listbox sorted by increasing id.
1254/// This sorting works properly only if EntrySort functions are used to add
1255/// entries without mixing them with other add or insert functions. The id will be
1256/// used in the event processing routine when the item is selected.
1257
1258void TGListBox::AddEntrySort(const char *s, Int_t id)
1259{
1260 AddEntrySort(new TGString(s), id);
1261}
1262
1263////////////////////////////////////////////////////////////////////////////////
1264/// Add specified TGLBEntry and TGLayoutHints to listbox sorted by increasing id.
1265/// This sorting works properly only if EntrySort functions are used to add
1266/// entries without mixing them with other add or insert functions. The
1267/// entry and layout will be adopted and later deleted by the listbox.
1268
1270{
1272 fLbc->AddEntrySort(lbe, lhints);
1273}
1274
1275////////////////////////////////////////////////////////////////////////////////
1276/// Insert entry with specified string and id behind the entry with afterID.
1277/// The string will be adopted and later deleted by the listbox.
1278
1280{
1281 TGTextLBEntry *lbe;
1282 TGLayoutHints *lhints;
1283
1284 lbe = new TGTextLBEntry(fLbc, s, id);
1285 lhints = new TGLayoutHints(kLHintsExpandX | kLHintsTop);
1287 fLbc->InsertEntry(lbe, lhints, afterID);
1288}
1289
1290////////////////////////////////////////////////////////////////////////////////
1291/// Insert entry with specified string and id behind the entry with afterID.
1292
1293void TGListBox::InsertEntry(const char *s, Int_t id, Int_t afterID)
1294{
1295 InsertEntry(new TGString(s), id, afterID);
1296}
1297
1298////////////////////////////////////////////////////////////////////////////////
1299/// method used to add entry via context menu
1300
1301void TGListBox::NewEntry(const char *s)
1302{
1303 Int_t selected = fLbc->GetSelected();
1304
1305 // no selected entry or the last entry
1306 if ((selected < 0) || (selected == GetNumberOfEntries())) {
1308 } else {
1309 InsertEntry(s, GetNumberOfEntries()+1, selected);
1310 }
1311 Layout();
1312}
1313
1314////////////////////////////////////////////////////////////////////////////////
1315/// remove entry with id.
1316/// If id = -1 - the selected entry/entries is/are removed.
1317///
1318
1320{
1321 if (id >= 0) {
1322 fLbc->RemoveEntry(id);
1323 Layout();
1324 return;
1325 }
1326 if (!fLbc->GetMultipleSelections()) {
1328 Layout();
1329 return;
1330 }
1331 TList li;
1333 TGLBEntry *e;
1334 TIter next(&li);
1335
1336 while ((e = (TGLBEntry*)next())) {
1337 fLbc->RemoveEntry(e->EntryId());
1338 }
1339 Layout();
1340}
1341
1342////////////////////////////////////////////////////////////////////////////////
1343/// Remove all entries.
1344
1346{
1347 fLbc->RemoveAll();
1348 Layout();
1349}
1350
1351////////////////////////////////////////////////////////////////////////////////
1352/// Remove a range of entries defined by from_ID and to_ID.
1353
1355{
1356 fLbc->RemoveEntries(from_ID, to_ID);
1357 Layout();
1358}
1359
1360////////////////////////////////////////////////////////////////////////////////
1361/// Insert the specified TGLBEntry and layout hints behind afterID.
1362/// The entry and layout will be adopted and later deleted by the listbox.
1363
1365{
1367 fLbc->InsertEntry(lbe, lhints, afterID);
1368}
1369
1370////////////////////////////////////////////////////////////////////////////////
1371/// Returns list box entry with specified id.
1372
1374{
1375 TIter next(fLbc->GetList());
1376 TGFrameElement *el;
1377
1378 while ((el = (TGFrameElement *)next())) {
1379 TGLBEntry *lbe = (TGLBEntry *)el->fFrame;
1380 if (lbe->EntryId() == id) return lbe;
1381 }
1382 return 0;
1383}
1384
1385////////////////////////////////////////////////////////////////////////////////
1386/// Scroll the entry with id to the top of the listbox.
1387
1389{
1390 Int_t idPos;
1391
1392 idPos = fLbc->GetPos(id);
1393
1394 // id not found in list of entries
1395 if (idPos < 0)
1396 return;
1397
1398 // call layout to define the range of the scroll bars
1399 Layout();
1400
1401 // SetPosition will send a message which will handled by
1402 // the function TGListBox::ProcessMessage. Now ProcessMessage will
1403 // set the viewport. SetPosition also will check that the idPos is
1404 // not out of range.
1405 fVScrollbar->SetPosition(idPos);
1406}
1407
1408////////////////////////////////////////////////////////////////////////////////
1409/// Resize the listbox widget. If fIntegralHeight is true make the height
1410/// an integral number of the maximum height of a single entry.
1411
1413{
1414 if (fIntegralHeight)
1416 + (fBorderWidth << 1);
1417
1419 DoRedraw();
1420}
1421
1422////////////////////////////////////////////////////////////////////////////////
1423/// Move and resize the listbox widget.
1424
1426{
1427 if (fIntegralHeight)
1429 + (fBorderWidth << 1);
1431 DoRedraw();
1432}
1433
1434////////////////////////////////////////////////////////////////////////////////
1435/// Return default size of listbox widget.
1436
1438{
1439 UInt_t h;
1440
1441 if (fIntegralHeight)
1443 + (fBorderWidth << 1);
1444 else
1445 h = fHeight;
1446
1447 return TGDimension(fWidth, h);
1448}
1449
1450////////////////////////////////////////////////////////////////////////////////
1451/// Layout the listbox components.
1452
1454{
1455 TGFrame *container;
1456 UInt_t cw, ch, tch;
1457 Bool_t need_vsb;
1458
1459 need_vsb = kFALSE;
1460
1461 container = fVport->GetContainer();
1462
1463 // test whether we need vertical scrollbar or not
1464
1465 cw = fWidth - (fBorderWidth << 1);
1466 ch = fHeight - (fBorderWidth << 1);
1467
1468 container->SetWidth(cw);
1469 container->SetHeight(ch);
1470
1471 if (container->GetDefaultHeight() > ch) {
1472 need_vsb = kTRUE;
1474 if ((Int_t) cw < 0) {
1475 Warning("Layout", "width would become too small, setting to 10");
1476 cw = 10;
1477 }
1478 container->SetWidth(cw);
1479 }
1480
1482 container->Layout();
1483
1484 tch = TMath::Max(container->GetDefaultHeight(), ch);
1485 container->SetHeight(0); // force a resize in TGFrame::Resize
1486 container->Resize(cw, tch);
1487 //fVport->SetPos(0, 0);
1488
1489 if (need_vsb) {
1492 } else {
1495 }
1496
1499 //fClient->NeedRedraw(container);
1500 ((TGContainer *)container)->ClearViewPort();
1501}
1502
1503////////////////////////////////////////////////////////////////////////////////
1504/// Sort entries by name
1505
1507{
1508 fLbc->GetList()->Sort(ascend);
1509 Layout();
1511}
1512
1513////////////////////////////////////////////////////////////////////////////////
1514/// Return id of selected listbox item.
1515
1517{
1519 return ct->GetSelected();
1520}
1521
1522////////////////////////////////////////////////////////////////////////////////
1523/// Adds all selected entries (TGLBEntry) of the list box into
1524/// the list selected.
1525
1527{
1528 fLbc->GetSelectedEntries(selected);
1529}
1530
1531////////////////////////////////////////////////////////////////////////////////
1532/// Change background to all entries
1533
1535{
1536 fBackground = back;
1537
1538 TIter next(fLbc->GetList());
1539 TGFrameElement *el;
1540
1541 while ((el = (TGFrameElement *)next())) {
1542 TGLBEntry *lbe = (TGLBEntry *)el->fFrame;
1543 lbe->SetBackgroundColor(back);
1544 }
1546}
1547
1548////////////////////////////////////////////////////////////////////////////////
1549/// Process messages generated by the listbox container and forward
1550/// messages to the listbox message handling window.
1551
1553{
1554 switch (GET_MSG(msg)) {
1555 case kC_VSCROLL:
1556 switch (GET_SUBMSG(msg)) {
1557 case kSB_SLIDERTRACK:
1558 case kSB_SLIDERPOS:
1559 fVport->SetVPos(Int_t(-parm1 * fItemVsize));
1560 break;
1561 }
1562 break;
1563
1564 case kC_CONTAINER:
1565 switch (GET_SUBMSG(msg)) {
1566 case kCT_ITEMCLICK:
1567 {
1569 fWidgetId, parm1);
1571 TGLBEntry *entry = GetSelectedEntry();
1572 if (entry) {
1573 if (entry->InheritsFrom(TGTextLBEntry::Class())) {
1574 const char *text;
1575 text = ((TGTextLBEntry*)entry)->GetText()->GetString();
1576 Selected(text);
1577 }
1578 Selected(fWidgetId, (Int_t) parm1);
1579 Selected((Int_t) parm1);
1580 }
1581 }
1582 break;
1583 case kCT_ITEMDBLCLICK:
1584 if (!GetMultipleSelections()) {
1585 TGLBEntry *entry = GetSelectedEntry();
1586 if (entry) {
1587 if (entry->InheritsFrom(TGTextLBEntry::Class())) {
1588 const char *text;
1589 text = ((TGTextLBEntry*)entry)->GetText()->GetString();
1591 }
1592 DoubleClicked(fWidgetId, (Int_t) parm1);
1593 DoubleClicked((Int_t) parm1);
1594 }
1595 }
1596 break;
1597 }
1598 break;
1599
1600 default:
1601 break;
1602
1603 }
1604 return kTRUE;
1605}
1606
1607////////////////////////////////////////////////////////////////////////////////
1608/// Emit Selected signal with list box id and entry id.
1609
1611{
1612 Longptr_t args[2];
1613
1614 args[0] = widgetId;
1615 args[1] = id;
1616
1617 Emit("Selected(Int_t,Int_t)", args);
1618}
1619
1620////////////////////////////////////////////////////////////////////////////////
1621/// Emit DoubleClicked signal with list box id and entry id.
1622
1624{
1625 Longptr_t args[2];
1626
1627 args[0] = widgetId;
1628 args[1] = id;
1629
1630 Emit("DoubleClicked(Int_t,Int_t)", args);
1631}
1632
1633////////////////////////////////////////////////////////////////////////////////
1634/// Find entry by name.
1635
1637{
1638 TList *list = fLbc->GetList();
1639 TGFrameElement *el = (TGFrameElement *)list->First();
1640 while (el) {
1641 if (el->fFrame->GetTitle() == TString(name))
1642 return (TGLBEntry *)el->fFrame;
1643 el = (TGFrameElement *)list->After(el);
1644 }
1645 return 0;
1646}
1647
1648////////////////////////////////////////////////////////////////////////////////
1649/// Save a list box widget as a C++ statement(s) on output stream out.
1650
1651void TGListBox::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
1652{
1654
1655 out << std::endl << " // list box" << std::endl;
1656
1657 out<<" TGListBox *";
1658 out << GetName() << " = new TGListBox(" << fParent->GetName();
1659
1660 if (fBackground == GetWhitePixel()) {
1661 if (GetOptions() == (kSunkenFrame | kDoubleBorder)) {
1662 if (fWidgetId == -1) {
1663 out <<");" << std::endl;
1664 } else {
1665 out << "," << fWidgetId << ");" << std::endl;
1666 }
1667 } else {
1668 out << "," << fWidgetId << "," << GetOptionString() <<");" << std::endl;
1669 }
1670 } else {
1671 out << "," << fWidgetId << "," << GetOptionString() << ",ucolor);" << std::endl;
1672 }
1673 if (option && strstr(option, "keep_names"))
1674 out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
1675
1676 if (!fLbc->GetList()) return;
1677
1678 TGFrameElement *el;
1679 TIter next(fLbc->GetList());
1680
1681 while ((el = (TGFrameElement *) next())) {
1682 out << " " << GetName() << "->AddEntry(";
1683 el->fFrame->SavePrimitive(out, option);
1684 out << ");"<< std::endl;
1685 }
1686 out << " " << GetName() << "->Resize(" << GetWidth() << "," << GetHeight()
1687 << ");" << std::endl;
1688}
1689
1690////////////////////////////////////////////////////////////////////////////////
1691/// Save a list box entry widget as a C++ statement(s) on output stream out.
1692
1693void TGTextLBEntry::SavePrimitive(std::ostream &out, Option_t * /*= ""*/)
1694{
1695 TString content = GetText()->GetString();
1696 content.ReplaceAll('\\', "\\\\");
1697 content.ReplaceAll("\"", "\\\"");
1698 char quote = '"';
1699 out << quote << content << quote << "," << EntryId();
1700}
@ kButtonRelease
Definition: GuiTypes.h:60
@ kButtonPress
Definition: GuiTypes.h:60
const Mask_t kGCLineStyle
Definition: GuiTypes.h:291
const Mask_t kGCLineWidth
Definition: GuiTypes.h:290
const Mask_t kButtonMotionMask
Definition: GuiTypes.h:164
const Mask_t kButtonPressMask
Definition: GuiTypes.h:161
const Mask_t kGCDashList
Definition: GuiTypes.h:307
const Mask_t kGCFillStyle
Definition: GuiTypes.h:294
Handle_t Window_t
Window handle.
Definition: GuiTypes.h:29
Handle_t GContext_t
Graphics context handle.
Definition: GuiTypes.h:38
const Mask_t kPointerMotionMask
Definition: GuiTypes.h:163
@ kChildFrame
Definition: GuiTypes.h:379
@ kRaisedFrame
Definition: GuiTypes.h:384
@ kSunkenFrame
Definition: GuiTypes.h:383
@ kVerticalFrame
Definition: GuiTypes.h:381
@ kDoubleBorder
Definition: GuiTypes.h:385
@ kOwnBackground
Definition: GuiTypes.h:391
@ kDefaultScrollBarWidth
Definition: GuiTypes.h:86
@ kFillSolid
Definition: GuiTypes.h:51
@ kLineSolid
Definition: GuiTypes.h:48
@ kLineOnOffDash
Definition: GuiTypes.h:48
const Mask_t kButtonReleaseMask
Definition: GuiTypes.h:162
ULong_t Pixel_t
Pixel value.
Definition: GuiTypes.h:40
@ kButton4
Definition: GuiTypes.h:215
@ kButton5
Definition: GuiTypes.h:215
@ kButton3
Definition: GuiTypes.h:214
ULongptr_t Handle_t
Generic resource handle.
Definition: GuiTypes.h:26
Handle_t FontStruct_t
Pointer to font structure.
Definition: GuiTypes.h:39
#define f(i)
Definition: RSha256.hxx:104
#define h(i)
Definition: RSha256.hxx:106
#define e(i)
Definition: RSha256.hxx:103
short Style_t
Definition: RtypesCore.h:89
int Int_t
Definition: RtypesCore.h:45
long Longptr_t
Definition: RtypesCore.h:82
const Bool_t kFALSE
Definition: RtypesCore.h:101
long long Long64_t
Definition: RtypesCore.h:80
const Bool_t kTRUE
Definition: RtypesCore.h:100
const char Option_t
Definition: RtypesCore.h:66
#define ClassImp(name)
Definition: Rtypes.h:375
#define gClient
Definition: TGClient.h:157
@ kLHintsTop
Definition: TGLayout.h:27
@ kLHintsExpandX
Definition: TGLayout.h:30
winID h TVirtualViewer3D TVirtualGLPainter p
Option_t Option_t option
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize void char Point_t Rectangle_t WindowAttributes_t Float_t Float_t Float_t Int_t Int_t UInt_t UInt_t Rectangle_t Int_t Int_t Window_t TString Int_t GCValues_t GetPrimarySelectionOwner GetDisplay GetScreen GetColormap GetNativeEvent const char const char dpyName wid window const char font_name cursor keysym reg const char only_if_exist regb h Point_t winding char text const char depth char const char Int_t count const char ColorStruct_t color const char Pixmap_t Pixmap_t PictureAttributes_t attr const char char ret_data h unsigned char height h Atom_t Int_t ULong_t ULong_t unsigned char prop_list Atom_t sel
Option_t Option_t TPoint TPoint const char GetTextMagnitude GetFillStyle GetLineColor GetLineWidth GetMarkerStyle GetTextAlign GetTextColor GetTextSize id
Option_t Option_t width
Option_t Option_t style
Option_t Option_t TPoint TPoint const char text
char name[80]
Definition: TGX11.cxx:110
R__EXTERN TSystem * gSystem
Definition: TSystem.h:559
#define gVirtualX
Definition: TVirtualX.h:338
Int_t MK_MSG(EWidgetMessageTypes msg, EWidgetMessageTypes submsg)
Int_t GET_MSG(Long_t val)
@ kSB_SLIDERTRACK
@ kSB_SLIDERPOS
@ kC_VSCROLL
@ kCT_ITEMCLICK
@ kC_COMMAND
@ kCM_LISTBOX
@ kCT_ITEMDBLCLICK
@ kC_CONTAINER
Int_t GET_SUBMSG(Long_t val)
Bool_t IsEditable() const
Definition: TGClient.h:89
TGGC * GetGC(GCValues_t *values, Bool_t rw=kFALSE)
Get graphics context from the gc pool.
Definition: TGClient.cxx:320
void FreeGC(const TGGC *gc)
Free a graphics context.
Definition: TGClient.cxx:328
const TGResourcePool * GetResourcePool() const
Definition: TGClient.h:124
void FreePicture(const TGPicture *pic)
Free picture resource.
Definition: TGClient.cxx:308
The base class for composite widgets (menu bars, list boxes, etc.).
Definition: TGFrame.h:287
TGLayoutManager * fLayoutManager
layout manager
Definition: TGFrame.h:291
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=nullptr)
Add frame to the composite frame using the specified layout hints.
Definition: TGFrame.cxx:1117
virtual TList * GetList() const
Definition: TGFrame.h:310
Int_t MustCleanup() const override
Definition: TGFrame.h:360
virtual void Cleanup()
Cleanup and delete all objects contained in this composite frame.
Definition: TGFrame.cxx:967
Bool_t fMapSubwindows
kTRUE - map subwindows
Definition: TGFrame.h:295
TList * fList
container of frame elements
Definition: TGFrame.h:292
static TGLayoutHints * fgDefaultHints
Definition: TGFrame.h:297
void SetEditDisabled(UInt_t on=1) override
Set edit disable flag for this frame and subframes.
Definition: TGFrame.cxx:1022
Manages a content area.
Definition: TGCanvas.h:31
virtual void ActivateItem(TGFrameElement *el)
Activate item.
Definition: TGCanvas.cxx:701
TTimer * fScrollTimer
autoscroll timer
Definition: TGCanvas.h:50
Bool_t HandleDoubleClick(Event_t *event) override
Handle double click mouse event.
Definition: TGCanvas.cxx:1098
virtual void ClearViewPort()
Clear view port and redraw full content.
Definition: TGCanvas.cxx:891
const TGWindow * fMsgWindow
window handling container messages
Definition: TGCanvas.h:42
void Layout() override
Layout container entries.
Definition: TGCanvas.cxx:422
void DoRedraw() override
Redraw content of container in the viewport region.
Definition: TGCanvas.cxx:800
Bool_t fScrolling
kTRUE - when scrolling is ON
Definition: TGCanvas.h:59
virtual TGDimension GetPageDimension() const
Returns page dimension.
Definition: TGCanvas.cxx:751
TGViewPort * fViewPort
container viewport
Definition: TGCanvas.h:40
virtual void DoubleClicked(TGFrame *f, Int_t btn)
Emit DoubleClicked() signal.
Definition: TGCanvas.cxx:538
virtual TGPosition GetPagePosition() const
Returns page position.
Definition: TGCanvas.cxx:737
TGFrameElement * fLastActiveEl
last active item
Definition: TGCanvas.h:43
UInt_t fHeight
Definition: TGDimension.h:21
Encapsulate fonts used in the GUI system.
Definition: TGFont.h:140
FontStruct_t GetFontStruct() const
Definition: TGFont.h:184
TGLayoutHints * fLayout
Definition: TGLayout.h:114
Int_t fState
Definition: TGLayout.h:113
TGFrame * fFrame
Definition: TGLayout.h:112
A subclasses of TGWindow, and is used as base class for some simple widgets (buttons,...
Definition: TGFrame.h:80
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
Definition: TGFrame.cxx:339
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:629
static const TGGC & GetBlackGC()
Get black graphics context.
Definition: TGFrame.cxx:735
UInt_t fOptions
frame options
Definition: TGFrame.h:94
void Resize(UInt_t w=0, UInt_t h=0) override
Resize the frame.
Definition: TGFrame.cxx:605
void RemoveInput(UInt_t emask)
Remove events specified in emask from the events the frame should handle.
Definition: TGFrame.cxx:348
static Pixel_t GetWhitePixel()
Get white pixel value.
Definition: TGFrame.cxx:709
UInt_t fHeight
frame height
Definition: TGFrame.h:88
virtual UInt_t GetDefaultWidth() const
Definition: TGFrame.h:190
virtual UInt_t GetDefaultHeight() const
Definition: TGFrame.h:191
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a frame widget as a C++ statement(s) on output stream out.
Definition: TGFrame.cxx:3233
virtual void DrawBorder()
Draw frame border.
Definition: TGFrame.cxx:421
Int_t fBorderWidth
frame border width
Definition: TGFrame.h:93
static Pixel_t fgDefaultSelectedBackground
Definition: TGFrame.h:102
virtual void Activate(Bool_t)
Definition: TGFrame.h:210
void DoRedraw() override
Redraw the frame.
Definition: TGFrame.cxx:430
void MapWindow() override
map window
Definition: TGFrame.h:204
virtual Pixel_t GetForeground() const
Return frame foreground color.
Definition: TGFrame.cxx:303
static const TGGC & GetHilightGC()
Get highlight color graphics context.
Definition: TGFrame.cxx:755
virtual UInt_t GetOptions() const
Definition: TGFrame.h:197
TString GetOptionString() const
Returns a frame option string - used in SavePrimitive().
Definition: TGFrame.cxx:2506
void UnmapWindow() override
unmap window
Definition: TGFrame.h:206
virtual void SendMessage(const TGWindow *w, Longptr_t msg, Longptr_t parm1, Longptr_t parm2)
Send message (i.e.
Definition: TGFrame.cxx:645
static const TGGC & GetShadowGC()
Get shadow color graphics context.
Definition: TGFrame.cxx:765
UInt_t fWidth
frame width
Definition: TGFrame.h:87
UInt_t GetHeight() const
Definition: TGFrame.h:225
virtual void Layout()
Definition: TGFrame.h:199
virtual void SetWidth(UInt_t w)
Definition: TGFrame.h:246
static Pixel_t fgWhitePixel
Definition: TGFrame.h:103
UInt_t GetWidth() const
Definition: TGFrame.h:224
void SaveUserColor(std::ostream &out, Option_t *)
Save a user color in a C++ macro file - used in SavePrimitive().
Definition: TGFrame.cxx:2479
virtual void SetHeight(UInt_t h)
Definition: TGFrame.h:247
Pixel_t fBackground
frame background color
Definition: TGFrame.h:95
static const TGGC & GetBckgndGC()
Get background color graphics context.
Definition: TGFrame.cxx:775
Encapsulate a graphics context used in the low level graphics.
Definition: TGGC.h:22
GContext_t GetGC() const
Definition: TGGC.h:41
void SetLineWidth(Int_t v)
Set line width.
Definition: TGGC.cxx:300
void SetCapStyle(Int_t v)
Set cap style (kCapNotLast, kCapButt, kCapRound, kCapProjecting).
Definition: TGGC.cxx:322
void SetDashList(const char v[], Int_t len)
Set dash pattern. First use SetDashOffset() if not 0.
Definition: TGGC.cxx:488
void SetLineStyle(Int_t v)
Set line style (kLineSolid, kLineOnOffDash, kLineDoubleDash).
Definition: TGGC.cxx:311
void DoRedraw() override
Redraw icon & text listbox entry.
Definition: TGListBox.cxx:437
virtual void SetPicture(const TGPicture *pic=nullptr)
Change the icon of listbox entry containing icon & text.
Definition: TGListBox.cxx:445
virtual ~TGIconLBEntry()
Delete icon & text listbox entry.
Definition: TGListBox.cxx:408
void DrawCopy(Handle_t id, Int_t x, Int_t y) override
Draw copy on window/pixmap.
Definition: TGListBox.cxx:424
TGIconLBEntry(const TGIconLBEntry &)=delete
const TGPicture * fPicture
Definition: TGListBox.h:139
void Update(TGLBEntry *e) override
Update icon & text listbox entry.
Definition: TGListBox.cxx:416
A Composite frame that contains a list of TGLBEnties.
Definition: TGListBox.h:163
TGLBContainer(const TGLBContainer &)=delete
Bool_t fMultiSelect
true if multi selection is switched on
Definition: TGListBox.h:174
virtual Bool_t GetSelection(Int_t id)
Returns kTrue if entry id is selected.
Definition: TGListBox.cxx:743
void OnAutoScroll() override
Autoscroll while close to & beyond The Wall.
Definition: TGListBox.cxx:1030
virtual void SetListBox(TGListBox *lb)
Definition: TGListBox.h:196
void RemoveAll() override
Remove all entries in this container.
Definition: TGListBox.cxx:668
void SetVsbPosition(Int_t newPos) override
Set new vertical scroll bar position.
Definition: TGListBox.cxx:807
TGVScrollBar * GetVScrollbar() const override
Return a pointer to vertical scroll bar.
Definition: TGListBox.cxx:799
Int_t fChangeStatus
defines the changes (select or unselect) while the mouse moves over a multi selectable list box
Definition: TGListBox.h:175
virtual Int_t GetSelected() const
Returns id of selected entry.
Definition: TGListBox.cxx:734
Bool_t HandleButton(Event_t *event) override
Handle mouse button event in the listbox container.
Definition: TGListBox.cxx:819
virtual Bool_t GetMultipleSelections() const
Definition: TGListBox.h:215
void Layout() override
Layout container.
Definition: TGListBox.cxx:512
virtual ~TGLBContainer()
Delete the listbox container.
Definition: TGListBox.cxx:504
void ActivateItem(TGFrameElement *el) override
Activate item.
Definition: TGListBox.cxx:1084
virtual TGLBEntry * Select(Int_t id, Bool_t sel)
Select / deselect the entry with the specified id.
Definition: TGListBox.cxx:703
TGLBEntry * fLastActive
last active listbox entry in single selection listbox
Definition: TGListBox.h:172
Bool_t HandleDoubleClick(Event_t *event) override
Handle double click mouse event in the listbox container.
Definition: TGListBox.cxx:932
virtual void RemoveEntries(Int_t from_ID, Int_t to_ID)
Remove entries from from_ID to to_ID (including).
Definition: TGListBox.cxx:642
TGListBox * fListBox
list box which contains this container
Definition: TGListBox.h:173
virtual void AddEntry(TGLBEntry *lbe, TGLayoutHints *lhints)
Add listbox entry with hints to container.
Definition: TGListBox.cxx:530
virtual Int_t GetPos(Int_t id)
Returns the position in the list box of the entry id.
Definition: TGListBox.cxx:1095
virtual void AddEntrySort(TGLBEntry *lbe, TGLayoutHints *lhints)
Insert listbox entry before the list box entry with a higher id.
Definition: TGListBox.cxx:581
virtual void InsertEntry(TGLBEntry *lbe, TGLayoutHints *lhints, Int_t afterID)
Insert listbox entry after specified entry with id afterID.
Definition: TGListBox.cxx:545
virtual void RemoveEntry(Int_t id)
Remove the entry with specified id from the listbox container.
Definition: TGListBox.cxx:614
virtual void GetSelectedEntries(TList *selected)
Adds all selected entries (TGLBEntry) of the list box into the list selected.
Definition: TGListBox.cxx:762
void DoRedraw() override
redraw
Definition: TGListBox.cxx:521
void Associate(const TGWindow *w) override
Definition: TGListBox.h:195
Bool_t HandleMotion(Event_t *event) override
Handle mouse motion event in listbox container.
Definition: TGListBox.cxx:950
virtual void SetMultipleSelections(Bool_t multi)
Enables and disables multiple selections of entries.
Definition: TGListBox.cxx:779
Basic listbox entries.
Definition: TGListBox.h:24
Pixel_t fBkcolor
entry background color
Definition: TGListBox.h:28
Int_t fEntryId
message id of listbox entry
Definition: TGListBox.h:27
void DoRedraw() override
Redraw the frame.
Definition: TGListBox.h:31
virtual void Toggle()
Toggle active state of listbox entry.
Definition: TGListBox.cxx:123
Int_t EntryId() const
Definition: TGListBox.h:40
Bool_t fActive
true if entry is active
Definition: TGListBox.h:29
void SetBackgroundColor(Pixel_t col) override
Set background color (override from TGWindow base class).
Definition: TGListBox.h:42
TGLBEntry(const TGWindow *p=nullptr, Int_t id=-1, UInt_t options=kHorizontalFrame, Pixel_t back=GetWhitePixel())
Base class entry constructor.
Definition: TGListBox.cxx:99
void Activate(Bool_t a) override
Toggle active state of listbox entry.
Definition: TGListBox.cxx:113
TGLBFrameElement(TGFrame *f, TGLayoutHints *l)
Definition: TGListBox.cxx:457
virtual ~TGLBFrameElement()
Definition: TGListBox.cxx:458
Int_t Compare(const TObject *obj) const override
Compare abstract method.
Definition: TGListBox.cxx:461
Bool_t IsSortable() const override
Definition: TGListBox.cxx:460
This class describes layout hints used by the layout classes.
Definition: TGLayout.h:50
Line style and width listbox entries.
Definition: TGListBox.h:97
Style_t fLineStyle
line style
Definition: TGListBox.h:105
TGGC * fLineGC
line graphics context
Definition: TGListBox.h:107
UInt_t fLineLength
line length
Definition: TGListBox.h:106
UInt_t fLineWidth
line width
Definition: TGListBox.h:104
void DrawCopy(Handle_t id, Int_t x, Int_t y) override
Draw copy on window/pixmap.
Definition: TGListBox.cxx:352
void DoRedraw() override
Redraw line style listbox entry.
Definition: TGListBox.cxx:370
void Update(TGLBEntry *e) override
Update line style listbox entry.
Definition: TGListBox.cxx:278
virtual ~TGLineLBEntry()
Delete line style listbox entry.
Definition: TGListBox.cxx:270
virtual void SetLineWidth(Int_t width)
Set or change line width in an entry.
Definition: TGListBox.cxx:343
virtual void SetLineStyle(Style_t style)
Set the line style corresponding to the TPad line styles.
Definition: TGListBox.cxx:290
TGLineLBEntry(const TGLineLBEntry &)=delete
A listbox is a box, possibly with scrollbar, containing entries.
Definition: TGListBox.h:221
virtual void InitListBox()
Initiate the internal classes of a list box.
Definition: TGListBox.cxx:1144
Bool_t fIntegralHeight
true if height should be multiple of fItemVsize
Definition: TGListBox.h:229
virtual void AddEntrySort(TGString *s, Int_t id)
Add entry with specified string and id to listbox sorted by increasing id.
Definition: TGListBox.cxx:1241
TGListBox(const TGListBox &)=delete
virtual ~TGListBox()
Delete a listbox widget.
Definition: TGListBox.cxx:1132
virtual void SortByName(Bool_t ascend=kTRUE)
Sort entries by name.
Definition: TGListBox.cxx:1506
virtual TGVScrollBar * GetVScrollbar() const
Definition: TGListBox.h:270
TGViewPort * fVport
listbox viewport (see TGCanvas.h)
Definition: TGListBox.h:231
UInt_t fItemVsize
maximum height of single entry
Definition: TGListBox.h:228
TGDimension GetDefaultSize() const override
Return default size of listbox widget.
Definition: TGListBox.cxx:1437
virtual Int_t GetNumberOfEntries() const
Definition: TGListBox.h:263
TGLBContainer * fLbc
listbox container
Definition: TGListBox.h:230
virtual TGLBEntry * GetSelectedEntry() const
Definition: TGListBox.h:288
virtual void RemoveEntry(Int_t id=-1)
remove entry with id.
Definition: TGListBox.cxx:1319
virtual void NewEntry(const char *s="Entry")
method used to add entry via context menu
Definition: TGListBox.cxx:1301
void Resize(UInt_t w, UInt_t h) override
Resize the listbox widget.
Definition: TGListBox.cxx:1412
virtual Int_t GetSelected() const
Return id of selected listbox item.
Definition: TGListBox.cxx:1516
void MoveResize(Int_t x, Int_t y, UInt_t w, UInt_t h) override
Move and resize the listbox widget.
Definition: TGListBox.cxx:1425
virtual void SetTopEntry(Int_t id=-1)
Scroll the entry with id to the top of the listbox.
Definition: TGListBox.cxx:1388
void ChangeBackground(Pixel_t back) override
Change background to all entries.
Definition: TGListBox.cxx:1534
virtual void AddEntry(TGString *s, Int_t id)
Add entry with specified string and id to listbox.
Definition: TGListBox.cxx:1204
void Layout() override
Layout the listbox components.
Definition: TGListBox.cxx:1453
virtual void DoubleClicked(Int_t widgetId, Int_t id)
Emit DoubleClicked signal with list box id and entry id.
Definition: TGListBox.cxx:1623
virtual void InsertEntry(TGString *s, Int_t id, Int_t afterID)
Insert entry with specified string and id behind the entry with afterID.
Definition: TGListBox.cxx:1279
virtual void SelectionChanged()
Definition: TGListBox.h:300
virtual Bool_t GetMultipleSelections() const
Definition: TGListBox.h:261
void SetContainer(TGFrame *f)
Definition: TGListBox.h:234
TGVScrollBar * fVScrollbar
vertical scrollbar
Definition: TGListBox.h:232
void DrawBorder() override
Draw borders of the list box widget.
Definition: TGListBox.cxx:1177
virtual TGLBEntry * GetEntry(Int_t id) const
Returns list box entry with specified id.
Definition: TGListBox.cxx:1373
virtual TGViewPort * GetViewPort() const
Definition: TGListBox.h:268
virtual TGFrame * GetContainer() const
Definition: TGListBox.h:267
void SavePrimitive(std::ostream &out, Option_t *option="") override
Save a list box widget as a C++ statement(s) on output stream out.
Definition: TGListBox.cxx:1651
virtual void GetSelectedEntries(TList *selected)
Adds all selected entries (TGLBEntry) of the list box into the list selected.
Definition: TGListBox.cxx:1526
virtual void RemoveEntries(Int_t from_ID, Int_t to_ID)
Remove a range of entries defined by from_ID and to_ID.
Definition: TGListBox.cxx:1354
Bool_t ProcessMessage(Longptr_t msg, Longptr_t parm1, Longptr_t parm2) override
Process messages generated by the listbox container and forward messages to the listbox message handl...
Definition: TGListBox.cxx:1552
virtual TGLBEntry * FindEntry(const char *s) const
Find entry by name.
Definition: TGListBox.cxx:1636
void RemoveAll() override
Remove all entries.
Definition: TGListBox.cxx:1345
virtual void Selected(Int_t widgetId, Int_t id)
Emit Selected signal with list box id and entry id.
Definition: TGListBox.cxx:1610
TGClient * fClient
Connection to display server.
Definition: TGObject.h:25
Handle_t fId
X11/Win32 Window identifier.
Definition: TGObject.h:24
The TGPicture class implements pictures and icons used in the different GUI elements and widgets.
Definition: TGPicture.h:25
void Draw(Option_t *="") override
Default Draw method for all objects.
Definition: TGPicture.h:46
UInt_t GetHeight() const
Definition: TGPicture.h:53
UInt_t GetWidth() const
Definition: TGPicture.h:52
Int_t fY
y position
Definition: TGDimension.h:39
Int_t fX
x position
Definition: TGDimension.h:38
Pixel_t GetBlackColor() const
Pixel_t GetSelectedFgndColor() const
virtual Int_t GetPosition() const
Definition: TGScrollBar.h:113
void MoveResize(Int_t x, Int_t y, UInt_t w=0, UInt_t h=0) override
Move and/or resize the frame.
Definition: TGScrollBar.h:118
TGString wraps a TString and adds some graphics routines like drawing, size of string on screen depen...
Definition: TGString.h:20
Int_t GetLength() const
Definition: TGString.h:29
const char * GetString() const
Definition: TGString.h:30
virtual void Draw(Drawable_t id, GContext_t gc, Int_t x, Int_t y)
Draw string.
Definition: TGString.cxx:56
Text string listbox entries.
Definition: TGListBox.h:48
UInt_t fTWidth
text width
Definition: TGListBox.h:52
Bool_t fTextChanged
true if text has been changed
Definition: TGListBox.h:54
const TGString * GetText() const
Definition: TGListBox.h:79
GContext_t fNormGC
text drawing graphics context
Definition: TGListBox.h:55
static const TGFont * fgDefaultFont
Definition: TGListBox.h:60
void DoRedraw() override
Redraw text listbox entry.
Definition: TGListBox.cxx:188
void SavePrimitive(std::ostream &out, Option_t *="") override
Save a list box entry widget as a C++ statement(s) on output stream out.
Definition: TGListBox.cxx:1693
void DrawCopy(Handle_t id, Int_t x, Int_t y) override
Draw text listbox entry on window/pixmap.
Definition: TGListBox.cxx:164
const char * GetTitle() const override
Returns title of object.
Definition: TGListBox.h:81
UInt_t fTHeight
text height
Definition: TGListBox.h:53
TGString * fText
entry text string
Definition: TGListBox.h:51
void Update(TGLBEntry *e) override
Definition: TGListBox.h:85
FontStruct_t fFontStruct
font used to draw string
Definition: TGListBox.h:56
static FontStruct_t GetDefaultFontStruct()
Return default font structure in use for a text listbox entry.
Definition: TGListBox.cxx:215
virtual ~TGTextLBEntry()
Delete text listbox entry.
Definition: TGListBox.cxx:156
static const TGGC & GetDefaultGC()
Return default graphics context in use for a text listbox entry.
Definition: TGListBox.cxx:225
static TClass * Class()
TGTextLBEntry(const TGTextLBEntry &)=delete
static TGGC * fgDefaultGC
Definition: TGListBox.h:61
void SetText(TGString *new_text)
Set or change text in text entry.
Definition: TGListBox.cxx:196
The TGVScrollBar will generate the following event messages: kC_VSCROLL, kSB_SLIDERPOS,...
Definition: TGScrollBar.h:165
void SetRange(Int_t range, Int_t page_size) override
Set range of vertical scrollbar.
void SetPosition(Int_t pos) override
Set logical slider position of vertical scrollbar.
TGFrame * GetContainer() const
Definition: TGCanvas.h:173
virtual void SetVPos(Int_t ypos)
Moves content of container frame in vertical direction.
Definition: TGCanvas.cxx:229
Int_t fWidgetId
the widget id (used for event processing)
Definition: TGWidget.h:46
virtual void Associate(const TGWindow *w)
Definition: TGWidget.h:72
const TGWindow * fMsgWindow
window which handles widget events
Definition: TGWidget.h:48
ROOT GUI Window base class.
Definition: TGWindow.h:23
virtual void SetEditDisabled(UInt_t on=kEditDisable)
Definition: TGWindow.h:113
const TGWindow * fParent
Parent window.
Definition: TGWindow.h:28
@ kEditDisableLayout
window layout cannot be edited
Definition: TGWindow.h:60
@ kEditDisableBtnEnable
window can handle mouse button events
Definition: TGWindow.h:64
@ kEditDisableGrab
window grab cannot be edited
Definition: TGWindow.h:59
@ kEditDisable
disable edit of this window
Definition: TGWindow.h:57
@ kEditDisableKeyEnable
window can handle keyboard events
Definition: TGWindow.h:65
virtual void SetWindowName(const char *name=nullptr)
Set window name.
Definition: TGWindow.cxx:129
const TGWindow * GetParent() const
Definition: TGWindow.h:83
virtual Bool_t IsMapped()
Returns kTRUE if window is mapped on screen, kFALSE otherwise.
Definition: TGWindow.cxx:295
const char * GetName() const override
Return unique name, used in SavePrimitive methods.
Definition: TGWindow.cxx:336
UInt_t fEditDisabled
flags used for "guibuilding"
Definition: TGWindow.h:32
A doubly linked list.
Definition: TList.h:38
void AddAfter(const TObject *after, TObject *obj) override
Insert object after object after in the list.
Definition: TList.cxx:250
TObject * After(const TObject *obj) const override
Returns the object after object obj.
Definition: TList.cxx:330
void Add(TObject *obj) override
Definition: TList.h:81
TObject * Remove(TObject *obj) override
Remove object from the list.
Definition: TList.cxx:822
TObject * First() const override
Return the first object in the list. Returns 0 when list is empty.
Definition: TList.cxx:659
void AddBefore(const TObject *before, TObject *obj) override
Insert object before object before in the list.
Definition: TList.cxx:196
void AddFirst(TObject *obj) override
Add object at the beginning of the list.
Definition: TList.cxx:100
virtual void Sort(Bool_t order=kSortAscending)
Sort linked list.
Definition: TList.cxx:937
Mother of all ROOT objects.
Definition: TObject.h:41
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
Definition: TObject.cxx:949
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:519
virtual const char * GetTitle() const
Returns title of object.
Definition: TObject.cxx:477
void Emit(const char *signal, const T &arg)
Activate signal with single parameter.
Definition: TQObject.h:164
void AddReference()
Definition: TRefCnt.h:40
Basic string class.
Definition: TString.h:136
const char * Data() const
Definition: TString.h:369
TString & ReplaceAll(const TString &s1, const TString &s2)
Definition: TString.h:692
virtual TTime Now()
Get current time in milliseconds since 0:00 Jan 1 1995.
Definition: TSystem.cxx:466
virtual void AddTimer(TTimer *t)
Add timer to list of system timers.
Definition: TSystem.cxx:474
virtual TTimer * RemoveTimer(TTimer *t)
Remove timer from list of system timers.
Definition: TSystem.cxx:484
void Reset()
Reset the timer.
Definition: TTimer.cxx:159
Double_t y[n]
Definition: legend1.C:17
Double_t x[n]
Definition: legend1.C:17
TF1 * f1
Definition: legend1.C:11
static constexpr double s
Short_t Max(Short_t a, Short_t b)
Returns the largest of a and b.
Definition: TMathBase.h:250
Double_t Ceil(Double_t x)
Rounds x upward, returning the smallest integral value that is not less than x.
Definition: TMath.h:666
Event structure.
Definition: GuiTypes.h:174
EGEventType fType
of event (see EGEventType)
Definition: GuiTypes.h:175
Int_t fXRoot
Definition: GuiTypes.h:179
UInt_t fState
key or button mask
Definition: GuiTypes.h:181
Int_t fYRoot
coordinates relative to root
Definition: GuiTypes.h:179
UInt_t fCode
key or button code
Definition: GuiTypes.h:180
Graphics context structure.
Definition: GuiTypes.h:224
Int_t fDashOffset
patterned/dashed line information
Definition: GuiTypes.h:248
Int_t fLineWidth
line width
Definition: GuiTypes.h:229
Mask_t fMask
bit mask specifying which fields are valid
Definition: GuiTypes.h:251
Int_t fLineStyle
kLineSolid, kLineOnOffDash, kLineDoubleDash
Definition: GuiTypes.h:230
Char_t fDashes[8]
dash pattern list (dash length per byte)
Definition: GuiTypes.h:249
Int_t fFillStyle
kFillSolid, kFillTiled, kFillStippled, kFillOpaeueStippled
Definition: GuiTypes.h:234
Int_t fDashLen
number of dashes in fDashes
Definition: GuiTypes.h:250
TLine l
Definition: textangle.C:4
TArc a
Definition: textangle.C:12
auto * t1
Definition: textangle.C:20