Describe all the new features
This commit is contained in:
parent
a20f6af862
commit
3dd1c39c80
|
@ -2,135 +2,236 @@ Pynche - The PYthonically Natural Color and Hue Editor
|
|||
Copyright (C) 1998 CNRI
|
||||
Author: Barry A. Warsaw <bwarsaw@python.org>
|
||||
|
||||
Pynche is a color editor based largely on a similar program that I
|
||||
originally 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 implemented it. I changed the name because these
|
||||
days, too many other systems have the acronym `ICE'.
|
||||
Introduction
|
||||
|
||||
Pynche has been tested with Python 1.5.1 using Tk 8.0. It probably
|
||||
works with Python 1.5. I've tested it on both Solaris 2.6 and Windows
|
||||
NT. There are some funky things that happen on Windows but I think
|
||||
they are primarily Tk problems. You'll want to be sure to have Tk
|
||||
8.0.3 for Windows. Also, Pynche is very colormap intensive, so it
|
||||
doesn't work very well on 8-bit graphics cards. I'll probably fix
|
||||
that in the future.
|
||||
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'.
|
||||
|
||||
Pynche must find a text database of colors, in the X11 format. Pynche
|
||||
is distributed with an rgb.txt file from the X11R6.4 distribution for
|
||||
this reason, but you can use a different file with the -d option. The
|
||||
file xlicense.txt contains the license only for rgb.txt.
|
||||
Pynche has been tested with Python 1.5.1 using Tk 8.0. It
|
||||
probably works with Python 1.5. I've tested it on both Solaris
|
||||
2.6 and Windows NT. There are some funky things that happen on
|
||||
Windows but I think they are primarily Tk problems. You'll want
|
||||
to be sure to have Tk 8.0.3 for Windows. Also, Pynche is very
|
||||
colormap intensive, so it doesn't work very well on 8-bit graphics
|
||||
cards. I'll probably fix that in the future.
|
||||
|
||||
Pynche is pronounced `Pinch-ee'. Start it by running the `pynche'
|
||||
script. On Windows, run pynche.pyw to inhibit the console window.
|
||||
Pynche must find a text database of colors, in the X11 format.
|
||||
Pynche is distributed with an rgb.txt file from the X11R6.4
|
||||
distribution for this reason, but 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.
|
||||
|
||||
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.
|
||||
Pynche is pronounced `Pinch-ee'.
|
||||
|
||||
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.
|
||||
Running Standalone
|
||||
|
||||
Click on "Update while dragging" if you want Pynche to update the
|
||||
selected color while you drag along any variation strip (this will be
|
||||
slower). Click on "Hexadecimal" to display the arrow numbers in hex.
|
||||
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:
|
||||
|
||||
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 the
|
||||
X11 database to the selected color, giving its X11 color name.
|
||||
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.
|
||||
--database file
|
||||
-d file
|
||||
Alternate location of the color database file. Without this
|
||||
option, the first of /usr/openwin/lib/rgb.txt or X/rgb.txt
|
||||
will be used.
|
||||
|
||||
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 in other
|
||||
Pynche windows.
|
||||
--initfile file
|
||||
-i file
|
||||
Alternate location of the persistent initialization file. See
|
||||
the section on Persistency below.
|
||||
|
||||
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.
|
||||
--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.
|
||||
|
||||
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.
|
||||
--help
|
||||
-h
|
||||
Print the help message.
|
||||
|
||||
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.
|
||||
initialcolor
|
||||
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).
|
||||
|
||||
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.
|
||||
Running as a Modal Dialog
|
||||
|
||||
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.
|
||||
Pynche can be run as a modal dialog, inside another application.
|
||||
It supports the API implemented by the Tkinter standard
|
||||
tkColorChooser module, with a few changes. By importing
|
||||
pyColorChooser from the Pynche package, you can run
|
||||
|
||||
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.
|
||||
pyColorChooser.askcolor(master=window)
|
||||
|
||||
The "Color List" window shows every color in the text database. This
|
||||
is the primary reason why Pynche doesn't work so well on 8-bit
|
||||
screens. 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".
|
||||
where `window' is an Tkinter parent window object. Without the
|
||||
`master' keyword argument, Pynche runs standalone.
|
||||
|
||||
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".
|
||||
There are some UI differences when running as a modal
|
||||
vs. standalone. When running as a modal, there is no "File" menu,
|
||||
but instead there are "Okay" and "Cancel" buttons.
|
||||
|
||||
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.
|
||||
When "Okay" is hit, askcolor() returns the tuple
|
||||
|
||||
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.
|
||||
((r, g, b), "name")
|
||||
|
||||
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:
|
||||
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.
|
||||
|
||||
When the optional keyword `wantspec' is true, a #rrggbb color spec
|
||||
will always be returned instead of a color name.
|
||||
|
||||
askcolor() also supports the following optional keyword arguments
|
||||
which parallel the command line options described above:
|
||||
|
||||
initialcolor
|
||||
|
||||
databasefile
|
||||
similar to the --database option, the value must be a
|
||||
file name
|
||||
|
||||
initfile
|
||||
similar to the --initfile option, the value must be a
|
||||
file name
|
||||
|
||||
ignore
|
||||
similar to the --ignore flag, the value is a boolean
|
||||
|
||||
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
|
||||
be slower). Click on "Hexadecimal" to display the arrow numbers
|
||||
in hex.
|
||||
|
||||
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
|
||||
the X11 database to the selected color, giving its X11 color name.
|
||||
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
|
||||
in other Pynche windows.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
||||
The Color List Window
|
||||
|
||||
The "Color List" window shows every color in the text 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".
|
||||
|
||||
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.
|
||||
|
||||
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:
|
||||
|
||||
Stop
|
||||
When the increment or decrement would send any of the tied
|
||||
|
@ -157,7 +258,7 @@ result of clicking on the top row buttons:
|
|||
way, all tied variations are squashed to one edge or the
|
||||
other.
|
||||
|
||||
The top row buttons have the following keyboard accelerators:
|
||||
The top row buttons have the following keyboard accelerators:
|
||||
|
||||
-25 == Shift Left Arrow
|
||||
-10 == Control Left Arrow
|
||||
|
@ -166,9 +267,37 @@ The top row buttons have the following keyboard accelerators:
|
|||
+10 == Control Right Arrow
|
||||
+25 == Shift Right Arrow
|
||||
|
||||
Other keyboard accelerators:
|
||||
Keyboard Accelerators
|
||||
|
||||
Alt-w in any secondary window dismisses the window. In the main
|
||||
window it exits Pynche.
|
||||
window it exits Pynche (except when running as a modal).
|
||||
|
||||
Alt-q in any window exits Pynche.
|
||||
Alt-q in any window exits Pynche (except when running as a modal).
|
||||
|
||||
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
|
||||
will override the init file.
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
|
|
Loading…
Reference in New Issue