source: trunk/doc/expgui_cfg.html @ 314

Last change on this file since 314 was 314, checked in by toby, 14 years ago

# on 2000/10/12 21:15:58, toby did:
optional EXPTOOL output

  • Property rcs:author set to toby
  • Property rcs:date set to 2000/10/12 21:15:58
  • Property rcs:lines set to +9 -0
  • Property rcs:rev set to 1.14
  • Property rcs:state set to Exp
  • Property svn:keywords set to Author Date Revision Id
File size: 27.3 KB
Line 
1<HTML>
2   <META NAME="Author" CONTENT="Brian H. Toby">
3   <TITLE>Customizing EXPGUI and Associated Programs</TITLE>
4<HEAD>
5</HEAD>
6<BODY BGCOLOR="#FFFFFF">
7
8<A HREF=http://www.ncnr.nist.gov>
9<IMG SRC="http://www.ncnr.nist.gov/images/ncnrtrans.gif" 
10alt="Link to NIST Center for Neutron Research home page"
11ALIGN=RIGHT></A>
12<A HREF=http://www.nist.gov>
13<IMG SRC="http://www.ncnr.nist.gov/images/webidblue_2lineright.gif" 
14alt="Link to National Institute of Standards & Technology home page"
15ALIGN=LEFT></A>
16<CENTER>
17<A Href="http://www.ncnr.nist.gov/programs/crystallography/software/tclpkgs.html">
18<IMG SRC="tcltklogo100.gif" 
19alt="Link to Tcl/Tk information">
20</CENTER></A>
21<hr>
22
23<TABLE BORDER BGCOLOR="#FFFF40" ALIGN=RIGHT>
24<TR><TH><A  Href="expgui.html">EXPGUI top</A> 
25</TH></TR></TABLE><BR CLEAR=ALL>
26
27<CENTER>
28<H1>
29Customizing EXPGUI and Associated Programs</H1></CENTER>
30
31The EXPGUI GSAS graphical user interface can be modified in many
32ways quite easily.
33This document describes how the GUI works and how to modify the menus without
34significant reprogramming. A little bit of programming in Tcl/Tk can go a
35long way in adding new features. See the
36<a HREF="#Customizing">Customizing</A> examples, below.
37
38<H3>EXPGUI</H3>
39The main GUI is created by file expgui, which in turn uses the following files
40sequentially:
41<UL>
42<LI><TT>readexp.tcl</TT>
43<LI><TT>gsascmds.tcl</TT>
44<LI><TT>gsasmenu.tcl</TT>
45</UL>
46Two additional files are read if they are found:
47<UL>
48<LI><TT>localconfig</TT>
49<LI><TT>.gsas_config</TT>
50</UL>
51<P>The first three files,
52(<TT>readexp.tcl</TT>, <TT>gsascmds.tcl</TT>, <TT>gsasmenu.tcl</TT>)
53must be located in the same directory where the <TT>expgui</TT> file is found.
54The <TT>localconfig</TT> file also is read from this directory, if it exists.
55The final file, <TT>.gsas_config</TT>, is read from the user's login directory (UNIX) or <TT>C:\</TT> (Windows).
56The <TT>localconfig</TT> and <TT>.gsas_config</TT> are intended to
57contain system-wide and user-level default values for parameters
58that are described in this document. Most routines have
59a "Save Options" command that writes some of the current parameters to
60file  <TT>.gsas_config</TT>. Note that information in <TT>.gsas_config</TT>
61overrides that in <TT>localconfig</TT>.
62No error occurs if either of these files are not found.
63
64<P>
65The <TT>readexp.tcl</TT> and <TT>gsascmds.tcl</TT> files contain
66tcl procedures that are
67used for more than one application, so it is convenient to place them
68in separate files. They are only of interest to someone trying to debug
69or add new functionality to expgui.
70<P>
71The <TT>gsasmenu.tcl</TT> file defines the contents of the
72menu bar, the contents of the
73button bar and definitions for each command. The contents of this file
74are designed to be modified and extended by users, either by editing the file,
75or by overriding definitions in the <TT>localconfig</TT> or
76<TT>.gsas_config</TT> files.
77
78The important variables defined in the <TT>gsasmenu.tcl</TT> file are:
79<DL><DL>
80<DT><TT>expgui(menunames)</TT><DD>
81This list defines the menu bar headings other than File, Options & Help
82<DT><TT>expgui_menulist</TT><DD>
83Each array element, e.g. expgui_menulist(file) and expgui_menulist(powder),
84defines commands to be added to a menu heading. Each command will appear
85as an array element in expgui_cmdlist.
86<DT><TT>expgui_cmdlist</TT><DD>
87Each array element, e.g. expgui_cmdlist(Save) or expgui_cmdlist(expnam)
88contains two items. The first defines a tcl procedure to be executed
89when the command is invoked, or "-" if no command will be invoked and
90the second contains help information describing what the command does.
91Note that when menu item is selected the variable cmd is set to the
92name of the command, so
93<PRE>
94    expgui_cmdlist(powpref) {{runGSASwEXP $cmd} {Powder data preparation}}
95</PRE>
96means that "runGSASwEXP powpref" will be invoked when powpref is invoked.
97. For example, when powpref is selected, the tcl command
98"runGSASwEXP $cmd" is invoked, where variable cmd is set to "powpref".
99<DT><TT>expgui(buttonlist)</TT><DD>
100This list defines the commands that will appear on the button bar where
101each item that appears on the button bar must have a matching pair of entries
102in expgui_cmdlist.
103Thus if the command
104<PRE>
105   set expgui(buttonlist) {expnam expedt genles ortep fourier forsrh forplot lstview}
106</PRE>
107is placed in the <TT>localconfig</TT> or <TT>.gsas_config</TT> files this will
108redefine the contents of the button bar.
109</DL></DL>
110
111In addition to the variables defined in the previous file, expgui, uses
112a small number of array elements for other configuration options. They are:
113<DL><DL>
114
115<DT><TT>expgui(scriptdir)</TT><DD>
116This determines where files such as <TT>readexp.tcl</TT>, etc.
117are located. This defaults to the location where <TT>expgui</TT> is located so
118it rarely needs to be changed.
119
120<DT><TT>expgui(gsasdir)</TT><DD>
121This contains the location of the GSAS directory, if it is not the
122parent director where expgui is found.
123This determines where a number of GSAS data files will be located. If expedt
124crashes when you try to add new atoms, this is probably wrong.
125
126<DT><TT>expgui(gsasexe)</TT><DD>
127This determines where the GSAS executable files are located.
128You might want to change this is you keep multiple versions of GSAS
129around or if you keep the GSAS files in a different location than
130the default or want to keep the tcl files somewhere other than
131in a subdirectory of the GSAS files.
132
133<DT><TT>expgui(coordfont)</TT><DD>
134Sets the font used for the coordinates scroll box
135
136<DT><TT>expgui(histfont)</TT><DD>
137Sets the font used for the histogram scroll box
138
139<DT><TT>expgui(bkgcolor1)</TT><DD>
140Sets the background color for the bottom box on the phase pane.
141The default value, #fdf, is a light violet that
142will probably drive some folks nuts, but is a good contrast to the yellow
143of the refinement flags.
144
145<DT><TT>liveplot(hst)</TT><DD>
146Sets the default histogram used for liveplot
147
148<DT><TT>liveplot(legend)</TT><DD>
149Sets the default value for display of the legend in liveplot
150
151<DT><TT>expgui(initstring)</TT><DD>
152Defines commands to be executed by EXPGUI after all other commands
153have been run. This is used to define initialization commands in
154the <TT>localconfig</TT> or <TT>.gsas_config</TT> files that cannot be
155run at the time when the files are sourced. <I>(added in EXPGUI v1.21)</I>
156</DL></DL>
157
158The following variables are written to <tt>.gsas_config</tt> when
159"Save Options" is used. These variables are all set from the GUI and therefore
160do not need to be edited manually.
161
162<DL><DL>
163<DT><TT>expgui(archive)</TT><DD>
164This defines the default state for the archive flag,
165where 0 is off and 1 is on. When archive is on, a copy of the .EXP file
166is saved before a new version of the file is saved and before EXPEDT is run.
167
168<DT><TT>expgui(asorttype)</TT><DD>
169This determines the atom sort mode.
170
171<DT><TT>expgui(hsorttype)</TT><DD>
172This determines the histogram sort mode.
173
174<DT><TT>expgui(filesort)</TT><DD>
175This determines the default file sorting mode for the expnam command.
176
177<DT><TT>expgui(autoexpload)</TT><DD>
178If set to 1, the experiment file is automatically reread after
179GSAS programs modify it.
180(UNIX only)
181
182<DT><TT>expgui(showexptool)</TT><DD>
183If set to 1, output from EXPTOOL is shown after the program is run.
184This is probably needed only for debugging purposes.
185
186<DT><TT>env(GSASBACKSPACE)</TT><DD>
187Used only for UNIX: This determines if the default definition
188for the backspace key is overridden; some UNIX systems need this so that
189expedt and other terminal-oriented programs work correctly and
190other systems do not. You can toggle this option using the
191"Override Backspace" option on the file menu to see what works for you.
192
193</DL></DL>
194
195
196<HR><H3><A NAME="import">Coordinate import routines for EXPGUI</A>
197<IMG SRC="new.gif" HEIGHT=13 WIDTH=36 alt="New!">
198</H3>
199Currently two formats are supported, the Crystallographic Information File (CIF)
200and .CEL files from PowderCell.
201It is possible to define new formats for EXPGUI to use for importing
202phase/coordinate information. This is done by creating a file named
203<TT>import_</TT><I>xxxx</I><TT>.tcl</TT> (where <I>xxxx</I> is arbitrary)
204in the EXPGUI directory. See the file <TT>import_cell.tcl</TT> as an example.
205
206The file must contain four items:
207<UL>
208<LI>
209A description for the type of file to be read.
210<DL><DL><PRE>
211set description "PowderCell .CEL file"
212</PRE></DL>
213The text should not be too long, but use a return (\n) if needed:
214<DL><PRE>
215set description "My favorite coordinate\nfile from the GIGO pkg"
216</PRE></DL></DL>
217This description text shows up on the button for selecting a format.
218<P>
219<LI>
220A list of preferred file extensions.
221<DL><DL><PRE>
222set extensions .cel
223</PRE></DL>
224or
225<DL><PRE>
226set extensions {.jnk .junk}
227</PRE></DL></DL>
228In UNIX upper and lower case
229versions will be generated automatically, so do not worry about
230the case of the extension. Note that "*" (all files) is always added as well.
231<P>
232<LI>
233The name of the routine that will read the data file
234<DL><DL><PRE>
235set procname ReadPowderCellFile
236</PRE></DL></DL>
237<LI>
238A routine that takes the file name as an argument
239<DL><DL><PRE>
240proc ReadPowderCellFile {filename} {
241</PRE></DL></DL>
242and returns a list containing the following four items
243<OL>
244<P><LI>Space Group
245<DL><DL>
246The space group should be named and spaced appropriately for GSAS,
247e.g. P 21/c or P 21 21 21, not P21/c or P212121.
248</DL></DL>
249Note that GSAS requires that if a center of symmetry is present,
250this center defines the origin (Origin 2 settings, where more than one setting
251is given in the International Tables).
252<P><LI>Cell parameters
253<DL><DL>
254All six parameters should be specified in a list
255</DL></DL>
256<P><LI>Atom Coordinates
257<DL><DL>
258The atom coordinates should be specified as a list with a list element
259for each atom.
260The list contains the following items:
261<OL>
262<LI>Atom label
263<LI><I>x</I>
264<LI><I>y</I>
265<LI><I>z</I>
266<LI>Atom type
267<LI>Occupancy
268<LI>U<sub>iso</sub>
269</OL>
270If an item is not specified, it is left blank in the atom table, except for
271Occupancy and U<sub>iso</sub>, which default to 1.0 and 0.025, respectively.
272However, one must specify a null value, if an item will be skipped over.
273For example, use:
274<PRE>
275    "Li1 0 0 0 li 0.5"
276</PRE>
277or
278<PRE>
279    "{} 0 0 0 li 0.5"
280</PRE>
281but not
282<PRE>
283    "0 0 0 li 0.5"
284</PRE>
285
286</DL></DL>
287<P><LI>Warning Message (optional)
288<DL><DL>
289The warning message is displayed at the bottom of the
290Replace Atoms and Add Atoms box after the file is read. This can be used
291to warn the user about problems reading the file, for example if
292the space group symbol needs attention.
293</DL></DL>
294</OL>
295
296</UL>
297<HR><H3>LSTVIEW</H3>
298The <TT>localconfig</TT> and <TT>.gsas_config</TT> files are read, if present.
299The following options are available for customization in these files:
300<DL><DL>
301<DT><TT>txtvw(menulength)</TT><DD>
302This limits the number of entries that can
303exist in a menu. For example, the default is 25, so when more than 25 cycles
304are found in a .LST file, only the last 25 are listed in the
305"Go To"/cycle submenu.
306<DT><TT>txtvw(maxchars)</TT><DD>
307This limits the maximum number of
308characters that will be read from an existing .LST file to speed
309the start of the program. The default is ~1Mb
310for UNIX systems and ~200K for Windows.
311</DL></DL>
312
313The following variables are written to <tt>.gsas_config</tt> when
314"Save Options" is used. These variables can be set from the GUI and therefore
315do not need to be edited manually.
316
317<DL><DL>
318<DT><TT>txtvw(followcycle)</TT><DD>
319This sets the initial value for the
320"Auto Advance" button in the "Go To" menu. When this is true,
321the program will show the last cycle in the file. As new cycles are
322added, the "view" is advanced.
323
324<DT><TT>txtvw(font)</TT><DD>
325This sets the font used for LSTVIEW. See documentation on the font command in
326Tk for details on font naming.
327</DL></DL>
328
329One additional variable is present that I don't suggest using at present:
330<UL>
331<LI>plotvars: I am in the process of developing code that tracks
332and plots shifts and R values as a function cycle number. Setting plotvars to 1
333allows this code to be tested.
334</LI></UL>
335
336<hr><H3>LIVEPLOT</H3><A NAME="liveplot"></A>
337The <TT>localconfig</TT> and <TT>.gsas_config</TT> files are read, if present.
338Note that some of these options are relevant only if the tcldump program is
339present.
340<P>
341The following options are available for customization in these files:
342<DL><DL>
343<DT><TT>peakinfo(flag<i>n</i>)</TT><DD>
344These variables define if peak positions will be shown
345for reflections in phase "<i>n</i>". Reflections will be shown if
346the value is non-zero.
347
348<DT><TT>peakinfo(color<i>n</i>)</TT><DD>
349These variables define the default colors for
350reflections in phase "<i>n</i>"
351
352<DT><TT>peakinfo(dashes<i>n</i>)</TT><DD>
353These variables define if peaks will be dashed for
354reflections in phase "<i>n</i>" (UNIX only). Lines will be dashed if
355the value is non-zero.
356
357<DT><TT>peakinfo(min<i>n</i>) and peakinfo(max<i>n</i>)</TT><DD>
358These variables dictate the placement vertical position for reflection
359markers, when manually placed (see expgui(autotick), below). To draw
360to the edge of the screen, use -Inf and Inf.
361</DL></DL>
362
363The following variables are written to <tt>.gsas_config</tt> when
364"Save Options" is used. These variables are all set from the GUI and therefore
365do not need to be edited manually.
366
367<DL><DL>
368<DT><TT>graph(printout)</TT><DD>
369This is set to 1 if PostScript files
370will be printed and 0 if they will be written to disk (for Windows all
371files should be written to disk).
372
373<DT><TT>graph(outname)</TT><DD>
374This is the default for the file name used
375when PostScript files will be written to disk.
376
377<DT><TT>graph(outcmd)</TT><DD>
378This is the default for the command used
379to print PostScript files (Unix only).
380
381<DT><TT>graph(legend)</TT><DD>
382Sets the default value for display of the legend in liveplot and widplt.
383
384<DT><TT>peakinfo(obssym)</TT><DD>
385Symbol for observed data points. Valid choices are square, circle, diamond,
386plus, cross, splus and scross.
387
388<DT><TT>peakinfo(obssize)</TT><DD>
389Size for the symbol for observed data points. A value of 1 corresponds to about 1/8 inch
390(about 3 mm).
391
392<DT><TT>expgui(pixelregion)</TT><DD>
393When hkl values are loaded (using tcldump) and reflections are labeled, reflections
394can be labeled using a Shift-Left-Mouse click. All labeled reflections within expgui(pixelregion)
395pixels of the mouse position are assumed to be overlapped and are labeled.
396
397<DT><TT>expgui(fadetime)</TT><DD>
398The time in seconds before reflection labels are removed. A value of zero means that reflections
399must be deleted manually (Shift-Right-Mouse).
400
401<DT><TT>expgui(lblfontsize)</TT><DD>
402A size for reflections labels in pixels.
403
404<DT><TT>expgui(hklbox)</TT><DD>
405If this variable is non-zero, reflection indices are shown in a box.
406
407<DT><TT>expgui(autotick)</TT><DD>
408If this variable is non-zero, reflection markers positions are
409set automatically.
410</DL></DL>
411
412<P>
413<B>Using TCLDUMP with LIVEPLOT.</B>
414LIVEPLOT works with the standard GSAS program HSTDMP, but it works faster and is more
415powerful when used with the TCLDUMP program. Instructions for downloading this file can
416be found in the installation notes for
417<A HREF="expgui_Win_readme.html">
418Windows</A> and
419<A HREF="expgui_Unix_readme.html">
420UNIX</A>. Note that as of the April 2000 releases, GSAS is now distributed
421with TCLDUMP.
422<P>
423<B>Combining CMPR and LIVEPLOT.</B>
424If you have <A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/cmpr.html">CMPR</A>
425installed on your computer, you can use superimpose on the GSAS results
426the peaks for an arbitrary unit cell. If desired, space group extinctions
427can even be shown.
428This is pretty neat! To enable this feature, you must have a version
429of CMPR downloaded after 4 May 1998
430<A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/cmpr.html">
431(see the CMPR installation instructions.)</A>
432For UNIX, create a link from in the expgui
433directory to file cellgen.tcl in the CMPR directory. For example:
434<PRE>
435         ln -s /usr/local/cmpr/cellgen.tcl /usr/local/gsas/expgui/cellgen.tcl
436</PRE>
437For Windows, copy all the CMPR .tcl and .exe files into the expgui directory.
438<P>
439<B>Combining LOGIC and LIVEPLOT</B>
440If you have <A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/logic.html">LOGIC</A>
441installed on your computer, you can superimpose peaks
442for a entry from the ICDD/JCPDS database on a pattern in LIVEPLOT.
443This is also pretty neat!
444To enable this feature, you must have
445a version of LOGIC downloaded after 4 May 1998
446<A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/logic.html">
447(see the LOGIC installation instructions.)</A>
448For UNIX, create a link from in the GSAS GUI
449directory to file icddcmd.tcl in the LOGIC directory. For example:
450<PRE>
451         ln -s /usr/local/powdersuite/icddcmd.tcl /usr/local/gsas/tcl/icddcmd.tcl
452</PRE>
453For Windows, copy all the LOGIC files into the expgui directory.
454<HR>
455<H3>WIDPLT</H3>
456The widplt script is used to display the FWHM for one or more histograms
457from a .EXP file.
458At this point it only works for CW data.
459It is often convenient to add for reference the expected
460instrumental curves as options to the menu. This can be done by creating a
461file called widplot_<i>name</i>. For example, renaming the
462<tt>example_widplt_BT1</tt> file supplied with the distribution to
463<tt>widplt_BT1</tt> will cause the FWHM curves for the NIST BT-1 instrument
464to be added to the menu of defined FWHM values.
465<P>
466Creating such a file is easy. To add a entry define the following
467five array elements using a single, unique element name and then append that
468element name to variable datalist.
469Define
470<PRE>
471    set UVWP(Ge15) {398.5 -343.2  163.0 0}
472    set XY(Ge15) {0 0}
473    set wave(Ge15) 2.0775
474    set lblarr(Ge15) "BT-1 Ge(311) 15'"
475    set ttrange(Ge15) "5 160"
476    lappend datalist Ge15
477</PRE>
478Array element UVWP(item) contains the (Gaussian) GU, GV, GW and GP values,
479while XY(item) contains the (Lorentzian) LX and LY terms. Array element
480wave(item) contains a wavelength, array element lblarr(item) contains
481the text to be shown on the "Plot Contents" menu and ttrange(item)
482defines the range the function is valid.
483<P>
484The following variables are written to <tt>.gsas_config</tt> when
485"Save Options" is used. These variables are all set from the GUI and therefore
486do not need to be edited manually.
487
488<DL><DL>
489<DT><TT>graph(printout)</TT><DD>
490This is set to 1 if PostScript files
491will be printed and 0 if they will be written to disk (for Windows all
492files should be written to disk).
493
494<DT><TT>graph(outname)</TT><DD>
495This is the default for the file name used
496when PostScript files will be written to disk.
497
498<DT><TT>graph(outcmd)</TT><DD>
499This is the default for the command used
500to print PostScript files (Unix only).
501
502<DT><TT>graph(legend)</TT><DD>
503Sets the default value for display of the legend in liveplot and widplt.
504
505<DT><TT>graph(plotunits)</TT><DD>
506Sets the units used for displaying the data. Values are "d", "q", "",
507for d-space, Q and 2-theta, respectively.
508<DT><TT>graph(equivwave)</TT><DD>
509Sets the wavelength used for displaying data, if blank, no conversion is
510done and data are shown in their original wavelength.
511</DL></DL>
512
513<hr>
514<a name="Customizing"><H2>
515Customizing Example 1: Adding a new button to the button bar
516</H2></A>
517When a LeBail extraction is used to refine lattice constants, profile
518terms, ... It is always a good idea to run GENLES a few times after running
519POWPREF. This is because GENLES sets the extracted intensities back to their
520crystallographic values, during the first GENLES cycle after POWPREF has been
521run. Refining anything until the extracted intensities return to reasonable
522values is a really bad idea. Forturnately, running GENLES with the number of
523cycles set to zero gives the Le Bail extraction a head start.
524<P>
525The code below can be used to define a new command, <tt>leBail</tt>. The first
526command adds a command to the button bar and the second one defines what will
527be done when it is invoked (the number of cycles is set to zero and
528GENLES is run three times). It also defines the help entry. Note that commands must start with a lower case letter even though Armel LeBail's last name
529does not.
530
531<PRE>
532    lappend expgui(buttonlist) leBail
533    set expgui_cmdlist(leBail) {
534        {set entryvar(cycles) 0; runGSASwEXP "genles genles genles"}
535        {Converges GENLES with LeBail extractions;
536          Sets the number of cycles to zero and runs GENLES 3 times.}
537    }
538
539</PRE>
540To make this customization, put the above in the <TT>localconfig</TT> 
541file or the
542<TT>~/.gsas_config</TT> or (or <TT>C:\GSAS\EXPGUI\.gsas_config</TT>)
543file.
544<hr>
545<H2>
546Customizing Example 2: Putting DISAGL Results in a Separate Box
547</H2>
548Barbara Reisner has been asking me to put the output from DISAGL in a separate
549window. Sounds like a pretty reasonable request. Here is an example with code
550to do that as a customization option. Please note that this has now been
551incorporated into EXPGUI, so do not use this example.
552<PRE>
553  set expgui(disaglSeparateBox) 1
554  set expgui_cmdlist(disagl) {rundisagl {Hacked Distance/angle calculations}}
555  proc rundisagl {} {
556    global expgui txtvw tcl_version tcl_platform
557    if {$expgui(disaglSeparateBox) && $tcl_platform(platform) != "windows"} {
558        set root [file root $expgui(expfile)]
559        catch {file rename $root.LST $root.OLS}
560        runGSASwEXP disagl
561        catch {file rename $root.LST $root.DIS}
562        catch {file rename $root.OLS $root.LST}
563
564        # open a new window
565        catch {toplevel .disagl}
566        catch {eval grid forget [grid slaves .disagl]}
567        text .disagl.txt -width 100 -wrap none \
568                -yscrollcommand ".disagl.yscroll set" \
569                -xscrollcommand ".disagl.xscroll set"
570        if {$tcl_version >= 8.0} {.disagl.txt config -font $txtvw(font)}
571        scrollbar .disagl.yscroll -command ".disagl.txt yview"
572        scrollbar .disagl.xscroll -command ".disagl.txt xview" -orient horizontal
573        grid .disagl.xscroll -column 0 -row 2 -sticky ew
574        grid .disagl.txt -column 0 -row 1 -sticky nsew
575        grid .disagl.yscroll -column 1 -row 1 -sticky ns
576        grid columnconfigure .disagl 0 -weight 1
577        grid rowconfigure .disagl 1 -weight 1
578        wm title .disagl "DISAGL results $expgui(expfile)"
579        wm iconname .disagl "DISAGL $root"
580        set in [open $root.DIS r]
581        .disagl.txt insert end [read $in]
582        close $in
583        bind all <Control-KeyPress-c> {destroy .disagl}
584        bind .disagl <KeyPress-Prior> ".disagl.txt yview scroll -1 page"
585        bind .disagl <KeyPress-Next> ".disagl.txt yview scroll 1 page"
586        bind .disagl <KeyPress-Right> ".disagl.txt xview scroll 1 unit"
587        bind .disagl <KeyPress-Left> ".disagl.txt xview scroll -1 unit"
588        bind .disagl <KeyPress-Up> ".disagl.txt yview scroll -1 unit"
589        bind .disagl <KeyPress-Down> ".disagl.txt yview scroll 1 unit"
590        bind .disagl <KeyPress-Home> ".disagl.txt yview 0"
591        bind .disagl <KeyPress-End> ".disagl.txt yview end"
592        # don't disable in Win as this prevents the highlighting of selected text
593        if {$tcl_platform(platform) != "windows"} {
594            .disagl.txt config -state disabled
595        }
596    } else {
597        runGSASwEXP disagl
598    }
599  }
600
601if {$tcl_platform(platform) != "windows"} {
602  append expgui(initstring) {
603      $expgui(fm).option.menu add checkbutton  -label "DISAGL window" \
604              -variable expgui(disaglSeparateBox) -underline 0;
605  }
606}
607
608</PRE>
609To make this customization, put the above in the <TT>localconfig</TT> 
610file or the
611<TT>~/.gsas_config</TT> or (or <TT>C:\GSAS\EXPGUI\.gsas_config</TT>)
612file.
613<P>
614Note that the <tt>expgui(initstring)</tt> option became available in EXPGUI
615version 1.21. (Previous versions will ignore this). This code must be executed
616after all the menus and other GUI code has been run. When executed, it
617creates a checkbutton on the Options menu to
618turn the "separate DISAGL window mode" mode on and off.
619
620<hr><H2>
621Customizing Example 3: Adding a new page to EXPGUI
622</H2>
623The steps for creating support for additional functionality, implementation
624of atom constraints, is outlined here. Routines described here can be found in
625file <tt>atomcons.tcl</tt> unless otherwise noted.
626<OL>
627<LI>Create a routine to read and write the appropriate records
628from the .EXP file. In this case, a new routine, constrinfo,
629was added to file <tt>readexp.tcl</tt>.
630This takes considerable care and manual testing.
631<LI>Create a routine that places the appropriate widgets into a frame
632(in this case MakeAtomsConstraintsPane). This routine will be called only once.
633Note that in this example expcons(atommaster) is defined to be the name of the
634frame.
635<LI>Create a routine to display and edit the information shown in the
636frame. In this case, DisplayAtomConstraints. This routine will be called each
637time the page is displayed. Note that this routine and the previous can be
638tested in a separate toplevel until they work well.
639<LI>In this particular example, the previous frame is located on a notebook
640widget that in turn placed on a notebook page, so MakeConstraintsPane is used
641to create this inner notebook when the "Constraints" notebook page is first
642shown. This in turn calls MakeAtomsConstraintsPane and DisplayAtomConstraints.
643To update this page each time it is displayed, DisplayConstraintsPane is
644called.
645<LI>Edit file <tt>expgui</tt> to make the following changes:
646<UL>
647<P><LI>load the <tt>atomcons.tcl</tt> file:
648<PRE>
649# commands for constraints
650source [file join $expgui(scriptdir) atomcons.tcl]
651</PRE>
652<P><LI>Define a notebook page for the option. The -createcmd option
653is used only once, but the -raisecmd option is used every time
654the page is exposed.
655<PRE>
656set expgui(consFrame) [\
657            .n insert end consPane -text Constraints \
658            -raisecmd "set expgui(pagenow) consFrame; DisplayConstraintsPane"\
659            -createcmd MakeConstraintsPane]
660lappend expgui(frameactionlist) "consFrame DisplayConstraintsPane"
661</PRE>
662Note that if we were displaying the atoms constraint page directly on
663the main notebook widget, the previous command would have been
664<tt>-raisecmd DisplayAtomConstraints -createcmd MakeAtomsConstraintsPane</tt>
665<P>
666Since the frame will need to be updated when information in the .EXP file
667changes, the name of the frame and a command to execute are added into list
668expgui(frameactionlist) using the <TT>lappend expgui(frameactionlist)</TT>
669command.
670</PRE>
671</UL>
672</OL>
673<hr>
674<TABLE BORDER BGCOLOR="#FFFF40" ALIGN=RIGHT>
675<TR><TH><A  Href="expgui.html">EXPGUI top</A> 
676</TH></TR></TABLE><BR CLEAR=ALL>
677
678<A Href="http://www.ncnr.nist.gov/programs/crystallography/software/gsas.html">
679GSAS</A>
680is written by Allen C. Larson and <A HREF="http://www.nist.gov/cgi-bin/exit_nist.cgi?url=http://lansce.lanl.gov/lujan/staff12/vondreele.htm">
681Robert B. Von Dreele</A>, MS-H805,
682Los Alamos National Laboratory, Los Alamos, NM 87545. Problems, questions
683or kudos concerning GSAS should be sent to Robert B. Von Dreele at <A HREF="MAILTO:vondreele@lanl.gov">vondreele@lanl.gov</A>
684
685<P>This GUI is written by Brian H. Toby of the NIST Center for Neutron Research,
686<A HREF="MAILTO:Brian.Toby@NIST.GOV">Brian.Toby@NIST.GOV</A>.
687
688<P>GSAS is Copyright, 1984-1997, The Regents of the University of California.
689The GSAS software was produced under a U.S. Government contract (W-7405-ENG-36)
690by the Los Alamos National Laboratory, which is operated by the University
691of California for the U.S. Department of Energy. The U.S. Government is
692licensed to use, reproduce, and distribute this software. Permission is
693granted to the public to copy and use this software without charge, provided
694that this notice and any statement of authorship are reproduced on all
695copies. Neither the Government nor the University makes any warranty, express
696or implied, or assumes any liability or responsibility for the use of this
697software.
698
699<P>The GUI is not subject to copyright. Have fun.
700
701<P>Brian Toby (<A HREF="MAILTO:Brian.Toby@NIST.GOV">Brian.Toby@NIST.GOV)</A>
702<BR>
703$Revision: 314 $ $Date: 2009-12-04 23:03:59 +0000 (Fri, 04 Dec 2009) $
704</BODY>
705</HTML>
Note: See TracBrowser for help on using the repository browser.