From 2bac3b778f0a3efe374334b9694e99ed48431414 Mon Sep 17 00:00:00 2001 From: Terry Jan Reedy Date: Sun, 29 May 2016 01:40:22 -0400 Subject: Issue #27117: Make colorizer htest and turtledemo work with dark theme. Factor out code for configuring text widget colors to a new function. --- Lib/idlelib/colorizer.py | 25 +++++++++++++++++++++++++ Lib/idlelib/editor.py | 17 ++--------------- Lib/turtledemo/__main__.py | 5 ++++- 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 -- cgit v0.12