bpo-36396: Remove fgBg param of idlelib.config.GetHighlight() (GH-12491)
This param was only used once and changed the return type.
(cherry picked from commit c1419578a1
)
Co-authored-by: Terry Jan Reedy <tjreedy@udel.edu>
This commit is contained in:
parent
bdb9c497e1
commit
2d7798ad12
|
@ -3,6 +3,11 @@ Released on 2019-??-??
|
|||
======================================
|
||||
|
||||
|
||||
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).
|
||||
|
|
|
@ -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'],
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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',
|
||||
|
|
|
@ -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()
|
||||
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)
|
||||
|
||||
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)
|
||||
|
||||
d.paint_theme_sample = Func()
|
||||
page.paint_theme_sample = Func()
|
||||
|
||||
def test_delete_custom(self):
|
||||
eq = self.assertEqual
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
Remove fgBg param of idlelib.config.GetHighlight(). This param was only used
|
||||
twice and changed the return type.
|
Loading…
Reference in New Issue