Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 // 28 /*-----------------------------HEPVis----------------------------------------*/ 29 /* */ 30 /* Node: SoDetectorTreeKit */ 31 /* Description: Easy way of browsing through a tree of detectors */ 32 /* Author: Joe Boudreau Nov 11 1996 */ 33 /* */ 34 /*---------------------------------------------------------------------------*/ 35 #ifndef HEPVis_SoDetectorTreeKit_h 36 #define HEPVis_SoDetectorTreeKit_h 37 38 // Inheritance : 39 #include <Inventor/nodekits/SoBaseKit.h> 40 41 class SoEventCallback; 42 class SoSeparator; 43 44 #define SoDetectorTreeKit Geant4_SoDetectorTreeKit 45 46 47 class SoDetectorTreeKit:public SoBaseKit { 48 49 // The following is required: 50 SO_KIT_HEADER(SoDetectorTreeKit); 51 //////////////////////////////////////////// 52 public: 53 SoSFNode alternateRep; //public in order to query if alternateRep done. 54 private: 55 //////////////////////////////////////////// 56 SO_KIT_CATALOG_ENTRY_HEADER(callbackList); 57 SO_KIT_CATALOG_ENTRY_HEADER(topSeparator); 58 SO_KIT_CATALOG_ENTRY_HEADER(pickStyle); 59 SO_KIT_CATALOG_ENTRY_HEADER(appearance); 60 SO_KIT_CATALOG_ENTRY_HEADER(units); 61 SO_KIT_CATALOG_ENTRY_HEADER(transform); 62 SO_KIT_CATALOG_ENTRY_HEADER(texture2Transform); 63 SO_KIT_CATALOG_ENTRY_HEADER(childList); 64 SO_KIT_CATALOG_ENTRY_HEADER(previewSeparator); 65 SO_KIT_CATALOG_ENTRY_HEADER(fullSeparator); 66 67 68 public: 69 70 // Constructor, required 71 SoDetectorTreeKit(); 72 73 // This is required 74 virtual SbBool affectsState() const; 75 76 // Class Initializer, required 77 static void initClass(); 78 79 // Turn the preview on or off 80 virtual void setPreview(SbBool Flag); 81 82 // Return the preview state 83 virtual SbBool getPreview() const; 84 85 // Set SoSwitch::whichChild = SO_SWITCH_ALL 86 void setPreviewAndFull(); 87 88 // Return the preview Separator 89 virtual SoSeparator *getPreviewSeparator() const; 90 91 // Return the full Separator 92 virtual SoSeparator *getFullSeparator() const; 93 94 // Generate AlternateRep, required. Generating an alternate representation 95 // must be done upon users request. It allows an Inventor program to read 96 // back the file without requiring *this* code to be dynamically linked. 97 // If the users expects that *this* code will be dynamically linked, he 98 // need not invoke this method. 99 virtual void generateAlternateRep(); 100 101 // We better be able to clear it, too! 102 virtual void clearAlternateRep(); 103 104 protected: 105 106 // Destructor. 107 virtual ~SoDetectorTreeKit(); 108 109 virtual void doAction(SoAction*); 110 private: 111 112 // This is needed as well 113 void createInitialTree(); 114 115 // This is the callback function that will be 116 // added to the callback list 117 static void expand (void *userData, SoEventCallback *eventCB); 118 static void contract (void *userData, SoEventCallback *eventCB); 119 }; 120 121 #endif 122