22import re
33import keyword
44import builtins
5+ from tkinter import TkVersion
56from idlelib .delegator import Delegator
67from idlelib .config import idleConf
78
@@ -32,6 +33,28 @@ def make_pat():
3233prog = re .compile (make_pat (), re .S )
3334idprog = re .compile (r"\s+(\w+)" , re .S )
3435
36+ def color_config (text ): # Called from htest, Editor, and Turtle Demo.
37+ '''Set color opitons of Text widget.
38+
39+ Should be called whenever ColorDelegator is called.
40+ '''
41+ # Not automatic because ColorDelegator does not know 'text'.
42+ theme = idleConf .CurrentTheme ()
43+ normal_colors = idleConf .GetHighlight (theme , 'normal' )
44+ cursor_color = idleConf .GetHighlight (theme , 'cursor' , fgBg = 'fg' )
45+ select_colors = idleConf .GetHighlight (theme , 'hilite' )
46+ text .config (
47+ foreground = normal_colors ['foreground' ],
48+ background = normal_colors ['background' ],
49+ insertbackground = cursor_color ,
50+ selectforeground = select_colors ['foreground' ],
51+ selectbackground = select_colors ['background' ],
52+ )
53+ if TkVersion >= 8.5 :
54+ text .config (
55+ inactiveselectbackground = select_colors ['background' ])
56+
57+
3558class ColorDelegator (Delegator ):
3659
3760 def __init__ (self ):
@@ -233,6 +256,7 @@ def removecolors(self):
233256 for tag in self .tagdefs :
234257 self .tag_remove (tag , "1.0" , "end" )
235258
259+
236260def _color_delegator (parent ): # htest #
237261 from tkinter import Toplevel , Text
238262 from idlelib .percolator import Percolator
@@ -247,6 +271,7 @@ def _color_delegator(parent): # htest #
247271 text .insert ("insert" , source )
248272 text .focus_set ()
249273
274+ color_config (text )
250275 p = Percolator (text )
251276 d = ColorDelegator ()
252277 p .insertfilter (d )
0 commit comments