source: trunk/doc/expgui_cfg.html @ 408

Last change on this file since 408 was 365, checked in by toby, 11 years ago

# on 2000/12/22 21:14:32, toby did:
document new option: autoraise in liveplot

  • Property rcs:author set to toby
  • Property rcs:date set to 2000/12/22 21:14:32
  • Property rcs:lines set to +9 -1
  • Property rcs:rev set to 1.17
  • Property rcs:state set to Exp
  • Property svn:keywords set to Author Date Revision Id
File size: 29.7 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<br clear=all><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>graph(autoraise)</TT><DD>
385This option shows up in the options menu item as "Raise on update."
386When set to non-zero, the liveplot window is raised
387(placed on top of any other overlapping) windows
388each time it is updated.
389This option does not seem to work in Windows-NT, but this may depend on
390the version of Tcl/Tk.
391
392<DT><TT>peakinfo(obssym)</TT><DD>
393Symbol for observed data points. Valid choices are square, circle, diamond,
394plus, cross, splus and scross.
395
396<DT><TT>peakinfo(obssize)</TT><DD>
397Size for the symbol for observed data points. A value of 1 corresponds to about 1/8 inch
398(about 3 mm).
399
400<DT><TT>expgui(pixelregion)</TT><DD>
401When hkl values are loaded (using tcldump) and reflections are labeled, reflections
402can be labeled using a Shift-Left-Mouse click. All labeled reflections within expgui(pixelregion)
403pixels of the mouse position are assumed to be overlapped and are labeled.
404
405<DT><TT>expgui(fadetime)</TT><DD>
406The time in seconds before reflection labels are removed. A value of zero means that reflections
407must be deleted manually (Shift-Right-Mouse).
408
409<DT><TT>expgui(lblfontsize)</TT><DD>
410A size for reflections labels in pixels.
411
412<DT><TT>expgui(hklbox)</TT><DD>
413If this variable is non-zero, reflection indices are shown in a box.
414
415<DT><TT>expgui(autotick)</TT><DD>
416If this variable is non-zero, reflection markers positions are
417set automatically.
418</DL></DL>
419
420<P>
421<B>Using TCLDUMP with LIVEPLOT.</B>
422LIVEPLOT works with the standard GSAS program HSTDMP, but it works faster and is more
423powerful when used with the TCLDUMP program. Instructions for downloading this file can
424be found in the installation notes for
425<A HREF="expgui_Win_readme.html">
426Windows</A> and
427<A HREF="expgui_Unix_readme.html">
428UNIX</A>. Note that as of the April 2000 releases, GSAS is now distributed
429with TCLDUMP.
430<P>
431<B>Combining CMPR and LIVEPLOT.</B>
432If you have <A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/cmpr.html">CMPR</A>
433installed on your computer, you can use superimpose on the GSAS results
434the peaks for an arbitrary unit cell. If desired, space group extinctions
435can even be shown.
436This is pretty neat! To enable this feature, you must have a version
437of CMPR downloaded after 4 May 1998
438<A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/cmpr.html">
439(see the CMPR installation instructions.)</A>
440For UNIX, create a link from in the expgui
441directory to file cellgen.tcl in the CMPR directory. For example:
442<PRE>
443         ln -s /usr/local/cmpr/cellgen.tcl /usr/local/gsas/expgui/cellgen.tcl
444</PRE>
445For Windows, copy all the CMPR .tcl and .exe files into the expgui directory.
446<P>
447<B>Combining LOGIC and LIVEPLOT</B>
448If you have <A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/logic.html">LOGIC</A>
449installed on your computer, you can superimpose peaks
450for a entry from the ICDD/JCPDS database on a pattern in LIVEPLOT.
451This is also pretty neat!
452To enable this feature, you must have
453a version of LOGIC downloaded after 4 May 1998
454<A HREF="http://www.ncnr.nist.gov/programs/crystallography/software/logic.html">
455(see the LOGIC installation instructions.)</A>
456For UNIX, create a link from in the GSAS GUI
457directory to file icddcmd.tcl in the LOGIC directory. For example:
458<PRE>
459         ln -s /usr/local/powdersuite/icddcmd.tcl /usr/local/gsas/tcl/icddcmd.tcl
460</PRE>
461For Windows, copy all the LOGIC files into the expgui directory.
462<HR>
463<H3>WIDPLT</H3>
464The widplt script is used to display the FWHM for one or more histograms
465from a .EXP file.
466At this point it only works for CW data.
467It is often convenient to add for reference the expected
468instrumental curves as options to the menu. This can be done by creating a
469file called widplot_<i>name</i>. For example, renaming the
470<tt>example_widplt_BT1</tt> file supplied with the distribution to
471<tt>widplt_BT1</tt> will cause the FWHM curves for the NIST BT-1 instrument
472to be added to the menu of defined FWHM values.
473<P>
474Creating such a file is easy. To add a entry define the following
475five array elements using a single, unique element name and then append that
476element name to variable datalist.
477Define
478<PRE>
479    set UVWP(Ge15) {398.5 -343.2  163.0 0}
480    set XY(Ge15) {0 0}
481    set wave(Ge15) 2.0775
482    set lblarr(Ge15) "BT-1 Ge(311) 15'"
483    set ttrange(Ge15) "5 160"
484    lappend datalist Ge15
485</PRE>
486Array element UVWP(item) contains the (Gaussian) GU, GV, GW and GP values,
487while XY(item) contains the (Lorentzian) LX and LY terms. Array element
488wave(item) contains a wavelength, array element lblarr(item) contains
489the text to be shown on the "Plot Contents" menu and ttrange(item)
490defines the range the function is valid.
491<P>
492The following variables are written to <tt>.gsas_config</tt> when
493"Save Options" is used. These variables are all set from the GUI and therefore
494do not need to be edited manually.
495
496<DL><DL>
497<DT><TT>graph(printout)</TT><DD>
498This is set to 1 if PostScript files
499will be printed and 0 if they will be written to disk (for Windows all
500files should be written to disk).
501
502<DT><TT>graph(outname)</TT><DD>
503This is the default for the file name used
504when PostScript files will be written to disk.
505
506<DT><TT>graph(outcmd)</TT><DD>
507This is the default for the command used
508to print PostScript files (Unix only).
509
510<DT><TT>graph(legend)</TT><DD>
511Sets the default value for display of the legend in liveplot and widplt.
512
513<DT><TT>graph(plotunits)</TT><DD>
514Sets the units used for displaying the data. Values are "d", "q", "",
515for d-space, Q and 2-theta, respectively.
516<DT><TT>graph(equivwave)</TT><DD>
517Sets the wavelength used for displaying data, if blank, no conversion is
518done and data are shown in their original wavelength.
519</DL></DL>
520
521<hr>
522<a name="Customizing"><H2>
523Customizing Example 1: Adding a new button to the button bar
524</H2></A>
525When a LeBail extraction is used to refine lattice constants, profile
526terms, ... It is always a good idea to run GENLES a few times after running
527POWPREF. This is because GENLES sets the extracted intensities back to their
528crystallographic values, during the first GENLES cycle after POWPREF has been
529run. Refining anything until the extracted intensities return to reasonable
530values is a really bad idea. Forturnately, running GENLES with the number of
531cycles set to zero gives the Le Bail extraction a head start.
532<P>
533The code below can be used to define a new command, <tt>leBail</tt>. The first
534command adds a command to the button bar and the second one defines what will
535be done when it is invoked (the number of cycles is set to zero and
536GENLES 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
537does not.
538
539<PRE>
540    lappend expgui(buttonlist) leBail
541    set expgui_cmdlist(leBail) {
542        {set entryvar(cycles) 0; runGSASwEXP "genles genles genles"}
543        {Converges GENLES with LeBail extractions;
544          Sets the number of cycles to zero and runs GENLES 3 times.}
545    }
546
547</PRE>
548To make this customization, put the above in the <TT>localconfig</TT> 
549file or the
550<TT>~/.gsas_config</TT> or (or <TT>C:\GSAS\EXPGUI\.gsas_config</TT>)
551file.
552<hr>
553<H2>
554Customizing Example 2: Putting DISAGL Results in a Separate Box
555</H2>
556Barbara Reisner has been asking me to put the output from DISAGL in a separate
557window. Sounds like a pretty reasonable request. Here is an example with code
558to do that as a customization option. Please note that this has now been
559incorporated into EXPGUI, so do not use this example.
560<PRE>
561  set expgui(disaglSeparateBox) 1
562  set expgui_cmdlist(disagl) {rundisagl {Hacked Distance/angle calculations}}
563  proc rundisagl {} {
564    global expgui txtvw tcl_version tcl_platform
565    if {$expgui(disaglSeparateBox) && $tcl_platform(platform) != "windows"} {
566        set root [file root $expgui(expfile)]
567        catch {file rename $root.LST $root.OLS}
568        runGSASwEXP disagl
569        catch {file rename $root.LST $root.DIS}
570        catch {file rename $root.OLS $root.LST}
571
572        # open a new window
573        catch {toplevel .disagl}
574        catch {eval grid forget [grid slaves .disagl]}
575        text .disagl.txt -width 100 -wrap none \
576                -yscrollcommand ".disagl.yscroll set" \
577                -xscrollcommand ".disagl.xscroll set"
578        if {$tcl_version >= 8.0} {.disagl.txt config -font $txtvw(font)}
579        scrollbar .disagl.yscroll -command ".disagl.txt yview"
580        scrollbar .disagl.xscroll -command ".disagl.txt xview" -orient horizontal
581        grid .disagl.xscroll -column 0 -row 2 -sticky ew
582        grid .disagl.txt -column 0 -row 1 -sticky nsew
583        grid .disagl.yscroll -column 1 -row 1 -sticky ns
584        grid columnconfigure .disagl 0 -weight 1
585        grid rowconfigure .disagl 1 -weight 1
586        wm title .disagl "DISAGL results $expgui(expfile)"
587        wm iconname .disagl "DISAGL $root"
588        set in [open $root.DIS r]
589        .disagl.txt insert end [read $in]
590        close $in
591        bind all <Control-KeyPress-c> {destroy .disagl}
592        bind .disagl <KeyPress-Prior> ".disagl.txt yview scroll -1 page"
593        bind .disagl <KeyPress-Next> ".disagl.txt yview scroll 1 page"
594        bind .disagl <KeyPress-Right> ".disagl.txt xview scroll 1 unit"
595        bind .disagl <KeyPress-Left> ".disagl.txt xview scroll -1 unit"
596        bind .disagl <KeyPress-Up> ".disagl.txt yview scroll -1 unit"
597        bind .disagl <KeyPress-Down> ".disagl.txt yview scroll 1 unit"
598        bind .disagl <KeyPress-Home> ".disagl.txt yview 0"
599        bind .disagl <KeyPress-End> ".disagl.txt yview end"
600        # don't disable in Win as this prevents the highlighting of selected text
601        if {$tcl_platform(platform) != "windows"} {
602            .disagl.txt config -state disabled
603        }
604    } else {
605        runGSASwEXP disagl
606    }
607  }
608
609if {$tcl_platform(platform) != "windows"} {
610  append expgui(initstring) {
611      $expgui(fm).option.menu add checkbutton  -label "DISAGL window" \
612              -variable expgui(disaglSeparateBox) -underline 0;
613  }
614}
615
616</PRE>
617To make this customization, put the above in the <TT>localconfig</TT> 
618file or the
619<TT>~/.gsas_config</TT> or (or <TT>C:\GSAS\EXPGUI\.gsas_config</TT>)
620file.
621<P>
622Note that the <tt>expgui(initstring)</tt> option became available in EXPGUI
623version 1.21. (Previous versions will ignore this). This code must be executed
624after all the menus and other GUI code has been run. When executed, it
625creates a checkbutton on the Options menu to
626turn the "separate DISAGL window mode" mode on and off.
627
628<hr><H2>
629Customizing Example 3: Adding a new page to EXPGUI
630</H2>
631The steps for creating support for additional functionality, implementation
632of atom constraints, is outlined here. Routines described here can be found in
633file <tt>atomcons.tcl</tt> unless otherwise noted.
634<OL>
635<LI>Create a routine to read and write the appropriate records
636from the .EXP file. In this case, a new routine, constrinfo,
637was added to file <tt>readexp.tcl</tt>.
638This takes considerable care and manual testing.
639<LI>Create a routine that places the appropriate widgets into a frame
640(in this case MakeAtomsConstraintsPane). This routine will be called only once.
641Note that in this example expcons(atommaster) is defined to be the name of the
642frame.
643<LI>Create a routine to display and edit the information shown in the
644frame. In this case, DisplayAtomConstraints. This routine will be called each
645time the page is displayed. Note that this routine and the previous can be
646tested in a separate toplevel until they work well.
647<LI>In this particular example, the previous frame is located on a notebook
648widget that in turn placed on a notebook page, so MakeConstraintsPane is used
649to create this inner notebook when the "Constraints" notebook page is first
650shown. This in turn calls MakeAtomsConstraintsPane and DisplayAtomConstraints.
651To update this page each time it is displayed, DisplayConstraintsPane is
652called.
653<LI>Edit file <tt>expgui</tt> to make the following changes:
654<UL>
655<P><LI>load the <tt>atomcons.tcl</tt> file:
656<PRE>
657# commands for constraints
658source [file join $expgui(scriptdir) atomcons.tcl]
659</PRE>
660<P><LI>Define a notebook page for the option. The -createcmd option
661is used only once, but the -raisecmd option is used every time
662the page is exposed.
663<PRE>
664set expgui(consFrame) [\
665            .n insert end consPane -text Constraints \
666            -raisecmd "set expgui(pagenow) consFrame; DisplayConstraintsPane"\
667            -createcmd MakeConstraintsPane]
668lappend expgui(frameactionlist) "consFrame DisplayConstraintsPane"
669</PRE>
670Note that if we were displaying the atoms constraint page directly on
671the main notebook widget, the previous command would have been
672<tt>-raisecmd DisplayAtomConstraints -createcmd MakeAtomsConstraintsPane</tt>
673<P>
674Since the frame will need to be updated when information in the .EXP file
675changes, the name of the frame and a command to execute are added into list
676expgui(frameactionlist) using the <TT>lappend expgui(frameactionlist)</TT>
677command.
678</PRE>
679</UL>
680</OL>
681
682<hr><H2>
683Customizing Example 4: Changing the fonts used in the GUI
684</H2>
685<B>Question: </B>
686<I>I use a 19" screen with a resolution 1280x1024. With this resolution, the
687fonts are really small in the GUI. Is a way exist to increase the font size?
688</I>
689<UL>
690<B>Answer: </B>
691The fonts used in EXPGUI can be customized by adding some code to the
692<TT>localconfig</TT> file or the
693<TT>~/.gsas_config</TT> or (or <TT>C:\GSAS\EXPGUI\.gsas_config</TT>) file.
694By default, fonts are 14 point for the menus, buttons, labels,... and
69512 point for the histogram and atom lists.
696<P>
697This code changes those fonts to 18 and 16 point, respectively.
698<UL><PRE>
699option add *Font            -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*-*
700option add *font            -*-helvetica-medium-r-normal-*-18-*-*-*-*-*-*-*
701option add *Menu.font       -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-*-*
702option add *Menubutton.font -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-*-*
703option add *Label.font      -*-helvetica-bold-r-normal-*-18-*-*-*-*-*-*-*
704option add *Scale.font      -*-helvetica-bold-o-normal-*-18-*-*-*-*-*-*-*
705option add *TitleFrame.font -*-helvetica-bold-o-normal-*-18-*-*-*-*-*-*-*
706set expgui(coordfont) "-*-courier-bold-r-normal--16-*"
707set expgui(histfont) "-*-courier-bold-r-normal--16-*"
708</PRE></UL>
709<P>
710A slightly different and perhaps cleaner approach is to specify the font
711sizes in pixels.
712The code below uses font sizes of 18 and 16 pixels, respectively.
713<UL><PRE>
714option add *Font            "Helvetica -18"
715option add *font            "Helvetica -18"
716option add *Menu.font       "Helvetica -18 bold"
717option add *Menubutton.font "Helvetica -18 bold"
718option add *Label.font      "Helvetica -18 bold"
719option add *Scale.font      "Helvetica -18 bold italic"
720option add *TitleFrame.font "Helvetica -18 bold italic"
721set expgui(coordfont) "Courier -16 bold"
722set expgui(histfont)  "Courier -16 bold"
723</PRE></UL>
724It should be noted that the appearance of fonts depends on many factors --
725the fonts installed on your computer, the screen size and resolution and your
726eyes, so it is wise to experiment with different values in the above
727examples.
728</UL>
729<hr>
730<TABLE BORDER BGCOLOR="#FFFF40" ALIGN=RIGHT>
731<TR><TH><A  Href="expgui.html">EXPGUI top</A> 
732</TH></TR></TABLE><BR CLEAR=ALL>
733
734<A Href="http://www.ncnr.nist.gov/programs/crystallography/software/gsas.html">
735GSAS</A>
736is 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">
737Robert B. Von Dreele</A>, MS-H805,
738Los Alamos National Laboratory, Los Alamos, NM 87545. Problems, questions
739or kudos concerning GSAS should be sent to Robert B. Von Dreele at <A HREF="MAILTO:vondreele@lanl.gov">vondreele@lanl.gov</A>
740
741<P>This GUI is written by Brian H. Toby of the NIST Center for Neutron Research,
742<A HREF="MAILTO:Brian.Toby@NIST.GOV">Brian.Toby@NIST.GOV</A>.
743
744<P>GSAS is Copyright, 1984-1997, The Regents of the University of California.
745The GSAS software was produced under a U.S. Government contract (W-7405-ENG-36)
746by the Los Alamos National Laboratory, which is operated by the University
747of California for the U.S. Department of Energy. The U.S. Government is
748licensed to use, reproduce, and distribute this software. Permission is
749granted to the public to copy and use this software without charge, provided
750that this notice and any statement of authorship are reproduced on all
751copies. Neither the Government nor the University makes any warranty, express
752or implied, or assumes any liability or responsibility for the use of this
753software.
754
755<P>The GUI is not subject to copyright. Have fun.
756
757<P>Brian Toby (<A HREF="MAILTO:Brian.Toby@NIST.GOV">Brian.Toby@NIST.GOV)</A>
758<BR>
759$Revision: 365 $ $Date: 2009-12-04 23:04:57 +0000 (Fri, 04 Dec 2009) $
760</BODY>
761</HTML>
Note: See TracBrowser for help on using the repository browser.