summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Lib/idlelib/PyShell.py17
-rw-r--r--Lib/idlelib/config-highlight.def4
-rw-r--r--Lib/idlelib/configDialog.py41
-rw-r--r--Lib/idlelib/configHandler.py11
4 files changed, 56 insertions, 17 deletions
diff --git a/Lib/idlelib/PyShell.py b/Lib/idlelib/PyShell.py
index e2b545b..f349bd6 100644
--- a/Lib/idlelib/PyShell.py
+++ b/Lib/idlelib/PyShell.py
@@ -43,6 +43,7 @@ from ColorDelegator import ColorDelegator
from UndoDelegator import UndoDelegator
from OutputWindow import OutputWindow, OnDemandOutputWindow
from IdleConf import idleconf
+from configHandler import idleConf
import idlever
# We need to patch linecache.checkcache, because we don't want it
@@ -141,15 +142,15 @@ class ModifiedColorDelegator(ColorDelegator):
ColorDelegator.recolorize_main(self)
tagdefs = ColorDelegator.tagdefs.copy()
- cconf = idleconf.getsection('Colors')
-
+ theme = idleConf.GetOption('main','Theme','name')
tagdefs.update({
- "stdin": cconf.getcolor("stdin"),
- "stdout": cconf.getcolor("stdout"),
- "stderr": cconf.getcolor("stderr"),
- "console": cconf.getcolor("console"),
- "ERROR": cconf.getcolor("ERROR"),
- None: cconf.getcolor("normal"),
+
+ "stdin": idleConf.GetHighlight(theme, "stdin"),
+ "stdout": idleConf.GetHighlight(theme, "stdout"),
+ "stderr": idleConf.GetHighlight(theme, "stderr"),
+ "console": idleConf.GetHighlight(theme, "console"),
+ "ERROR": idleConf.GetHighlight(theme, "error"),
+ None: idleConf.GetHighlight(theme, "normal"),
})
diff --git a/Lib/idlelib/config-highlight.def b/Lib/idlelib/config-highlight.def
index a2d3b56..83c9807 100644
--- a/Lib/idlelib/config-highlight.def
+++ b/Lib/idlelib/config-highlight.def
@@ -21,7 +21,7 @@ break-fontStyle= normal
hit-background= #000000
hit-foreground= #ffffff
hit-fontStyle= normal
-cursor-background= black
+cursor-foreround= black
error-background= #ff7777
#shell window
stdout-foreground= blue
@@ -48,7 +48,7 @@ hilite-background= #006868
break-foreground= #ff7777
hit-background= #000000
hit-foreground= #ffffff
-cursor-background= black
+cursor-foreground= black
error-background= #ff7777
#shell window
stdout-foreground= blue
diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py
index 84663f6..388a21c 100644
--- a/Lib/idlelib/configDialog.py
+++ b/Lib/idlelib/configDialog.py
@@ -320,10 +320,11 @@ class ConfigDialog(Toplevel):
('#to choose items','comment'),('\n','normal'),('def','keyword'),
(' ','normal'),('func','definition'),('(param):','normal'),
('\n ','normal'),('"""string"""','string'),('\n var0 = ','normal'),
- ("'string'",'string'),('\n var1 = ','normal'),("'selected'",'selected'),('\n var2 = ','normal'),
- ("'found'",'found'),('\n\n','normal'),(' error ','error'),
- ('cursor |','cursor'),('\n ','normal'),('shell','shfg'),(' ','normal'),('stdout','shstdout'),(' ','normal'),
- ('stderr','shstderr'))
+ ("'string'",'string'),('\n var1 = ','normal'),("'selected'",'selected'),
+ ('\n var2 = ','normal'),("'found'",'found'),('\n\n','normal'),
+ (' error ','error'),(' ','normal'),('cursor |','cursor'),
+ ('\n ','normal'),('shell','shfg'),(' ','normal'),('stdout','shstdout'),
+ (' ','normal'),('stderr','shstderr'),('\n','normal'))
for txTa in textAndTags:
text.insert(END,txTa[0],txTa[1])
for element in self.themeElements.keys():
@@ -535,8 +536,36 @@ class ConfigDialog(Toplevel):
return frame
def PaintThemeSample(self):
- pass
-
+ if self.themeBuiltin.get: #a default theme
+ theme=self.builtinTheme.get()
+ else: #a user theme
+ theme=self.customTheme.get()
+ colours=idleConf.GetHighlight(theme, 'normal')
+ #normalBg=colours['background']
+ apply(self.textHighlightSample.tag_config,('normal',),colours)
+ colours=idleConf.GetHighlight(theme, 'keyword')
+ apply(self.textHighlightSample.tag_config,('keyword',),colours)
+ colours=idleConf.GetHighlight(theme, 'comment')
+ apply(self.textHighlightSample.tag_config,('comment',),colours)
+ colours=idleConf.GetHighlight(theme, 'definition')
+ apply(self.textHighlightSample.tag_config,('definition',),colours)
+ colours=idleConf.GetHighlight(theme, 'string')
+ apply(self.textHighlightSample.tag_config,('string',),colours)
+ colours=idleConf.GetHighlight(theme, 'hilite')
+ apply(self.textHighlightSample.tag_config,('selected',),colours)
+ colours=idleConf.GetHighlight(theme, 'hit')
+ apply(self.textHighlightSample.tag_config,('found',),colours)
+ colours=idleConf.GetHighlight(theme, 'cursor')
+ apply(self.textHighlightSample.tag_config,('cursor',),colours)
+ colours=idleConf.GetHighlight(theme, 'error')
+ apply(self.textHighlightSample.tag_config,('error',),colours)
+ colours=idleConf.GetHighlight(theme, 'console')
+ apply(self.textHighlightSample.tag_config,('shfg',),colours)
+ colours=idleConf.GetHighlight(theme, 'stdout')
+ apply(self.textHighlightSample.tag_config,('shstdout',),colours)
+ colours=idleConf.GetHighlight(theme, 'stderr')
+ apply(self.textHighlightSample.tag_config,('shstderr',),colours)
+
def LoadFontCfg(self):
##base editor font selection list
fonts=list(tkFont.families(self))
diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py
index e32c6e6..4539627 100644
--- a/Lib/idlelib/configHandler.py
+++ b/Lib/idlelib/configHandler.py
@@ -5,7 +5,7 @@
##
##---------------------------------------------------------------------------##
"""
-Provides access to configuration information
+Provides access to stored idle configuration information
"""
import os
@@ -153,8 +153,17 @@ class IdleConf:
return cfgParser.sections()
def GetHighlight(self, theme, element):
+ #get some fallback defaults
+ defaultFg=self.GetOption('highlight', theme, 'normal' + "-foreground",
+ default='#000000')
+ defaultBg=self.GetOption('highlight', theme, 'normal' + "-background",
+ default='#ffffff')
+ #try for requested element colours
fore = self.GetOption('highlight', theme, element + "-foreground")
back = self.GetOption('highlight', theme, element + "-background")
+ #fall back if required
+ if not fore: fore=defaultFg
+ if not back: back=defaultBg
return {"foreground": fore,
"background": back}