summaryrefslogtreecommitdiffstats
path: root/Lib/idlelib
diff options
context:
space:
mode:
Diffstat (limited to 'Lib/idlelib')
-rw-r--r--Lib/idlelib/NEWS.txt5
-rw-r--r--Lib/idlelib/colorizer.py2
-rw-r--r--Lib/idlelib/config.py39
-rw-r--r--Lib/idlelib/configdialog.py2
-rw-r--r--Lib/idlelib/idle_test/test_config.py4
-rw-r--r--Lib/idlelib/idle_test/test_configdialog.py45
6 files changed, 39 insertions, 58 deletions
diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt
index c771dd0..d79d9ce 100644
--- a/Lib/idlelib/NEWS.txt
+++ b/Lib/idlelib/NEWS.txt
@@ -3,6 +3,11 @@ Released on 2019-10-20?
======================================
+bpo-36396: Remove fgBg param of idlelib.config.GetHighlight().
+This param was only used twice and changed the return type.
+
+bpo-23216: IDLE: Add docstrings to search modules.
+
bpo-36176: Fix IDLE autocomplete & calltip popup colors.
Prevent conflicts with Linux dark themes
(and slightly darken calltip background).
diff --git a/Lib/idlelib/colorizer.py b/Lib/idlelib/colorizer.py
index facbef8..db1266f 100644
--- a/Lib/idlelib/colorizer.py
+++ b/Lib/idlelib/colorizer.py
@@ -40,7 +40,7 @@ def color_config(text):
# 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')
+ cursor_color = idleConf.GetHighlight(theme, 'cursor')['foreground']
select_colors = idleConf.GetHighlight(theme, 'hilite')
text.config(
foreground=normal_colors['foreground'],
diff --git a/Lib/idlelib/config.py b/Lib/idlelib/config.py
index 79d988f..aa94d65 100644
--- a/Lib/idlelib/config.py
+++ b/Lib/idlelib/config.py
@@ -34,7 +34,6 @@ import idlelib
class InvalidConfigType(Exception): pass
class InvalidConfigSet(Exception): pass
-class InvalidFgBg(Exception): pass
class InvalidTheme(Exception): pass
class IdleConfParser(ConfigParser):
@@ -283,34 +282,20 @@ class IdleConf:
raise InvalidConfigSet('Invalid configSet specified')
return cfgParser.sections()
- def GetHighlight(self, theme, element, fgBg=None):
- """Return individual theme element highlight color(s).
+ def GetHighlight(self, theme, element):
+ """Return dict of theme element highlight colors.
- fgBg - string ('fg' or 'bg') or None.
- If None, return a dictionary containing fg and bg colors with
- keys 'foreground' and 'background'. Otherwise, only return
- fg or bg color, as specified. Colors are intended to be
- appropriate for passing to Tkinter in, e.g., a tag_config call).
+ The keys are 'foreground' and 'background'. The values are
+ tkinter color strings for configuring backgrounds and tags.
"""
- if self.defaultCfg['highlight'].has_section(theme):
- themeDict = self.GetThemeDict('default', theme)
- else:
- themeDict = self.GetThemeDict('user', theme)
- fore = themeDict[element + '-foreground']
- if element == 'cursor': # There is no config value for cursor bg
- back = themeDict['normal-background']
- else:
- back = themeDict[element + '-background']
- highlight = {"foreground": fore, "background": back}
- if not fgBg: # Return dict of both colors
- return highlight
- else: # Return specified color only
- if fgBg == 'fg':
- return highlight["foreground"]
- if fgBg == 'bg':
- return highlight["background"]
- else:
- raise InvalidFgBg('Invalid fgBg specified')
+ cfg = ('default' if self.defaultCfg['highlight'].has_section(theme)
+ else 'user')
+ theme_dict = self.GetThemeDict(cfg, theme)
+ fore = theme_dict[element + '-foreground']
+ if element == 'cursor':
+ element = 'normal'
+ back = theme_dict[element + '-background']
+ return {"foreground": fore, "background": back}
def GetThemeDict(self, type, themeName):
"""Return {option:value} dict for elements in themeName.
diff --git a/Lib/idlelib/configdialog.py b/Lib/idlelib/configdialog.py
index 5fdaf82..31520a3 100644
--- a/Lib/idlelib/configdialog.py
+++ b/Lib/idlelib/configdialog.py
@@ -1252,7 +1252,7 @@ class HighPage(Frame):
colors = idleConf.GetHighlight(theme, element)
if element == 'cursor': # Cursor sample needs special painting.
colors['background'] = idleConf.GetHighlight(
- theme, 'normal', fgBg='bg')
+ theme, 'normal')['background']
# Handle any unsaved changes to this theme.
if theme in changes['highlight']:
theme_dict = changes['highlight'][theme]
diff --git a/Lib/idlelib/idle_test/test_config.py b/Lib/idlelib/idle_test/test_config.py
index 169d054..7e2c1fd 100644
--- a/Lib/idlelib/idle_test/test_config.py
+++ b/Lib/idlelib/idle_test/test_config.py
@@ -373,10 +373,6 @@ class IdleConfTest(unittest.TestCase):
eq = self.assertEqual
eq(conf.GetHighlight('IDLE Classic', 'normal'), {'foreground': '#000000',
'background': '#ffffff'})
- eq(conf.GetHighlight('IDLE Classic', 'normal', 'fg'), '#000000')
- eq(conf.GetHighlight('IDLE Classic', 'normal', 'bg'), '#ffffff')
- with self.assertRaises(config.InvalidFgBg):
- conf.GetHighlight('IDLE Classic', 'normal', 'fb')
# Test cursor (this background should be normal-background)
eq(conf.GetHighlight('IDLE Classic', 'cursor'), {'foreground': 'black',
diff --git a/Lib/idlelib/idle_test/test_configdialog.py b/Lib/idlelib/idle_test/test_configdialog.py
index 5472a04..37e8343 100644
--- a/Lib/idlelib/idle_test/test_configdialog.py
+++ b/Lib/idlelib/idle_test/test_configdialog.py
@@ -606,40 +606,35 @@ class HighPageTest(unittest.TestCase):
def test_paint_theme_sample(self):
eq = self.assertEqual
- d = self.page
- del d.paint_theme_sample
- hs_tag = d.highlight_sample.tag_cget
+ page = self.page
+ del page.paint_theme_sample # Delete masking mock.
+ hs_tag = page.highlight_sample.tag_cget
gh = idleConf.GetHighlight
- fg = 'foreground'
- bg = 'background'
# Create custom theme based on IDLE Dark.
- d.theme_source.set(True)
- d.builtin_name.set('IDLE Dark')
+ page.theme_source.set(True)
+ page.builtin_name.set('IDLE Dark')
theme = 'IDLE Test'
- d.create_new(theme)
- d.set_color_sample.called = 0
+ page.create_new(theme)
+ page.set_color_sample.called = 0
# Base theme with nothing in `changes`.
- d.paint_theme_sample()
- eq(hs_tag('break', fg), gh(theme, 'break', fgBg='fg'))
- eq(hs_tag('cursor', bg), gh(theme, 'normal', fgBg='bg'))
- self.assertNotEqual(hs_tag('console', fg), 'blue')
- self.assertNotEqual(hs_tag('console', bg), 'yellow')
- eq(d.set_color_sample.called, 1)
+ page.paint_theme_sample()
+ new_console = {'foreground': 'blue',
+ 'background': 'yellow',}
+ for key, value in new_console.items():
+ self.assertNotEqual(hs_tag('console', key), value)
+ eq(page.set_color_sample.called, 1)
# Apply changes.
- changes.add_option('highlight', theme, 'console-foreground', 'blue')
- changes.add_option('highlight', theme, 'console-background', 'yellow')
- d.paint_theme_sample()
-
- eq(hs_tag('break', fg), gh(theme, 'break', fgBg='fg'))
- eq(hs_tag('cursor', bg), gh(theme, 'normal', fgBg='bg'))
- eq(hs_tag('console', fg), 'blue')
- eq(hs_tag('console', bg), 'yellow')
- eq(d.set_color_sample.called, 2)
+ for key, value in new_console.items():
+ changes.add_option('highlight', theme, 'console-'+key, value)
+ page.paint_theme_sample()
+ for key, value in new_console.items():
+ eq(hs_tag('console', key), value)
+ eq(page.set_color_sample.called, 2)
- d.paint_theme_sample = Func()
+ page.paint_theme_sample = Func()
def test_delete_custom(self):
eq = self.assertEqual