Commit 0cae01c4 authored by Steven M. Gava's avatar Steven M. Gava

loading core keybindings via new config system plus

further devel of highlight handling
parent c5976405
...@@ -73,11 +73,6 @@ menudefs = [ ...@@ -73,11 +73,6 @@ menudefs = [
]), ]),
] ]
#if sys.platform == 'win32': default_keydefs = idleConf.GetKeys(keySetName=idleConf.CurrentKeys())
# default_keydefs = windows_keydefs
#else:
# default_keydefs = unix_keydefs
default_keydefs = idleConf.GetKeys(keySetName=None)
del sys del sys
...@@ -60,8 +60,8 @@ class ColorDelegator(Delegator): ...@@ -60,8 +60,8 @@ class ColorDelegator(Delegator):
"KEYWORD": idleConf.GetHighlight(theme, "keyword"), "KEYWORD": idleConf.GetHighlight(theme, "keyword"),
"STRING": idleConf.GetHighlight(theme, "string"), "STRING": idleConf.GetHighlight(theme, "string"),
"DEFINITION": idleConf.GetHighlight(theme, "definition"), "DEFINITION": idleConf.GetHighlight(theme, "definition"),
"SYNC": idleConf.GetHighlight(theme, "sync"), "SYNC": {'background':None,'foreground':None},
"TODO": idleConf.GetHighlight(theme, "todo"), "TODO": {'background':None,'foreground':None},
"BREAK": idleConf.GetHighlight(theme, "break"), "BREAK": idleConf.GetHighlight(theme, "break"),
# The following is used by ReplaceDialog: # The following is used by ReplaceDialog:
"hit": idleConf.GetHighlight(theme, "hit"), "hit": idleConf.GetHighlight(theme, "hit"),
......
...@@ -206,7 +206,6 @@ class EditorWindow: ...@@ -206,7 +206,6 @@ class EditorWindow:
if self.extensions.has_key('AutoIndent'): if self.extensions.has_key('AutoIndent'):
self.extensions['AutoIndent'].set_indentation_params( self.extensions['AutoIndent'].set_indentation_params(
self.ispythonsource(filename)) self.ispythonsource(filename))
def set_status_bar(self): def set_status_bar(self):
self.status_bar = self.MultiStatusBar(self.top) self.status_bar = self.MultiStatusBar(self.top)
......
...@@ -42,7 +42,6 @@ from FileList import FileList ...@@ -42,7 +42,6 @@ from FileList import FileList
from ColorDelegator import ColorDelegator from ColorDelegator import ColorDelegator
from UndoDelegator import UndoDelegator from UndoDelegator import UndoDelegator
from OutputWindow import OutputWindow, OnDemandOutputWindow from OutputWindow import OutputWindow, OnDemandOutputWindow
from IdleConf import idleconf
from configHandler import idleConf from configHandler import idleConf
import idlever import idlever
...@@ -143,9 +142,9 @@ class ModifiedColorDelegator(ColorDelegator): ...@@ -143,9 +142,9 @@ class ModifiedColorDelegator(ColorDelegator):
tagdefs = ColorDelegator.tagdefs.copy() tagdefs = ColorDelegator.tagdefs.copy()
theme = idleConf.GetOption('main','Theme','name') theme = idleConf.GetOption('main','Theme','name')
tagdefs.update({
"stdin": idleConf.GetHighlight(theme, "stdin"), tagdefs.update({
"stdin": {'background':None,'foreground':None},
"stdout": idleConf.GetHighlight(theme, "stdout"), "stdout": idleConf.GetHighlight(theme, "stdout"),
"stderr": idleConf.GetHighlight(theme, "stderr"), "stderr": idleConf.GetHighlight(theme, "stderr"),
"console": idleConf.GetHighlight(theme, "console"), "console": idleConf.GetHighlight(theme, "console"),
...@@ -153,7 +152,6 @@ class ModifiedColorDelegator(ColorDelegator): ...@@ -153,7 +152,6 @@ class ModifiedColorDelegator(ColorDelegator):
None: idleConf.GetHighlight(theme, "normal"), None: idleConf.GetHighlight(theme, "normal"),
}) })
class ModifiedUndoDelegator(UndoDelegator): class ModifiedUndoDelegator(UndoDelegator):
# Forbid insert/delete before the I/O mark # Forbid insert/delete before the I/O mark
......
# IDLE reads several config files to determine user preferences. This # IDLE reads several config files to determine user preferences. This
# file is the default config file for idle extensions settings. # file is the default config file for idle extensions settings.
[AutoIndent] [FormatParagraph]
enable=1 enable=1
[AutoExpand] [AutoIndent]
enable=1 enable=1
[FormatParagraph] [AutoExpand]
enable=1 enable=1
[ZoomHeight] [ZoomHeight]
......
...@@ -63,7 +63,7 @@ name= IDLE Classic ...@@ -63,7 +63,7 @@ name= IDLE Classic
[Keys] [Keys]
default= 1 default= 1
name= IDLE Classic - windows name= IDLE Classic Windows
[RecentFiles] [RecentFiles]
1= 1=
......
...@@ -120,8 +120,8 @@ class ConfigDialog(Toplevel): ...@@ -120,8 +120,8 @@ class ConfigDialog(Toplevel):
self.radioBg.config(state=DISABLED) self.radioBg.config(state=DISABLED)
self.fgHilite.set(1) self.fgHilite.set(1)
else: #both fg and bg can be set else: #both fg and bg can be set
self.radioFg.config(state=DISABLED) self.radioFg.config(state=NORMAL)
self.radioBg.config(state=DISABLED) self.radioBg.config(state=NORMAL)
self.fgHilite.set(1) self.fgHilite.set(1)
self.SetColourSample() self.SetColourSample()
...@@ -496,7 +496,7 @@ class ConfigDialog(Toplevel): ...@@ -496,7 +496,7 @@ class ConfigDialog(Toplevel):
colours=idleConf.GetHighlight(theme, self.themeElements[element][0]) colours=idleConf.GetHighlight(theme, self.themeElements[element][0])
if element=='Cursor': #cursor sample needs special painting if element=='Cursor': #cursor sample needs special painting
colours['background']=idleConf.GetHighlight(theme, colours['background']=idleConf.GetHighlight(theme,
'normal-text', fgBg='bg') 'normal', fgBg='bg')
apply(self.textHighlightSample.tag_config, apply(self.textHighlightSample.tag_config,
(self.themeElements[element][0],),colours) (self.themeElements[element][0],),colours)
...@@ -558,11 +558,8 @@ class ConfigDialog(Toplevel): ...@@ -558,11 +558,8 @@ class ConfigDialog(Toplevel):
themeNames=self.themeElements.keys() themeNames=self.themeElements.keys()
themeNames.sort(self.__ThemeNameIndexCompare) themeNames.sort(self.__ThemeNameIndexCompare)
self.optMenuHighlightTarget.SetMenu(themeNames,themeNames[0]) self.optMenuHighlightTarget.SetMenu(themeNames,themeNames[0])
sampleBg=idleConf.GetHighlight(currentOption,
self.highlightTarget.get())['background']
self.fgHilite.set(0)
self.frameColourSet.config(bg=sampleBg)
self.PaintThemeSample() self.PaintThemeSample()
self.SetHighlightTarget()
def __ThemeNameIndexCompare(self,a,b): def __ThemeNameIndexCompare(self,a,b):
if self.themeElements[a][1]<self.themeElements[b][1]: return -1 if self.themeElements[a][1]<self.themeElements[b][1]: return -1
......
...@@ -27,7 +27,6 @@ class IdleConfParser(ConfigParser): ...@@ -27,7 +27,6 @@ class IdleConfParser(ConfigParser):
""" """
Get an option value for given section/option or return default. Get an option value for given section/option or return default.
If type is specified, return as type. If type is specified, return as type.
If a default is returned a warning is printed to stderr.
""" """
if type=='bool': if type=='bool':
getVal=self.getboolean getVal=self.getboolean
...@@ -125,6 +124,7 @@ class IdleConf: ...@@ -125,6 +124,7 @@ class IdleConf:
fallback to a useable passed-in default if the option isn't present in fallback to a useable passed-in default if the option isn't present in
either the user or the default configuration. either the user or the default configuration.
configType must be one of ('main','extensions','highlight','keys') configType must be one of ('main','extensions','highlight','keys')
If a default is returned a warning is printed to stderr.
""" """
if self.userCfg[configType].has_option(section,option): if self.userCfg[configType].has_option(section,option):
return self.userCfg[configType].Get(section, option, type=type) return self.userCfg[configType].Get(section, option, type=type)
...@@ -201,14 +201,14 @@ class IdleConf: ...@@ -201,14 +201,14 @@ class IdleConf:
""" """
Returns the name of the currently active theme Returns the name of the currently active theme
""" """
return self.GetOption('main','Theme','name') return self.GetOption('main','Theme','name',default='')
def CurrentKeys(self): def CurrentKeys(self):
""" """
Returns the name of the currently active theme Returns the name of the currently active theme
""" """
return self.GetOption('main','Keys','name') return self.GetOption('main','Keys','name',default='')
def GetExtensions(self, activeOnly=1): def GetExtensions(self, activeOnly=1):
""" """
...@@ -230,11 +230,21 @@ class IdleConf: ...@@ -230,11 +230,21 @@ class IdleConf:
else: else:
return extns return extns
def GetKeyBinding(self, keySetName, eventStr):
"""
returns the keybinding for a specific event.
keySetName - string, name of key binding set
eventStr - string, the virtual event we want the binding for,
represented as a string, eg. '<<event>>'
"""
eventName=eventStr[2:-2] #trim off the angle brackets
binding=self.GetOption('keys',keySetName,eventName,default='').split()
return binding
def GetKeys(self, keySetName=None): def GetKeys(self, keySetName=None):
""" """
returns the requested keybindings, with fallbacks if required. returns the requested set of keybindings, with fallbacks if required.
""" """
#default keybindings.
#keybindings loaded from the config file(s) are loaded _over_ these #keybindings loaded from the config file(s) are loaded _over_ these
#defaults, so if there is a problem getting any binding there will #defaults, so if there is a problem getting any binding there will
#be an 'ultimate last resort fallback' to the CUA-ish bindings #be an 'ultimate last resort fallback' to the CUA-ish bindings
...@@ -266,9 +276,19 @@ class IdleConf: ...@@ -266,9 +276,19 @@ class IdleConf:
'<<save-window>>': ['<Control-s>'], '<<save-window>>': ['<Control-s>'],
'<<select-all>>': ['<Alt-a>'], '<<select-all>>': ['<Alt-a>'],
'<<toggle-auto-coloring>>': ['<Control-slash>'], '<<toggle-auto-coloring>>': ['<Control-slash>'],
'<<undo>>': ['<Control-z>']} '<<undo>>': ['<Control-z>'],
'<<find-again>>': ['<Control-g>', '<F3>'],
'<<find-in-files>>': ['<Alt-F3>'],
'<<find-selection>>': ['<Control-F3>'],
'<<find>>': ['<Control-f>'],
'<<replace>>': ['<Control-h>'],
'<<goto-line>>': ['<Alt-g>'] }
if keySetName: if keySetName:
pass for event in keyBindings.keys():
binding=self.GetKeyBinding(keySetName,event)
if binding: #otherwise will keep default
keyBindings[event]=binding
return keyBindings return keyBindings
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment