From 35ae864ab779beef364917671365558cc36629a6 Mon Sep 17 00:00:00 2001
From: Barry Warsaw <barry@python.org>
Date: Fri, 13 Feb 1998 21:28:47 +0000
Subject: get arrow movement, and text updating.  also outlining of highlight

---
 Tools/pynche/StripViewer.py | 41 +++++++++++++++++++++++++++++++++++++++--
 1 file changed, 39 insertions(+), 2 deletions(-)

diff --git a/Tools/pynche/StripViewer.py b/Tools/pynche/StripViewer.py
index be8bb34..980ef80 100644
--- a/Tools/pynche/StripViewer.py
+++ b/Tools/pynche/StripViewer.py
@@ -25,6 +25,7 @@ class LeftArrow:
 	text = self._canvas.create_text(
 	    x + self._ARROWWIDTH + 13,
 	    self._ARROWHEIGHT - self._TEXTYOFFSET,
+	    tags=self._TAG,
 	    text='128')
 	return arrow, text
 
@@ -37,6 +38,9 @@ class LeftArrow:
 	deltax = x - self._x()
 	self._canvas.move(self._TAG, deltax, 0)
 
+    def set_text(self, text):
+	self._canvas.itemconfigure(self.__text, text=text)
+
 
 class RightArrow(LeftArrow):
     _TAG = ('rightarrow',)
@@ -50,9 +54,10 @@ class RightArrow(LeftArrow):
 	    width=3.0,
 	    tags=self._TAG)
 	text = self._canvas.create_text(
-	    x - self._ARROWWIDTH - 20,		  # TBD: kludge
+	    x - self._ARROWWIDTH + 15,		  # TBD: kludge
 	    self._ARROWHEIGHT - self._TEXTYOFFSET,
-	    text='128')
+	    text='128',
+	    tags=self._TAG)
 	return arrow, text
 
     def _x(self):
@@ -74,6 +79,7 @@ class StripWidget(Pmw.MegaWidget):
 		   ('chipheight', self._CHIPHEIGHT, Pmw.INITOPT),
 		   ('numchips', self._NUMCHIPS, Pmw.INITOPT),
 		   ('generator', None, Pmw.INITOPT),
+		   ('axis', None, Pmw.INITOPT),
 		   )
 	self.defineoptions(kw, options)
 
@@ -115,18 +121,49 @@ class StripWidget(Pmw.MegaWidget):
 	self.__rightarrow = RightArrow(self.__canvas, chipx)
 
 	self.__generator = self['generator']
+	self.__axis = self['axis']
+	assert self.__axis in (0, 1, 2)
 	self.initialiseoptions(StripWidget)
 
     def __set_color(self):
 	rgbtuple = self['color']
+	red, green, blue = rgbtuple
 	if self.__generator:
 	    i = 0
+	    chip = 0
 	    for t in self.__generator(self.__numchips, rgbtuple):
 		rrggbb = ColorDB.triplet_to_rrggbb(t)
 		self.__canvas.itemconfigure(self.__chips[i],
 					    fill=rrggbb,
 					    outline=rrggbb)
+		tred, tgreen, tblue = t
+		if tred <= red and tgreen <= green and tblue <= blue:
+		    chip = i
 		i = i + 1
+	    # get the arrow's text
+	    coloraxis = rgbtuple[self.__axis]
+	    text = repr(coloraxis)
+
+	    # move the arrow, and set it's text
+	    if coloraxis <= 128:
+		# use the left chip
+		self.__leftarrow.set_text(text)
+		self.__leftarrow.move_to(self.__arrow_x(chip))
+		self.__rightarrow.move_to(-100)
+	    else:
+		# use the right chip
+		self.__rightarrow.set_text(text)
+		self.__rightarrow.move_to(self.__arrow_x(chip))
+		self.__leftarrow.move_to(-100)
+	    # and set the chip's outline
+	    pmwrgb = ColorDB.triplet_to_pmwrgb(rgbtuple)
+	    b = Pmw.Color.rgb2brightness(pmwrgb)
+	    if b <= 0.5:
+		outline = 'white'
+	    else:
+		outline = 'black'
+	    self.__canvas.itemconfigure(self.__chips[chip],
+					outline=outline)
 	
     def __arrow_x(self, chipnum):
 	coords = self.__canvas.coords(self.__chips[chipnum])
-- 
cgit v0.12

