#ifndef AliEnViz_AEVDemoDriver_H
#define AliEnViz_AEVDemoDriver_H
#include <Glasses/Text.h>
#include <TRandom.h>
class AEVMlClient; class AEVDistAnRep;
class AEVMapViz; class AEVJobRep;
class Eventor; class TimeMaker;
class WGlDirectory; class WGlFrameStyle;
class WGlButton;
class Amphitheatre; class WSTube;
class AEVDemoDriver : public Text
{
MAC_RNR_FRIENDS(AEVDemoDriver);
private:
void _init();
protected:
Double_t rnd(Double_t k=1, Double_t n=0);
ZLink<AEVMlClient> mMonaClient;
ZLink<AEVDistAnRep> mDistAnRep;
ZLink<Amphitheatre> mTheatre;
ZLink<AEVMapViz> mMapViz;
ZLink<ZNode> mGledViz;
ZLink<ZNode> mMonaViz;
ZLink<Eventor> mAnimator;
ZLink<TimeMaker> mAnimTimer;
ZLink<WSTube> mMonaTube;
Float_t mConnectTime;
Float_t mRotTime;
Float_t mTravelTime;
Float_t mWaitTime;
Int_t mFPS;
Int_t mRPS;
ZLink<AList> mTexCont;
ZLink<WGlDirectory> mJobDirectory;
ZLink<WGlFrameStyle> mMenuFrameStyle;
ZLink<Text> mInfoBar;
ZLink<Text> mBlurpBar;
TRandom mRnd;
Bool_t bWorking;
Bool_t bCycling;
bool trylock();
void unlock();
void enable_menu();
void disable_menu();
map<string, WSTube*> mProcessTubes;
public:
void sleep(Float_t s);
void l_sleep(Float_t s);
void set_text(const Text_t* txt);
void set_blurp(const Text_t* txt);
void setup_tube(WSTube* tube, const Text_t* texname="Photon");
void animate_tube(WSTube* tube);
void remove_tube(WSTube* tube);
void rotate(ZNode* node, Float_t time, Int_t ai, Int_t aj);
public:
AEVDemoDriver(const Text_t* n="AEVDemoDriver", const Text_t* t=0) :
Text(n,t) { _init(); }
void InitAnimationStuff(Eventor* e=0, TimeMaker* tm=0);
void ResetDemo();
void RunDemo();
void ConnectMonaLisa();
void DisconnectMonaLisa();
void QueryJobs();
void QueryJobDetails(AEVJobRep* job_rep);
void ReplayJob(WGlButton* button);
void CycleJob(WGlButton* button);
void DoJobReplay();
void PauseJobReplay();
void FinalizeJob();
void ExitReplayMenu(WGlButton* button);
void ConnectToProof();
void ConnectProofSlaves();
void ProcessEvents();
void VisProofProgress(map<string,int>& siteevmap);
void Report();
protected:
Bool_t bFakeProcessing;
public:
#include "AEVDemoDriver.h7"
ClassDef(AEVDemoDriver, 1);
};
#endif