bpo-34548: IDLE: use configured theme colors in TextView (GH-9008)

https://bugs.python.org/issue34548
(cherry picked from commit c87d9f406b)

Co-authored-by: Tal Einat <taleinat+github@gmail.com>
This commit is contained in:
Miss Islington (bot) 2018-09-23 06:31:35 -07:00 committed by GitHub
parent c73df53569
commit aeadf59e45
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 12 additions and 9 deletions

View File

@ -31,11 +31,12 @@ def make_pat():
prog = re.compile(make_pat(), re.S) prog = re.compile(make_pat(), re.S)
idprog = re.compile(r"\s+(\w+)", re.S) idprog = re.compile(r"\s+(\w+)", re.S)
def color_config(text): # Called from htest, Editor, and Turtle Demo. def color_config(text):
'''Set color opitons of Text widget. """Set color options of Text widget.
Should be called whenever ColorDelegator is called. If ColorDelegator is used, this should be called first.
''' """
# Called from htest, TextFrame, Editor, and Turtledemo.
# Not automatic because ColorDelegator does not know 'text'. # Not automatic because ColorDelegator does not know 'text'.
theme = idleConf.CurrentTheme() theme = idleConf.CurrentTheme()
normal_colors = idleConf.GetHighlight(theme, 'normal') normal_colors = idleConf.GetHighlight(theme, 'normal')
@ -50,6 +51,7 @@ def color_config(text): # Called from htest, Editor, and Turtle Demo.
inactiveselectbackground=select_colors['background'], # new in 8.5 inactiveselectbackground=select_colors['background'], # new in 8.5
) )
class ColorDelegator(Delegator): class ColorDelegator(Delegator):
def __init__(self): def __init__(self):
@ -285,6 +287,7 @@ def _color_delegator(parent): # htest #
d = ColorDelegator() d = ColorDelegator()
p.insertfilter(d) p.insertfilter(d)
if __name__ == "__main__": if __name__ == "__main__":
from unittest import main from unittest import main
main('idlelib.idle_test.test_colorizer', verbosity=2, exit=False) main('idlelib.idle_test.test_colorizer', verbosity=2, exit=False)

View File

@ -5,6 +5,8 @@ from tkinter import Toplevel, Text
from tkinter.ttk import Frame, Scrollbar, Button from tkinter.ttk import Frame, Scrollbar, Button
from tkinter.messagebox import showerror from tkinter.messagebox import showerror
from idlelib.colorizer import color_config
class TextFrame(Frame): class TextFrame(Frame):
"Display text with scrollbar." "Display text with scrollbar."
@ -18,12 +20,9 @@ class TextFrame(Frame):
super().__init__(parent) super().__init__(parent)
self['relief'] = 'sunken' self['relief'] = 'sunken'
self['height'] = 700 self['height'] = 700
# TODO: get fg/bg from theme.
self.bg = '#ffffff'
self.fg = '#000000'
self.text = text = Text(self, wrap='word', highlightthickness=0, self.text = text = Text(self, wrap='word', highlightthickness=0)
fg=self.fg, bg=self.bg) color_config(text)
self.scroll = scroll = Scrollbar(self, orient='vertical', self.scroll = scroll = Scrollbar(self, orient='vertical',
takefocus=False, command=text.yview) takefocus=False, command=text.yview)
text['yscrollcommand'] = scroll.set text['yscrollcommand'] = scroll.set

View File

@ -0,0 +1 @@
Use configured color theme for read-only text views.