diff options
Diffstat (limited to 'Lib/idlelib')
-rw-r--r-- | Lib/idlelib/NEWS.txt | 5 | ||||
-rw-r--r-- | Lib/idlelib/colorizer.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/config.py | 39 | ||||
-rw-r--r-- | Lib/idlelib/configdialog.py | 2 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_config.py | 4 | ||||
-rw-r--r-- | Lib/idlelib/idle_test/test_configdialog.py | 45 |
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 |