00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 
00028 
00029 
00030 
00031 
00032 
00033 
00034 
00035 
00036 
00037 #ifdef G4VIS_BUILD_OIX_DRIVER
00038 
00039 
00040 #include "G4OpenInventorXtExtended.hh"
00041 
00042 #include <Inventor/Xt/SoXt.h>
00043 
00044 #include "G4Xt.hh"
00045 #include "G4OpenInventorSceneHandler.hh"
00046 #include "G4OpenInventorXtExtendedViewer.hh"
00047 
00048 G4OpenInventorXtExtended::G4OpenInventorXtExtended ()
00049 :G4OpenInventor("OpenInventorXtExtended","OIXE",G4VGraphicsSystem::threeD)
00050 ,fInited(false)
00051 {
00052 }
00053 
00054 void G4OpenInventorXtExtended::Initialize()
00055 {
00056   if(fInited) return; 
00057 
00058   SetInteractorManager (G4Xt::getInstance ());
00059   GetInteractorManager () -> 
00060     RemoveDispatcher((G4DispatchFunction)XtDispatchEvent);  
00061   GetInteractorManager () -> 
00062     AddDispatcher   ((G4DispatchFunction)SoXt::dispatchEvent);
00063 
00064   Widget top = (Widget)GetInteractorManager()->GetMainInteractor();
00065 
00066   if(getenv("XENVIRONMENT")==NULL) {
00067     XrmDatabase database = XrmGetDatabase(XtDisplay(top));
00068     if(database!=NULL) {
00069       XrmPutLineResource(&database,"*topShadowColor:white");
00070       XrmPutLineResource(&database,"*bottomShadowColor:black");
00071       XrmPutLineResource(&database,"*foreground:black");
00072       XrmPutLineResource(&database,"*background:lightgrey");
00073       XrmPutLineResource(&database,"*borderColor:lightgrey");
00074       XrmPutLineResource(&database,"*fontList:-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1");
00075       XrmPutLineResource(&database,"*help_popup.title:Help");
00076       XrmPutLineResource(&database,"*helpCancel.labelString:Cancel");
00077       XrmPutLineResource(&database,"*helpText.editMode:multi_line_edit");
00078       XrmPutLineResource(&database,"*helpText.columns:60");
00079       XrmPutLineResource(&database,"*helpText.rows:20");
00080       XrmPutLineResource(&database,"*helpText.background:white");
00081       XrmPutLineResource(&database,"*helpText.fontList:*courier*-r-*--14-*");
00082       XrmPutLineResource(&database,"*helpText.maxLength:8000");
00083     }
00084   }
00085 
00086   if(!SoXt::getTopLevelWidget()) SoXt::init(top);
00087 
00088   InitNodes();
00089 
00090   fInited = true;
00091 }
00092 
00093 G4OpenInventorXtExtended::~G4OpenInventorXtExtended () {}
00094 G4VViewer* G4OpenInventorXtExtended::CreateViewer (G4VSceneHandler& scene, const G4String& name) 
00095 {
00096   Initialize();
00097   G4OpenInventorSceneHandler* pScene = (G4OpenInventorSceneHandler*)&scene;
00098   return new G4OpenInventorXtExtendedViewer (*pScene, name);
00099 }
00100 
00101 
00102 #endif