forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TControlBarButton.cxx
121 lines (96 loc) · 3.65 KB
/
TControlBarButton.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
// @(#)root/gpad:$Id$
// Author: Nenad Buncic 20/02/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. *
*************************************************************************/
/////////////////////////////////////////////////////////////////////////
// //
// TControlBarButton //
// //
// TControlBarButtons are created by the TControlBar. Not for general //
// consumption. //
// //
/////////////////////////////////////////////////////////////////////////
#include "TControlBarButton.h"
#include "TCanvas.h"
#include "TError.h"
#include "TApplication.h"
#include <ctype.h>
const char *kBStr = "BUTTON";
const char *kDStr = "DRAWNBUTTON";
const char *kSStr = "SEPARATOR";
ClassImp(TControlBarButton)
////////////////////////////////////////////////////////////////////////////////
/// Default controlbar button ctor.
TControlBarButton::TControlBarButton() : TNamed()
{
fType = 0;
}
////////////////////////////////////////////////////////////////////////////////
/// Create controlbar button.
TControlBarButton::TControlBarButton(const char *label, const char *action,
const char *hint, const char *type)
: TNamed(label, hint)
{
SetType(type);
SetAction(action);
}
////////////////////////////////////////////////////////////////////////////////
/// Execute controlbar button command.
void TControlBarButton::Action()
{
if (!fAction.IsNull()) {
gApplication->ProcessLine(fAction.Data());
if (gPad) gPad->Update();
}
}
////////////////////////////////////////////////////////////////////////////////
/// Set action to be executed by this button.
void TControlBarButton::SetAction(const char *action)
{
if (action) {
char *s = Strip(action);
fAction = s;
delete [] s;
} else
Error("SetAction", "action missing");
}
////////////////////////////////////////////////////////////////////////////////
/// Set button type. Type can be either "button", "drawnbutton" or
/// "separator". String is case insensitive. Default is "button".
void TControlBarButton::SetType(const char *type)
{
fType = kButton;
if (type && *type) {
if (!strcasecmp(type, kBStr))
fType = kButton;
else if (!strcasecmp(type, kDStr))
fType = kDrawnButton;
else if (!strcasecmp(type, kSStr))
fType = kSeparator;
else
Error("SetType", "unknown type '%s' !\n\t(choice of: %s, %s, %s)",
type, kBStr, kDStr, kSStr);
}
}
////////////////////////////////////////////////////////////////////////////////
/// Set button type. Type can be either kButton, kDrawnButton or kSeparator.
/// Default is kButton.
void TControlBarButton::SetType(Int_t type)
{
switch (type) {
case kButton:
case kDrawnButton:
case kSeparator:
fType = type;
break;
default:
fType = kButton;
Error("SetType", "unknown type: %d !\n\t(choice of: %d, %d, %d)",
type, kButton, kDrawnButton, kSeparator);
}
}