]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPainterColorSlider.cxx
- update track cuts
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterColorSlider.cxx
index 21825d4d5a3042ea46ed34b8f4f3d6d6e8c58028..9c52d1caca195000f7f356211d6c3c07c1fcbbcd 100644 (file)
@@ -39,7 +39,9 @@ AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p,
   fEntryMin(0x0),
   fEntryMax(0x0),
   fMin(FLT_MAX),
-  fMax(-FLT_MAX)
+  fMax(-FLT_MAX),
+  fAutoButton(new TGTextButton(this,"Auto")),
+  fLockButton(new TGTextButton(this,"Lock"))
 {
     /// ctor
     Int_t ndivisions(20);
@@ -52,7 +54,7 @@ AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p,
   
   Double_t step = (max-min)/ndivisions;
   
-  for ( Int_t i = -1; i <= ndivisions+1; ++i ) 
+  for ( Int_t i = -1; i < ndivisions+1; ++i ) 
   {
     Double_t value = max - (min + step*i);
     
@@ -74,14 +76,13 @@ AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p,
   
   AddFrame(fEntryMin,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
   
-//  fEntryMin->SetFormat(TGNumberFormat::kNESRealOne);
-//  fEntryMax->SetFormat(TGNumberFormat::kNESRealOne);
+  AddFrame(fAutoButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
   
-  TGTextButton* button = new TGTextButton(this,"Auto");
+  fAutoButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
   
-  AddFrame(button,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
+  AddFrame(fLockButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
   
-  button->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
+  fLockButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"LockButtonWasClicked()");
   
   fEntryMax->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
   fEntryMin->Connect("ValueSet(Long_t)","AliMUONPainterColorSlider",this,"DataRangeWasChanged(Double_t*)");
@@ -117,6 +118,39 @@ AliMUONPainterColorSlider::DataRangeWasChanged(Double_t*)
   Emit("DataRangeWasChanged(Double_t*)",param);
 }
 
+//_____________________________________________________________________________
+Bool_t 
+AliMUONPainterColorSlider::IsLocked() const
+{
+  /// Whether our range is locked or not
+
+  return (fLockButton->GetString() == "Unlock"); // if we can unlock it means we are locked...
+}
+
+//_____________________________________________________________________________
+void 
+AliMUONPainterColorSlider::LockButtonWasClicked()
+{
+  /// Lock (toggle button) was clicked
+  
+  if ( IsLocked() )
+  {
+    // unlock it
+    fLockButton->SetText("Lock");
+    fEntryMin->SetState(kTRUE);
+    fEntryMax->SetState(kTRUE);
+    fAutoButton->SetEnabled(kTRUE);
+  }
+  else
+  {
+    // lock it
+    fLockButton->SetText("Unlock");
+    fEntryMin->SetState(kFALSE);
+    fEntryMax->SetState(kFALSE);
+    fAutoButton->SetEnabled(kFALSE);
+  }
+}
+
 //_____________________________________________________________________________
 void 
 AliMUONPainterColorSlider::SetRange(Double_t min, Double_t max, Bool_t emit)
@@ -125,11 +159,14 @@ AliMUONPainterColorSlider::SetRange(Double_t min, Double_t max, Bool_t emit)
   
   AliDebug(1,Form("min %e max %e emit %d",min,max,emit));
   
-  fMin = min;
-  fMax = max;
+  if ( !IsLocked() ) 
+  {
+    fMin = min;
+    fMax = max;
   
-  fEntryMin->SetNumber(fMin);
-  fEntryMax->SetNumber(fMax);
+    fEntryMin->SetNumber(fMin);
+    fEntryMax->SetNumber(fMax);
+  }
   
   if ( emit ) 
   {