forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TDialogCanvas.cxx
140 lines (108 loc) · 4.01 KB
/
TDialogCanvas.cxx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
// @(#)root/gpad:$Id$
// Author: Rene Brun 03/07/96
/*************************************************************************
* Copyright (C) 1995-2000, Rene Brun and Fons Rademakers. *
* All rights reserved. *
* *
* For the licensing terms see $ROOTSYS/LICENSE. *
* For the list of contributors see $ROOTSYS/README/CREDITS. *
*************************************************************************/
#include "TROOT.h"
#include "TDialogCanvas.h"
#include "TGroupButton.h"
#include "TText.h"
#include "TStyle.h"
ClassImp(TDialogCanvas)
//______________________________________________________________________________
// A DialogCanvas is a canvas specialized to set attributes.
// It contains, in general, TGroupButton objects.
// When the APPLY button is executed, the actions corresponding
// to the active buttons are executed via the Interpreter.
//
// See examples in TAttLineCanvas, TAttFillCanvas, TAttTextCanvas, TAttMarkerCanvas
////////////////////////////////////////////////////////////////////////////////
/// DialogCanvas default constructor
TDialogCanvas::TDialogCanvas() : TCanvas()
{
fRefObject = 0;
fRefPad = 0;
}
////////////////////////////////////////////////////////////////////////////////
/// DialogCanvas constructor
TDialogCanvas::TDialogCanvas(const char *name, const char *title, Int_t ww, Int_t wh)
: TCanvas(name,title,-ww,wh)
{
SetFillColor(36);
fRefObject = 0;
fRefPad = 0;
}
////////////////////////////////////////////////////////////////////////////////
/// DialogCanvas constructor
TDialogCanvas::TDialogCanvas(const char *name, const char *title, Int_t wtopx, Int_t wtopy, UInt_t ww, UInt_t wh)
: TCanvas(name,title,-wtopx,wtopy,ww,wh)
{
SetFillColor(36);
fRefObject = 0;
fRefPad = 0;
}
////////////////////////////////////////////////////////////////////////////////
/// DialogCanvas default destructor
TDialogCanvas::~TDialogCanvas()
{
}
////////////////////////////////////////////////////////////////////////////////
/// Called when the APPLY button is executed
void TDialogCanvas::Apply(const char *action)
{
if (!fRefPad) return;
SetCursor(kWatch);
TIter next(fPrimitives);
TObject *refobj = fRefObject;
TObject *obj;
TGroupButton *button;
if (!strcmp(action,"gStyle")) fRefObject = gStyle;
while ((obj = next())) {
if (obj->InheritsFrom(TGroupButton::Class())) {
button = (TGroupButton*)obj;
if (button->GetBorderMode() < 0) button->ExecuteAction();
}
}
fRefObject = refobj;
if (!gROOT->GetSelectedPad()) return;
gROOT->GetSelectedPad()->Modified();
gROOT->GetSelectedPad()->Update();
}
////////////////////////////////////////////////////////////////////////////////
/// Create APPLY, gStyle and CLOSE buttons
void TDialogCanvas::BuildStandardButtons()
{
TGroupButton *apply = new TGroupButton("APPLY","Apply","",.05,.01,.3,.09);
apply->SetTextSize(0.55);
apply->SetBorderSize(3);
apply->SetFillColor(44);
apply->Draw();
apply = new TGroupButton("APPLY","gStyle","",.375,.01,.625,.09);
apply->SetTextSize(0.55);
apply->SetBorderSize(3);
apply->SetFillColor(44);
apply->Draw();
apply = new TGroupButton("APPLY","Close","",.70,.01,.95,.09);
apply->SetTextSize(0.55);
apply->SetBorderSize(3);
apply->SetFillColor(44);
apply->Draw();
}
////////////////////////////////////////////////////////////////////////////////
/// Set world coordinate system for the pad
void TDialogCanvas::Range(Double_t x1, Double_t y1, Double_t x2, Double_t y2)
{
TPad::Range(x1,y1,x2,y2);
}
////////////////////////////////////////////////////////////////////////////////
/// Recursively remove object from a pad and its subpads
void TDialogCanvas::RecursiveRemove(TObject *obj)
{
TPad::RecursiveRemove(obj);
if (fRefObject == obj) fRefObject = 0;
if (fRefPad == obj) fRefPad = 0;
}