]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
get arrow movement, and text updating. also outlining of highlight
authorBarry Warsaw <barry@python.org>
Fri, 13 Feb 1998 21:28:47 +0000 (21:28 +0000)
committerBarry Warsaw <barry@python.org>
Fri, 13 Feb 1998 21:28:47 +0000 (21:28 +0000)
Tools/pynche/StripViewer.py

index be8bb34e71b246fe89d3001972ecddb466e85bfa..980ef801aaa069eca946ae279637e84f980354d2 100644 (file)
@@ -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])