// Category: interfaces
//
// Author: D. Adamova
+//
//========================================================
//
//------------TG4ListTreeFrame.cxx--------------------------------//
#include <TGListTree.h>
#include <TGCanvas.h>
+#include <TGTab.h>
#include <G4LogicalVolume.hh>
#include <G4UImanager.hh>
ClassImp(TG4ListTreeFrame)
-TG4ListTreeFrame::TG4ListTreeFrame( TGCompositeFrame* Parent, TGMainFrame* ActionFrame)
+TG4ListTreeFrame::TG4ListTreeFrame( TGTab* Tab, TGMainFrame* ActionFrame)
{
//------>canvas for the ListTree
- fCanvasWindow = new TGCanvas( Parent, 400, 240);
+ TGCompositeFrame* parent= Tab->AddTab("Volumes");
+ fCanvasWindow = new TGCanvas( parent, 400, 240);
ULong_t back= TGFrame::GetWhitePixel();
fCanvasWindow->ChangeBackground(back);
fCanvasWindow->SetContainer(fVolumesListTree);
TGLayoutHints *lCanvasLayout = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
- Parent->AddFrame(fCanvasWindow, lCanvasLayout);
+ parent->AddFrame(fCanvasWindow, lCanvasLayout);
}
delete fCanvasWindow;
delete fVolumesListTree;
-}
-
+}
-TGListTree* TG4ListTreeFrame::GetVolumesListTree() const
+TGListTreeItem* TG4ListTreeFrame::
+AddItem(TObject* obj, TGListTreeItem* parent, const char* name,
+ const TGPicture* open, const TGPicture* closed)
+{
+//----->Add item to the list tree
+ return fVolumesListTree->AddItem(parent, name, obj, open, closed);
+}
+
+Bool_t TG4ListTreeFrame::ProcessSubMessage(Long_t msg, Long_t parm1)
{
-//---> get VolumesListTree for use in the MainFrame
- return fVolumesListTree;
+//---> Processes events generated by the ListTree widget
+
+ switch (GET_SUBMSG(msg)) {
+
+//----->Cases to Handle mouse click
+ //-->case 1
+ case kCT_ITEMCLICK:
+ //---> Button 1: Select volume
+ if (parm1 == kButton1){
+ TGListTreeItem* item = fVolumesListTree->GetSelected();
+ if (item) {
+
+ TG4GuiVolume* volume=((TG4GuiVolume*) item->GetUserData());
+ G4LogicalVolume* lvolume = volume->GetLogicalVolume();
+
+ if ( lvolume ) {
+ G4cout << "The selected logical volume name is "
+ << lvolume->GetName() << G4endl;
+ };
+ };
+ };
+
+ //---> Button 3: Draw Volume
+ if (parm1 == kButton3){
+ TGListTreeItem* item = fVolumesListTree->GetSelected();
+ if (item){
+ DrawSelectedVolume(item);};
+ };
+
+ break;
+
+ //-->case 2
+ case kCT_ITEMDBLCLICK:
+ if (parm1 == kButton1) {
+ if (fVolumesListTree->GetSelected() != 0) {
+ gClient->NeedRedraw(fVolumesListTree);
+ };
+ };
+ break;
+ //-->default for GET_SUBMSG
+ default:
+ break;
+ }
+
+ return kTRUE;
}
void TG4ListTreeFrame::DrawSelectedVolume(TGListTreeItem* item)
lCommand += " -1";
G4cout << "!!!!ADD VOLUME COMMAND IS!!!! " << lCommand << G4endl;
G4UImanager::GetUIpointer()->ApplyCommand( lCommand );
- G4UImanager::GetUIpointer()->ApplyCommand(
- "/control/execute vis_cont.mac");
+ G4UImanager::GetUIpointer()->ApplyCommand("/vis/sceneHandler/attach");
+ G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/refresh");
ii++;
};
-
+ G4UImanager::GetUIpointer()->ApplyCommand("/vis/viewer/update");
}
-
-
-
+
+//________________________________________________________________________________
+void TG4ListTreeFrame::SendCloseMessage()
+{
+//---> Supposed to brighten up the "Volumes" panel
+//---> plus close the Volumes tree to the ALICE icon
+
+ TGListTreeItem* first = fVolumesListTree->GetFirstItem();
+ Int_t btn = kButton1;
+ fVolumesListTree->Clicked( first, btn);
+ fVolumesListTree->DoubleClicked( first, btn);
+ gClient->NeedRedraw(fVolumesListTree);
+
+}
+
+//__________________________________________________________________________________
+