source: trunk/doc/expgui_cfg.html @ 301

Last change on this file since 301 was 299, checked in by toby, 11 years ago

# on 2000/10/03 23:28:06, toby did:
Add the NIST required ALT= tags to all images

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