import sys from Tkinter import * from pynche import __version__ import ColorDB class TextViewer: def __init__(self, switchboard, parent=None): self.__sb = switchboard root = self.__root = Toplevel(parent, class_='Pynche') root.protocol('WM_DELETE_WINDOW', self.__withdraw) root.title('Pynche %s' % __version__) root.iconname('Pynche Text Window') root.bind('', self.__quit) root.bind('', self.__quit) # # create the text widget # self.__text = Text(root, relief=SUNKEN, background='black', foreground='white', width=35, height=15) self.__text.pack() self.__text.insert(0.0, '''\ Insert some stuff here and play with the buttons below to see how the colors interact in textual displays.''') # # variables self.__trackp = BooleanVar() self.__trackp.set(0) self.__which = IntVar() self.__which.set(4) # # track toggle self.__t = Checkbutton(root, text='Track color changes', variable=self.__trackp, relief=GROOVE) self.__t.pack(fill=X, expand=YES) frame = self.__frame = Frame(root) frame.pack() # # labels self.__labels = [] row = 2 for text in ('Text:', 'Selection:', 'Insertion:'): l = Label(frame, text=text) l.grid(row=row, column=0, sticky=E) self.__labels.append(l) row = row + 1 col = 1 for text in ('Foreground', 'Background'): l = Label(frame, text=text) l.grid(row=1, column=col) self.__labels.append(l) col = col + 1 # # radios self.__radios = [] val = 0 for col in (1, 2): for row in (2, 3, 4): # there is no insertforeground option if row==4 and col==1: continue r = Radiobutton(frame, variable=self.__which, value=(row-2)*2 + col-1) r.grid(row=row, column=col) self.__radios.append(r) def __quit(self, event=None): sys.exit(0) def __withdraw(self, event=None): self.__root.withdraw() def deiconify(self, event=None): self.__root.deiconify() def __forceupdate(self, event=None): self.__sb.update_views_current() def update_yourself(self, red, green, blue): colorname = ColorDB.triplet_to_rrggbb((red, green, blue)) which = self.__which.get() if which == 0: self.__text.configure(foreground=colorname) elif which == 1: self.__text.configure(background=colorname) elif which == 2: self.__text.configure(selectforeground=colorname) elif which == 3: self.__text.configure(selectbackground=colorname) elif which == 5: self.__text.configure(insertbackground=colorname)