ROOT logo
// $Id$
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveITSScaledModuleEditor.h"
#include <EveDet/AliEveITSScaledModule.h>

#include <TVirtualPad.h>
#include <TGedEditor.h>
#include <TGLabel.h>
#include <TG3DLine.h>
#include <TGNumberEntry.h>
#include <TGComboBox.h>

//==============================================================================
//==============================================================================
// AliEveITSScaledModuleEditor
//==============================================================================

//______________________________________________________________________________
//
// Editor for AliEveITSScaledModule.

ClassImp(AliEveITSScaledModuleEditor)

AliEveITSScaledModuleEditor::AliEveITSScaledModuleEditor(const TGWindow *p, Int_t width, Int_t height,
                                                         UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back),
  fModule(0),
  fScale(0),
  fStatistic(0),
  fInfoFrame(0),
  fInfoLabel0(0),
  fInfoLabel1(0)
{
  // Constructor.

  MakeTitle("AliEveITSScaledModule");
  // Create widgets
  {
    TGHorizontalFrame* f = new TGHorizontalFrame(this);
    TGLabel *l = new TGLabel(f, "Scale:");
    f->AddFrame(l, new TGLayoutHints(kLHintsTop | kLHintsCenterY, 0, 5, 1, 1));
    fScale = new TGNumberEntry(f, 0, 2, -1,
			       TGNumberFormat::kNESInteger, TGNumberFormat::kNEAPositive,
			       TGNumberFormat::kNELLimitMinMax, 1, 5);
    fScale->GetNumberEntry()->SetToolTipText("Set cell size.");
    f->AddFrame(fScale, new TGLayoutHints(kLHintsLeft, 1, 7, 1, 1));
    fScale->Associate(f);
    fScale->Connect("ValueSet(Long_t)", "AliEveITSScaledModuleEditor", this, "DoScale()");

    TGLabel* lab = new TGLabel(f, "Statistic:");
    f->AddFrame(lab, new TGLayoutHints(kLHintsLeft|kLHintsBottom, 1, 2, 1, 2));
    fStatistic = new TGComboBox(f);
    fStatistic->AddEntry("Occup", 0);
    fStatistic->AddEntry("Average", 1);
    fStatistic->AddEntry("RMS", 2);
    TGListBox* lb = fStatistic->GetListBox();
    lb->Resize(lb->GetWidth(), 3*16);
    fStatistic->Resize(74, 20);
    fStatistic->Connect("Selected(Int_t)", "AliEveITSScaledModuleEditor", this, "DoStatType(Int_t)");
    f->AddFrame(fStatistic, new TGLayoutHints(kLHintsLeft, 1, 2, 1, 1));
    AddFrame(f, new TGLayoutHints(kLHintsTop, 1, 1, 1, 1));
  }

  CreateInfoFrame();
}

/******************************************************************************/

void AliEveITSScaledModuleEditor::CreateInfoFrame()
{
  // Create a frame under tab "Info".

  fInfoFrame = CreateEditorTabSubFrame("Info");
  TGCompositeFrame *title1 = new TGCompositeFrame(fInfoFrame, 145, 10,
						  kHorizontalFrame |
						  kLHintsExpandX   |
						  kFixedWidth      |
						  kOwnBackground);

  title1->AddFrame(new TGLabel(title1, "ScaledDigits Info"),
		   new TGLayoutHints(kLHintsLeft, 1, 1, 0, 0));
  title1->AddFrame(new TGHorizontal3DLine(title1),
		   new TGLayoutHints(kLHintsExpandX, 5, 5, 7, 7));
  fInfoFrame->AddFrame(title1, new TGLayoutHints(kLHintsTop, 0, 0, 2, 0));


  Int_t lp = 2;
  fInfoLabel0 = new TGLabel(fInfoFrame);
  fInfoLabel0->SetTextJustify(kTextLeft);
  fInfoFrame->AddFrame(fInfoLabel0, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
                                                      lp, 0, 8, 0));

  fInfoLabel1 = new TGLabel(fInfoFrame);
  fInfoLabel1->SetTextJustify(kTextLeft);
  fInfoFrame->AddFrame(fInfoLabel1, new TGLayoutHints(kLHintsLeft|kLHintsExpandX,
                                                      lp, 0, 2, 8));
}

/******************************************************************************/

void AliEveITSScaledModuleEditor::SetModel(TObject* obj)
{
  // Set model object.

  fModule = static_cast<AliEveITSScaledModule*>(obj);

  // widgets
  fScale->SetIntNumber(fModule->GetScaleInfo()->GetScale());
  fStatistic->Select(fModule->GetScaleInfo()->GetStatType(), kFALSE);

  // text info
  Int_t cnx, cnz, total;
  fModule->GetScaleData(cnx, cnz, total);
  fInfoLabel0->SetText(Form("Cell size:  Nx=%d Nz=%d", cnx, cnz));
  fInfoLabel1->SetText(Form("Num cells:  %d", total));
}


/******************************************************************************/

void AliEveITSScaledModuleEditor::DoScale()
{
  // Slot for Scale.

  fModule->GetScaleInfo()->ScaleChanged(fScale->GetIntNumber());

  Int_t cnx, cnz, total;
  fModule->GetScaleData(cnx, cnz, total);
  fInfoLabel0->SetText(Form("Cell size:  Nx=%d Nz=%d", cnx, cnz));
  Update();
  fGedEditor->SetModel(fGedEditor->GetPad(), fGedEditor->GetModel(), kButton1Down);
}

/******************************************************************************/

void AliEveITSScaledModuleEditor::DoStatType(Int_t v)
{
  // Slot for StatType.

  fModule->GetScaleInfo()->StatTypeChanged(v);
  Update();
  fGedEditor->SetModel(fGedEditor->GetPad(), fGedEditor->GetModel(), kButton1Down);
}
 AliEveITSScaledModuleEditor.cxx:1
 AliEveITSScaledModuleEditor.cxx:2
 AliEveITSScaledModuleEditor.cxx:3
 AliEveITSScaledModuleEditor.cxx:4
 AliEveITSScaledModuleEditor.cxx:5
 AliEveITSScaledModuleEditor.cxx:6
 AliEveITSScaledModuleEditor.cxx:7
 AliEveITSScaledModuleEditor.cxx:8
 AliEveITSScaledModuleEditor.cxx:9
 AliEveITSScaledModuleEditor.cxx:10
 AliEveITSScaledModuleEditor.cxx:11
 AliEveITSScaledModuleEditor.cxx:12
 AliEveITSScaledModuleEditor.cxx:13
 AliEveITSScaledModuleEditor.cxx:14
 AliEveITSScaledModuleEditor.cxx:15
 AliEveITSScaledModuleEditor.cxx:16
 AliEveITSScaledModuleEditor.cxx:17
 AliEveITSScaledModuleEditor.cxx:18
 AliEveITSScaledModuleEditor.cxx:19
 AliEveITSScaledModuleEditor.cxx:20
 AliEveITSScaledModuleEditor.cxx:21
 AliEveITSScaledModuleEditor.cxx:22
 AliEveITSScaledModuleEditor.cxx:23
 AliEveITSScaledModuleEditor.cxx:24
 AliEveITSScaledModuleEditor.cxx:25
 AliEveITSScaledModuleEditor.cxx:26
 AliEveITSScaledModuleEditor.cxx:27
 AliEveITSScaledModuleEditor.cxx:28
 AliEveITSScaledModuleEditor.cxx:29
 AliEveITSScaledModuleEditor.cxx:30
 AliEveITSScaledModuleEditor.cxx:31
 AliEveITSScaledModuleEditor.cxx:32
 AliEveITSScaledModuleEditor.cxx:33
 AliEveITSScaledModuleEditor.cxx:34
 AliEveITSScaledModuleEditor.cxx:35
 AliEveITSScaledModuleEditor.cxx:36
 AliEveITSScaledModuleEditor.cxx:37
 AliEveITSScaledModuleEditor.cxx:38
 AliEveITSScaledModuleEditor.cxx:39
 AliEveITSScaledModuleEditor.cxx:40
 AliEveITSScaledModuleEditor.cxx:41
 AliEveITSScaledModuleEditor.cxx:42
 AliEveITSScaledModuleEditor.cxx:43
 AliEveITSScaledModuleEditor.cxx:44
 AliEveITSScaledModuleEditor.cxx:45
 AliEveITSScaledModuleEditor.cxx:46
 AliEveITSScaledModuleEditor.cxx:47
 AliEveITSScaledModuleEditor.cxx:48
 AliEveITSScaledModuleEditor.cxx:49
 AliEveITSScaledModuleEditor.cxx:50
 AliEveITSScaledModuleEditor.cxx:51
 AliEveITSScaledModuleEditor.cxx:52
 AliEveITSScaledModuleEditor.cxx:53
 AliEveITSScaledModuleEditor.cxx:54
 AliEveITSScaledModuleEditor.cxx:55
 AliEveITSScaledModuleEditor.cxx:56
 AliEveITSScaledModuleEditor.cxx:57
 AliEveITSScaledModuleEditor.cxx:58
 AliEveITSScaledModuleEditor.cxx:59
 AliEveITSScaledModuleEditor.cxx:60
 AliEveITSScaledModuleEditor.cxx:61
 AliEveITSScaledModuleEditor.cxx:62
 AliEveITSScaledModuleEditor.cxx:63
 AliEveITSScaledModuleEditor.cxx:64
 AliEveITSScaledModuleEditor.cxx:65
 AliEveITSScaledModuleEditor.cxx:66
 AliEveITSScaledModuleEditor.cxx:67
 AliEveITSScaledModuleEditor.cxx:68
 AliEveITSScaledModuleEditor.cxx:69
 AliEveITSScaledModuleEditor.cxx:70
 AliEveITSScaledModuleEditor.cxx:71
 AliEveITSScaledModuleEditor.cxx:72
 AliEveITSScaledModuleEditor.cxx:73
 AliEveITSScaledModuleEditor.cxx:74
 AliEveITSScaledModuleEditor.cxx:75
 AliEveITSScaledModuleEditor.cxx:76
 AliEveITSScaledModuleEditor.cxx:77
 AliEveITSScaledModuleEditor.cxx:78
 AliEveITSScaledModuleEditor.cxx:79
 AliEveITSScaledModuleEditor.cxx:80
 AliEveITSScaledModuleEditor.cxx:81
 AliEveITSScaledModuleEditor.cxx:82
 AliEveITSScaledModuleEditor.cxx:83
 AliEveITSScaledModuleEditor.cxx:84
 AliEveITSScaledModuleEditor.cxx:85
 AliEveITSScaledModuleEditor.cxx:86
 AliEveITSScaledModuleEditor.cxx:87
 AliEveITSScaledModuleEditor.cxx:88
 AliEveITSScaledModuleEditor.cxx:89
 AliEveITSScaledModuleEditor.cxx:90
 AliEveITSScaledModuleEditor.cxx:91
 AliEveITSScaledModuleEditor.cxx:92
 AliEveITSScaledModuleEditor.cxx:93
 AliEveITSScaledModuleEditor.cxx:94
 AliEveITSScaledModuleEditor.cxx:95
 AliEveITSScaledModuleEditor.cxx:96
 AliEveITSScaledModuleEditor.cxx:97
 AliEveITSScaledModuleEditor.cxx:98
 AliEveITSScaledModuleEditor.cxx:99
 AliEveITSScaledModuleEditor.cxx:100
 AliEveITSScaledModuleEditor.cxx:101
 AliEveITSScaledModuleEditor.cxx:102
 AliEveITSScaledModuleEditor.cxx:103
 AliEveITSScaledModuleEditor.cxx:104
 AliEveITSScaledModuleEditor.cxx:105
 AliEveITSScaledModuleEditor.cxx:106
 AliEveITSScaledModuleEditor.cxx:107
 AliEveITSScaledModuleEditor.cxx:108
 AliEveITSScaledModuleEditor.cxx:109
 AliEveITSScaledModuleEditor.cxx:110
 AliEveITSScaledModuleEditor.cxx:111
 AliEveITSScaledModuleEditor.cxx:112
 AliEveITSScaledModuleEditor.cxx:113
 AliEveITSScaledModuleEditor.cxx:114
 AliEveITSScaledModuleEditor.cxx:115
 AliEveITSScaledModuleEditor.cxx:116
 AliEveITSScaledModuleEditor.cxx:117
 AliEveITSScaledModuleEditor.cxx:118
 AliEveITSScaledModuleEditor.cxx:119
 AliEveITSScaledModuleEditor.cxx:120
 AliEveITSScaledModuleEditor.cxx:121
 AliEveITSScaledModuleEditor.cxx:122
 AliEveITSScaledModuleEditor.cxx:123
 AliEveITSScaledModuleEditor.cxx:124
 AliEveITSScaledModuleEditor.cxx:125
 AliEveITSScaledModuleEditor.cxx:126
 AliEveITSScaledModuleEditor.cxx:127
 AliEveITSScaledModuleEditor.cxx:128
 AliEveITSScaledModuleEditor.cxx:129
 AliEveITSScaledModuleEditor.cxx:130
 AliEveITSScaledModuleEditor.cxx:131
 AliEveITSScaledModuleEditor.cxx:132
 AliEveITSScaledModuleEditor.cxx:133
 AliEveITSScaledModuleEditor.cxx:134
 AliEveITSScaledModuleEditor.cxx:135
 AliEveITSScaledModuleEditor.cxx:136
 AliEveITSScaledModuleEditor.cxx:137
 AliEveITSScaledModuleEditor.cxx:138
 AliEveITSScaledModuleEditor.cxx:139
 AliEveITSScaledModuleEditor.cxx:140
 AliEveITSScaledModuleEditor.cxx:141
 AliEveITSScaledModuleEditor.cxx:142
 AliEveITSScaledModuleEditor.cxx:143
 AliEveITSScaledModuleEditor.cxx:144
 AliEveITSScaledModuleEditor.cxx:145
 AliEveITSScaledModuleEditor.cxx:146
 AliEveITSScaledModuleEditor.cxx:147
 AliEveITSScaledModuleEditor.cxx:148
 AliEveITSScaledModuleEditor.cxx:149
 AliEveITSScaledModuleEditor.cxx:150