Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
TControlBarButton.cxx
Go to the documentation of this file.
1 // @(#)root/gpad:$Id$
2 // Author: Nenad Buncic 20/02/96
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 /** \class TControlBarButton
13 \ingroup gpad
14 This class defines the control bar buttons
15 
16 Created by the TControlBar. Not for general consumption.
17 */
18 
19 #include "TControlBarButton.h"
20 #include "TCanvas.h"
21 #include "TError.h"
22 #include "TApplication.h"
23 
24 #include <ctype.h>
25 
26 const char *kBStr = "BUTTON";
27 const char *kDStr = "DRAWNBUTTON";
28 const char *kSStr = "SEPARATOR";
29 
30 
31 ClassImp(TControlBarButton);
32 
33 ////////////////////////////////////////////////////////////////////////////////
34 /// Default control bar button ctor.
35 
36 TControlBarButton::TControlBarButton() : TNamed()
37 {
38  fType = 0;
39 }
40 
41 ////////////////////////////////////////////////////////////////////////////////
42 /// Create control bar button.
43 
44 TControlBarButton::TControlBarButton(const char *label, const char *action,
45  const char *hint, const char *type)
46  : TNamed(label, hint)
47 {
48  SetType(type);
49  SetAction(action);
50 }
51 
52 ////////////////////////////////////////////////////////////////////////////////
53 /// Execute control bar button command.
54 
55 void TControlBarButton::Action()
56 {
57  if (!fAction.IsNull()) {
58 
59  gApplication->ProcessLine(fAction.Data());
60 
61  if (gPad) gPad->Update();
62  }
63 }
64 
65 ////////////////////////////////////////////////////////////////////////////////
66 /// Set action to be executed by this button.
67 
68 void TControlBarButton::SetAction(const char *action)
69 {
70  if (action) {
71  char *s = Strip(action);
72  fAction = s;
73  delete [] s;
74  } else
75  Error("SetAction", "action missing");
76 }
77 
78 
79 ////////////////////////////////////////////////////////////////////////////////
80 /// Set button type. Type can be either "button", "drawnbutton" or
81 /// "separator". String is case insensitive. Default is "button".
82 
83 void TControlBarButton::SetType(const char *type)
84 {
85  fType = kButton;
86 
87  if (type && *type) {
88  if (!strcasecmp(type, kBStr))
89  fType = kButton;
90  else if (!strcasecmp(type, kDStr))
91  fType = kDrawnButton;
92  else if (!strcasecmp(type, kSStr))
93  fType = kSeparator;
94  else
95  Error("SetType", "unknown type '%s' !\n\t(choice of: %s, %s, %s)",
96  type, kBStr, kDStr, kSStr);
97  }
98 }
99 
100 ////////////////////////////////////////////////////////////////////////////////
101 /// Set button type. Type can be either kButton, kDrawnButton or kSeparator.
102 /// Default is kButton.
103 
104 void TControlBarButton::SetType(Int_t type)
105 {
106  switch (type) {
107 
108  case kButton:
109  case kDrawnButton:
110  case kSeparator:
111  fType = type;
112  break;
113 
114  default:
115  fType = kButton;
116  Error("SetType", "unknown type: %d !\n\t(choice of: %d, %d, %d)",
117  type, kButton, kDrawnButton, kSeparator);
118  }
119 }