#include "AliMUONPainterGroup.h"
#include "AliMUONPainterInterfaceHelper.h"
#include "AliMUONPainterMatrix.h"
-#include "AliMUONPainterRegistry.h"
+#include "AliMUONPainterDataRegistry.h"
#include "AliMUONVPainter.h"
#include "AliMUONVTrackerData.h"
#include "AliLog.h"
fDataSourceNames = new TGButtonGroup(this,"Sources");
- AliMUONPainterRegistry* reg = AliMUONPainterRegistry::Instance();
+ AliMUONPainterDataRegistry* reg = AliMUONPainterDataRegistry::Instance();
reg->Connect("DataSourceWasRegistered(AliMUONVTrackerData*)",
"AliMUONPainterPlotSelector",
AliDebug(1,Form("Creating dimension buttons for dataSource %s",dataSourceName));
- AliMUONVTrackerData* data = AliMUONPainterRegistry::Instance()->FindDataSource(dataSourceName);
+ AliMUONVTrackerData* data = AliMUONPainterDataRegistry::Instance()->DataSource(dataSourceName);
TGButtonGroup* bg = new TGButtonGroup(this,0,3,5,0,dataSourceName);
( ( data && dataIndex >= 0 ) ? data->DimensionName(dataIndex).Data() :
"")));
+ UpdateTypeButton();
+
Long_t param[] = { (Long_t)type, (Long_t)data,
(Long_t)dataIndex };
// find first the sender of the signal
- AliMUONVTrackerData* data = reinterpret_cast<AliMUONVTrackerData*>(gTQSender);
-
- TGButton* button = AliMUONPainterInterfaceHelper::FindButtonByUserData(*fDataSourceNames,data);
-
- if (button)
- {
- button->SetToolTipText(Form("%d events",data->NumberOfEvents()),250);
- }
+// AliMUONVTrackerData* data = reinterpret_cast<AliMUONVTrackerData*>(gTQSender);
+//
+// TGButton* button = AliMUONPainterInterfaceHelper::FindButtonByUserData(*fDataSourceNames,data);
+//
+// if (button)
+// {
+// button->SetToolTipText(Form("%d events",data->NumberOfEvents()),250);
+// }
}
//_____________________________________________________________________________
{
/// A data source has been unregistered : remove it from the interface
- AliDebug(1,Form("Unregistering %s",data->GetName()));
+ TGButton* button = AliMUONPainterInterfaceHelper::FindButtonByUserData(*fDataSourceNames,data);
+
+ TGButton* bd = AliMUONPainterInterfaceHelper::FindDownButton(*fDataSourceNames);
- TGButton* button = AliMUONPainterInterfaceHelper::FindButtonByName(*fDataSourceNames,
- data->GetName());
- AliMUONVTrackerData* check = reinterpret_cast<AliMUONVTrackerData*>(button->GetUserData());
- if ( !button || check != data )
+ if ( bd == button )
{
- AliError("Something is seriously wrong. Please check");
- return;
+ // selected data source is the one we are removing...
+ // revert to "none" before actually removing it.
+ SourceButtonWasClicked(1);
}
- fDataSourceNames->Remove(button);
- delete button;
- button->DestroyWindow();
-
- fDataSourceNames->Show();
+ AliMUONPainterInterfaceHelper::RemoveButton(*fDataSourceNames,button);
+
+ // do not forget to re-connect things
+ fDataSourceNames->Connect("Clicked(Int_t)","AliMUONPainterPlotSelector",
+ this,
+ "SourceButtonWasClicked(Int_t)");
+
TObject* o = fDimensionButtonMap->Remove(new TObjString(data->GetName()));
if (!o)
{
AliError("Remove failed. Please check");
}
+
+ fDataSourceNames->Show();
Layout();
}
TGTextButton* button = (TGTextButton*)fDataSourceDimensions->GetButton(id);
- SetCurrentDimension(reinterpret_cast<Int_t>(button->GetUserData()));
+ SetCurrentDimension(reinterpret_cast<Long_t>(button->GetUserData()));
if ( fCurrentDimension >= 0 )
{
fTypes->Show();
}
- AliDebug(1,Form("fCurrentDimension=%d fCurrentData=%p fCurrentType=%s",
+ AliDebug(1,Form("fCurrentDimension=%ld fCurrentData=%p fCurrentType=%s",
fCurrentDimension,fCurrentData,fCurrentType.Data()));
DataSourceWasChanged();
TGButton* button = AliMUONPainterInterfaceHelper::FindDownButton(*fDataSourceDimensions);
if ( button )
{
- SetCurrentDimension(reinterpret_cast<Int_t>(button->GetUserData()));
+ SetCurrentDimension(reinterpret_cast<Long_t>(button->GetUserData()));
}
else
{
//_____________________________________________________________________________
void
-AliMUONPainterPlotSelector::SetCurrentDimension(Int_t i)
+AliMUONPainterPlotSelector::SetCurrentDimension(Long_t i)
{
/// Set the current dimension
- AliDebug(1,Form("fCurrentDimension %d -> %d",fCurrentDimension,i));
+ AliDebug(1,Form("fCurrentDimension %ld -> %ld",fCurrentDimension,i));
fCurrentDimension = i;
}
AliMUONPainterPlotSelector::SourceButtonWasClicked(Int_t id)
{
/// A source button was clicked
- AliDebug(1,Form("BEGIN id %d fCurrentDimension=%d fCurrentData=%p fCurrentType=%s",
+ AliDebug(1,Form("BEGIN id %d fCurrentDimension=%ld fCurrentData=%p fCurrentType=%s",
id,
fCurrentDimension,fCurrentData,fCurrentType.Data()));
if ( data != 0 &&
fCurrentDimension >= 0 &&
- fCurrentDimension < data->NumberOfDimensions() )
+ fCurrentDimension < (Long_t)(data->NumberOfDimensions()) )
{
AliMUONPainterInterfaceHelper::SetState(*fTypes,kTRUE);
}
Resize();
Layout();
- AliDebug(1,Form("END fCurrentDimension=%d fCurrentData=%p fCurrentType=%s",
+ AliDebug(1,Form("END fCurrentDimension=%ld fCurrentData=%p fCurrentType=%s",
fCurrentDimension,fCurrentData,fCurrentType.Data()));
DataSourceWasChanged();
AliMUONPainterPlotSelector::TypeButtonWasClicked(Int_t id)
{
/// A type button was clicked
- AliDebug(1,Form("fCurrentDimension=%d fCurrentData=%p",
+ AliDebug(1,Form("fCurrentDimension=%ld fCurrentData=%p",
fCurrentDimension,fCurrentData));
TGTextButton* button = (TGTextButton*)fTypes->GetButton(id);
}
}
- AliDebug(1,Form("After update type=%s data=%p dim=%d",
+ AliDebug(1,Form("After update type=%s data=%p dim=%ld",
fCurrentType.Data(),fCurrentData,fCurrentDimension));
// the *order* of the 3 following lines is *very* important
Resize();
Layout();
- AliDebug(1,Form("END fCurrentType=%s fCurrentData=%p fCurrentDimension=%d",
+ AliDebug(1,Form("END fCurrentType=%s fCurrentData=%p fCurrentDimension=%ld",
fCurrentType.Data(),fCurrentData,
fCurrentDimension));
}
(AliMUONPainterInterfaceHelper::FindButtonByUserData(*fDataSourceNames,
fCurrentData));
- AliMUONPainterInterfaceHelper::Select(*fDataSourceNames,button->GetTitle());
+ if ( button )
+ {
+ AliMUONPainterInterfaceHelper::Select(*fDataSourceNames,button->GetTitle());
- RestoreDimensionButtons(button->GetTitle(),kFALSE);
+ RestoreDimensionButtons(button->GetTitle(),kFALSE);
+ }
fDataSourceNames->Show();
}
AliMUONPainterPlotSelector::UpdateTypeButton()
{
/// Update the type buttons
-
+
AliDebug(1,Form("fCurrentType=%s",fCurrentType.Data()));
+ if (!fCurrentData)
+ {
+ AliMUONPainterInterfaceHelper::SetState(*fTypes,kFALSE);
+ }
+ else
+ {
+ // disable levels that cannot be handled by this data
+ TGTextButton* padButton = static_cast<TGTextButton*>
+ (AliMUONPainterInterfaceHelper::FindButtonByName(*fTypes,"PAD"));
+ if (padButton)
+ {
+ padButton->SetEnabled(fCurrentData->IsChannelLevelEnabled());
+ }
+ TGTextButton* manuButton = static_cast<TGTextButton*>
+ (AliMUONPainterInterfaceHelper::FindButtonByName(*fTypes,"MANU"));
+ if (manuButton)
+ {
+ manuButton->SetEnabled(fCurrentData->IsManuLevelEnabled());
+ }
+
+ }
+
TGTextButton* button = static_cast<TGTextButton*>
(AliMUONPainterInterfaceHelper::FindButtonByName(*fTypes,fCurrentType));
AliMUONPainterInterfaceHelper::Unselect(*fTypes,"*");
}
- if (!fCurrentData)
- {
- AliMUONPainterInterfaceHelper::SetState(*fTypes,kFALSE);
- }
-
+
fTypes->Show();
}