summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTerry Jan Reedy <tjreedy@udel.edu>2016-05-29 05:40:22 (GMT)
committerTerry Jan Reedy <tjreedy@udel.edu>2016-05-29 05:40:22 (GMT)
commit2bac3b778f0a3efe374334b9694e99ed48431414 (patch)
tree828b05f43f97108e3fa1b9435c1ee8e22d74d6ea
parent82069612ec2f1273c7061e099e70bb86bf66e97a (diff)
downloadcpython-2bac3b778f0a3efe374334b9694e99ed48431414.zip
cpython-2bac3b778f0a3efe374334b9694e99ed48431414.tar.gz
cpython-2bac3b778f0a3efe374334b9694e99ed48431414.tar.bz2
Issue #27117: Make colorizer htest and turtledemo work with dark theme.
Factor out code for configuring text widget colors to a new function.
-rw-r--r--Lib/idlelib/colorizer.py25
-rw-r--r--Lib/idlelib/editor.py17
-rw-r--r--Lib/turtledemo/__main__.py5
3 files changed, 31 insertions, 16 deletions
diff --git a/Lib/idlelib/colorizer.py b/Lib/idlelib/colorizer.py
index ca365f7..ec84b81 100644
--- a/Lib/idlelib/colorizer.py
+++ b/Lib/idlelib/colorizer.py
@@ -2,6 +2,7 @@ import time
import re
import keyword
import builtins
+from tkinter import TkVersion
from idlelib.delegator import Delegator
from idlelib.config import idleConf
@@ -32,6 +33,28 @@ def make_pat():
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 @@ class ColorDelegator(Delegator):
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 @@ def _color_delegator(parent): # htest #
text.insert("insert", source)
text.focus_set()
+ color_config(text)
p = Percolator(text)
d = ColorDelegator()
p.insertfilter(d)
diff --git a/Lib/idlelib/editor.py b/Lib/idlelib/editor.py
index 3aa5278..d7d1d16 100644
--- a/Lib/idlelib/editor.py
+++ b/Lib/idlelib/editor.py
@@ -90,7 +90,7 @@ helpDialog = HelpDialog() # singleton instance, no longer used
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 @@ class EditorWindow(object):
# 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 --git a/Lib/turtledemo/__main__.py b/Lib/turtledemo/__main__.py
index 07a1c82..0a58332 100644
--- a/Lib/turtledemo/__main__.py
+++ b/Lib/turtledemo/__main__.py
@@ -89,8 +89,8 @@ import sys
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 @@ help_entries = ( # (help_label, help_doc)
('About turtle module', turtle.__doc__),
)
+
+
class DemoWindow(object):
def __init__(self, filename=None):
@@ -203,6 +205,7 @@ class DemoWindow(object):
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