loading core keybindings via new config system plus

further devel of highlight handling
This commit is contained in:
Steven M. Gava 2002-01-04 07:53:06 +00:00
parent c597640515
commit 0cae01c496
8 changed files with 40 additions and 31 deletions

View file

@ -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

View file

@ -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"),

View file

@ -207,7 +207,6 @@ class EditorWindow:
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)
self.status_bar.set_label('column', 'Col: ?', side=RIGHT) self.status_bar.set_label('column', 'Col: ?', side=RIGHT)

View file

@ -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):
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):
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

View file

@ -1,15 +1,15 @@
# 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.
[FormatParagraph]
enable=1
[AutoIndent] [AutoIndent]
enable=1 enable=1
[AutoExpand] [AutoExpand]
enable=1 enable=1
[FormatParagraph]
enable=1
[ZoomHeight] [ZoomHeight]
enable=1 enable=1

View file

@ -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=

View file

@ -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):
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):
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

View file

@ -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:
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:
""" """
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:
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:
'<<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