]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TGeant4/TG4ListTreeFrame.cxx
Made all AliL3FileHandler specific functions virtual in AliL3MemHandler.
[u/mrichter/AliRoot.git] / TGeant4 / TG4ListTreeFrame.cxx
index 3da082dc04b40cbd43eb63a542fd84b1a393bae0..47f6eec5043affc4e7efe8e857c4a5bf1f70663b 100644 (file)
@@ -2,6 +2,7 @@
 // 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);
  
@@ -35,7 +38,7 @@ TG4ListTreeFrame::TG4ListTreeFrame( TGCompositeFrame* Parent, TGMainFrame* Actio
    fCanvasWindow->SetContainer(fVolumesListTree);
 
    TGLayoutHints *lCanvasLayout = new TGLayoutHints(kLHintsExpandX | kLHintsExpandY);
-   Parent->AddFrame(fCanvasWindow, lCanvasLayout);
+   parent->AddFrame(fCanvasWindow, lCanvasLayout);
    
 }
 
@@ -65,13 +68,63 @@ TG4ListTreeFrame::~TG4ListTreeFrame()
    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)
@@ -124,12 +177,26 @@ 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);
+
+}
+
+//__________________________________________________________________________________
+