changeset: 101556:c95864a37ee2 user: Terry Jan Reedy date: Sun May 29 01:40:22 2016 -0400 files: Lib/idlelib/colorizer.py Lib/idlelib/editor.py Lib/turtledemo/__main__.py description: Issue #27117: Make colorizer htest and turtledemo work with dark theme. Factor out code for configuring text widget colors to a new function. diff -r 85e6da63d73f -r c95864a37ee2 Lib/idlelib/colorizer.py --- a/Lib/idlelib/colorizer.py Sun May 29 00:56:02 2016 +0000 +++ b/Lib/idlelib/colorizer.py Sun May 29 01:40:22 2016 -0400 @@ -2,6 +2,7 @@ import re import keyword import builtins +from tkinter import TkVersion from idlelib.delegator import Delegator from idlelib.config import idleConf @@ -32,6 +33,28 @@ prog = re.compile(make_pat(), re.S) idprog = re.compile(r"\s+(\w+)", re.S) +def color_config(text): # Called from htest, Editor, and Turtle Demo. + '''Set color opitons of Text widget. + + Should be called whenever ColorDelegator is called. + ''' + # Not automatic because ColorDelegator does not know 'text'. + theme = idleConf.CurrentTheme() + normal_colors = idleConf.GetHighlight(theme, 'normal') + cursor_color = idleConf.GetHighlight(theme, 'cursor', fgBg='fg') + select_colors = idleConf.GetHighlight(theme, 'hilite') + text.config( + foreground=normal_colors['foreground'], + background=normal_colors['background'], + insertbackground=cursor_color, + selectforeground=select_colors['foreground'], + selectbackground=select_colors['background'], + ) + if TkVersion >= 8.5: + text.config( + inactiveselectbackground=select_colors['background']) + + class ColorDelegator(Delegator): def __init__(self): @@ -233,6 +256,7 @@ for tag in self.tagdefs: self.tag_remove(tag, "1.0", "end") + def _color_delegator(parent): # htest # from tkinter import Toplevel, Text from idlelib.percolator import Percolator @@ -247,6 +271,7 @@ text.insert("insert", source) text.focus_set() + color_config(text) p = Percolator(text) d = ColorDelegator() p.insertfilter(d) diff -r 85e6da63d73f -r c95864a37ee2 Lib/idlelib/editor.py --- a/Lib/idlelib/editor.py Sun May 29 00:56:02 2016 +0000 +++ b/Lib/idlelib/editor.py Sun May 29 01:40:22 2016 -0400 @@ -90,7 +90,7 @@ class EditorWindow(object): from idlelib.percolator import Percolator - from idlelib.colorizer import ColorDelegator + from idlelib.colorizer import ColorDelegator, color_config from idlelib.undo import UndoDelegator from idlelib.iomenu import IOBinding, filesystemencoding, encoding from idlelib import mainmenu @@ -742,20 +742,7 @@ # Called from self.filename_change_hook and from configdialog.py self._rmcolorizer() self._addcolorizer() - theme = idleConf.CurrentTheme() - normal_colors = idleConf.GetHighlight(theme, 'normal') - cursor_color = idleConf.GetHighlight(theme, 'cursor', fgBg='fg') - select_colors = idleConf.GetHighlight(theme, 'hilite') - self.text.config( - foreground=normal_colors['foreground'], - background=normal_colors['background'], - insertbackground=cursor_color, - selectforeground=select_colors['foreground'], - selectbackground=select_colors['background'], - ) - if TkVersion >= 8.5: - self.text.config( - inactiveselectbackground=select_colors['background']) + EditorWindow.color_config(self.text) IDENTCHARS = string.ascii_letters + string.digits + "_" diff -r 85e6da63d73f -r c95864a37ee2 Lib/turtledemo/__main__.py --- a/Lib/turtledemo/__main__.py Sun May 29 00:56:02 2016 +0000 +++ b/Lib/turtledemo/__main__.py Sun May 29 01:40:22 2016 -0400 @@ -89,8 +89,8 @@ import os from tkinter import * +from idlelib.colorizer import ColorDelegator, color_config from idlelib.percolator import Percolator -from idlelib.colorizer import ColorDelegator from idlelib.textview import view_text from turtledemo import __doc__ as about_turtledemo @@ -123,6 +123,8 @@ ('About turtle module', turtle.__doc__), ) + + class DemoWindow(object): def __init__(self, filename=None): @@ -203,6 +205,7 @@ self.text_frame = text_frame = Frame(root) self.text = text = Text(text_frame, name='text', padx=5, wrap='none', width=45) + color_config(text) self.vbar = vbar = Scrollbar(text_frame, name='vbar') vbar['command'] = text.yview