mirror of
https://github.com/python/cpython.git
synced 2025-09-26 10:19:53 +00:00
loading core keybindings via new config system plus
further devel of highlight handling
This commit is contained in:
parent
c597640515
commit
0cae01c496
8 changed files with 40 additions and 31 deletions
|
@ -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):
|
||||||
"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:
|
||||||
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
|
||||||
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
|
@ -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):
|
||||||
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue