source: trunk/geant4/interfaces/html/G4UIXm_8cc-source.html @ 574

Last change on this file since 574 was 571, checked in by garnier, 17 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.