ROOT logo
/**************************************************************************
* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
*                                                                        *
* Author: The ALICE Off-line Project.                                    *
* Contributors are mentioned in the code where appropriate.              *
*                                                                        *
* Permission to use, copy, modify and distribute this software and its   *
* documentation strictly for non-commercial purposes is hereby granted   *
* without fee, provided that the above copyright notice appears in all   *
* copies and that both the copyright notice and this permission notice   *
* appear in the supporting documentation. The authors make no claims     *
* about the suitability of this software for any purpose. It is          *
* provided "as is" without express or implied warranty.                  *
**************************************************************************/

// $Id$

///\class AliMUONAttPainterSelectorFrame
///
/// Widget to select painter view type
///
///\author Laurent Aphecetche, Subatech

#include "AliMUONAttPainterSelectorFrame.h"

#include "AliMUONAttPainter.h"
#include "AliMUONPainterInterfaceHelper.h"
#include "AliLog.h"
#include <TGButton.h>
#include <TGButtonGroup.h>

///\cond CLASSIMP
ClassImp(AliMUONAttPainterSelectorFrame)
///\endcond

//_____________________________________________________________________________
AliMUONAttPainterSelectorFrame::AliMUONAttPainterSelectorFrame(TGWindow* p, UInt_t w, UInt_t h)
: TGHorizontalFrame(p,w,h),
fCathode(0x0),
fPlane(0x0),
fViewPoint(0x0),
fAttributes()
{
  /// ctor
  
  fCathode = new TGButtonGroup(this,"Cathode",kHorizontalFrame);

  fAttributes.SetCathode(kTRUE,kFALSE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fCathode,fAttributes.CathodeName(),(void*)(10));
  fAttributes.SetCathode(kFALSE,kTRUE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fCathode,fAttributes.CathodeName(),(void*)(1));
                                                
  fPlane = new TGButtonGroup(this,"Plane",kHorizontalFrame);
  
  fAttributes.SetPlane(kTRUE,kFALSE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fPlane,fAttributes.PlaneName(),(void*)(10));
  fAttributes.SetPlane(kFALSE,kTRUE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fPlane,fAttributes.PlaneName(),(void*)(1));

  fViewPoint = new TGButtonGroup(this,"ViewPoint",kHorizontalFrame);

  fAttributes.SetViewPoint(kTRUE,kFALSE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fViewPoint,fAttributes.ViewPointName(),(void*)(10));
  fAttributes.SetViewPoint(kFALSE,kTRUE);
  AliMUONPainterInterfaceHelper::AddRadioButton(*fViewPoint,fAttributes.ViewPointName(),(void*)(1));

  fViewPoint->SetState(kFALSE); //FIXME: until we're sure back views are handled correctly
  
  AddFrame(fCathode);
  AddFrame(fPlane);
  AddFrame(fViewPoint);
  
  fCathode->Connect("Clicked(Int_t)","AliMUONAttPainterSelectorFrame",this,"CathodeClicked(Int_t)");
  fPlane->Connect("Clicked(Int_t)","AliMUONAttPainterSelectorFrame",this,"PlaneClicked(Int_t)");
  fViewPoint->Connect("Clicked(Int_t)","AliMUONAttPainterSelectorFrame",this,"ViewClicked(Int_t)");
}

//_____________________________________________________________________________
AliMUONAttPainterSelectorFrame::~AliMUONAttPainterSelectorFrame()
{
  /// dtor
}

//_____________________________________________________________________________
void
AliMUONAttPainterSelectorFrame::CathodeClicked(Int_t buttonId)
{
  /// Cathode button clicked
  
  fAttributes.SetPlane(kFALSE,kFALSE);

  TGButton* button = fCathode->GetButton(buttonId);
  
  Long_t i = reinterpret_cast<Long_t>(button->GetUserData());
  
  if ( i == 10 ) 
  {
    fAttributes.SetCathode(kTRUE,kFALSE);
  }
  else if ( i == 1 ) 
  {
    fAttributes.SetCathode(kFALSE,kTRUE);
  }
  else
  {
    AliFatal("");
  }
  
  Clicked(&fAttributes);
}

//_____________________________________________________________________________
void
AliMUONAttPainterSelectorFrame::PlaneClicked(Int_t buttonId)
{
  /// Plane button clicked
  
  fAttributes.SetCathode(kFALSE,kFALSE);
  
  TGButton* button = fPlane->GetButton(buttonId);
  
  Long_t i = reinterpret_cast<Long_t> (button->GetUserData());
  
  if ( i == 10 ) 
  {
    fAttributes.SetPlane(kTRUE,kFALSE);
  }
  else if ( i == 1 ) 
  {
    fAttributes.SetPlane(kFALSE,kTRUE);
  }
  else
  {
    AliFatal("");
  }
  
  Clicked(&fAttributes);
  
}

//_____________________________________________________________________________
void
AliMUONAttPainterSelectorFrame::ViewClicked(Int_t buttonId)
{
  /// View button clicked

  TGButton* button = fViewPoint->GetButton(buttonId);
  
  Long_t i = reinterpret_cast<Long_t> (button->GetUserData());
  
  if ( i == 10 ) 
  {
    fAttributes.SetViewPoint(kTRUE,kFALSE);
  }
  else if ( i == 1 ) 
  {
    fAttributes.SetViewPoint(kFALSE,kTRUE);
  }
  else
  {
    AliFatal("");
  }
  
  Clicked(&fAttributes);
  
}

//_____________________________________________________________________________
void
AliMUONAttPainterSelectorFrame::Clicked(const AliMUONAttPainter* newValues)
{
  /// Emit a signal
  
  Long_t params[] = { (Long_t)newValues };
  
  Emit("Clicked(AliMUONAttPainter*)",params);
}

//_____________________________________________________________________________
void
AliMUONAttPainterSelectorFrame::Update(const AliMUONAttPainter& att)
{
  /// Update button state from the painter attributes

  AliMUONPainterInterfaceHelper::Unselect(*fCathode,"*");
  AliMUONPainterInterfaceHelper::Unselect(*fPlane,"*");
  AliMUONPainterInterfaceHelper::Unselect(*fViewPoint,"*");

  fAttributes = att;
  
  fCathode->SetState(!fAttributes.IsCathodeAndPlaneDisabled());
  fPlane->SetState(!fAttributes.IsCathodeAndPlaneDisabled());

  if ( fAttributes.IsCathodeDefined() ) 
  {
    AliMUONPainterInterfaceHelper::Select(*fCathode,fAttributes.CathodeName());
  }
  
  if ( fAttributes.IsPlaneDefined() ) 
  {
    AliMUONPainterInterfaceHelper::Select(*fPlane,fAttributes.PlaneName());
  }
  
  AliMUONPainterInterfaceHelper::Select(*fViewPoint,fAttributes.ViewPointName());
  
}
 AliMUONAttPainterSelectorFrame.cxx:1
 AliMUONAttPainterSelectorFrame.cxx:2
 AliMUONAttPainterSelectorFrame.cxx:3
 AliMUONAttPainterSelectorFrame.cxx:4
 AliMUONAttPainterSelectorFrame.cxx:5
 AliMUONAttPainterSelectorFrame.cxx:6
 AliMUONAttPainterSelectorFrame.cxx:7
 AliMUONAttPainterSelectorFrame.cxx:8
 AliMUONAttPainterSelectorFrame.cxx:9
 AliMUONAttPainterSelectorFrame.cxx:10
 AliMUONAttPainterSelectorFrame.cxx:11
 AliMUONAttPainterSelectorFrame.cxx:12
 AliMUONAttPainterSelectorFrame.cxx:13
 AliMUONAttPainterSelectorFrame.cxx:14
 AliMUONAttPainterSelectorFrame.cxx:15
 AliMUONAttPainterSelectorFrame.cxx:16
 AliMUONAttPainterSelectorFrame.cxx:17
 AliMUONAttPainterSelectorFrame.cxx:18
 AliMUONAttPainterSelectorFrame.cxx:19
 AliMUONAttPainterSelectorFrame.cxx:20
 AliMUONAttPainterSelectorFrame.cxx:21
 AliMUONAttPainterSelectorFrame.cxx:22
 AliMUONAttPainterSelectorFrame.cxx:23
 AliMUONAttPainterSelectorFrame.cxx:24
 AliMUONAttPainterSelectorFrame.cxx:25
 AliMUONAttPainterSelectorFrame.cxx:26
 AliMUONAttPainterSelectorFrame.cxx:27
 AliMUONAttPainterSelectorFrame.cxx:28
 AliMUONAttPainterSelectorFrame.cxx:29
 AliMUONAttPainterSelectorFrame.cxx:30
 AliMUONAttPainterSelectorFrame.cxx:31
 AliMUONAttPainterSelectorFrame.cxx:32
 AliMUONAttPainterSelectorFrame.cxx:33
 AliMUONAttPainterSelectorFrame.cxx:34
 AliMUONAttPainterSelectorFrame.cxx:35
 AliMUONAttPainterSelectorFrame.cxx:36
 AliMUONAttPainterSelectorFrame.cxx:37
 AliMUONAttPainterSelectorFrame.cxx:38
 AliMUONAttPainterSelectorFrame.cxx:39
 AliMUONAttPainterSelectorFrame.cxx:40
 AliMUONAttPainterSelectorFrame.cxx:41
 AliMUONAttPainterSelectorFrame.cxx:42
 AliMUONAttPainterSelectorFrame.cxx:43
 AliMUONAttPainterSelectorFrame.cxx:44
 AliMUONAttPainterSelectorFrame.cxx:45
 AliMUONAttPainterSelectorFrame.cxx:46
 AliMUONAttPainterSelectorFrame.cxx:47
 AliMUONAttPainterSelectorFrame.cxx:48
 AliMUONAttPainterSelectorFrame.cxx:49
 AliMUONAttPainterSelectorFrame.cxx:50
 AliMUONAttPainterSelectorFrame.cxx:51
 AliMUONAttPainterSelectorFrame.cxx:52
 AliMUONAttPainterSelectorFrame.cxx:53
 AliMUONAttPainterSelectorFrame.cxx:54
 AliMUONAttPainterSelectorFrame.cxx:55
 AliMUONAttPainterSelectorFrame.cxx:56
 AliMUONAttPainterSelectorFrame.cxx:57
 AliMUONAttPainterSelectorFrame.cxx:58
 AliMUONAttPainterSelectorFrame.cxx:59
 AliMUONAttPainterSelectorFrame.cxx:60
 AliMUONAttPainterSelectorFrame.cxx:61
 AliMUONAttPainterSelectorFrame.cxx:62
 AliMUONAttPainterSelectorFrame.cxx:63
 AliMUONAttPainterSelectorFrame.cxx:64
 AliMUONAttPainterSelectorFrame.cxx:65
 AliMUONAttPainterSelectorFrame.cxx:66
 AliMUONAttPainterSelectorFrame.cxx:67
 AliMUONAttPainterSelectorFrame.cxx:68
 AliMUONAttPainterSelectorFrame.cxx:69
 AliMUONAttPainterSelectorFrame.cxx:70
 AliMUONAttPainterSelectorFrame.cxx:71
 AliMUONAttPainterSelectorFrame.cxx:72
 AliMUONAttPainterSelectorFrame.cxx:73
 AliMUONAttPainterSelectorFrame.cxx:74
 AliMUONAttPainterSelectorFrame.cxx:75
 AliMUONAttPainterSelectorFrame.cxx:76
 AliMUONAttPainterSelectorFrame.cxx:77
 AliMUONAttPainterSelectorFrame.cxx:78
 AliMUONAttPainterSelectorFrame.cxx:79
 AliMUONAttPainterSelectorFrame.cxx:80
 AliMUONAttPainterSelectorFrame.cxx:81
 AliMUONAttPainterSelectorFrame.cxx:82
 AliMUONAttPainterSelectorFrame.cxx:83
 AliMUONAttPainterSelectorFrame.cxx:84
 AliMUONAttPainterSelectorFrame.cxx:85
 AliMUONAttPainterSelectorFrame.cxx:86
 AliMUONAttPainterSelectorFrame.cxx:87
 AliMUONAttPainterSelectorFrame.cxx:88
 AliMUONAttPainterSelectorFrame.cxx:89
 AliMUONAttPainterSelectorFrame.cxx:90
 AliMUONAttPainterSelectorFrame.cxx:91
 AliMUONAttPainterSelectorFrame.cxx:92
 AliMUONAttPainterSelectorFrame.cxx:93
 AliMUONAttPainterSelectorFrame.cxx:94
 AliMUONAttPainterSelectorFrame.cxx:95
 AliMUONAttPainterSelectorFrame.cxx:96
 AliMUONAttPainterSelectorFrame.cxx:97
 AliMUONAttPainterSelectorFrame.cxx:98
 AliMUONAttPainterSelectorFrame.cxx:99
 AliMUONAttPainterSelectorFrame.cxx:100
 AliMUONAttPainterSelectorFrame.cxx:101
 AliMUONAttPainterSelectorFrame.cxx:102
 AliMUONAttPainterSelectorFrame.cxx:103
 AliMUONAttPainterSelectorFrame.cxx:104
 AliMUONAttPainterSelectorFrame.cxx:105
 AliMUONAttPainterSelectorFrame.cxx:106
 AliMUONAttPainterSelectorFrame.cxx:107
 AliMUONAttPainterSelectorFrame.cxx:108
 AliMUONAttPainterSelectorFrame.cxx:109
 AliMUONAttPainterSelectorFrame.cxx:110
 AliMUONAttPainterSelectorFrame.cxx:111
 AliMUONAttPainterSelectorFrame.cxx:112
 AliMUONAttPainterSelectorFrame.cxx:113
 AliMUONAttPainterSelectorFrame.cxx:114
 AliMUONAttPainterSelectorFrame.cxx:115
 AliMUONAttPainterSelectorFrame.cxx:116
 AliMUONAttPainterSelectorFrame.cxx:117
 AliMUONAttPainterSelectorFrame.cxx:118
 AliMUONAttPainterSelectorFrame.cxx:119
 AliMUONAttPainterSelectorFrame.cxx:120
 AliMUONAttPainterSelectorFrame.cxx:121
 AliMUONAttPainterSelectorFrame.cxx:122
 AliMUONAttPainterSelectorFrame.cxx:123
 AliMUONAttPainterSelectorFrame.cxx:124
 AliMUONAttPainterSelectorFrame.cxx:125
 AliMUONAttPainterSelectorFrame.cxx:126
 AliMUONAttPainterSelectorFrame.cxx:127
 AliMUONAttPainterSelectorFrame.cxx:128
 AliMUONAttPainterSelectorFrame.cxx:129
 AliMUONAttPainterSelectorFrame.cxx:130
 AliMUONAttPainterSelectorFrame.cxx:131
 AliMUONAttPainterSelectorFrame.cxx:132
 AliMUONAttPainterSelectorFrame.cxx:133
 AliMUONAttPainterSelectorFrame.cxx:134
 AliMUONAttPainterSelectorFrame.cxx:135
 AliMUONAttPainterSelectorFrame.cxx:136
 AliMUONAttPainterSelectorFrame.cxx:137
 AliMUONAttPainterSelectorFrame.cxx:138
 AliMUONAttPainterSelectorFrame.cxx:139
 AliMUONAttPainterSelectorFrame.cxx:140
 AliMUONAttPainterSelectorFrame.cxx:141
 AliMUONAttPainterSelectorFrame.cxx:142
 AliMUONAttPainterSelectorFrame.cxx:143
 AliMUONAttPainterSelectorFrame.cxx:144
 AliMUONAttPainterSelectorFrame.cxx:145
 AliMUONAttPainterSelectorFrame.cxx:146
 AliMUONAttPainterSelectorFrame.cxx:147
 AliMUONAttPainterSelectorFrame.cxx:148
 AliMUONAttPainterSelectorFrame.cxx:149
 AliMUONAttPainterSelectorFrame.cxx:150
 AliMUONAttPainterSelectorFrame.cxx:151
 AliMUONAttPainterSelectorFrame.cxx:152
 AliMUONAttPainterSelectorFrame.cxx:153
 AliMUONAttPainterSelectorFrame.cxx:154
 AliMUONAttPainterSelectorFrame.cxx:155
 AliMUONAttPainterSelectorFrame.cxx:156
 AliMUONAttPainterSelectorFrame.cxx:157
 AliMUONAttPainterSelectorFrame.cxx:158
 AliMUONAttPainterSelectorFrame.cxx:159
 AliMUONAttPainterSelectorFrame.cxx:160
 AliMUONAttPainterSelectorFrame.cxx:161
 AliMUONAttPainterSelectorFrame.cxx:162
 AliMUONAttPainterSelectorFrame.cxx:163
 AliMUONAttPainterSelectorFrame.cxx:164
 AliMUONAttPainterSelectorFrame.cxx:165
 AliMUONAttPainterSelectorFrame.cxx:166
 AliMUONAttPainterSelectorFrame.cxx:167
 AliMUONAttPainterSelectorFrame.cxx:168
 AliMUONAttPainterSelectorFrame.cxx:169
 AliMUONAttPainterSelectorFrame.cxx:170
 AliMUONAttPainterSelectorFrame.cxx:171
 AliMUONAttPainterSelectorFrame.cxx:172
 AliMUONAttPainterSelectorFrame.cxx:173
 AliMUONAttPainterSelectorFrame.cxx:174
 AliMUONAttPainterSelectorFrame.cxx:175
 AliMUONAttPainterSelectorFrame.cxx:176
 AliMUONAttPainterSelectorFrame.cxx:177
 AliMUONAttPainterSelectorFrame.cxx:178
 AliMUONAttPainterSelectorFrame.cxx:179
 AliMUONAttPainterSelectorFrame.cxx:180
 AliMUONAttPainterSelectorFrame.cxx:181
 AliMUONAttPainterSelectorFrame.cxx:182
 AliMUONAttPainterSelectorFrame.cxx:183
 AliMUONAttPainterSelectorFrame.cxx:184
 AliMUONAttPainterSelectorFrame.cxx:185
 AliMUONAttPainterSelectorFrame.cxx:186
 AliMUONAttPainterSelectorFrame.cxx:187
 AliMUONAttPainterSelectorFrame.cxx:188
 AliMUONAttPainterSelectorFrame.cxx:189
 AliMUONAttPainterSelectorFrame.cxx:190
 AliMUONAttPainterSelectorFrame.cxx:191
 AliMUONAttPainterSelectorFrame.cxx:192
 AliMUONAttPainterSelectorFrame.cxx:193
 AliMUONAttPainterSelectorFrame.cxx:194
 AliMUONAttPainterSelectorFrame.cxx:195
 AliMUONAttPainterSelectorFrame.cxx:196
 AliMUONAttPainterSelectorFrame.cxx:197
 AliMUONAttPainterSelectorFrame.cxx:198
 AliMUONAttPainterSelectorFrame.cxx:199
 AliMUONAttPainterSelectorFrame.cxx:200
 AliMUONAttPainterSelectorFrame.cxx:201
 AliMUONAttPainterSelectorFrame.cxx:202
 AliMUONAttPainterSelectorFrame.cxx:203
 AliMUONAttPainterSelectorFrame.cxx:204
 AliMUONAttPainterSelectorFrame.cxx:205
 AliMUONAttPainterSelectorFrame.cxx:206