| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | Pynche - The PYthonically Natural Color and Hue Editor | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-15 01:02:51 +00:00
										 |  |  |  | Contact: Barry A. Warsaw | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  | Email:   bwarsaw@python.org | 
					
						
							| 
									
										
										
										
											2001-08-23 16:15:21 +00:00
										 |  |  |  | Version: 1.3 | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | Introduction | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Pynche is a color editor based largely on a similar program that I | 
					
						
							|  |  |  |  |     originally wrote back in 1987 for the Sunview window system.  That | 
					
						
							|  |  |  |  |     editor was called ICE, the Interactive Color Editor.  I'd always | 
					
						
							|  |  |  |  |     wanted to port this program to X but didn't feel like hacking X | 
					
						
							|  |  |  |  |     and C code to do it.  Fast forward many years, to where Python + | 
					
						
							|  |  |  |  |     Tkinter provides such a nice programming environment, with enough | 
					
						
							|  |  |  |  |     power, that I finally buckled down and re-implemented it.  I | 
					
						
							|  |  |  |  |     changed the name because these days, too many other systems have | 
					
						
							|  |  |  |  |     the acronym `ICE'. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-23 16:15:21 +00:00
										 |  |  |  |     Pynche should work with any variant of Python after 1.5.2 | 
					
						
							|  |  |  |  |     (e.g. 2.0.1 and 2.1.1), using Tk 8.0.x.  It's been tested on | 
					
						
							|  |  |  |  |     Solaris 2.6, Windows NT 4, and various Linux distros.  You'll want | 
					
						
							|  |  |  |  |     to be sure to have at least Tk 8.0.3 for Windows.  Also, Pynche is | 
					
						
							|  |  |  |  |     very colormap intensive, so it doesn't work very well on 8-bit | 
					
						
							|  |  |  |  |     graphics cards; 24bit+ graphics cards are so cheap these days, | 
					
						
							|  |  |  |  |     I'll probably never "fix" that. | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     Pynche must find a text database of colors names in order to | 
					
						
							|  |  |  |  |     provide `nearest' color matching.  Pynche is distributed with an | 
					
						
							|  |  |  |  |     rgb.txt file from the X11R6.4 distribution for this reason, along | 
					
						
							|  |  |  |  |     with other "Web related" database (see below).  You can use a | 
					
						
							|  |  |  |  |     different file with the -d option.  The file xlicense.txt contains | 
					
						
							|  |  |  |  |     the license only for rgb.txt and both files are in the X/ | 
					
						
							|  |  |  |  |     subdirectory. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  |     Pynche is pronounced: Pin'-chee | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Running Standalone | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     On Unix, start it by running the `pynche' script.  On Windows, run | 
					
						
							|  |  |  |  |     pynche.pyw to inhibit the console window.  When run from the | 
					
						
							|  |  |  |  |     command line, the following options are recognized: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     --database file | 
					
						
							|  |  |  |  |     -d file | 
					
						
							|  |  |  |  |         Alternate location of the color database file.  Without this | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |         option, the first valid file found will be used (see below). | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     --initfile file | 
					
						
							|  |  |  |  |     -i file | 
					
						
							|  |  |  |  |         Alternate location of the persistent initialization file.  See  | 
					
						
							|  |  |  |  |         the section on Persistency below. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     --ignore | 
					
						
							|  |  |  |  |     -X | 
					
						
							|  |  |  |  |         Ignore the persistent initialization file when starting up. | 
					
						
							|  |  |  |  |         Pynche will still write the current option settings to the | 
					
						
							|  |  |  |  |         persistent init file when it quits. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     --help | 
					
						
							|  |  |  |  |     -h | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         Print the help message. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     initialcolor | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         a Tk color name or #rrggbb color spec to be used as the | 
					
						
							|  |  |  |  |         initially selected color.  This overrides any color saved in | 
					
						
							|  |  |  |  |         the persistent init file.  Since `#' needs to be escaped in | 
					
						
							|  |  |  |  |         many shells, it is optional in the spec (e.g. #45dd1f is the | 
					
						
							|  |  |  |  |         same as 45dd1f). | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | Running as a Modal Dialog | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     Pynche can be run as a modal dialog, inside another application, | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  |     say as a general color chooser.  In fact, Grail 0.6 uses Pynche | 
					
						
							|  |  |  |  |     and a future version of IDLE may as well.  Pynche supports the API | 
					
						
							|  |  |  |  |     implemented by the Tkinter standard tkColorChooser module, with a | 
					
						
							|  |  |  |  |     few changes as described below.  By importing pyColorChooser from | 
					
						
							|  |  |  |  |     the Pynche package, you can run | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  |         pyColorChooser.askcolor() | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  |     which will popup Pynche as a modal dialog, and return the selected  | 
					
						
							|  |  |  |  |     color. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     There are some UI differences when running as a modal | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     vs. standalone.  When running as a modal, there is no "Quit" menu | 
					
						
							|  |  |  |  |     item under the "File" menu.  Instead there are "Okay" and "Cancel" | 
					
						
							|  |  |  |  |     buttons. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     When "Okay" is hit, askcolor() returns the tuple | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         ((r, g, b), "name") | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     where r, g, and b are red, green, and blue color values | 
					
						
							|  |  |  |  |     respectively (in the range 0 to 255).  "name" will be a color name | 
					
						
							|  |  |  |  |     from the color database if there is an exact match, otherwise it | 
					
						
							|  |  |  |  |     will be an X11 color spec of the form "#rrggbb".  Note that this | 
					
						
							|  |  |  |  |     is different than tkColorChooser, which doesn't know anything | 
					
						
							|  |  |  |  |     about color names. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  |     askcolor() supports the following optional keyword arguments: | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         color | 
					
						
							|  |  |  |  |             the color to set as the initial selected color | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         master[*] | 
					
						
							|  |  |  |  |             the master window to use as the parent of the modal | 
					
						
							|  |  |  |  |             dialog.  Without this argument, pyColorChooser will create  | 
					
						
							|  |  |  |  |             it's own Tkinter.Tk instance as the master.  This may not | 
					
						
							|  |  |  |  |             be what you want. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-27 18:57:00 +00:00
										 |  |  |  |         databasefile | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |             similar to the --database option, the value must be a | 
					
						
							|  |  |  |  |             file name | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         initfile[*] | 
					
						
							|  |  |  |  |             similar to the --initfile option, the value must be a | 
					
						
							|  |  |  |  |             file name | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         ignore[*] | 
					
						
							|  |  |  |  |             similar to the --ignore flag, the value is a boolean | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-27 18:57:00 +00:00
										 |  |  |  |         wantspec | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |             When this is true, the "name" field in the return tuple | 
					
						
							|  |  |  |  |             will always be a color spec of the form "#rrggbb".  It | 
					
						
							|  |  |  |  |             will not return a color name even if there is a match; | 
					
						
							|  |  |  |  |             this is so pyColorChooser can exactly match the API of | 
					
						
							|  |  |  |  |             tkColorChooser. | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  |         [*] these arguments must be specified the first time | 
					
						
							|  |  |  |  |         askcolor() is used and cannot be changed on subsequent calls. | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Colorstrip Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     The top part of the main Pynche window contains the "variation | 
					
						
							|  |  |  |  |     strips".  Each strip contains a number of "color chips".  The | 
					
						
							|  |  |  |  |     strips always indicate the currently selected color by a highlight | 
					
						
							|  |  |  |  |     rectangle around the selected color chip, with an arrow pointing | 
					
						
							|  |  |  |  |     to the chip.  Each arrow has an associated number giving you the | 
					
						
							|  |  |  |  |     color value along the variation's axis.  Each variation strip | 
					
						
							|  |  |  |  |     shows you the colors that are reachable from the selected color by | 
					
						
							|  |  |  |  |     varying just one axis of the color solid. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     For example, when the selected color is (in Red/Green/Blue | 
					
						
							|  |  |  |  |     notation) 127/127/127, the Red Variations strip shows you every | 
					
						
							|  |  |  |  |     color in the range 0/127/127 to 255/127/127.  Similarly for the | 
					
						
							|  |  |  |  |     green and blue axes.  You can select any color by clicking on its | 
					
						
							|  |  |  |  |     chip.  This will update the highlight rectangle and the arrow, as | 
					
						
							|  |  |  |  |     well as other displays in Pynche. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Click on "Update while dragging" if you want Pynche to update the | 
					
						
							|  |  |  |  |     selected color while you drag along any variation strip (this will | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  |     be a bit slower).  Click on "Hexadecimal" to display the arrow | 
					
						
							|  |  |  |  |     numbers in hex. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     There are also two shortcut buttons in this window, which | 
					
						
							|  |  |  |  |     auto-select Black (0/0/0) and White (255/255/255). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Proof Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     In the lower left corner of the main window you see two larger | 
					
						
							|  |  |  |  |     color chips.  The Selected chip shows you a larger version of the | 
					
						
							|  |  |  |  |     color selected in the variation strips, along with its X11 color | 
					
						
							|  |  |  |  |     specification.  The Nearest chip shows you the closest color in | 
					
						
							| 
									
										
										
										
											2001-08-23 16:15:21 +00:00
										 |  |  |  |     the X11 database to the selected color, giving its X11 color | 
					
						
							|  |  |  |  |     specification, and below that, its X11 color name.  When the | 
					
						
							|  |  |  |  |     Selected chip color exactly matches the Nearest chip color, you | 
					
						
							|  |  |  |  |     will see the color name appear below the color specification for | 
					
						
							|  |  |  |  |     the Selected chip. | 
					
						
							|  |  |  |  |      | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  |     Clicking on the Nearest color chip selects that color.  Color | 
					
						
							|  |  |  |  |     distance is calculated in the 3D space of the RGB color solid and | 
					
						
							|  |  |  |  |     if more than one color name is the same distance from the selected | 
					
						
							|  |  |  |  |     color, the first one found will be chosen. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Note that there may be more than one X11 color name for the same | 
					
						
							|  |  |  |  |     RGB value.  In that case, the first one found in the text database | 
					
						
							|  |  |  |  |     is designated the "primary" name, and this is shown under the | 
					
						
							|  |  |  |  |     Nearest chip.  The other names are "aliases" and they are visible | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     in the Color List Window (see below). | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-08-23 16:15:21 +00:00
										 |  |  |  |     Both the color specifications and color names are selectable for | 
					
						
							|  |  |  |  |     copying and pasting into another window. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Type-in Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     At the lower right of the main window are three entry fields. | 
					
						
							|  |  |  |  |     Here you can type numeric values for any of the three color axes. | 
					
						
							|  |  |  |  |     Legal values are between 0 and 255, and these fields do not allow | 
					
						
							|  |  |  |  |     you to enter illegal values.  You must hit Enter or Tab to select | 
					
						
							|  |  |  |  |     the new color. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Click on "Update while typing" if you want Pynche to select the | 
					
						
							|  |  |  |  |     color on every keystroke (well, every one that produces a legal | 
					
						
							|  |  |  |  |     value!)  Click on "Hexadecimal" to display and enter color values | 
					
						
							|  |  |  |  |     in hex. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | Other Views | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     There are three secondary windows which are not displayed by | 
					
						
							|  |  |  |  |     default.  You can bring these up via the "View" menu on the main | 
					
						
							|  |  |  |  |     Pynche window. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Text Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     The "Text Window" allows you to see what effects various colors | 
					
						
							|  |  |  |  |     have on the standard Tk text widget elements.  In the upper part | 
					
						
							|  |  |  |  |     of the window is a plain Tk text widget and here you can edit the | 
					
						
							|  |  |  |  |     text, select a region of text, etc.  Below this is a button "Track | 
					
						
							|  |  |  |  |     color changes".  When this is turned on, any colors selected in | 
					
						
							|  |  |  |  |     the other windows will change the text widget element specified in | 
					
						
							|  |  |  |  |     the radio buttons below.  When this is turned off, text widget | 
					
						
							|  |  |  |  |     elements are not affected by color selection. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     You can choose which element gets changed by color selection by | 
					
						
							|  |  |  |  |     clicking on one of the radio buttons in the bottom part of this | 
					
						
							|  |  |  |  |     window.  Text foreground and background affect the text in the | 
					
						
							|  |  |  |  |     upper part of the window.  Selection foreground and background | 
					
						
							|  |  |  |  |     affect the colors of the primary selection which is what you see | 
					
						
							|  |  |  |  |     when you click the middle button (depending on window system) and | 
					
						
							|  |  |  |  |     drag it through some text. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     The Insertion is the insertion cursor in the text window, where | 
					
						
							|  |  |  |  |     new text will be inserted as you type.  The insertion cursor only | 
					
						
							|  |  |  |  |     has a background. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Color List Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     The "Color List" window shows every named color in the color name | 
					
						
							|  |  |  |  |     database (this window may take a while to come up).  In the upper | 
					
						
							|  |  |  |  |     part of the window you see a scrolling list of all the color names | 
					
						
							|  |  |  |  |     in the database, in alphabetical order.  Click on any color to | 
					
						
							|  |  |  |  |     select it.  In the bottom part of the window is displayed any | 
					
						
							|  |  |  |  |     aliases for the selected color (those color names that have the | 
					
						
							|  |  |  |  |     same RGB value, but were found later in the text database).  For | 
					
						
							|  |  |  |  |     example, find the color "Black" and you'll see that its aliases | 
					
						
							|  |  |  |  |     are "gray0" and "grey0". | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     If the color has no aliases you'll see "<no aliases>" here.  If you | 
					
						
							|  |  |  |  |     just want to see if a color has an alias, and do not want to select a | 
					
						
							|  |  |  |  |     color when you click on it, turn off "Update on Click". | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Note that the color list is always updated when a color is selected | 
					
						
							|  |  |  |  |     from the main window.  There's no way to turn this feature off.  If | 
					
						
							|  |  |  |  |     the selected color has no matching color name you'll see | 
					
						
							|  |  |  |  |     "<no matching color>" in the Aliases window. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | The Details Window | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     The "Details" window gives you more control over color selection | 
					
						
							|  |  |  |  |     than just clicking on a color chip in the main window.  The row of | 
					
						
							|  |  |  |  |     buttons along the top apply the specified increment and decrement | 
					
						
							|  |  |  |  |     amounts to the selected color.  These delta amounts are applied to | 
					
						
							|  |  |  |  |     the variation strips specified by the check boxes labeled "Move | 
					
						
							|  |  |  |  |     Sliders".  Thus if just Red and Green are selected, hitting -10 | 
					
						
							|  |  |  |  |     will subtract 10 from the color value along the red and green | 
					
						
							|  |  |  |  |     variation only.  Note the message under the checkboxes; this | 
					
						
							|  |  |  |  |     indicates the primary color level being changed when more than one | 
					
						
							|  |  |  |  |     slider is tied together.  For example, if Red and Green are | 
					
						
							|  |  |  |  |     selected, you will be changing the Yellow level of the selected | 
					
						
							|  |  |  |  |     color. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     The "At Boundary" behavior determines what happens when any color | 
					
						
							|  |  |  |  |     variation hits either the lower or upper boundaries (0 or 255) as | 
					
						
							|  |  |  |  |     a result of clicking on the top row buttons: | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     Stop | 
					
						
							|  |  |  |  |         When the increment or decrement would send any of the tied | 
					
						
							|  |  |  |  |         variations out of bounds, the entire delta is discarded. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Wrap Around | 
					
						
							|  |  |  |  |         When the increment or decrement would send any of the tied | 
					
						
							|  |  |  |  |         variations out of bounds, the out of bounds value is wrapped | 
					
						
							|  |  |  |  |         around to the other side.  Thus if red were at 238 and +25 | 
					
						
							|  |  |  |  |         were clicked, red would have the value 7. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     Preserve Distance | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  |         When the increment or decrement would send any of the tied | 
					
						
							|  |  |  |  |         variations out of bounds, all tied variations are wrapped as | 
					
						
							|  |  |  |  |         one, so as to preserve the distance between them.  Thus if | 
					
						
							|  |  |  |  |         green and blue were tied, and green was at 238 while blue was | 
					
						
							|  |  |  |  |         at 223, and +25 were clicked, green would be at 15 and blue | 
					
						
							|  |  |  |  |         would be at 0. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Squash | 
					
						
							|  |  |  |  |         When the increment or decrement would send any of the tied | 
					
						
							|  |  |  |  |         variations out of bounds, the out of bounds variation is set | 
					
						
							|  |  |  |  |         to the ceiling of 255 or floor of 0, as appropriate.  In this | 
					
						
							|  |  |  |  |         way, all tied variations are squashed to one edge or the | 
					
						
							|  |  |  |  |         other. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  |     The top row buttons have the following keyboard accelerators: | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     -25 == Shift Left Arrow | 
					
						
							|  |  |  |  |     -10 == Control Left Arrow | 
					
						
							|  |  |  |  |      -1 == Left Arrow | 
					
						
							|  |  |  |  |      +1 == Right Arrow | 
					
						
							|  |  |  |  |     +10 == Control Right Arrow | 
					
						
							|  |  |  |  |     +25 == Shift Right Arrow | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | Keyboard Accelerators | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     Alt-w in any secondary window dismisses the window.  In the main | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  |     window it exits Pynche (except when running as a modal). | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Alt-q in any window exits Pynche (except when running as a modal). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | Persistency | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Pynche remembers various settings of options and colors between | 
					
						
							|  |  |  |  |     invocations, storing these values in a `persistent initialization | 
					
						
							|  |  |  |  |     file'.  The actual location of this file is specified by the | 
					
						
							|  |  |  |  |     --initfile option (see above), and defaults to ~/.pynche. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     When Pynche exits, it saves these values in the init file, and | 
					
						
							|  |  |  |  |     re-reads them when it starts up.  There is no locking on this | 
					
						
							|  |  |  |  |     file, so if you run multiple instances of Pynche at a time, you | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     may clobber the init file. | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     The actual options stored include | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - the currently selected color | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - all settings of checkbox and radio button options in all windows | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - the contents of the text window, the current text selection and | 
					
						
							|  |  |  |  |       insertion point, and all current text widget element color | 
					
						
							|  |  |  |  |       settings. | 
					
						
							| 
									
										
										
										
											1998-10-06 23:03:22 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  |     - the name of the color database file (but not its contents) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 04:14:24 +00:00
										 |  |  |  |     You can inhibit Pynche from reading the init file by supplying the | 
					
						
							|  |  |  |  |     --ignore option on the command line.  However, you cannot suppress | 
					
						
							|  |  |  |  |     the storing of the settings in the init file on Pynche exit.  If | 
					
						
							|  |  |  |  |     you really want to do this, use /dev/null as the init file, using | 
					
						
							|  |  |  |  |     --initfile. | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:46:25 +00:00
										 |  |  |  | Color Name Database Files | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Pynche uses a color name database file to calculate the nearest | 
					
						
							|  |  |  |  |     color to the selected color, and to display in the Color List | 
					
						
							|  |  |  |  |     view.  Several files are distributed with Pynche, described | 
					
						
							|  |  |  |  |     below.  By default, the X11 color name database file is selected. | 
					
						
							|  |  |  |  |     Other files: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     html40colors.txt -- the HTML 4.0 guaranteed color names | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     websafe.txt -- the 216 "Web-safe" colors that Netscape and MSIE | 
					
						
							|  |  |  |  |     guarantee will not be dithered.  These are specified in #rrggbb | 
					
						
							|  |  |  |  |     format for both values and names | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     webcolors.txt -- The 140 color names that Tim Peters and his | 
					
						
							|  |  |  |  |     sister say NS and MSIE both understand (with some controversy over  | 
					
						
							|  |  |  |  |     AliceBlue). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:50:04 +00:00
										 |  |  |  |     namedcolors.txt -- an alternative set of Netscape colors. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1999-04-26 23:48:17 +00:00
										 |  |  |  |     You can switch between files by choosing "Load palette..." from | 
					
						
							|  |  |  |  |     the "File" menu.  This brings up a standard Tk file dialog. | 
					
						
							|  |  |  |  |     Choose the file you want and then click "Ok".  If Pynche | 
					
						
							|  |  |  |  |     understands the format in this file, it will load the database and  | 
					
						
							|  |  |  |  |     update the appropriate windows.  If not, it will bring up an error  | 
					
						
							|  |  |  |  |     dialog. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  | To Do | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  |     Here's a brief list of things I want to do (some mythical day): | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  |     - Better support for resizing the top level windows | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - More output views, e.g. color solids | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - Have the notion of a `last color selected'; this may require a | 
					
						
							|  |  |  |  |       new output view | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     - Support setting the font in the text view | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2001-07-10 21:37:04 +00:00
										 |  |  |  |     - Support distutils setup.py for installation | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											1998-10-22 19:00:38 +00:00
										 |  |  |  |     I'm open to suggestions! | 
					
						
							| 
									
										
										
										
											1998-12-03 19:49:45 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |  | 
					
						
							|  |  |  |  | Local Variables: | 
					
						
							|  |  |  |  | indent-tabs-mode: nil | 
					
						
							|  |  |  |  | End: |