63 TPadEditor::TPadEditor(
const TGWindow *p, Int_t width,
64 Int_t height, UInt_t options, Pixel_t back)
65 : TGedFrame(p, width, height, options | kVerticalFrame, back)
69 MakeTitle(
"Pad/Canvas");
71 fFixedAR =
new TGCheckButton(
this,
"Fixed aspect ratio", kPAD_FAR);
72 fFixedAR->SetToolTipText(
"Set fixed aspect ratio");
73 AddFrame(fFixedAR,
new TGLayoutHints(kLHintsTop, 4, 1, 2, 1));
75 TGCompositeFrame *f2 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
76 TGCompositeFrame *f3 =
new TGCompositeFrame(f2, 40, 20, kVerticalFrame);
77 fCrosshair =
new TGCheckButton(f3,
"Crosshair", kPAD_CROSS);
78 fCrosshair->SetToolTipText(
"Set crosshair");
79 f3->AddFrame(fCrosshair,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
80 fGridX =
new TGCheckButton(f3,
"GridX", kPAD_GRIDX);
81 fGridX->SetToolTipText(
"Set grid along X");
82 f3->AddFrame(fGridX,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
83 fTickX =
new TGCheckButton(f3,
"TickX", kPAD_TICKX);
84 fTickX->SetToolTipText(
"Set tick marks along X");
85 f3->AddFrame(fTickX,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
86 f2->AddFrame(f3,
new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));
88 TGCompositeFrame *f4 =
new TGCompositeFrame(f2, 40, 20, kVerticalFrame);
89 fEditable =
new TGCheckButton(f4,
"Edit", kPAD_EDIT);
90 fEditable->SetToolTipText(
"Set editable mode");
91 f4->AddFrame(fEditable,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
92 fGridY =
new TGCheckButton(f4,
"GridY", kPAD_GRIDY);
93 fGridY->SetToolTipText(
"Set grid along Y");
94 f4->AddFrame(fGridY,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
95 fTickY =
new TGCheckButton(f4,
"TickY", kPAD_TICKY);
96 fTickY->SetToolTipText(
"Set tick marks along Y");
97 f4->AddFrame(fTickY,
new TGLayoutHints(kLHintsTop, 3, 1, 1, 1));
98 f2->AddFrame(f4,
new TGLayoutHints(kLHintsTop, 0, 1, 0, 0));
100 AddFrame(f2,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
102 MakeTitle(
"Log Scale");
104 TGCompositeFrame *f5 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
105 fLogX =
new TGCheckButton(f5,
":X", kPAD_LOGX);
106 fLogX->SetToolTipText(
"Set logarithmic scale along X");
107 f5->AddFrame(fLogX,
new TGLayoutHints(kLHintsTop, 4, 1, 1, 1));
108 fLogY =
new TGCheckButton(f5,
":Y", kPAD_LOGY);
109 fLogY->SetToolTipText(
"Set logarithmic scale along Y");
110 f5->AddFrame(fLogY,
new TGLayoutHints(kLHintsTop, 15, 1, 1, 1));
111 fLogZ =
new TGCheckButton(f5,
":Z", kPAD_LOGZ);
112 fLogZ->SetToolTipText(
"Set logarithmic scale along Z");
113 f5->AddFrame(fLogZ,
new TGLayoutHints(kLHintsTop, 15, 1, 1, 1));
114 AddFrame(f5,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
116 TGCompositeFrame *f6 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
117 fBgroup =
new TGButtonGroup(f6,3,1,3,0,
"Border Mode");
118 fBgroup->SetRadioButtonExclusive(kTRUE);
119 fBmode =
new TGRadioButton(fBgroup,
" Sunken border", 77);
120 fBmode->SetToolTipText(
"Set a sinken border of the pad/canvas");
121 fBmode0 =
new TGRadioButton(fBgroup,
" No border", 78);
122 fBmode0->SetToolTipText(
"Set no border of the pad/canvas");
123 fBmode1 =
new TGRadioButton(fBgroup,
" Raised border", 79);
124 fBmode1->SetToolTipText(
"Set a raised border of the pad/canvas");
125 fBmodelh =
new TGLayoutHints(kLHintsLeft, 0,0,3,0);
126 fBgroup->SetLayoutHints(fBmodelh, fBmode);
127 fBgroup->ChangeOptions(kFitWidth|kChildFrame|kVerticalFrame);
128 f6->AddFrame(fBgroup,
new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 4, 1, 0, 0));
129 AddFrame(f6,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
131 TGCompositeFrame *f7 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
132 TGLabel *fSizeLbl =
new TGLabel(f7,
"Size:");
133 f7->AddFrame(fSizeLbl,
new TGLayoutHints(kLHintsCenterY | kLHintsLeft, 6, 1, 0, 0));
134 fBsize =
new TGLineWidthComboBox(f7, kPAD_BSIZE);
135 fBsize->Resize(92, 20);
136 f7->AddFrame(fBsize,
new TGLayoutHints(kLHintsLeft, 13, 1, 0, 0));
137 fBsize->Associate(
this);
138 AddFrame(f7,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
146 TPadEditor::~TPadEditor()
158 void TPadEditor::ConnectSignals2Slots()
160 fFixedAR->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoFixedAspectRatio(Bool_t)");
161 fCrosshair->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoCrosshair(Bool_t)");
162 fEditable->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoEditable(Bool_t)");
163 fGridX->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoGridX(Bool_t)");
164 fGridY->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoGridY(Bool_t)");
165 fTickX->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoTickX(Bool_t)");
166 fTickY->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoTickY(Bool_t)");
167 fLogX->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoLogX(Bool_t)");
168 fLogY->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoLogY(Bool_t)");
169 fLogZ->Connect(
"Toggled(Bool_t)",
"TPadEditor",
this,
"DoLogZ(Bool_t)");
170 fBgroup->Connect(
"Clicked(Int_t)",
"TPadEditor",
this,
"DoBorderMode()");
171 fBsize->Connect(
"Selected(Int_t)",
"TPadEditor",
this,
"DoBorderSize(Int_t)");
178 void TPadEditor::SetModel(TObject* obj)
180 if (!obj || !obj->InheritsFrom(
"TPad"))
182 fPadPointer = (TPad *)obj;
183 fAvoidSignal = kTRUE;
186 on = fPadPointer->HasFixedAspectRatio();
187 if (on) fFixedAR->SetState(kButtonDown);
188 else fFixedAR->SetState(kButtonUp);
190 on = fPadPointer->HasCrosshair();
191 if (on) fCrosshair->SetState(kButtonDown);
192 else fCrosshair->SetState(kButtonUp);
194 on = fPadPointer->IsEditable();
195 if (on) fEditable->SetState(kButtonDown);
196 else fEditable->SetState(kButtonUp);
198 on = fPadPointer->GetGridx();
199 if (on) fGridX->SetState(kButtonDown);
200 else fGridX->SetState(kButtonUp);
202 on = fPadPointer->GetGridy();
203 if (on) fGridY->SetState(kButtonDown);
204 else fGridY->SetState(kButtonUp);
207 par = fPadPointer->GetLogx();
208 if (par) fLogX->SetState(kButtonDown);
209 else fLogX->SetState(kButtonUp);
211 par = fPadPointer->GetLogy();
212 if (par) fLogY->SetState(kButtonDown);
213 else fLogY->SetState(kButtonUp);
215 par = fPadPointer->GetLogz();
216 if (par) fLogZ->SetState(kButtonDown);
217 else fLogZ->SetState(kButtonUp);
219 par = fPadPointer->GetTickx();
220 if (par) fTickX->SetState(kButtonDown);
221 else fTickX->SetState(kButtonUp);
223 par = fPadPointer->GetTicky();
224 if (par) fTickY->SetState(kButtonDown);
225 else fTickY->SetState(kButtonUp);
227 par = fPadPointer->GetBorderMode();
229 fBgroup->SetButton(77, kTRUE);
230 fBsize->SetEnabled(kTRUE);
231 }
else if (par == 1) {
232 fBgroup->SetButton(79, kTRUE);
233 fBsize->SetEnabled(kTRUE);
235 fBgroup->SetButton(78, kTRUE);
236 fBsize->SetEnabled(kFALSE);
238 par = fPadPointer->GetBorderSize();
239 if (par < 1) par = 1;
240 if (par > 16) par = 16;
243 if (fInit) ConnectSignals2Slots();
245 fAvoidSignal = kFALSE;
251 void TPadEditor::ActivateBaseClassEditors(TClass* cl)
253 fGedEditor->ExcludeClassEditor(TAttLine::Class());
254 TGedFrame::ActivateBaseClassEditors(cl);
260 void TPadEditor::DoEditable(Bool_t on)
262 if (fAvoidSignal)
return;
263 fPadPointer->SetEditable(on);
270 void TPadEditor::DoCrosshair(Bool_t on)
272 if (fAvoidSignal)
return;
273 fPadPointer->SetCrosshair(on);
280 void TPadEditor::DoFixedAspectRatio(Bool_t on)
282 if (fAvoidSignal)
return;
283 fPadPointer->SetFixedAspectRatio(on);
290 void TPadEditor::DoGridX(Bool_t on)
292 if (fAvoidSignal)
return;
293 fPadPointer->SetGridx(on);
300 void TPadEditor::DoGridY(Bool_t on)
302 if (fAvoidSignal)
return;
303 fPadPointer->SetGridy(on);
310 void TPadEditor::DoLogX(Bool_t on)
312 if (fAvoidSignal)
return;
313 fPadPointer->SetLogx(on);
320 void TPadEditor::DoLogY(Bool_t on)
322 if (fAvoidSignal)
return;
323 fPadPointer->SetLogy(on);
330 void TPadEditor::DoLogZ(Bool_t on)
332 if (fAvoidSignal)
return;
333 fPadPointer->SetLogz(on);
340 void TPadEditor::DoTickX(Bool_t on)
342 if (fAvoidSignal)
return;
343 fPadPointer->SetTickx(on);
350 void TPadEditor::DoTickY(Bool_t on)
352 if (fAvoidSignal)
return;
353 fPadPointer->SetTicky(on);
360 void TPadEditor::DoBorderMode()
362 if (fAvoidSignal)
return;
364 if (fBmode->GetState() == kButtonDown) mode = -1;
365 else if (fBmode0->GetState() == kButtonDown) mode = 0;
369 fBsize->SetEnabled(kFALSE);
371 fBsize->SetEnabled(kTRUE);
373 fPadPointer->SetBorderMode(mode);
380 void TPadEditor::DoBorderSize(Int_t size)
382 if (fAvoidSignal)
return;
383 fPadPointer->SetBorderSize(size);