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 "AliEveHLTEventManagerEditor.h"
#include "AliEveHLTEventManager.h"

#include <TVirtualPad.h>
#include <TColor.h>
#include <TROOT.h>

#include <TGLabel.h>
#include <TGButton.h>
#include <TGNumberEntry.h>
#include <TGColorSelect.h>
#include <TGDoubleSlider.h>
#include <TGComboBox.h>

//______________________________________________________________________________
// AliEveHLTEventManagerEditor
//

ClassImp(AliEveHLTEventManagerEditor)

AliEveHLTEventManagerEditor::AliEveHLTEventManagerEditor(const TGWindow *p, Int_t width, Int_t height,
	     UInt_t options, Pixel_t back) :
  
TGedFrame(p, width, height, options | kVerticalFrame, back),
  fM(0),
  fButtonConnect(NULL),
  fButtonWriteToFile(0),
  fButtonNextEvent(0),
  fButtonNavigateBack(0),
  fButtonNavigateFwd(0),
  fButtonPrintScreens(NULL),
  fButtonEventLoopText(0),
  fButtonUpdateEvents(NULL),
  fButtonEventLoop(0),
  fEventLoopStarted(kFALSE),
  fBufferLoopStarted(kTRUE)
{

  MakeTitle("AliEveHLTEventManager");

  fButtonUpdateEvents = new TGTextButton(this, "  Stop buffer loop  ");
  fButtonUpdateEvents->SetWidth(30);
  AddFrame(fButtonUpdateEvents); //, new TGLayoutHints(...));
  fButtonUpdateEvents->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "PollEvents()");

  fButtonNextEvent = new TGTextButton(this, "   NextEvent  ");
  AddFrame(fButtonNextEvent); //, new TGLayoutHints(...));
  fButtonNextEvent->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "NextEvent()");

  fButtonNavigateBack = new TGTextButton(this, "  Navigate Back  ");
  AddFrame(fButtonNavigateBack); //, new TGLayoutHints(...));
  fButtonNavigateBack->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "NavigateBack()");

  fButtonNavigateFwd = new TGTextButton(this, "  Navigate Fwd  ");
  AddFrame(fButtonNavigateFwd); //, new TGLayoutHints(...));
  fButtonNavigateFwd->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "NavigateFwd()");


  fButtonPrintScreens = new TGTextButton(this, "  Save Viewers  ");
  AddFrame(fButtonPrintScreens); //, new TGLayoutHints(...));
  fButtonPrintScreens->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "PrintScreens()");
  
  fButtonWriteToFile = new TGTextButton(this, "  Save to file  ");
  AddFrame(fButtonWriteToFile); //, new TGLayoutHints(...));
  fButtonWriteToFile->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "WriteBlockListToFile()");

  fButtonConnect = new TGTextButton(this, "    Reconnect   ");
  AddFrame(fButtonConnect); //, new TGLayoutHints(...));
  fButtonConnect->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "ConnectToHLT()");

 
 


  // fBoxTriggerSelector = new TGComboBox(this, "Select Trigger");
  // fBoxTriggerSelector->AddEntry("HLT Global Trigger", 0);
  // fBoxTriggerSelector->AddEntry("Barrel multiplicity trigger", 1);
  // fBoxTriggerSelector->AddEntry("PHOS Geometry trigger", 2);
  // fBoxTriggerSelector->AddEntry("No trigger selection", 3);
  // fBoxTriggerSelector->Connect("Selected(Int_t)","AliEveHLTEventManagerEditor", this, "SetTriggerString(int)");
  // fBoxTriggerSelector->SetWidth(150);
  // fBoxTriggerSelector->SetHeight(25);
  // AddFrame(fBoxTriggerSelector);

  fButtonEventLoopText = new TGTextButton(this, "  Loop Events  ");
  AddFrame(fButtonEventLoopText); //, new TGLayoutHints(...));
  fButtonEventLoopText->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "EventLoop()");

  fButtonEventLoop = new TGPictureButton(this, gClient->GetPicture("$ALICE_ROOT/EVE/hlt-macros/HLT-logo.png"));
  AddFrame(fButtonEventLoop); //, new TGLayoutHints(...));
  fButtonEventLoop->Connect("Clicked()", "AliEveHLTEventManagerEditor", this, "EventLoop()");
}

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

void AliEveHLTEventManagerEditor::SetModel(TObject* obj) {
  fM = dynamic_cast<AliEveHLTEventManager*>(obj);
}

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

void AliEveHLTEventManagerEditor::ConnectToHLT() {
   // Connects to HOMER sources -> to HLT.
  fM->ConnectEventBuffer();
}

void AliEveHLTEventManagerEditor::NextEvent() {
  // call next event from AliEveHOMERManger
  fM->NextEvent();
}

void AliEveHLTEventManagerEditor::WriteBlockListToFile() {
  fM->SaveEveryThing();
}


void AliEveHLTEventManagerEditor::PrintScreens() {
  //Print screens
  fM->PrintScreens();
}

void AliEveHLTEventManagerEditor::NavigateFwd() {
  // navigate forward
  if ( !fEventLoopStarted ) {
    fM->NavigateFwd();
  }
}

void AliEveHLTEventManagerEditor::NavigateBack() {
  // navigate back
  if ( !fEventLoopStarted ) {
    fM->NavigateBack();
  }
}

void AliEveHLTEventManagerEditor::PollEvents() {
  if(fBufferLoopStarted) {
    fButtonUpdateEvents->SetText(  "  Start buffer loop  ");
    fBufferLoopStarted = kFALSE;
  } else {
    fButtonUpdateEvents->SetText("-  Stop buffer loop - ");
    fBufferLoopStarted = kTRUE;
  }
  
  fM->StartBufferMonitor();
}


void AliEveHLTEventManagerEditor::EventLoop() {
  // Start/stop event loop
  if ( !fEventLoopStarted ) {
    fEventLoopStarted = kTRUE;
    fButtonEventLoopText->SetText(" Stop event Loop ");
    fM->StartLoop();
  } else {
    fM->StopLoop();
    fEventLoopStarted = kFALSE;
    fButtonEventLoopText->SetText(" Loop Events ");
  }
}

void AliEveHLTEventManagerEditor::SetTriggerString(int id) {

  if (id < 0 || id > 4) {
    return;
  }
  
  // TString tsa[4] = {"HLTGlobalTrigger", 
  // 		    "BarrelMultiplicityTrigger", 
  // 		    "PHOSgeomTrigger",
  // 		    "ALL"};
   
 
  // fM->SetTriggerString(tsa[id]);
    
}

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