Thanks to visit codestin.com
Credit goes to github.com

Skip to content

Commit 2bac3b7

Browse files
committed
Issue #27117: Make colorizer htest and turtledemo work with dark theme.
Factor out code for configuring text widget colors to a new function.
1 parent 8206961 commit 2bac3b7

3 files changed

Lines changed: 31 additions & 16 deletions

File tree

Lib/idlelib/colorizer.py

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
import re
33
import keyword
44
import builtins
5+
from tkinter import TkVersion
56
from idlelib.delegator import Delegator
67
from idlelib.config import idleConf
78

@@ -32,6 +33,28 @@ def make_pat():
3233
prog = re.compile(make_pat(), re.S)
3334
idprog = 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+
3558
class 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+
236260
def _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)

Lib/idlelib/editor.py

Lines changed: 2 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -90,7 +90,7 @@ def destroy(self, ev=None):
9090

9191
class EditorWindow(object):
9292
from idlelib.percolator import Percolator
93-
from idlelib.colorizer import ColorDelegator
93+
from idlelib.colorizer import ColorDelegator, color_config
9494
from idlelib.undo import UndoDelegator
9595
from idlelib.iomenu import IOBinding, filesystemencoding, encoding
9696
from idlelib import mainmenu
@@ -742,20 +742,7 @@ def ResetColorizer(self):
742742
# Called from self.filename_change_hook and from configdialog.py
743743
self._rmcolorizer()
744744
self._addcolorizer()
745-
theme = idleConf.CurrentTheme()
746-
normal_colors = idleConf.GetHighlight(theme, 'normal')
747-
cursor_color = idleConf.GetHighlight(theme, 'cursor', fgBg='fg')
748-
select_colors = idleConf.GetHighlight(theme, 'hilite')
749-
self.text.config(
750-
foreground=normal_colors['foreground'],
751-
background=normal_colors['background'],
752-
insertbackground=cursor_color,
753-
selectforeground=select_colors['foreground'],
754-
selectbackground=select_colors['background'],
755-
)
756-
if TkVersion >= 8.5:
757-
self.text.config(
758-
inactiveselectbackground=select_colors['background'])
745+
EditorWindow.color_config(self.text)
759746

760747
IDENTCHARS = string.ascii_letters + string.digits + "_"
761748

Lib/turtledemo/__main__.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,8 @@
8989
import os
9090

9191
from tkinter import *
92+
from idlelib.colorizer import ColorDelegator, color_config
9293
from idlelib.percolator import Percolator
93-
from idlelib.colorizer import ColorDelegator
9494
from idlelib.textview import view_text
9595
from turtledemo import __doc__ as about_turtledemo
9696

@@ -123,6 +123,8 @@ def getExampleEntries():
123123
('About turtle module', turtle.__doc__),
124124
)
125125

126+
127+
126128
class DemoWindow(object):
127129

128130
def __init__(self, filename=None):
@@ -203,6 +205,7 @@ def makeTextFrame(self, root):
203205
self.text_frame = text_frame = Frame(root)
204206
self.text = text = Text(text_frame, name='text', padx=5,
205207
wrap='none', width=45)
208+
color_config(text)
206209

207210
self.vbar = vbar = Scrollbar(text_frame, name='vbar')
208211
vbar['command'] = text.yview

0 commit comments

Comments
 (0)