source: trunk/source/interfaces/html/G4UIXm_8cc-source.html@ 811

Last change on this file since 811 was 571, checked in by garnier, 18 years ago

r581@mac-90108: laurentgarnier | 2007-08-17 17:30:26 +0200
deplacement de frame

  • Property svn:mime-type set to text/html
File size: 36.6 KB
Line 
1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3<title>G4UIXm.cc Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5</head><body>
6<!-- Generated by Doxygen 1.3.4 -->
7<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8<h1>G4UIXm.cc</h1><a href="G4UIXm_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">//</span>
900002 <span class="comment">// ********************************************************************</span>
1000003 <span class="comment">// * License and Disclaimer *</span>
1100004 <span class="comment">// * *</span>
1200005 <span class="comment">// * The Geant4 software is copyright of the Copyright Holders of *</span>
1300006 <span class="comment">// * the Geant4 Collaboration. It is provided under the terms and *</span>
1400007 <span class="comment">// * conditions of the Geant4 Software License, included in the file *</span>
1500008 <span class="comment">// * LICENSE and available at http://cern.ch/geant4/license . These *</span>
1600009 <span class="comment">// * include a list of copyright holders. *</span>
1700010 <span class="comment">// * *</span>
1800011 <span class="comment">// * Neither the authors of this software system, nor their employing *</span>
1900012 <span class="comment">// * institutes,nor the agencies providing financial support for this *</span>
2000013 <span class="comment">// * work make any representation or warranty, express or implied, *</span>
2100014 <span class="comment">// * regarding this software system or assume any liability for its *</span>
2200015 <span class="comment">// * use. Please see the license in the file LICENSE and URL above *</span>
2300016 <span class="comment">// * for the full disclaimer and the limitation of liability. *</span>
2400017 <span class="comment">// * *</span>
2500018 <span class="comment">// * This code implementation is the result of the scientific and *</span>
2600019 <span class="comment">// * technical work of the GEANT4 collaboration. *</span>
2700020 <span class="comment">// * By using, copying, modifying or distributing the software (or *</span>
2800021 <span class="comment">// * any work based on the software) you agree to acknowledge its *</span>
2900022 <span class="comment">// * use in resulting scientific publications, and indicate your *</span>
3000023 <span class="comment">// * acceptance of all terms of the Geant4 Software license. *</span>
3100024 <span class="comment">// ********************************************************************</span>
3200025 <span class="comment">//</span>
3300026 <span class="comment">//</span>
3400027 <span class="comment">// $Id: G4UIXm.cc,v 1.14 2006/06/29 19:09:49 gunter Exp $</span>
3500028 <span class="comment">// GEANT4 tag $Name: geant4-08-01-patch-01 $</span>
3600029 <span class="comment">//</span>
3700030 <span class="comment">// G.Barrand</span>
3800031
3900032 <span class="comment">//#define DEBUG</span>
4000033
4100034 <span class="preprocessor">#ifdef G4UI_BUILD_XM_SESSION</span>
4200035 <span class="preprocessor"></span>
4300036 <span class="preprocessor">#include "G4Types.hh"</span>
4400037
4500038 <span class="preprocessor">#include &lt;string.h&gt;</span>
4600039
4700040 <span class="preprocessor">#include &lt;X11/Intrinsic.h&gt;</span>
4800041 <span class="preprocessor">#include &lt;X11/Shell.h&gt;</span>
4900042 <span class="preprocessor">#include &lt;X11/keysym.h&gt;</span>
5000043
5100044 <span class="preprocessor">#include &lt;Xm/Xm.h&gt;</span>
5200045 <span class="preprocessor">#include &lt;Xm/Command.h&gt;</span>
5300046 <span class="preprocessor">#include &lt;Xm/RowColumn.h&gt;</span>
5400047 <span class="preprocessor">#include &lt;Xm/Form.h&gt;</span>
5500048 <span class="preprocessor">#include &lt;Xm/PushB.h&gt;</span>
5600049 <span class="preprocessor">#include &lt;Xm/CascadeB.h&gt;</span>
5700050 <span class="preprocessor">#include &lt;Xm/Text.h&gt;</span>
5800051
5900052 <span class="preprocessor">#include "<a class="code" href="G4UIXm_8hh.html">G4UIXm.hh</a>"</span>
6000053 <span class="preprocessor">#include "G4UImanager.hh"</span>
6100054 <span class="preprocessor">#include "G4StateManager.hh"</span>
6200055 <span class="preprocessor">#include "G4UIcommandTree.hh"</span>
6300056 <span class="preprocessor">#include "G4UIcommandStatus.hh"</span>
6400057
6500058 <span class="preprocessor">#include "<a class="code" href="G4Xt_8hh.html">G4Xt.hh</a>"</span>
6600059
6700060 <span class="preprocessor">#include &lt;stdlib.h&gt;</span>
6800061
6900062 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a3">XmTextAppendString</a> (Widget,<span class="keywordtype">char</span>*);
7000063
7100064 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a4">clearButtonCallback</a> (Widget,XtPointer,XtPointer);
7200065
7300066 <span class="keyword">static</span> <span class="keywordtype">char</span>* <a class="code" href="G4UIXm_8cc.html#a5">XmConvertCompoundStringToString</a> (XmString,<span class="keywordtype">int</span>);
7400067 <span class="keyword">static</span> G4bool <a class="code" href="G4UIXm_8cc.html#a6">ConvertStringToInt</a>(<span class="keyword">const</span> <span class="keywordtype">char</span>*,<span class="keywordtype">int</span>&amp;);
7500068 <span class="keyword">static</span> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a7">ExecuteChangeSizeFunction</a>(Widget);
7600069
77<a name="l00070"></a><a class="code" href="G4UIXm_8cc.html#a0">00070</a> <span class="keyword">static</span> G4bool <a class="code" href="G4UIXm_8cc.html#a0">exitSession</a> = <span class="keyword">true</span>;
78<a name="l00071"></a><a class="code" href="G4UIXm_8cc.html#a1">00071</a> <span class="keyword">static</span> G4bool <a class="code" href="G4UIXm_8cc.html#a1">exitPause</a> = <span class="keyword">true</span>;
79<a name="l00072"></a><a class="code" href="G4UIXm_8cc.html#a2">00072</a> <span class="keyword">static</span> G4bool <a class="code" href="G4UIXm_8cc.html#a2">exitHelp</a> = <span class="keyword">true</span>;
8000073 <span class="comment">/***************************************************************************/</span>
81<a name="l00074"></a><a class="code" href="classG4UIXm.html#a0">00074</a> <a class="code" href="classG4UIXm.html#a0">G4UIXm::G4UIXm</a> (
8200075 <span class="keywordtype">int</span> argc
8300076 ,<span class="keywordtype">char</span>** argv
8400077 )
8500078 :shell(NULL)
8600079 ,command(NULL)
8700080 ,menuBar(NULL)
8800081 ,text(NULL)
8900082 ,fHelp(false)
9000083 ,fHelpChoice(0)
9100084 <span class="comment">/***************************************************************************/</span>
9200086 {
9300087 G4UImanager* UI = G4UImanager::GetUIpointer();
9400088 <span class="keywordflow">if</span>(UI!=NULL) UI-&gt;SetSession(<span class="keyword">this</span>);
9500089
9600090 <a class="code" href="classG4Xt.html">G4Xt</a>* interactorManager = <a class="code" href="classG4Xt.html#e0">G4Xt::getInstance</a> (argc,argv,(<span class="keywordtype">char</span>*)<span class="stringliteral">"Xm"</span>);
9700091
9800092 Widget top = (Widget)interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a5">GetMainInteractor</a>();
9900093
10000094 <span class="keywordflow">if</span>(getenv(<span class="stringliteral">"XENVIRONMENT"</span>)==NULL) {
10100095 XrmDatabase database = XrmGetDatabase(XtDisplay(top));
10200096 <span class="keywordflow">if</span>(database!=NULL) {
10300097 XrmPutLineResource(&amp;database,<span class="stringliteral">"*topShadowColor:white"</span>);
10400098 XrmPutLineResource(&amp;database,<span class="stringliteral">"*bottomShadowColor:black"</span>);
10500099 XrmPutLineResource(&amp;database,<span class="stringliteral">"*foreground:black"</span>);
10600100 XrmPutLineResource(&amp;database,<span class="stringliteral">"*background:lightgrey"</span>);
10700101 XrmPutLineResource(&amp;database,<span class="stringliteral">"*borderColor:lightgrey"</span>);
10800102 XrmPutLineResource(&amp;database,<span class="stringliteral">"*fontList:-*-helvetica-bold-r-*-*-*-120-*-*-*-*-iso8859-1"</span>);
10900103 XrmPutLineResource(&amp;database,<span class="stringliteral">"*text.background:white"</span>);
11000104 XrmPutLineResource(&amp;database,<span class="stringliteral">"*text.fontList:*courier*-r-*--14-*"</span>);
11100105 XrmPutLineResource(&amp;database,<span class="stringliteral">"*text.maxLength:8000"</span>);
11200106 }
11300107 }
11400108
11500109 Arg args[9];
11600110 XtSetArg(args[0],XmNkeyboardFocusPolicy,XmPOINTER); <span class="comment">// For completion.</span>
11700111 <a class="code" href="classG4UIXm.html#r1">shell</a> = XtAppCreateShell (<span class="stringliteral">"G4UIXm"</span>,<span class="stringliteral">"G4UIXm"</span>,
11800112 topLevelShellWidgetClass,XtDisplay(top),
11900113 args,1);
12000114 <a class="code" href="classG4UIXm.html#r0">form</a> = XmCreateForm (<a class="code" href="classG4UIXm.html#r1">shell</a>,(<span class="keywordtype">char</span>*)<span class="stringliteral">"form"</span>,NULL,0);
12100115 XtManageChild (<a class="code" href="classG4UIXm.html#r0">form</a>);
12200116
12300117 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_FORM);
12400118 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM);
12500119 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
12600120 <a class="code" href="classG4UIXm.html#r3">menuBar</a> = XmCreateMenuBar (<a class="code" href="classG4UIXm.html#r0">form</a>,(<span class="keywordtype">char</span>*)<span class="stringliteral">"menuBar"</span>,args,3);
12700121
12800122 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_NONE);
12900123 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM);
13000124 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
13100125 XtSetArg(args[3],XmNbottomAttachment ,XmATTACH_FORM);
13200126 <a class="code" href="classG4UIXm.html#r2">command</a> = XmCreateCommand (<a class="code" href="classG4UIXm.html#r0">form</a>,(<span class="keywordtype">char</span>*)<span class="stringliteral">"command"</span>,args,4);
13300127 XtManageChild (<a class="code" href="classG4UIXm.html#r2">command</a>);
13400128
13500129 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_NONE);
13600130 XtSetArg(args[1],XmNleftAttachment ,XmATTACH_FORM);
13700131 XtSetArg(args[2],XmNrightAttachment ,XmATTACH_FORM);
13800132 XtSetArg(args[3],XmNbottomAttachment,XmATTACH_WIDGET);
13900133 XtSetArg(args[4],XmNbottomWidget ,<a class="code" href="classG4UIXm.html#r2">command</a>);
14000134 XmString cps = XmStringLtoRCreate((<span class="keywordtype">char</span>*)<span class="stringliteral">"Clear"</span>,XmSTRING_DEFAULT_CHARSET);
14100135 XtSetArg (args[5],XmNlabelString,cps);
14200136 Widget clearButton = XmCreatePushButton(<a class="code" href="classG4UIXm.html#r0">form</a>,(<span class="keywordtype">char</span>*)<span class="stringliteral">"clearButton"</span>,args,6);
14300137 XmStringFree (cps);
14400138 XtManageChild (clearButton);
14500139
14600140 XtSetArg(args[0],XmNtopAttachment ,XmATTACH_WIDGET);
14700141 XtSetArg(args[1],XmNtopWidget ,<a class="code" href="classG4UIXm.html#r3">menuBar</a>);
14800142 XtSetArg(args[2],XmNleftAttachment ,XmATTACH_FORM);
14900143 XtSetArg(args[3],XmNrightAttachment ,XmATTACH_FORM);
15000144 XtSetArg(args[4],XmNbottomAttachment,XmATTACH_WIDGET);
15100145 XtSetArg(args[5],XmNbottomWidget ,clearButton);
15200146 XtSetArg(args[6],XmNeditMode ,XmMULTI_LINE_EDIT);
15300147 XtSetArg(args[7],XmNrows ,12);
15400148 XtSetArg(args[8],XmNcolumns ,80);
15500149 <a class="code" href="classG4UIXm.html#r4">text</a> = XmCreateScrolledText (<a class="code" href="classG4UIXm.html#r0">form</a>,(<span class="keywordtype">char</span>*)<span class="stringliteral">"text"</span>,args,9);
15600150 XtManageChild (<a class="code" href="classG4UIXm.html#r4">text</a>);
15700151
15800152 XtAddCallback(clearButton,XmNactivateCallback,
15900153 <a class="code" href="G4UIXm_8cc.html#a4">clearButtonCallback</a>,(XtPointer)<a class="code" href="classG4UIXm.html#r4">text</a>);
16000154 XtAddCallback(<a class="code" href="classG4UIXm.html#r2">command</a>,XmNcommandEnteredCallback,
16100155 <a class="code" href="classG4UIXm.html#h0">commandEnteredCallback</a>,(XtPointer)<span class="keyword">this</span>);
16200156
16300157 Widget commandText = XmCommandGetChild(<a class="code" href="classG4UIXm.html#r2">command</a>,XmDIALOG_COMMAND_TEXT);
16400158 XtAddEventHandler(commandText,KeyPressMask,False,<a class="code" href="classG4UIXm.html#h1">keyHandler</a>,(XtPointer)<span class="keyword">this</span>);
16500159
16600160 XtRealizeWidget(<a class="code" href="classG4UIXm.html#r1">shell</a>);
16700161 XtMapWidget(<a class="code" href="classG4UIXm.html#r1">shell</a>);
16800162
16900163 <span class="keywordflow">if</span>(UI!=NULL) UI-&gt;SetCoutDestination(<span class="keyword">this</span>);
17000164 }
17100165 <span class="comment">/***************************************************************************/</span>
172<a name="l00166"></a><a class="code" href="classG4UIXm.html#a4">00166</a> <a class="code" href="classG4UIXm.html#a4">G4UIXm::~G4UIXm</a>(
17300167 )
17400168 <span class="comment">/***************************************************************************/</span>
17500170 {
17600171 G4UImanager* UI = G4UImanager::GetUIpointer();
17700172 <span class="keywordflow">if</span>(UI!=NULL) {
17800173 UI-&gt;SetSession(NULL);
17900174 UI-&gt;SetCoutDestination(NULL);
18000175 }
18100176 XtDestroyWidget(<a class="code" href="classG4UIXm.html#r1">shell</a>);
18200177 }
18300178 <span class="comment">/***************************************************************************/</span>
184<a name="l00179"></a><a class="code" href="classG4UIXm.html#a1">00179</a> G4UIsession* <a class="code" href="classG4UIXm.html#a1">G4UIXm::SessionStart</a> (
18500180 )
18600181 <span class="comment">/***************************************************************************/</span>
18700183 {
18800184 <a class="code" href="classG4Xt.html">G4Xt</a>* interactorManager = <a class="code" href="classG4Xt.html#e0">G4Xt::getInstance</a> ();
18900185 <a class="code" href="classG4UIXm.html#a5">Prompt</a>(<span class="stringliteral">"session"</span>);
19000186 <a class="code" href="G4UIXm_8cc.html#a0">exitSession</a> = <span class="keyword">false</span>;
19100187 interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a13">DisableSecondaryLoop</a> ();
19200188 <span class="keywordtype">void</span>* event;
19300189 <span class="keywordflow">while</span>((event = interactorManager-&gt;<a class="code" href="classG4Xt.html#a2">GetEvent</a>())!=NULL) {
19400190 interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a17">DispatchEvent</a>(event);
19500191 <span class="keywordflow">if</span>(<a class="code" href="G4UIXm_8cc.html#a0">exitSession</a>==<span class="keyword">true</span>) <span class="keywordflow">break</span>;
19600192 }
19700193 interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a12">EnableSecondaryLoop</a> ();
19800194 <span class="keywordflow">return</span> <span class="keyword">this</span>;
19900195 }
20000196 <span class="comment">/***************************************************************************/</span>
201<a name="l00197"></a><a class="code" href="classG4UIXm.html#a5">00197</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#a5">G4UIXm::Prompt</a> (
20200198 G4String aPrompt
20300199 )
20400200 <span class="comment">/***************************************************************************/</span>
20500202 {
20600203 Arg args[1];
20700204 <span class="keywordtype">char</span>* str = (<span class="keywordtype">char</span>*)XtNewString(aPrompt.data());
20800205 XmString cps = XmStringLtoRCreate(str,XmSTRING_DEFAULT_CHARSET);
20900206 XtFree(str);
21000207 XtSetArg(args[0],XmNpromptString,cps);
21100208 XtSetValues(<a class="code" href="classG4UIXm.html#r2">command</a>,args,1);
21200209 XmStringFree(cps);
21300210 }
21400211 <span class="comment">/***************************************************************************/</span>
215<a name="l00212"></a><a class="code" href="classG4UIXm.html#a6">00212</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#a6">G4UIXm::SessionTerminate</a> (
21600213 )
21700214 <span class="comment">/***************************************************************************/</span>
21800216 {
21900217 }
22000218 <span class="comment">/***************************************************************************/</span>
221<a name="l00219"></a><a class="code" href="classG4UIXm.html#a7">00219</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#a7">G4UIXm::PauseSessionStart</a> (
22200220 G4String a_state
22300221 )
22400222 <span class="comment">/***************************************************************************/</span>
22500224 {
22600225 <span class="keywordflow">if</span>(a_state==<span class="stringliteral">"G4_pause&gt; "</span>) {
22700226 <a class="code" href="classG4UIXm.html#d0">SecondaryLoop</a> (<span class="stringliteral">"Pause, type continue to exit this state"</span>);
22800227 }
22900228
23000229 <span class="keywordflow">if</span>(a_state==<span class="stringliteral">"EndOfEvent"</span>) {
23100230 <span class="comment">// Picking with feed back in event data Done here !!!</span>
23200231 <a class="code" href="classG4UIXm.html#d0">SecondaryLoop</a> (<span class="stringliteral">"End of event, type continue to exit this state"</span>);
23300232 }
23400233 }
23500234 <span class="comment">/***************************************************************************/</span>
236<a name="l00235"></a><a class="code" href="classG4UIXm.html#d0">00235</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#d0">G4UIXm::SecondaryLoop</a> (
23700236 G4String a_prompt
23800237 )
23900238 <span class="comment">/***************************************************************************/</span>
24000240 {
24100241 <a class="code" href="classG4Xt.html">G4Xt</a>* interactorManager = <a class="code" href="classG4Xt.html#e0">G4Xt::getInstance</a> ();
24200242 <a class="code" href="classG4UIXm.html#a5">Prompt</a>(a_prompt);
24300243 <a class="code" href="G4UIXm_8cc.html#a1">exitPause</a> = <span class="keyword">false</span>;
24400244 <span class="keywordtype">void</span>* event;
24500245 <span class="keywordflow">while</span>((event = interactorManager-&gt;<a class="code" href="classG4Xt.html#a2">GetEvent</a>())!=NULL) {
24600246 interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a17">DispatchEvent</a>(event);
24700247 <span class="keywordflow">if</span>(<a class="code" href="G4UIXm_8cc.html#a1">exitPause</a>==<span class="keyword">true</span>) <span class="keywordflow">break</span>;
24800248 }
24900249 <a class="code" href="classG4UIXm.html#a5">Prompt</a>(<span class="stringliteral">"session"</span>);
25000250 }
25100251 <span class="comment">/***************************************************************************/</span>
252<a name="l00252"></a><a class="code" href="classG4UIXm.html#a8">00252</a> G4int <a class="code" href="classG4UIXm.html#a8">G4UIXm::ReceiveG4cout</a> (
25300253 G4String a_string
25400254 )
25500255 <span class="comment">/***************************************************************************/</span>
25600257 {
25700258 <a class="code" href="G4UIXm_8cc.html#a3">XmTextAppendString</a>(<a class="code" href="classG4UIXm.html#r4">text</a>,(<span class="keywordtype">char</span>*)a_string.data());
25800259 <span class="keywordflow">return</span> 0;
25900260 }
26000261 <span class="comment">/***************************************************************************/</span>
261<a name="l00262"></a><a class="code" href="classG4UIXm.html#a9">00262</a> G4int <a class="code" href="classG4UIXm.html#a9">G4UIXm::ReceiveG4cerr</a> (
26200263 G4String a_string
26300264 )
26400265 <span class="comment">/***************************************************************************/</span>
26500267 {
26600268 <a class="code" href="G4UIXm_8cc.html#a3">XmTextAppendString</a>(<a class="code" href="classG4UIXm.html#r4">text</a>,(<span class="keywordtype">char</span>*)a_string.data());
26700269 <span class="keywordflow">return</span> 0;
26800270 }
26900271 <span class="comment">/***************************************************************************/</span>
270<a name="l00272"></a><a class="code" href="classG4UIXm.html#d1">00272</a> G4bool <a class="code" href="classG4UIXm.html#d1">G4UIXm::GetHelpChoice</a>(
27100273 G4int&amp; aInt
27200274 )
27300275 <span class="comment">/***************************************************************************/</span>
27400277 {
27500278 <a class="code" href="classG4UIXm.html#r6">fHelp</a> = <span class="keyword">true</span>;
27600279 <span class="comment">// SecondaryLoop :</span>
27700280 <a class="code" href="classG4Xt.html">G4Xt</a>* interactorManager = <a class="code" href="classG4Xt.html#e0">G4Xt::getInstance</a> ();
27800281 <a class="code" href="classG4UIXm.html#a5">Prompt</a>(<span class="stringliteral">"Help"</span>);
27900282 <a class="code" href="G4UIXm_8cc.html#a2">exitHelp</a> = <span class="keyword">false</span>;
28000283 <span class="keywordtype">void</span>* event;
28100284 <span class="keywordflow">while</span>((event = interactorManager-&gt;<a class="code" href="classG4Xt.html#a2">GetEvent</a>())!=NULL) {
28200285 interactorManager-&gt;<a class="code" href="classG4VInteractorManager.html#a17">DispatchEvent</a>(event);
28300286 <span class="keywordflow">if</span>(<a class="code" href="G4UIXm_8cc.html#a2">exitHelp</a>==<span class="keyword">true</span>) <span class="keywordflow">break</span>;
28400287 }
28500288 <a class="code" href="classG4UIXm.html#a5">Prompt</a>(<span class="stringliteral">"session"</span>);
28600289 <span class="comment">//</span>
28700290 <span class="keywordflow">if</span>(<a class="code" href="classG4UIXm.html#r6">fHelp</a>==<span class="keyword">false</span>) <span class="keywordflow">return</span> <span class="keyword">false</span>;
28800291 aInt = <a class="code" href="classG4UIXm.html#r7">fHelpChoice</a>;
28900292 <a class="code" href="classG4UIXm.html#r6">fHelp</a> = <span class="keyword">false</span>;
29000293 <span class="keywordflow">return</span> <span class="keyword">true</span>;
29100294 }
29200295 <span class="comment">/***************************************************************************/</span>
293<a name="l00296"></a><a class="code" href="classG4UIXm.html#d2">00296</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#d2">G4UIXm::ExitHelp</a>(
29400297 )
29500298 <span class="comment">/***************************************************************************/</span>
29600300 {
29700301 }
29800302 <span class="comment">/***************************************************************************/</span>
299<a name="l00303"></a><a class="code" href="classG4UIXm.html#a2">00303</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#a2">G4UIXm::AddMenu</a> (
30000304 <span class="keyword">const</span> <span class="keywordtype">char</span>* a_name
30100305 ,<span class="keyword">const</span> <span class="keywordtype">char</span>* a_label
30200306 )
30300307 <span class="comment">/***************************************************************************/</span>
30400309 {
30500310 <span class="keywordflow">if</span>(<a class="code" href="classG4UIXm.html#r3">menuBar</a>==NULL) <span class="keywordflow">return</span>;
30600311 <span class="keywordflow">if</span>(a_name==NULL) <span class="keywordflow">return</span>;
30700312 <span class="keywordflow">if</span>(a_label==NULL) <span class="keywordflow">return</span>;
30800313 XtManageChild (<a class="code" href="classG4UIXm.html#r3">menuBar</a>);
30900314 <span class="comment">// Pulldown menu :</span>
31000315 Widget widget;
31100316 widget = XmCreatePulldownMenu (<a class="code" href="classG4UIXm.html#r3">menuBar</a>,(<span class="keywordtype">char</span>*)a_name,NULL,0);
31200317 <a class="code" href="classG4VInteractiveSession.html#a4">AddInteractor</a> (a_name,(<a class="code" href="G4VInteractorManager_8hh.html#a0">G4Interactor</a>)widget);
31300318 <span class="comment">// Cascade button :</span>
31400319 Arg args[2];
31500320 XmString cps = XmStringLtoRCreate((<span class="keywordtype">char</span>*)a_label,XmSTRING_DEFAULT_CHARSET);
31600321 XtSetArg (args[0],XmNlabelString,cps);
31700322 XtSetArg (args[1],XmNsubMenuId,widget);
31800323 widget = XmCreateCascadeButton (<a class="code" href="classG4UIXm.html#r3">menuBar</a>,(<span class="keywordtype">char</span>*)a_name,args,2);
31900324 XmStringFree (cps);
32000325 XtManageChild (widget);
32100326 <a class="code" href="G4UIXm_8cc.html#a7">ExecuteChangeSizeFunction</a>(<a class="code" href="classG4UIXm.html#r0">form</a>);
32200327 }
32300328 <span class="comment">/***************************************************************************/</span>
324<a name="l00329"></a><a class="code" href="classG4UIXm.html#a3">00329</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#a3">G4UIXm::AddButton</a> (
32500330 <span class="keyword">const</span> <span class="keywordtype">char</span>* a_menu
32600331 ,<span class="keyword">const</span> <span class="keywordtype">char</span>* a_label
32700332 ,<span class="keyword">const</span> <span class="keywordtype">char</span>* a_command
32800333 )
32900334 <span class="comment">/***************************************************************************/</span>
33000336 {
33100337 <span class="keywordflow">if</span>(a_menu==NULL) <span class="keywordflow">return</span>;
33200338 <span class="keywordflow">if</span>(a_label==NULL) <span class="keywordflow">return</span>;
33300339 <span class="keywordflow">if</span>(a_command==NULL) <span class="keywordflow">return</span>;
33400340 Widget parent = (Widget)<a class="code" href="classG4VInteractiveSession.html#a5">GetInteractor</a>(a_menu);
33500341 <span class="keywordflow">if</span>(parent==NULL) <span class="keywordflow">return</span>;
33600342 Widget widget = XmCreatePushButton(parent,(<span class="keywordtype">char</span>*)a_label,NULL,0);
33700343 XtManageChild (widget);
33800344 XtAddCallback (widget,XmNactivateCallback,<a class="code" href="classG4UIXm.html#h2">ButtonCallback</a>,(XtPointer)<span class="keyword">this</span>);
33900345 <a class="code" href="classG4UIXm.html#r5">commands</a>[widget] = a_command;
34000346 }
34100347 <span class="comment">/***************************************************************************/</span>
342<a name="l00348"></a><a class="code" href="classG4UIXm.html#a10">00348</a> G4String <a class="code" href="classG4UIXm.html#a10">G4UIXm::GetCommand</a> (
34300349 Widget a_widget
34400350 )
34500351 <span class="comment">/***************************************************************************/</span>
34600353 {
34700354 <span class="keywordflow">return</span> <a class="code" href="classG4UIXm.html#r5">commands</a>[a_widget];
34800355 }
34900356 <span class="comment">/***************************************************************************/</span>
35000357 <span class="comment">/***************************************************************************/</span>
35100358 <span class="comment">/***************************************************************************/</span>
352<a name="l00359"></a><a class="code" href="classG4UIXm.html#h0">00359</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#h0">G4UIXm::commandEnteredCallback</a> (
35300360 Widget a_widget
35400361 ,XtPointer a_tag
35500362 ,XtPointer a_data
35600363 )
35700364 <span class="comment">/***************************************************************************/</span>
35800366 {
35900367 <a class="code" href="classG4UIXm.html">G4UIXm</a>* This = (<a class="code" href="classG4UIXm.html">G4UIXm</a>*)a_tag;
36000368
36100369 XmString cps = ((XmCommandCallbackStruct*)a_data)-&gt;value;
36200370 <span class="keywordtype">char</span>* ss = <a class="code" href="G4UIXm_8cc.html#a5">XmConvertCompoundStringToString</a>(cps,0);
36300371 G4String <a class="code" href="classG4UIXm.html#r2">command</a> (ss);
36400372 XtFree (ss);
36500373
36600374 <span class="keywordflow">if</span>(This-&gt;<a class="code" href="classG4UIXm.html#r6">fHelp</a>==<span class="keyword">true</span>) {
36700375 <a class="code" href="G4UIXm_8cc.html#a2">exitHelp</a> = <span class="keyword">true</span>;
36800376 This-&gt;<a class="code" href="classG4UIXm.html#r6">fHelp</a> = <a class="code" href="G4UIXm_8cc.html#a6">ConvertStringToInt</a>(command.data(),This-&gt;<a class="code" href="classG4UIXm.html#r7">fHelpChoice</a>);
36900377 } <span class="keywordflow">else</span> {
37000378 This-&gt;<a class="code" href="classG4VBasicShell.html#b10">ApplyShellCommand</a> (command,<a class="code" href="G4UIXm_8cc.html#a0">exitSession</a>,<a class="code" href="G4UIXm_8cc.html#a1">exitPause</a>);
37100379 }
37200380
37300381 a_widget = NULL;
37400382 a_tag = NULL;
37500383 }
37600384 <span class="comment">/***************************************************************************/</span>
377<a name="l00385"></a><a class="code" href="classG4UIXm.html#h1">00385</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#h1">G4UIXm::keyHandler</a> (
37800386 Widget a_widget
37900387 ,XtPointer a_tag
38000388 ,XEvent* a_event
38100389 ,Boolean*
38200390 )
38300391 <span class="comment">/***************************************************************************/</span>
38400393 {
38500394 KeySym keySym;
38600395 XLookupString(&amp;(a_event-&gt;xkey),NULL,0,&amp;keySym,NULL);
38700396 <span class="keywordflow">if</span>(keySym!=XK_Tab) <span class="keywordflow">return</span>;
38800397 <a class="code" href="classG4UIXm.html">G4UIXm</a>* This = (<a class="code" href="classG4UIXm.html">G4UIXm</a>*)a_tag;
38900398 <span class="keywordtype">char</span>* s = XmTextGetString(a_widget);
39000399 G4String ss = This-&gt;<a class="code" href="classG4VBasicShell.html#b5">Complete</a>(s);
39100400 XmTextSetString(a_widget,(<span class="keywordtype">char</span>*)ss.data());
39200401 XtFree(s);
39300402 XmTextSetInsertionPosition(a_widget,XmTextGetLastPosition(a_widget));
39400403 }
39500404 <span class="comment">/***************************************************************************/</span>
396<a name="l00405"></a><a class="code" href="G4UIXm_8cc.html#a4">00405</a> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a4">clearButtonCallback</a> (
39700406 Widget
39800407 ,XtPointer a_tag
39900408 ,XtPointer
40000409 )
40100410 <span class="comment">/***************************************************************************/</span>
40200412 {
40300413 XmTextSetString((Widget)a_tag,(<span class="keywordtype">char</span>*)<span class="stringliteral">""</span>);
40400414 }
40500415 <span class="comment">/***************************************************************************/</span>
406<a name="l00416"></a><a class="code" href="classG4UIXm.html#h2">00416</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIXm.html#h2">G4UIXm::ButtonCallback</a> (
40700417 Widget a_widget
40800418 ,XtPointer a_tag
40900419 ,XtPointer
41000420 )
41100421 <span class="comment">/***************************************************************************/</span>
41200423 {
41300424 <a class="code" href="classG4UIXm.html">G4UIXm</a>* This = (<a class="code" href="classG4UIXm.html">G4UIXm</a>*)a_tag;
41400425 <span class="keywordflow">if</span>(This-&gt;<a class="code" href="classG4UIXm.html#r6">fHelp</a>==<span class="keyword">true</span>) <span class="keywordflow">return</span>; <span class="comment">// Disabled when in help.</span>
41500426 G4String ss = This-&gt;<a class="code" href="classG4UIXm.html#a10">GetCommand</a> (a_widget);
41600427 <span class="comment">//printf ("debug : execute:\n%s\n",ss.data());</span>
41700428 This-&gt;<a class="code" href="classG4VBasicShell.html#b10">ApplyShellCommand</a>(ss,<a class="code" href="G4UIXm_8cc.html#a0">exitSession</a>,<a class="code" href="G4UIXm_8cc.html#a1">exitPause</a>);
41800429 }
41900430 <span class="comment">/***************************************************************************/</span>
42000431 <span class="comment">/***************************************************************************/</span>
42100432 <span class="comment">/***************************************************************************/</span>
422<a name="l00433"></a><a class="code" href="G4UIXm_8cc.html#a5">00433</a> <span class="keywordtype">char</span>* <a class="code" href="G4UIXm_8cc.html#a5">XmConvertCompoundStringToString</a> (
42300434 XmString a_cps
42400435 ,<span class="keywordtype">int</span> a_number
42500436 )
42600437 <span class="comment">/***************************************************************************/</span>
42700439 {
42800440 <span class="keywordflow">if</span>(a_cps==NULL) <span class="keywordflow">return</span> NULL;
42900441 <span class="keywordtype">char</span>* ss = NULL;
43000442 XmStringContext context;
43100443 XmStringInitContext(&amp;context,a_cps);
43200444 <span class="keywordtype">int</span> icount = 0;
43300445 Boolean Done = False;
43400446 <span class="keywordflow">while</span>(Done==False) {
43500447 <span class="keywordtype">char</span>* text = NULL;
43600448 XmStringCharSet charset = NULL;
43700449 XmStringDirection direct;
43800450 Boolean sep;
43900451 <span class="keywordflow">if</span>(XmStringGetNextSegment(context,&amp;text,&amp;charset,&amp;direct,&amp;sep)==True) {
44000452 XtFree(charset);
44100453 <span class="keywordflow">if</span>(sep==True) Done = True;
44200454 <span class="keywordflow">if</span>(icount==a_number) {
44300455 ss = text;
44400456 <span class="keywordflow">break</span>;
44500457 }
44600458 icount++;
44700459 XtFree(text);
44800460 }
44900461 <span class="keywordflow">else</span>
45000462 Done = True;
45100463 }
45200464 XmStringFreeContext(context);
45300465 <span class="keywordflow">return</span> ss;
45400466 }
45500467 <span class="comment">/***************************************************************************/</span>
456<a name="l00468"></a><a class="code" href="G4UIXm_8cc.html#a3">00468</a> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a3">XmTextAppendString</a> (
45700469 Widget This
45800470 ,<span class="keywordtype">char</span>* a_string
45900471 )
46000472 <span class="comment">/***************************************************************************/</span>
46100474 {
46200475 <span class="keywordflow">if</span>(This==NULL) <span class="keywordflow">return</span>;
46300476 <span class="keywordflow">if</span>(!XtIsSubclass(This,xmTextWidgetClass)) <span class="keywordflow">return</span>;
46400477 <span class="keywordflow">if</span>(a_string==NULL) <span class="keywordflow">return</span>;
46500478 XmTextPosition lastpos = XmTextGetLastPosition(This);
46600479 XmTextReplace(This,lastpos,lastpos,a_string);
46700480 XmTextSetInsertionPosition(This,XmTextGetLastPosition(This));
46800481 }
469<a name="l00483"></a><a class="code" href="G4UIXm_8cc.html#a6">00483</a> G4bool <a class="code" href="G4UIXm_8cc.html#a6">ConvertStringToInt</a>(
47000484 <span class="keyword">const</span> <span class="keywordtype">char</span>* aString
47100485 ,<span class="keywordtype">int</span>&amp; aInt
47200486 )
47300489 {
47400490 aInt = 0;
47500491 <span class="keywordflow">if</span>(aString==NULL) <span class="keywordflow">return</span> <span class="keyword">false</span>;
47600492 <span class="keywordtype">char</span>* s;
47700493 <span class="keywordtype">long</span> value = strtol(aString,&amp;s,10);
47800494 <span class="keywordflow">if</span>(s==aString) <span class="keywordflow">return</span> <span class="keyword">false</span>;
47900495 aInt = value;
48000496 <span class="keywordflow">return</span> <span class="keyword">true</span>;
48100497 }
48200498 <span class="preprocessor">#include &lt;X11/IntrinsicP.h&gt;</span>
483<a name="l00500"></a><a class="code" href="G4UIXm_8cc.html#a7">00500</a> <span class="keywordtype">void</span> <a class="code" href="G4UIXm_8cc.html#a7">ExecuteChangeSizeFunction</a> (
48400501 Widget aWidget
48500502 )
48600505 {
48700506 <span class="keywordflow">if</span>(aWidget==NULL) <span class="keywordflow">return</span>;
48800507 <span class="keywordflow">if</span>(aWidget-&gt;core.widget_class-&gt;core_class.resize==NULL) <span class="keywordflow">return</span>;
48900508 (aWidget-&gt;core.widget_class-&gt;core_class.resize)(aWidget);
49000509 }
49100510
49200511
49300512 <span class="preprocessor">#endif</span>
494</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 22 11:07:02 2007 by
495<a href="http://www.doxygen.org/index.html">
496<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
497</a>1.3.4 </small></address>
498</body>
499</html>
Note: See TracBrowser for help on using the repository browser.