#include "AliEveMacroExecutorWindow.h"
#include "AliEveMacroExecutor.h"
#include "AliEveMacro.h"
#include "AliEveEventManager.h"
#include <TGedEditor.h>
#include <TGLabel.h>
#include <TGListBox.h>
#include <TGTextEntry.h>
#include <Buttons.h>
#include <TPRegexp.h>
class AliEveMEWListBox : public TGListBox
{
public:
AliEveMEWListBox(const TGWindow* p = 0, Int_t id = -1) : TGListBox(p, id)
{
if (gfGC == 0)
{
const TGGC& old = TGTextLBEntry::GetDefaultGC();
gfFont = gClient->GetFontPool()->GetFont("-*-lucidatypewriter-*-*-*-*-12-*-*-*-*-*-iso8859-1");
gfGC = gClient->GetGCPool()->GetGC((GCValues_t*) old.GetAttributes(), kTRUE);
gfGC->SetFont(gVirtualX->GetFontHandle(gfFont->GetFontStruct()));
}
}
using TGListBox::AddEntry;
virtual void AddEntry(const char* s, Int_t id)
{
static const Pixel_t gkBackground[] = { 0x00ffffff, 0xf5f7f8 };
TGTextLBEntry *lbe = new TGTextLBEntry(fLbc, new TGString(s), id,
gfGC->GetGC(), gfFont->GetFontStruct());
fItemVsize = TMath::Max(fItemVsize, lbe->GetDefaultHeight());
fLbc->AddEntry(lbe, new TGLayoutHints(kLHintsExpandX | kLHintsTop));
lbe->SetBackgroundColor(gkBackground[id%2]);
}
protected:
static TGGC *gfGC;
static TGFont *gfFont;
private:
AliEveMEWListBox(const AliEveMEWListBox&);
AliEveMEWListBox& operator=(const AliEveMEWListBox&);
};
TGGC *AliEveMEWListBox::gfGC = 0;
TGFont *AliEveMEWListBox::gfFont = 0;
class AliEveMEWEditor : public TGedEditor
{
public:
AliEveMEWEditor(AliEveMacroExecutorWindow* w) : TGedEditor(0), fMEW(w) {}
virtual ~AliEveMEWEditor() {}
virtual void Update(TGedFrame* gframe=0)
{
TGedEditor::Update(gframe);
fMEW->PopulateMacros();
}
virtual void Refresh()
{
SetModel(fPad, fModel, kButton1Down);
}
protected:
AliEveMacroExecutorWindow* fMEW;
private:
AliEveMEWEditor(const AliEveMEWEditor&);
AliEveMEWEditor& operator=(const AliEveMEWEditor&);
};
ClassImp(AliEveMacroExecutorWindow)
AliEveMacroExecutorWindow::AliEveMacroExecutorWindow(AliEveMacroExecutor* master) :
TGMainFrame(gClient->GetRoot()), fM(master),
fMainFrame(0), fCtrlFrame(0), fListBox(0), fEditor(0),
fSelectTags(0),
fBoxContents()
{
fMainFrame = new TGVerticalFrame(this);
AddFrame(fMainFrame, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
TGButton *b = 0;
{
fCtrlFrame = MkHFrame(fMainFrame);
fCtrlFrame->Resize(400, 22);
b = new TGTextButton(fCtrlFrame, "Reload event");
fCtrlFrame->AddFrame(b);
b->Connect("Clicked()", "AliEveMacroExecutorWindow", this,
"DoReloadEvent()");
MkLabel(fCtrlFrame, "Select: ", 48);
fSelectTags = new TGTextEntry(fCtrlFrame);
fCtrlFrame->AddFrame(fSelectTags, new TGLayoutHints(kLHintsNormal));
fSelectTags->Connect("ReturnPressed()", "AliEveMacroExecutorWindow", this,
"DoSelectTags()");
b = new TGTextButton(fCtrlFrame, "Select");
fCtrlFrame->AddFrame(b);
b->Connect("Clicked()", "AliEveMacroExecutorWindow", this,
"DoSelectTags()");
b = new TGTextButton(fCtrlFrame, "Enable all");
fCtrlFrame->AddFrame(b);
b->Connect("Clicked()", "AliEveMacroExecutorWindow", this,
"DoEnableAll()");
b = new TGTextButton(fCtrlFrame, "Disable all");
fCtrlFrame->AddFrame(b);
b->Connect("Clicked()", "AliEveMacroExecutorWindow", this,
"DoDisableAll()");
}
fListBox = new AliEveMEWListBox(fMainFrame);
fMainFrame->AddFrame(fListBox, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY));
fListBox->Resize(400, 400);
fListBox->Connect("Selected(Int_t)", "AliEveMacroExecutorWindow", this,
"DoMacroSelected(Int_t)");
fMainFrame->SetEditDisabled(kEditEnable);
fMainFrame->SetEditable();
fEditor = new AliEveMEWEditor(this);
fEditor->SetGlobal(kFALSE);
fMainFrame->SetEditable(kEditDisable);
fMainFrame->SetEditable(kFALSE);
{
TGFrameElement *el = 0;
TIter next(fMainFrame->GetList());
while ((el = (TGFrameElement *) next())) {
if (el->fFrame == fEditor)
if (el->fLayout) {
el->fLayout->SetLayoutHints(kLHintsExpandX);
el->fLayout->SetPadLeft(1); el->fLayout->SetPadRight(1);
el->fLayout->SetPadTop(2); el->fLayout->SetPadBottom(2);
break;
}
}
}
fEditor->Resize(400, 150);
fEditor->ChangeOptions(fEditor->GetOptions() | kFixedHeight);
Resize(400, 700);
Layout();
MapSubwindows();
MapWindow();
AliEveEventManager::GetMaster()->Connect("NewEventLoaded()", "AliEveMacroExecutorWindow", this,
"NewEventLoaded()");
}
AliEveMacroExecutorWindow::~AliEveMacroExecutorWindow()
{
fBoxContents.clear();
AliEveEventManager::GetMaster()->Disconnect("NewEventLoaded");
void AliEveMacroExecutorWindow::PopulateMacros(Bool_t keep_selected)
{
AliEveMacro* ex_sel = 0;
if (keep_selected && fListBox->GetSelected() != -1)
ex_sel = fBoxContents[fListBox->GetSelected()];
Int_t sbar_pos = fListBox->GetVScrollbar()->GetPosition();
fListBox->RemoveAll();
fBoxContents.clear();
TPMERegexp *regexp = 0;
TString select = fSelectTags->GetText();
if ( ! select.IsNull())
{
regexp = new TPMERegexp(select, "io");
}
TIter next(fM->fMacros);
AliEveMacro *mac;
Int_t id = 0;
Int_t sel_id = -1;
while ((mac = (AliEveMacro*) next()))
{
if (regexp && regexp->Match(mac->GetTags()) == 0)
continue;
if (mac == ex_sel)
sel_id = id;
fListBox->AddEntry(mac->FormForDisplay(), id++);
fBoxContents.push_back(mac);
}
if (sel_id != -1)
fListBox->Select(sel_id);
fListBox->Layout();
fListBox->GetVScrollbar()->SetPosition(sbar_pos);
fListBox->MapSubwindows();
}
void AliEveMacroExecutorWindow::SetActiveStateOfShownMacros(Bool_t active)
{
for (std::vector<AliEveMacro*>::iterator m = fBoxContents.begin(); m != fBoxContents.end(); ++m)
(*m)->SetActive(active);
PopulateMacros();
fEditor->Refresh();
}
void AliEveMacroExecutorWindow::NewEventLoaded()
{
}
void AliEveMacroExecutorWindow::DoReloadEvent()
{
AliEveEventManager::GetMaster()->GotoEvent(AliEveEventManager::GetMaster()->GetEventId());
}
void AliEveMacroExecutorWindow::DoSelectTags()
{
PopulateMacros();
}
void AliEveMacroExecutorWindow::DoMacroSelected(Int_t mid)
{
fEditor->SetModel(0, fBoxContents[mid], kButton1Down);
}
TGHorizontalFrame* AliEveMacroExecutorWindow::MkHFrame(TGCompositeFrame* p)
{
if (p == 0)
p = this;
TGHorizontalFrame* f = new TGHorizontalFrame(p);
p->AddFrame(f, new TGLayoutHints(kLHintsNormal|kLHintsExpandX));
return f;
}
TGLabel* AliEveMacroExecutorWindow::MkLabel(TGCompositeFrame* p, const char* txt, Int_t width,
Int_t lo, Int_t ro, Int_t to, Int_t bo)
{
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;
}
AliEveMacroExecutorWindow.cxx:1 AliEveMacroExecutorWindow.cxx:2 AliEveMacroExecutorWindow.cxx:3 AliEveMacroExecutorWindow.cxx:4 AliEveMacroExecutorWindow.cxx:5 AliEveMacroExecutorWindow.cxx:6 AliEveMacroExecutorWindow.cxx:7 AliEveMacroExecutorWindow.cxx:8 AliEveMacroExecutorWindow.cxx:9 AliEveMacroExecutorWindow.cxx:10 AliEveMacroExecutorWindow.cxx:11 AliEveMacroExecutorWindow.cxx:12 AliEveMacroExecutorWindow.cxx:13 AliEveMacroExecutorWindow.cxx:14 AliEveMacroExecutorWindow.cxx:15 AliEveMacroExecutorWindow.cxx:16 AliEveMacroExecutorWindow.cxx:17 AliEveMacroExecutorWindow.cxx:18 AliEveMacroExecutorWindow.cxx:19 AliEveMacroExecutorWindow.cxx:20 AliEveMacroExecutorWindow.cxx:21 AliEveMacroExecutorWindow.cxx:22 AliEveMacroExecutorWindow.cxx:23 AliEveMacroExecutorWindow.cxx:24 AliEveMacroExecutorWindow.cxx:25 AliEveMacroExecutorWindow.cxx:26 AliEveMacroExecutorWindow.cxx:27 AliEveMacroExecutorWindow.cxx:28 AliEveMacroExecutorWindow.cxx:29 AliEveMacroExecutorWindow.cxx:30 AliEveMacroExecutorWindow.cxx:31 AliEveMacroExecutorWindow.cxx:32 AliEveMacroExecutorWindow.cxx:33 AliEveMacroExecutorWindow.cxx:34 AliEveMacroExecutorWindow.cxx:35 AliEveMacroExecutorWindow.cxx:36 AliEveMacroExecutorWindow.cxx:37 AliEveMacroExecutorWindow.cxx:38 AliEveMacroExecutorWindow.cxx:39 AliEveMacroExecutorWindow.cxx:40 AliEveMacroExecutorWindow.cxx:41 AliEveMacroExecutorWindow.cxx:42 AliEveMacroExecutorWindow.cxx:43 AliEveMacroExecutorWindow.cxx:44 AliEveMacroExecutorWindow.cxx:45 AliEveMacroExecutorWindow.cxx:46 AliEveMacroExecutorWindow.cxx:47 AliEveMacroExecutorWindow.cxx:48 AliEveMacroExecutorWindow.cxx:49 AliEveMacroExecutorWindow.cxx:50 AliEveMacroExecutorWindow.cxx:51 AliEveMacroExecutorWindow.cxx:52 AliEveMacroExecutorWindow.cxx:53 AliEveMacroExecutorWindow.cxx:54 AliEveMacroExecutorWindow.cxx:55 AliEveMacroExecutorWindow.cxx:56 AliEveMacroExecutorWindow.cxx:57 AliEveMacroExecutorWindow.cxx:58 AliEveMacroExecutorWindow.cxx:59 AliEveMacroExecutorWindow.cxx:60 AliEveMacroExecutorWindow.cxx:61 AliEveMacroExecutorWindow.cxx:62 AliEveMacroExecutorWindow.cxx:63 AliEveMacroExecutorWindow.cxx:64 AliEveMacroExecutorWindow.cxx:65 AliEveMacroExecutorWindow.cxx:66 AliEveMacroExecutorWindow.cxx:67 AliEveMacroExecutorWindow.cxx:68 AliEveMacroExecutorWindow.cxx:69 AliEveMacroExecutorWindow.cxx:70 AliEveMacroExecutorWindow.cxx:71 AliEveMacroExecutorWindow.cxx:72 AliEveMacroExecutorWindow.cxx:73 AliEveMacroExecutorWindow.cxx:74 AliEveMacroExecutorWindow.cxx:75 AliEveMacroExecutorWindow.cxx:76 AliEveMacroExecutorWindow.cxx:77 AliEveMacroExecutorWindow.cxx:78 AliEveMacroExecutorWindow.cxx:79 AliEveMacroExecutorWindow.cxx:80 AliEveMacroExecutorWindow.cxx:81 AliEveMacroExecutorWindow.cxx:82 AliEveMacroExecutorWindow.cxx:83 AliEveMacroExecutorWindow.cxx:84 AliEveMacroExecutorWindow.cxx:85 AliEveMacroExecutorWindow.cxx:86 AliEveMacroExecutorWindow.cxx:87 AliEveMacroExecutorWindow.cxx:88 AliEveMacroExecutorWindow.cxx:89 AliEveMacroExecutorWindow.cxx:90 AliEveMacroExecutorWindow.cxx:91 AliEveMacroExecutorWindow.cxx:92 AliEveMacroExecutorWindow.cxx:93 AliEveMacroExecutorWindow.cxx:94 AliEveMacroExecutorWindow.cxx:95 AliEveMacroExecutorWindow.cxx:96 AliEveMacroExecutorWindow.cxx:97 AliEveMacroExecutorWindow.cxx:98 AliEveMacroExecutorWindow.cxx:99 AliEveMacroExecutorWindow.cxx:100 AliEveMacroExecutorWindow.cxx:101 AliEveMacroExecutorWindow.cxx:102 AliEveMacroExecutorWindow.cxx:103 AliEveMacroExecutorWindow.cxx:104 AliEveMacroExecutorWindow.cxx:105 AliEveMacroExecutorWindow.cxx:106 AliEveMacroExecutorWindow.cxx:107 AliEveMacroExecutorWindow.cxx:108 AliEveMacroExecutorWindow.cxx:109 AliEveMacroExecutorWindow.cxx:110 AliEveMacroExecutorWindow.cxx:111 AliEveMacroExecutorWindow.cxx:112 AliEveMacroExecutorWindow.cxx:113 AliEveMacroExecutorWindow.cxx:114 AliEveMacroExecutorWindow.cxx:115 AliEveMacroExecutorWindow.cxx:116 AliEveMacroExecutorWindow.cxx:117 AliEveMacroExecutorWindow.cxx:118 AliEveMacroExecutorWindow.cxx:119 AliEveMacroExecutorWindow.cxx:120 AliEveMacroExecutorWindow.cxx:121 AliEveMacroExecutorWindow.cxx:122 AliEveMacroExecutorWindow.cxx:123 AliEveMacroExecutorWindow.cxx:124 AliEveMacroExecutorWindow.cxx:125 AliEveMacroExecutorWindow.cxx:126 AliEveMacroExecutorWindow.cxx:127 AliEveMacroExecutorWindow.cxx:128 AliEveMacroExecutorWindow.cxx:129 AliEveMacroExecutorWindow.cxx:130 AliEveMacroExecutorWindow.cxx:131 AliEveMacroExecutorWindow.cxx:132 AliEveMacroExecutorWindow.cxx:133 AliEveMacroExecutorWindow.cxx:134 AliEveMacroExecutorWindow.cxx:135 AliEveMacroExecutorWindow.cxx:136 AliEveMacroExecutorWindow.cxx:137 AliEveMacroExecutorWindow.cxx:138 AliEveMacroExecutorWindow.cxx:139 AliEveMacroExecutorWindow.cxx:140 AliEveMacroExecutorWindow.cxx:141 AliEveMacroExecutorWindow.cxx:142 AliEveMacroExecutorWindow.cxx:143 AliEveMacroExecutorWindow.cxx:144 AliEveMacroExecutorWindow.cxx:145 AliEveMacroExecutorWindow.cxx:146 AliEveMacroExecutorWindow.cxx:147 AliEveMacroExecutorWindow.cxx:148 AliEveMacroExecutorWindow.cxx:149 AliEveMacroExecutorWindow.cxx:150 AliEveMacroExecutorWindow.cxx:151 AliEveMacroExecutorWindow.cxx:152 AliEveMacroExecutorWindow.cxx:153 AliEveMacroExecutorWindow.cxx:154 AliEveMacroExecutorWindow.cxx:155 AliEveMacroExecutorWindow.cxx:156 AliEveMacroExecutorWindow.cxx:157 AliEveMacroExecutorWindow.cxx:158 AliEveMacroExecutorWindow.cxx:159 AliEveMacroExecutorWindow.cxx:160 AliEveMacroExecutorWindow.cxx:161 AliEveMacroExecutorWindow.cxx:162 AliEveMacroExecutorWindow.cxx:163 AliEveMacroExecutorWindow.cxx:164 AliEveMacroExecutorWindow.cxx:165 AliEveMacroExecutorWindow.cxx:166 AliEveMacroExecutorWindow.cxx:167 AliEveMacroExecutorWindow.cxx:168 AliEveMacroExecutorWindow.cxx:169 AliEveMacroExecutorWindow.cxx:170 AliEveMacroExecutorWindow.cxx:171 AliEveMacroExecutorWindow.cxx:172 AliEveMacroExecutorWindow.cxx:173 AliEveMacroExecutorWindow.cxx:174 AliEveMacroExecutorWindow.cxx:175 AliEveMacroExecutorWindow.cxx:176 AliEveMacroExecutorWindow.cxx:177 AliEveMacroExecutorWindow.cxx:178 AliEveMacroExecutorWindow.cxx:179 AliEveMacroExecutorWindow.cxx:180 AliEveMacroExecutorWindow.cxx:181 AliEveMacroExecutorWindow.cxx:182 AliEveMacroExecutorWindow.cxx:183 AliEveMacroExecutorWindow.cxx:184 AliEveMacroExecutorWindow.cxx:185 AliEveMacroExecutorWindow.cxx:186 AliEveMacroExecutorWindow.cxx:187 AliEveMacroExecutorWindow.cxx:188 AliEveMacroExecutorWindow.cxx:189 AliEveMacroExecutorWindow.cxx:190 AliEveMacroExecutorWindow.cxx:191 AliEveMacroExecutorWindow.cxx:192 AliEveMacroExecutorWindow.cxx:193 AliEveMacroExecutorWindow.cxx:194 AliEveMacroExecutorWindow.cxx:195 AliEveMacroExecutorWindow.cxx:196 AliEveMacroExecutorWindow.cxx:197 AliEveMacroExecutorWindow.cxx:198 AliEveMacroExecutorWindow.cxx:199 AliEveMacroExecutorWindow.cxx:200 AliEveMacroExecutorWindow.cxx:201 AliEveMacroExecutorWindow.cxx:202 AliEveMacroExecutorWindow.cxx:203 AliEveMacroExecutorWindow.cxx:204 AliEveMacroExecutorWindow.cxx:205 AliEveMacroExecutorWindow.cxx:206 AliEveMacroExecutorWindow.cxx:207 AliEveMacroExecutorWindow.cxx:208 AliEveMacroExecutorWindow.cxx:209 AliEveMacroExecutorWindow.cxx:210 AliEveMacroExecutorWindow.cxx:211 AliEveMacroExecutorWindow.cxx:212 AliEveMacroExecutorWindow.cxx:213 AliEveMacroExecutorWindow.cxx:214 AliEveMacroExecutorWindow.cxx:215 AliEveMacroExecutorWindow.cxx:216 AliEveMacroExecutorWindow.cxx:217 AliEveMacroExecutorWindow.cxx:218 AliEveMacroExecutorWindow.cxx:219 AliEveMacroExecutorWindow.cxx:220 AliEveMacroExecutorWindow.cxx:221 AliEveMacroExecutorWindow.cxx:222 AliEveMacroExecutorWindow.cxx:223 AliEveMacroExecutorWindow.cxx:224 AliEveMacroExecutorWindow.cxx:225 AliEveMacroExecutorWindow.cxx:226 AliEveMacroExecutorWindow.cxx:227 AliEveMacroExecutorWindow.cxx:228 AliEveMacroExecutorWindow.cxx:229 AliEveMacroExecutorWindow.cxx:230 AliEveMacroExecutorWindow.cxx:231 AliEveMacroExecutorWindow.cxx:232 AliEveMacroExecutorWindow.cxx:233 AliEveMacroExecutorWindow.cxx:234 AliEveMacroExecutorWindow.cxx:235 AliEveMacroExecutorWindow.cxx:236 AliEveMacroExecutorWindow.cxx:237 AliEveMacroExecutorWindow.cxx:238 AliEveMacroExecutorWindow.cxx:239 AliEveMacroExecutorWindow.cxx:240 AliEveMacroExecutorWindow.cxx:241 AliEveMacroExecutorWindow.cxx:242 AliEveMacroExecutorWindow.cxx:243 AliEveMacroExecutorWindow.cxx:244 AliEveMacroExecutorWindow.cxx:245 AliEveMacroExecutorWindow.cxx:246 AliEveMacroExecutorWindow.cxx:247 AliEveMacroExecutorWindow.cxx:248 AliEveMacroExecutorWindow.cxx:249 AliEveMacroExecutorWindow.cxx:250 AliEveMacroExecutorWindow.cxx:251 AliEveMacroExecutorWindow.cxx:252 AliEveMacroExecutorWindow.cxx:253 AliEveMacroExecutorWindow.cxx:254 AliEveMacroExecutorWindow.cxx:255 AliEveMacroExecutorWindow.cxx:256 AliEveMacroExecutorWindow.cxx:257 AliEveMacroExecutorWindow.cxx:258 AliEveMacroExecutorWindow.cxx:259 AliEveMacroExecutorWindow.cxx:260 AliEveMacroExecutorWindow.cxx:261 AliEveMacroExecutorWindow.cxx:262 AliEveMacroExecutorWindow.cxx:263 AliEveMacroExecutorWindow.cxx:264 AliEveMacroExecutorWindow.cxx:265 AliEveMacroExecutorWindow.cxx:266 AliEveMacroExecutorWindow.cxx:267 AliEveMacroExecutorWindow.cxx:268 AliEveMacroExecutorWindow.cxx:269 AliEveMacroExecutorWindow.cxx:270 AliEveMacroExecutorWindow.cxx:271 AliEveMacroExecutorWindow.cxx:272 AliEveMacroExecutorWindow.cxx:273 AliEveMacroExecutorWindow.cxx:274 AliEveMacroExecutorWindow.cxx:275 AliEveMacroExecutorWindow.cxx:276 AliEveMacroExecutorWindow.cxx:277 AliEveMacroExecutorWindow.cxx:278 AliEveMacroExecutorWindow.cxx:279 AliEveMacroExecutorWindow.cxx:280 AliEveMacroExecutorWindow.cxx:281 AliEveMacroExecutorWindow.cxx:282 AliEveMacroExecutorWindow.cxx:283 AliEveMacroExecutorWindow.cxx:284 AliEveMacroExecutorWindow.cxx:285 AliEveMacroExecutorWindow.cxx:286 AliEveMacroExecutorWindow.cxx:287 AliEveMacroExecutorWindow.cxx:288 AliEveMacroExecutorWindow.cxx:289 AliEveMacroExecutorWindow.cxx:290 AliEveMacroExecutorWindow.cxx:291 AliEveMacroExecutorWindow.cxx:292 AliEveMacroExecutorWindow.cxx:293 AliEveMacroExecutorWindow.cxx:294