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 //Text field class. Inherits from G4OpenGLXmVWidgetComponent 29 30 #include "G4OpenGLXmViewer.hh" 31 #include "G4OpenGLXmVWidgetComponent.hh" 32 #include "G4OpenGLXmVWidgetContainer.hh" 33 #include "G4OpenGLXmTextField.hh" 34 35 #include <X11/Intrinsic.h> 36 #include <Xm/Label.h> 37 #include <Xm/TextF.h> 38 39 #include "globals.hh" 40 41 G4OpenGLXmTextField::G4OpenGLXmTextField (const char* n, 42 G4double* val) 43 : text_label(0) 44 , text_field(0) 45 , parent(0) 46 { 47 name = n; 48 initial = new char[50]; 49 snprintf (initial, 50, "%6.2f", *val); 50 value = (void*)val; 51 text=false; 52 } 53 54 G4OpenGLXmTextField::G4OpenGLXmTextField (const char* n, 55 const char* val) 56 : text_label(0) 57 , text_field(0) 58 , parent(0) 59 { 60 name = n; 61 initial = new char[50]; 62 snprintf (initial, 50, "%s", val); 63 value = (void*)val; 64 text=true; 65 // strcpy (initial, val); 66 } 67 68 G4OpenGLXmTextField::~G4OpenGLXmTextField () 69 { 70 delete[] initial; 71 } 72 73 void G4OpenGLXmTextField::SetName (const char* n) 74 { 75 name = n; 76 XmString text_string = XmStringCreateLocalized ((char*)name); 77 XtVaSetValues (text_label, 78 XmNlabelString, text_string, 79 NULL); 80 XmStringFree (text_string); 81 } 82 83 const char* G4OpenGLXmTextField::GetName () 84 { 85 return name; 86 } 87 88 void G4OpenGLXmTextField::SetValue (G4double val) 89 { 90 snprintf (initial, 50, "%6.2f", val); 91 92 XtVaSetValues (text_field, 93 XmNvalue, (String)initial, 94 NULL); 95 96 } 97 98 void G4OpenGLXmTextField::SetValue (const char* val) 99 { 100 snprintf (initial, 50, "%s", val); 101 // strcpy (initial, val); 102 103 XtVaSetValues (text_field, 104 XmNvalue, (String)initial, 105 NULL); 106 107 } 108 109 const char* G4OpenGLXmTextField::GetValue () 110 { 111 return initial; 112 } 113 114 void G4OpenGLXmTextField::AddYourselfTo (G4OpenGLXmVWidgetContainer* container) 115 { 116 117 pView = container->GetView (); 118 ProcesspView (); 119 parent = container->GetPointerToWidget (); 120 121 char local_w_text[50]; 122 strcpy (local_w_text, name); 123 124 char label_name[50]; 125 strcpy (label_name, name); 126 strcat (label_name, "_label"); 127 128 char text_field_name[50]; 129 strcpy (text_field_name, name); 130 strcat (text_field_name, "_text_field"); 131 132 XmString local_text = XmStringCreateLocalized (local_w_text); 133 text_label = XtVaCreateManagedWidget (label_name, 134 xmLabelWidgetClass, 135 *parent, 136 137 XmNlabelString, local_text, 138 139 XtNvisual, visual, 140 XtNdepth, depth, 141 XtNcolormap, cmap, 142 XtNborderColor, borcol, 143 XtNbackground, bgnd, 144 145 NULL); 146 XmStringFree (local_text); 147 148 text_field = XtVaCreateManagedWidget (text_field_name, 149 xmTextFieldWidgetClass, 150 *parent, 151 152 XmNvalue, (String)initial, 153 154 XtNvisual, visual, 155 XtNdepth, depth, 156 XtNcolormap, cmap, 157 XtNborderColor, borcol, 158 XtNbackground, bgnd, 159 160 NULL); 161 162 if (!text) { 163 XtAddCallback (text_field, 164 XmNvalueChangedCallback, 165 G4OpenGLXmViewer::get_double_value_callback, 166 value); 167 } else { 168 XtAddCallback (text_field, 169 XmNvalueChangedCallback, 170 G4OpenGLXmViewer::get_text_callback, 171 value); 172 } 173 } 174 175 Widget* G4OpenGLXmTextField::GetPointerToParent () 176 { 177 return parent; 178 } 179 180 Widget* G4OpenGLXmTextField::GetPointerToWidget () 181 { 182 return &text_field; 183 } 184