]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONPainterColorSlider.cxx
Fix histo name
[u/mrichter/AliRoot.git] / MUON / AliMUONPainterColorSlider.cxx
index 1b1c0365567a5e2405aacc6878719905f3b02b9d..58952b8f0ef58c785157d7cd6642eefd1135308f 100644 (file)
@@ -39,12 +39,14 @@ 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);
   
-  Int_t hsize = 20;
+    Int_t hsize = (h-100)/(ndivisions+2);
   Int_t topBorder(5);
   
   Double_t min(0.0);
@@ -77,11 +79,13 @@ AliMUONPainterColorSlider::AliMUONPainterColorSlider(const TGWindow* p,
 //  fEntryMin->SetFormat(TGNumberFormat::kNESRealOne);
 //  fEntryMax->SetFormat(TGNumberFormat::kNESRealOne);
   
-  TGTextButton* button = new TGTextButton(this,"Auto");
+  AddFrame(fAutoButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
   
-  AddFrame(button,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
+  fAutoButton->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
   
-  button->Connect("Clicked()","AliMUONPainterColorSlider",this,"DataRangeAutoRequested()");
+  AddFrame(fLockButton,new TGLayoutHints(kLHintsExpandX,0,0,topBorder,0));
+  
+  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 +121,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 +162,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 ) 
   {