Logo ROOT   6.08/07
Reference Guide
TGSplitter.cxx
Go to the documentation of this file.
1 // @(#)root/gui:$Id$
2 // Author: Fons Rademakers 6/09/2000
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 // //
14 // TGSplitter, TGVSplitter and TGHSplitter //
15 // //
16 // A splitter allows the frames left and right or above and below of //
17 // it to be resized. The frame to be resized must have the kFixedWidth //
18 // or kFixedHeight property set. //
19 // //
20 //////////////////////////////////////////////////////////////////////////
21 
22 #include "TGSplitter.h"
23 #include "TGPicture.h"
24 #include "Riostream.h"
25 
26 
31 
32 
33 ////////////////////////////////////////////////////////////////////////////////
34 /// Create a splitter.
35 
37  UInt_t options, ULong_t back) :
38  TGFrame(p, w, h, options, back),
39  fDragging (kFALSE),
40  fExternalHandler (kFALSE),
41  fSplitterPic (0)
42 {
43  fSplitCursor = kNone;
44  fEditDisabled = kTRUE;
45 }
46 
47 ////////////////////////////////////////////////////////////////////////////////
48 /// Emit DragStarted signal.
49 
51 {
52  Emit("DragStarted()");
53 }
54 
55 ////////////////////////////////////////////////////////////////////////////////
56 /// Emit Moved signal.
57 
59 {
60  Emit("Moved(Int_t)", delta);
61 }
62 
63 ////////////////////////////////////////////////////////////////////////////////
64 /// Create a vertical splitter.
65 
67  UInt_t options, ULong_t back) : TGSplitter(p, w, h, options, back)
68 {
70  fSplitterPic = fClient->GetPicture("splitterv.xpm");
71  fFrameHeight = h;
72  fFrameWidth = w;
73  fLeft = kTRUE;
74  fMax = fMin = 0;
75  fStartX = 0;
76  fFrame = 0;
77 
78  if (!fSplitterPic)
79  Error("TGVSplitter", "splitterv.xpm not found");
80 
81  if (p && !p->InheritsFrom(TGCompositeFrame::Class())) {
82  Error("TGVSplitter", "parent must inherit from a TGCompositeFrame");
83  return;
84  }
85  if (p && !(((TGCompositeFrame*)p)->GetOptions() & kHorizontalFrame)) {
86  Error("TGVSplitter", "parent must have a horizontal layout manager");
87  return;
88  }
89 
90  fSplitCursor = gVirtualX->CreateCursor(kArrowHor);
91 
92  gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
95 
97 }
98 
99 ////////////////////////////////////////////////////////////////////////////////
100 /// Create a vertical splitter.
101 
104 {
105  fExternalHandler = external;
106 
108  fSplitterPic = fClient->GetPicture("splitterv.xpm");
109 
110  if (!fSplitterPic)
111  Error("TGVSplitter", "splitterv.xpm not found");
112 
113  fSplitCursor = gVirtualX->CreateCursor(kArrowHor);
114  fFrame = 0;
115  fFrameHeight = h;
116  fFrameWidth = w;
117  fLeft = kTRUE;
118  fMax = fMin = 0;
119  fStartX = 0;
120 
121  gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
124 
126 }
127 
128 ////////////////////////////////////////////////////////////////////////////////
129 /// Delete vertical splitter widget.
130 
132 {
134 }
135 
136 ////////////////////////////////////////////////////////////////////////////////
137 /// Set frame to be resized. If frame is on the left of the splitter
138 /// set left to true.
139 
141 {
142  fFrame = frame;
143  fLeft = left;
144 
146  Error("SetFrame", "resize frame must have kFixedWidth option set");
147 }
148 
149 ////////////////////////////////////////////////////////////////////////////////
150 /// Handle mouse button event in vertical splitter.
151 
153 {
154  if (fSplitCursor == kNone) return kTRUE;
155 
156  if (!fExternalHandler && !fFrame) {
157  Error("HandleButton", "frame to be resized not set");
158  return kTRUE;
159  }
160 
161  if (event->fType == kButtonPress) {
162  fStartX = event->fXRoot;
163  fDragging = kTRUE;
164 
165  if (fExternalHandler) {
166  fMin = 0;
167  fMax = 99999;
168  DragStarted();
169  } else {
170  Int_t x, y;
171  gVirtualX->GetWindowSize(fFrame->GetId(), x, y, fFrameWidth, fFrameHeight);
172 
173  // get fMin and fMax in root coordinates
174  Int_t xroot, yroot;
175  UInt_t w, h;
176  Window_t wdum;
177  gVirtualX->GetWindowSize(fParent->GetId(), x, y, w, h);
178  gVirtualX->TranslateCoordinates(fParent->GetParent()->GetId(),
180  x, y, xroot, yroot, wdum);
181  fMin = xroot;
182  fMax = xroot + w - 2;
183  }
184 
185  // last argument kFALSE forces all specified events to this window
188  kTRUE, kFALSE);
189  } else {
190  fDragging = kFALSE;
191  gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE); // ungrab pointer
192  }
193  return kTRUE;
194 }
195 
196 ////////////////////////////////////////////////////////////////////////////////
197 /// Handle mouse motion event in vertical splitter.
198 
200 {
201  if (fDragging) {
202  Int_t xr = event->fXRoot;
203  if (xr > fMax) xr = fMax;
204  if (xr < fMin) xr = fMin;
205  Int_t delta = xr - fStartX;
206  if (fExternalHandler) {
207  if (delta != 0) {
208  Moved(delta);
209  fStartX = xr;
210  }
211  } else {
212  Int_t w = (Int_t) fFrameWidth;
213  if (fLeft)
214  w += delta;
215  else
216  w -= delta;
217  if (w < 0) w = 0;
218  fStartX = xr;
219 
220  if (delta != 0) {
221  fFrameWidth = w;
223 
225  p->Layout();
226  }
227  }
228  }
229  return kTRUE;
230 }
231 
232 ////////////////////////////////////////////////////////////////////////////////
233 /// Handle mouse motion event in vertical splitter.
234 
236 {
237  if (event->fType == kEnterNotify)
238  gVirtualX->SetCursor(fId, fSplitCursor);
239  else
240  gVirtualX->SetCursor(fId, kNone);
241 
242  return kTRUE;
243 }
244 
245 ////////////////////////////////////////////////////////////////////////////////
246 /// Draw vertical splitter.
247 
249 {
250  if (fSplitterPic) {
251  Int_t posx = (fWidth/2)-(fSplitterPic->GetWidth()/2);
252  Int_t posy = (fHeight/2)-(fSplitterPic->GetHeight()/2);
253  fSplitterPic->Draw(fId, GetBckgndGC()(), posx, posy);
254  }
255 }
256 
257 
258 ////////////////////////////////////////////////////////////////////////////////
259 /// Create a horizontal splitter.
260 
262  UInt_t options, ULong_t back) : TGSplitter(p, w, h, options, back)
263 {
265  fSplitterPic = 0;
266  fSplitCursor = 0;
267  fFrame = 0;
268  fFrameHeight = h;
269  fFrameWidth = w;
270  fAbove = kTRUE;
271  fMax = fMin = 0;
272  fStartY = 0;
273 
274  if (p && !p->InheritsFrom(TGCompositeFrame::Class())) {
275  Error("TGHSplitter", "parent must inherit from a TGCompositeFrame");
276  return;
277  }
278  if (p && !(((TGCompositeFrame*)p)->GetOptions() & kVerticalFrame)) {
279  Error("TGHSplitter", "parent must have a vertical layout manager");
280  return;
281  }
282 
283  fSplitterPic = fClient->GetPicture("splitterh.xpm");
284 
285  if (!fSplitterPic)
286  Error("TGHSplitter", "splitterh.xpm not found");
287 
288  fSplitCursor = gVirtualX->CreateCursor(kArrowVer);
289 
290  gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
293 
295 }
296 
297 ////////////////////////////////////////////////////////////////////////////////
298 /// Create a horizontal splitter.
299 
302 {
303  fExternalHandler = external;
304 
306 
307  fSplitterPic = fClient->GetPicture("splitterh.xpm");
308 
309  if (!fSplitterPic)
310  Error("TGHSplitter", "splitterh.xpm not found");
311 
312  fSplitCursor = gVirtualX->CreateCursor(kArrowVer);
313  fFrame = 0;
314  fFrameHeight = h;
315  fFrameWidth = w;
316  fAbove = kTRUE;
317  fMax = fMin = 0;
318  fStartY = 0;
319 
320  gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
323 
325 }
326 
327 ////////////////////////////////////////////////////////////////////////////////
328 /// Delete horizontal splitter widget.
329 
331 {
333 }
334 
335 ////////////////////////////////////////////////////////////////////////////////
336 /// Set frame to be resized. If frame is above the splitter
337 /// set above to true.
338 
340 {
341  fFrame = frame;
342  fAbove = above;
343 
345  Error("SetFrame", "resize frame must have kFixedHeight option set");
346 }
347 
348 ////////////////////////////////////////////////////////////////////////////////
349 /// Handle mouse button event in horizontal splitter.
350 
352 {
353  if (fSplitCursor == kNone) return kTRUE;
354 
355  if (!fExternalHandler && !fFrame) {
356  Error("HandleButton", "frame to be resized not set");
357  return kTRUE;
358  }
359 
360  if (event->fType == kButtonPress) {
361  fStartY = event->fYRoot;
362  fDragging = kTRUE;
363 
364  if (fExternalHandler) {
365  fMin = 0;
366  fMax = 99999;
367  DragStarted();
368  } else {
369  Int_t x, y;
370  gVirtualX->GetWindowSize(fFrame->GetId(), x, y, fFrameWidth, fFrameHeight);
371 
372  // get fMin and fMax in root coordinates
373  Int_t xroot, yroot;
374  UInt_t w, h;
375  Window_t wdum;
376  gVirtualX->GetWindowSize(fParent->GetId(), x, y, w, h);
377  gVirtualX->TranslateCoordinates(fParent->GetParent()->GetId(),
379  x, y, xroot, yroot, wdum);
380  fMin = yroot;
381  fMax = yroot + h - 2;
382  }
383 
384  // last argument kFALSE forces all specified events to this window
387  kTRUE, kFALSE);
388  } else {
389  fDragging = kFALSE;
390  gVirtualX->GrabPointer(0, 0, 0, 0, kFALSE); // ungrab pointer
391  }
392  return kTRUE;
393 }
394 
395 ////////////////////////////////////////////////////////////////////////////////
396 /// Handle mouse motion event in horizontal splitter.
397 
399 {
400  if (fDragging) {
401  Int_t yr = event->fYRoot;
402  if (yr > fMax) yr = fMax;
403  if (yr < fMin) yr = fMin;
404  Int_t delta = yr - fStartY;
405  if (fExternalHandler) {
406  if (delta != 0) {
407  Moved(delta);
408  fStartY = yr;
409  }
410  } else {
412  if (fAbove)
413  h += delta;
414  else
415  h -= delta;
416  if (h < 0) h = 0;
417  fStartY = yr;
418 
419  if (delta != 0) {
420  fFrameHeight = h;
422 
424  p->Layout();
425  }
426  }
427  }
428  return kTRUE;
429 }
430 
431 ////////////////////////////////////////////////////////////////////////////////
432 /// Handle mouse motion event in horizontal splitter.
433 
435 {
436  if (event->fType == kEnterNotify)
437  gVirtualX->SetCursor(fId, fSplitCursor);
438  else
439  gVirtualX->SetCursor(fId, kNone);
440 
441  return kTRUE;
442 }
443 
444 ////////////////////////////////////////////////////////////////////////////////
445 /// Draw horizontal splitter.
446 
448 {
449  if (fSplitterPic) {
450  Int_t posx = (fWidth/2)-(fSplitterPic->GetWidth()/2);
451  Int_t posy = (fHeight/2)-(fSplitterPic->GetHeight()/2);
452  fSplitterPic->Draw(fId, GetBckgndGC()(), posx, posy);
453  }
454 }
455 
456 ////////////////////////////////////////////////////////////////////////////////
457 /// fSplitterPic = fClient->GetPicture("filesplitterv.xpm");
458 
460  UInt_t options, Pixel_t back):
461  TGVSplitter(p, w, h, options, back)
462 {
463 // if (!fSplitterPic)
464 // Error("TGVFileSplitter", "filesplitterv.xpm not found");
465 }
466 
467 ////////////////////////////////////////////////////////////////////////////////
468 /// if (fSplitterPic) fClient->FreePicture(fSplitterPic);
469 
471 {
472 }
473 
474 ////////////////////////////////////////////////////////////////////////////////
475 /// Handle mouse motion event in vertical splitter.
476 
478 {
479  fMin = 30;
480 
481  if (fDragging) {
482  Int_t xr = event->fXRoot;
483  if (xr > fMax) xr = fMax;
484  if (xr < fMin) xr = fMin;
485  Int_t delta = xr - fStartX;
486  Int_t w = (Int_t) fFrameWidth;
487  if (fLeft)
488  w += delta;
489  else
490  w -= delta;
491 
492  if (w < 0) w = 0;
493  fStartX = xr;
494 
495  if (delta != 0) {
496  delta = w - fFrameWidth;
497  fFrameWidth = w;
498 
500  p->Resize( p->GetWidth() + delta, p->GetHeight() );
501 
502  fFrame->Resize(fFrameWidth, fFrameHeight);
503 
504  p->Layout();
506  }
507  }
508  return kTRUE;
509 }
510 
511 ////////////////////////////////////////////////////////////////////////////////
512 /// Handle mouse button event in vertical splitter.
513 
515 {
516  if ( event->fType == kButtonPress) {
517  ButtonPressed();
518  } else if ( event->fType == kButtonRelease) {
519  LayoutHeader(0);
520  LayoutListView();
521  ButtonReleased();
522  } else if ( event->fType == kButtonDoubleClick ) {
523  DoubleClicked(this);
524  }
525  return TGVSplitter::HandleButton(event);
526 }
527 
528 ////////////////////////////////////////////////////////////////////////////////
529 /// Emit LayoutFeader() signal.
530 
532 {
533  Emit("LayoutHeader(TGFrame*)", (Long_t)f);
534 }
535 
536 ////////////////////////////////////////////////////////////////////////////////
537 /// Emit LayoutListView() signal.
538 
540 {
541  Emit("LayoutListView()");
542 }
543 
544 ////////////////////////////////////////////////////////////////////////////////
545 /// Emit ButtonPressed() signal.
546 
548 {
549  Emit("ButtonPressed()");
550 }
551 
552 ////////////////////////////////////////////////////////////////////////////////
553 /// Emit ButtonReleased() signal.
554 
556 {
557  Emit("ButtonReleased()");
558 }
559 
560 ////////////////////////////////////////////////////////////////////////////////
561 /// Emit DoubleClicked() signal.
562 
564 {
565  Emit("DoubleClicked(TGVFileSplitter*)", (Long_t) splitter);
566 }
567 
568 ////////////////////////////////////////////////////////////////////////////////
569 /// Handle double click mouse event in splitter.
570 
572 {
573  DoubleClicked(this);
574  return kTRUE;
575 }
576 
577 ////////////////////////////////////////////////////////////////////////////////
578 /// Save a splitter widget as a C++ statement(s) on output stream out.
579 
580 void TGVSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
581 {
582  if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);
583 
584  out << " TGVSplitter *";
585  out << GetName() <<" = new TGVSplitter("<< fParent->GetName()
586  << "," << GetWidth() << "," << GetHeight();
587 
589  if (!GetOptions()) {
590  out <<");" << std::endl;
591  } else {
592  out << "," << GetOptionString() <<");" << std::endl;
593  }
594  } else {
595  out << "," << GetOptionString() << ",ucolor);" << std::endl;
596  }
597  if (option && strstr(option, "keep_names"))
598  out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
599  // TGVSplitter->SetFrame( theframe ) can only be saved here
600  // if fFrame is the frame on the left (since the frame on the
601  // right will only be saved afterwards)... The other case is
602  // handled in TGCompositeFrame::SavePrimitiveSubframes()
603  if (GetLeft()) {
604  out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
605  if (GetLeft()) out << ",kTRUE);" << std::endl;
606  else out << ",kFALSE);"<< std::endl;
607  }
608 }
609 
610 ////////////////////////////////////////////////////////////////////////////////
611 /// Save a splitter widget as a C++ statement(s) on output stream out.
612 
613 void TGHSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
614 {
615  if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);
616 
617  out << " TGHSplitter *";
618  out << GetName() <<" = new TGHSplitter("<< fParent->GetName()
619  << "," << GetWidth() << "," << GetHeight();
620 
622  if (!GetOptions()) {
623  out <<");" << std::endl;
624  } else {
625  out << "," << GetOptionString() <<");" << std::endl;
626  }
627  } else {
628  out << "," << GetOptionString() << ",ucolor);" << std::endl;
629  }
630  if (option && strstr(option, "keep_names"))
631  out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
632  // TGHSplitter->SetFrame( theframe ) can only be saved here
633  // if fFrame is the frame above (since the frame below will
634  // only be saved afterwards)... The other case is handled in
635  // TGCompositeFrame::SavePrimitiveSubframes()
636  if (GetAbove()) {
637  out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
638  if (GetAbove()) out << ",kTRUE);" << std::endl;
639  else out << ",kFALSE);"<< std::endl;
640  }
641 }
642 
643 ////////////////////////////////////////////////////////////////////////////////
644 /// Save a splitter widget as a C++ statement(s) on output stream out.
645 
646 void TGVFileSplitter::SavePrimitive(std::ostream &out, Option_t *option /*= ""*/)
647 {
648  if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);
649 
650  out << " TGVFileSplitter *";
651  out << GetName() <<" = new TGVFileSplitter("<< fParent->GetName()
652  << "," << GetWidth() << "," << GetHeight();
653 
655  if (!GetOptions()) {
656  out <<");" << std::endl;
657  } else {
658  out << "," << GetOptionString() <<");" << std::endl;
659  }
660  } else {
661  out << "," << GetOptionString() << ",ucolor);" << std::endl;
662  }
663  if (option && strstr(option, "keep_names"))
664  out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << std::endl;
665 
666  out << " " << GetName() << "->SetFrame(" << GetFrame()->GetName();
667  if (GetLeft()) out << ",kTRUE);" << std::endl;
668  else out << ",kFALSE);"<< std::endl;
669 }
670 
void ButtonReleased()
Emit ButtonReleased() signal.
Definition: TGSplitter.cxx:555
const TGWindow * fParent
Definition: TGWindow.h:43
virtual void Resize(UInt_t w=0, UInt_t h=0)
Resize the frame.
Definition: TGFrame.cxx:587
void DoubleClicked(TGVFileSplitter *frame)
Emit DoubleClicked() signal.
Definition: TGSplitter.cxx:563
virtual void DrawBorder()
Draw vertical splitter.
Definition: TGSplitter.cxx:248
virtual void DrawBorder()
Draw horizontal splitter.
Definition: TGSplitter.cxx:447
virtual UInt_t GetOptions() const
Definition: TGFrame.h:260
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in horizontal splitter.
Definition: TGSplitter.cxx:351
void AddInput(UInt_t emask)
Add events specified in the emask to the events the frame should handle.
Definition: TGFrame.cxx:321
virtual Bool_t HandleDoubleClick(Event_t *)
Handle double click mouse event in splitter.
Definition: TGSplitter.cxx:571
const char Option_t
Definition: RtypesCore.h:62
Int_t fStartX
Definition: TGSplitter.h:72
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:613
REAL splitter
Definition: triangle.c:616
UInt_t GetHeight() const
Definition: TGFrame.h:288
TH1 * h
Definition: legend2.C:5
const Mask_t kLeaveWindowMask
Definition: GuiTypes.h:169
virtual void SetFrame(TGFrame *frame, Bool_t left)
Set frame to be resized.
Definition: TGSplitter.cxx:140
Int_t fMin
Definition: TGSplitter.h:112
Bool_t fDragging
Definition: TGSplitter.h:35
void ButtonPressed()
Emit ButtonPressed() signal.
Definition: TGSplitter.cxx:547
Pixel_t fBackground
Definition: TGFrame.h:158
Int_t fMax
Definition: TGSplitter.h:76
int Int_t
Definition: RtypesCore.h:41
Int_t fMax
Definition: TGSplitter.h:113
bool Bool_t
Definition: RtypesCore.h:59
const Bool_t kFALSE
Definition: Rtypes.h:92
UInt_t GetWidth() const
Definition: TGFrame.h:287
const char * Class
Definition: TXMLSetup.cxx:64
TGFrame * fFrame
Definition: TGSplitter.h:114
TGVSplitter(const TGVSplitter &)
UInt_t GetHeight() const
Definition: TGPicture.h:74
Handle_t GetId() const
Definition: TGObject.h:52
virtual void Layout()
Layout the elements of the composite frame.
Definition: TGFrame.cxx:1239
void Draw(Option_t *="")
Default Draw method for all objects.
Definition: TGPicture.h:67
const Mask_t kPointerMotionMask
Definition: GuiTypes.h:164
Double_t x[n]
Definition: legend1.C:17
ULong_t Pixel_t
Definition: GuiTypes.h:41
const TGFrame * GetFrame() const
Definition: TGSplitter.h:89
static Pixel_t GetDefaultFrameBackground()
Get default frame background.
Definition: TGFrame.cxx:665
void FreePicture(const TGPicture *pic)
Free picture resource.
Definition: TGClient.cxx:306
void Moved(Int_t delta)
Emit Moved signal.
Definition: TGSplitter.cxx:58
virtual ~TGHSplitter()
Delete horizontal splitter widget.
Definition: TGSplitter.cxx:330
Bool_t fAbove
Definition: TGSplitter.h:115
void Emit(const char *signal)
Acitvate signal without args.
Definition: TQObject.cxx:561
const Mask_t kButtonPressMask
Definition: GuiTypes.h:162
Cursor_t fSplitCursor
Definition: TGSplitter.h:34
UInt_t fFrameHeight
Definition: TGSplitter.h:74
EGEventType fType
Definition: GuiTypes.h:176
virtual ~TGVSplitter()
Delete vertical splitter widget.
Definition: TGSplitter.cxx:131
TGFrame * fFrame
Definition: TGSplitter.h:77
virtual Bool_t InheritsFrom(const char *classname) const
Returns kTRUE if object inherits from class "classname".
Definition: TObject.cxx:488
virtual const char * GetName() const
Return unique name, used in SavePrimitive methods.
Definition: TGWindow.cxx:221
UInt_t fFrameHeight
Definition: TGSplitter.h:111
Int_t fMin
Definition: TGSplitter.h:75
unsigned int UInt_t
Definition: RtypesCore.h:42
virtual void Error(const char *method, const char *msgfmt,...) const
Issue error message.
Definition: TObject.cxx:925
const Handle_t kNone
Definition: GuiTypes.h:89
virtual void SetFrame(TGFrame *frame, Bool_t above)
Set frame to be resized.
Definition: TGSplitter.cxx:339
virtual ~TGVFileSplitter()
if (fSplitterPic) fClient->FreePicture(fSplitterPic);
Definition: TGSplitter.cxx:470
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in vertical splitter.
Definition: TGSplitter.cxx:514
#define gVirtualX
Definition: TVirtualX.h:362
UInt_t fWidth
Definition: TGFrame.h:150
long Long_t
Definition: RtypesCore.h:50
const Mask_t kEnterWindowMask
Definition: GuiTypes.h:168
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse motion event in horizontal splitter.
Definition: TGSplitter.cxx:434
void DragStarted()
Emit DragStarted signal.
Definition: TGSplitter.cxx:50
#define ClassImp(name)
Definition: Rtypes.h:279
double f(double x)
const Mask_t kButtonReleaseMask
Definition: GuiTypes.h:163
const TGPicture * GetPicture(const char *name)
Get picture from the picture pool.
Definition: TGClient.cxx:287
UInt_t fFrameWidth
Definition: TGSplitter.h:73
unsigned long ULong_t
Definition: RtypesCore.h:51
Double_t y[n]
Definition: legend1.C:17
UInt_t GetWidth() const
Definition: TGPicture.h:73
UInt_t fHeight
Definition: TGFrame.h:151
const TGWindow * GetParent() const
Definition: TGWindow.h:87
void LayoutHeader(TGFrame *f)
Emit LayoutFeader() signal.
Definition: TGSplitter.cxx:531
Handle_t fId
Definition: TGObject.h:40
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:646
Bool_t fLeft
Definition: TGSplitter.h:78
TGVFileSplitter(const TGWindow *p=0, UInt_t w=4, UInt_t h=4, UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground())
fSplitterPic = fClient->GetPicture("filesplitterv.xpm");
Definition: TGSplitter.cxx:459
virtual Bool_t HandleCrossing(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:235
Handle_t Window_t
Definition: GuiTypes.h:30
TGClient * fClient
Definition: TGObject.h:41
void LayoutListView()
Emit LayoutListView() signal.
Definition: TGSplitter.cxx:539
const TGWindow * GetDefaultRoot() const
Returns the root (i.e.
Definition: TGClient.cxx:232
Int_t fStartY
Definition: TGSplitter.h:109
Bool_t fExternalHandler
Definition: TGSplitter.h:36
void SaveUserColor(std::ostream &out, Option_t *)
Save a user color in a C++ macro file - used in SavePrimitive().
Definition: TGFrame.cxx:2433
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in horizontal splitter.
Definition: TGSplitter.cxx:398
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:477
TString GetOptionString() const
Returns a frame option string - used in SavePrimitive().
Definition: TGFrame.cxx:2460
TGHSplitter(const TGHSplitter &)
virtual Bool_t HandleMotion(Event_t *event)
Handle mouse motion event in vertical splitter.
Definition: TGSplitter.cxx:199
virtual void SavePrimitive(std::ostream &out, Option_t *option="")
Save a splitter widget as a C++ statement(s) on output stream out.
Definition: TGSplitter.cxx:580
UInt_t fFrameWidth
Definition: TGSplitter.h:110
const Bool_t kTRUE
Definition: Rtypes.h:91
const Mask_t kAnyModifier
Definition: GuiTypes.h:211
Bool_t GetLeft() const
Definition: TGSplitter.h:90
const TGPicture * fSplitterPic
Definition: TGSplitter.h:37
virtual Bool_t HandleButton(Event_t *event)
Handle mouse button event in vertical splitter.
Definition: TGSplitter.cxx:152
static const TGGC & GetBckgndGC()
Get background color graphics context.
Definition: TGFrame.cxx:757