1998-02-10 00:13:06 +00:00
|
|
|
from Tkinter import *
|
1998-02-11 17:11:34 +00:00
|
|
|
import string
|
1998-09-29 19:51:18 +00:00
|
|
|
import re
|
1998-02-10 00:13:06 +00:00
|
|
|
|
1998-09-29 19:51:18 +00:00
|
|
|
class TypeinViewer
|
|
|
|
def __init__(self, switchboard, parent=None):
|
|
|
|
# non-gui ivars
|
|
|
|
self.__sb = switchboard
|
|
|
|
self.__hexp = 0
|
|
|
|
self.__update_white_typing = 0
|
|
|
|
# create the gui
|
|
|
|
self.__frame = Frame(parent)
|
|
|
|
self.__frame.pack()
|
|
|
|
# Red
|
|
|
|
self.__xl = Label(self.__frame, text='Red:')
|
|
|
|
self.__xl.grid(row=0, column=0, sticky=E)
|
|
|
|
self.__x = Entry(self.__frame, width=4)
|
|
|
|
self.__x.grid(row=0, column=1)
|
|
|
|
self.__x.bindtags(self.__x.bindtags() + ('Normalize', 'Update'))
|
|
|
|
self.__x.bind_class('Normalize', '<Key>', self.__normalize)
|
|
|
|
self.__x.bind_class('Update' , '<Key>', self.__update)
|
|
|
|
self.__x.bind('Return', self.__update)
|
|
|
|
self.__x.bind('Tab', self.__update)
|
|
|
|
# Green
|
|
|
|
self.__yl = Label(self.__frame, text='Green:')
|
|
|
|
self.__yl.grid(row=1, column=0, sticky=E)
|
|
|
|
self.__y = Entry(self.__frame, width=4)
|
|
|
|
self.__y.grid(row=1, column=1)
|
|
|
|
self.__y.bindtags(self.__y.bindtags() + ('Normalize', 'Update'))
|
|
|
|
self.__y.bind('Return', self.__update)
|
|
|
|
self.__y.bind('Tab', self.__update)
|
|
|
|
# Blue
|
|
|
|
self.__zl = Label(self.__frame, text='Blue:')
|
|
|
|
self.__zl.grid(row=2, column=0, sticky=E)
|
|
|
|
self.__z = Entry(self.__frame, width=4)
|
|
|
|
self.__z.grid(row=2, column=1)
|
|
|
|
self.__z.bindtags(self.__z.bindtags() + ('Normalize', 'Update'))
|
|
|
|
self.__z.bind('Return', self.__update)
|
|
|
|
self.__z.bind('Tab', self.__update)
|
1998-02-10 00:13:06 +00:00
|
|
|
|
1998-09-29 19:51:18 +00:00
|
|
|
def __normalize(self, event=None):
|
|
|
|
ew = event.widget
|
|
|
|
contents = ew.get()
|
|
|
|
if contents == '':
|
|
|
|
contents = '0'
|
|
|
|
# figure out what the contents value is in the current base
|
|
|
|
try:
|
|
|
|
if self.__hexp:
|
|
|
|
v = string.atoi(contents, 16)
|
|
|
|
else:
|
|
|
|
v = string.atoi(contents)
|
|
|
|
except ValueError:
|
|
|
|
v = None
|
|
|
|
# if value is not legal, delete the last character and ring the bell
|
|
|
|
if v is None or v < 0 or v > 255:
|
|
|
|
contents = contents[:-1]
|
|
|
|
ew.bell()
|
|
|
|
elif self.__hexp:
|
|
|
|
contents = hex(v)
|
|
|
|
else:
|
|
|
|
contents = int(v)
|
|
|
|
ew.delete(0, END)
|
|
|
|
ew.insert(0, contents)
|
1998-02-10 00:13:06 +00:00
|
|
|
|
1998-09-29 19:51:18 +00:00
|
|
|
def __update(self, event=None):
|
|
|
|
redstr = self.__x.get()
|
|
|
|
greenstr = self.__y.get()
|
|
|
|
bluestr = self.__z.get()
|
|
|
|
if self.__hexp:
|
|
|
|
red = string.atoi(redstr, 16)
|
|
|
|
green = string.atoi(greenstr, 16)
|
|
|
|
blue = string.atoi(bluestr, 16)
|
|
|
|
else:
|
|
|
|
red, green, blue = map(string.atoi, (redstr, greenstr, bluestr))
|
|
|
|
self.__sb.update_views(red, green, blue)
|
1998-02-10 00:13:06 +00:00
|
|
|
|
1998-09-29 19:51:18 +00:00
|
|
|
def update_yourself(self, red, green, blue):
|
|
|
|
if self.__hexp:
|
|
|
|
redstr, greenstr, bluestr = map(hex, (red, green, blue))
|
|
|
|
else:
|
|
|
|
redstr, greenstr, bluestr = map(int, (red, green, blue))
|
|
|
|
self.__x.delete(0, END)
|
|
|
|
self.__y.delete(0, END)
|
|
|
|
self.__z.delete(0, END)
|
|
|
|
self.__x.insert(0, redstr)
|
|
|
|
self.__y.insert(0, greenstr)
|
|
|
|
self.__z.insert(0, bluestr)
|