ROOT logo
// @(#)root/eve:$Id$
// Author: Matevz Tadel 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 "AliEveMacroEditor.h"
#include "AliEveMacro.h"

#include "TVirtualPad.h"

// Cleanup these includes:
#include "TGLabel.h"
#include "TGNumberEntry.h"
#include "TGColorSelect.h"
#include "TGTextEntry.h"

#include "TGComboBox.h"

//______________________________________________________________________________
// GUI editor for AliEveMacro.
//

ClassImp(AliEveMacroEditor)

//______________________________________________________________________________
AliEveMacroEditor::AliEveMacroEditor(const TGWindow *p, Int_t width, Int_t height,
				     UInt_t options, Pixel_t back) :
  TGedFrame(p, width, height, options | kVerticalFrame, back),
  fM(0),
  fSources(0),
  fTags(0),
  fMacro(0),
  fFunc(0),
  fArgs(0),
  fActive(0)
{
  // Constructor.

  MakeTitle("AliEveMacro");

  TGHorizontalFrame *f = 0;
  //TGLabel           *l = 0;
  Int_t labelW = 48;
  {
    f = MkHFrame();
    MkLabel(f, "Active: ", labelW);

    fActive = new TGCheckButton(f);
    f->AddFrame(fActive); // new TGLayoutHints());
    fActive->Connect("Clicked()", "AliEveMacroEditor", this,
		     "DoActive()");

    MkLabel(f, "Source: ", 56);
    fSources = new TGComboBox(f);
    f->AddFrame(fSources); // new TGLayoutHints());
    fSources->AddEntry("None",      AliEveMacro::kNone);
    fSources->AddEntry("RunLoader", AliEveMacro::kRunLoader);
    fSources->AddEntry("ESD",       AliEveMacro::kESD);
    fSources->AddEntry("ESDfriend", AliEveMacro::kESDfriend);
    fSources->AddEntry("RawReader", AliEveMacro::kRawReader);
    {
      TGListBox* lb = fSources->GetListBox();
      lb->Resize(lb->GetWidth(), 5*16);
    }
    fSources->Resize(92, 20);
    fSources->Connect("Selected(Int_t)", "AliEveMacroEditor", this,
		      "DoSources(Int_t)");

    MkLabel(f, "Tags: ", 40);
    fTags = new TGTextEntry(f);
    f->AddFrame(fTags, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
    fTags->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
		    "DoTags()");
  }
  {
    f = MkHFrame();
    MkLabel(f, "Macro: ", labelW);
    fMacro = new TGTextEntry(f);
    f->AddFrame(fMacro, new TGLayoutHints(kLHintsNormal));//|kLHintsExpandX));
    fMacro->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
		    "DoMacro()");

    MkLabel(f, "Func: ", labelW);
    fFunc = new TGTextEntry(f);
    f->AddFrame(fFunc, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
    fFunc->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
		   "DoFunc()");
  }
  {
    f = MkHFrame();
    MkLabel(f, "Args: ", labelW);
    fArgs = new TGTextEntry(f);
    f->AddFrame(fArgs, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
    fArgs->Connect("TextChanged(const char *)", "AliEveMacroEditor", this,
		   "DoArgs()");
  }
}

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

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

  fM = static_cast<AliEveMacro*>(obj);

  fSources->Select  (fM->GetSources(), kFALSE);
  fTags   ->SetText (fM->GetTags(),  kFALSE);
  fMacro  ->SetText (fM->GetMacro(), kFALSE);
  fFunc   ->SetText (fM->GetFunc(),  kFALSE);
  fArgs   ->SetText (fM->GetArgs(),  kFALSE);
  fActive ->SetState(fM->fActive ? kButtonDown : kButtonUp);
}

//______________________________________________________________________________
void AliEveMacroEditor::DoSources(Int_t v)
{
   // Slot for Sources.

   fM->SetSources(v);
   Update();
}

//______________________________________________________________________________
void AliEveMacroEditor::DoTags()
{
   // Slot for Tags.

   fM->SetTags(fTags->GetText());
   Update();
}

//______________________________________________________________________________
void AliEveMacroEditor::DoMacro()
{
   // Slot for Macro.

   fM->SetMacro(fMacro->GetText());
   Update();
}

//______________________________________________________________________________
void AliEveMacroEditor::DoFunc()
{
   // Slot for Func.

   fM->SetFunc(fFunc->GetText());
   Update();
}
//______________________________________________________________________________
void AliEveMacroEditor::DoArgs()
{
   // Slot for Args.

   fM->SetArgs(fArgs->GetText());
   Update();
}

//______________________________________________________________________________
void AliEveMacroEditor::DoActive()
{
   // Slot for Active.

   fM->SetActive(fActive->IsOn());
   Update();
}

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

TGHorizontalFrame* AliEveMacroEditor::MkHFrame(TGCompositeFrame* p)
{
  // Make standard horizontal frame.

  if (p == 0)
    p = this;
  TGHorizontalFrame* f = new TGHorizontalFrame(p);
  p->AddFrame(f, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
  return f;
}

TGLabel* AliEveMacroEditor::MkLabel(TGCompositeFrame* p, const char* txt, Int_t width,
				    Int_t lo, Int_t ro, Int_t to, Int_t bo)
{
  // Make standard label.

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