further work on new configuration system, specifically,

on keybinding configuration
This commit is contained in:
Steven M. Gava 2001-12-03 00:37:28 +00:00
parent 20ffa0e5bc
commit 17d0154097
3 changed files with 108 additions and 64 deletions

View file

@ -14,7 +14,8 @@
import sys import sys
import string import string
from keydefs import * #from keydefs import *
from configHandler import idleConf
menudefs = [ menudefs = [
# underscore prefixes character to underscore # underscore prefixes character to underscore
@ -65,9 +66,11 @@ menudefs = [
]), ]),
] ]
if sys.platform == 'win32': #if sys.platform == 'win32':
default_keydefs = windows_keydefs # default_keydefs = windows_keydefs
else: #else:
default_keydefs = unix_keydefs # default_keydefs = unix_keydefs
default_keydefs = idleConf.GetKeys(keySetName=None)
del sys del sys

View file

@ -1,58 +1,64 @@
# 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 key binding settings. # file is the default config file for idle key binding settings.
# Where multiple keys are specified for an action: if they are separated
# by a space (eg. action=<key1> <key2>) then the keys are altenatives, if
# there is no space (eg. action=<key1>key2>) then the keys comprise a
# single 'emacs style' multi-keystoke binding.
[IDLE Classic - windows] [IDLE CUA-ish]
Copy= '<Control-c> <Control-C>' Copy=<Control-c> <Control-C>
Cut= '<Control-x> <Control-X>' Cut=<Control-x> <Control-X>
Paste= '<Control-v> <Control-V>' Paste=<Control-v> <Control-V>
beginning-of-line= '<Control-a> <Home>' beginning-of-line=<Control-a> <Home>
center-insert= '<Control-l>' center-insert=<Control-l>
close-all-windows= '<Control-q>' close-all-windows=<Control-q>
close-window= '<Alt-F4>' close-window=<Alt-F4>
dump-undo-state= '<Control-backslash>' dump-undo-state=<Control-backslash>
end-of-file= '<Control-d>' end-of-file=<Control-d>
python-docs= '<F1>' python-docs=<F1>
history-next= '<Alt-n>' python-context-help=<Shift-F1>
history-previous= '<Alt-p>' history-next=<Alt-n>
interrupt-execution= '<Control-c>' history-previous=<Alt-p>
open-class-browser= '<Alt-c>' interrupt-execution=<Control-c>
open-module= '<Alt-m>' open-class-browser=<Alt-c>
open-new-window= '<Control-n>' open-module=<Alt-m>
open-window-from-file= '<Control-o>' open-new-window=<Control-n>
plain-newline-and-indent= '<Control-j>' open-window-from-file=<Control-o>
redo= '<Control-y>' plain-newline-and-indent=<Control-j>
remove-selection= '<Escape>' redo=<Control-Shift-z>
save-copy-of-window-as-file= '<Alt-Shift-s>' remove-selection=<Escape>
save-window-as-file= '<Alt-s>' save-copy-of-window-as-file=<Alt-Shift-s>
save-window= '<Control-s>' save-window-as-file=<Alt-s>
select-all= '<Alt-a>' save-window=<Control-s>
toggle-auto-coloring= '<Control-slash>' select-all=<Alt-a>
undo= '<Control-z>' toggle-auto-coloring=<Control-slash>
undo=<Control-z>
[IDLE Classic - posix] [IDLE Emacs-ish]
Copy= '<Alt-w> <Meta-w>' Copy=<Alt-w> <Meta-w>
Cut= '<Control-w>' Cut=<Control-w>
Paste= '<Control-y>' Paste=<Control-y>
beginning-of-line= '<Control-a> <Home>' beginning-of-line=<Control-a> <Home>
center-insert= '<Control-l>' center-insert=<Control-l>
close-all-windows= '<Control-x><Control-c>' close-all-windows=<Control-x><Control-c>
close-window= '<Control-x><Control-0> <Control-x><Key-0>' close-window=<Control-x><Control-0> <Control-x><Key-0>
do-nothing= '<Control-x>' do-nothing=<Control-x>
dump-undo-state= '<Control-backslash>' dump-undo-state=<Control-backslash>
end-of-file= '<Control-d>' end-of-file=<Control-d>
help= '<F1>' history-next=<Alt-n> <Meta-n>
history-next= '<Alt-n> <Meta-n>' history-previous=<Alt-p> <Meta-p>
history-previous= '<Alt-p> <Meta-p>' interrupt-execution=<Control-c>
interrupt-execution= '<Control-c>' open-class-browser=<Control-x><Control-b>
open-class-browser= '<Control-x><Control-b>' open-module=<Control-x><Control-m>
open-module= '<Control-x><Control-m>' open-new-window=<Control-x><Control-n>
open-new-window= '<Control-x><Control-n>' open-window-from-file=<Control-x><Control-f>
open-window-from-file= '<Control-x><Control-f>' plain-newline-and-indent=<Control-j>
plain-newline-and-indent= '<Control-j>' python-docs=<Control-h>
redo= '<Alt-z> <Meta-z>' python-context-help=<Control-Shift-h>
save-copy-of-window-as-file= '<Control-x><w>' redo=<Alt-z> <Meta-z>
save-window-as-file= '<Control-x><Control-w>' save-copy-of-window-as-file=<Control-x><w>
save-window= '<Control-x><Control-s>' save-window-as-file=<Control-x><Control-w>
select-all= '<Alt-a> <Meta-a>' save-window=<Control-x><Control-s>
toggle-auto-coloring= '<Control-slash>' select-all=<Alt-a> <Meta-a>
undo= '<Control-z>' toggle-auto-coloring=<Control-slash>
undo=<Control-z>

View file

@ -174,13 +174,48 @@ class IdleConf:
""" """
pass pass
def GetKeys(self, name=None): def GetKeys(self, keySetName=None):
""" """
Gets the requested keybindings or returns a final fallback keybinding returns the requested keybindings, with fallbacks if required.
set in case one can't be obtained from either the user or default
config files.
""" """
pass #default keybindings.
#keybindings loaded from the config file(s) are loaded _over_ these
#defaults, so if there is a problem getting any binding there will
#be an 'ultimate last resort fallback' to the CUA-ish bindings
#defined here.
keyBindings={
'<<Copy>>': ['<Control-c>', '<Control-C>'],
'<<Cut>>': ['<Control-x>', '<Control-X>'],
'<<Paste>>': ['<Control-v>', '<Control-V>'],
'<<beginning-of-line>>': ['<Control-a>', '<Home>'],
'<<center-insert>>': ['<Control-l>'],
'<<close-all-windows>>': ['<Control-q>'],
'<<close-window>>': ['<Alt-F4>'],
'<<dump-undo-state>>': ['<Control-backslash>'],
'<<end-of-file>>': ['<Control-d>'],
'<<python-docs>>': ['<F1>'],
'<<python-context-help>>': ['<Shift-F1>'],
'<<history-next>>': ['<Alt-n>'],
'<<history-previous>>': ['<Alt-p>'],
'<<interrupt-execution>>': ['<Control-c>'],
'<<open-class-browser>>': ['<Alt-c>'],
'<<open-module>>': ['<Alt-m>'],
'<<open-new-window>>': ['<Control-n>'],
'<<open-window-from-file>>': ['<Control-o>'],
'<<plain-newline-and-indent>>': ['<Control-j>'],
'<<redo>>': ['<Control-y>'],
'<<remove-selection>>': ['<Escape>'],
'<<save-copy-of-window-as-file>>': ['<Alt-Shift-s>'],
'<<save-window-as-file>>': ['<Alt-s>'],
'<<save-window>>': ['<Control-s>'],
'<<select-all>>': ['<Alt-a>'],
'<<toggle-auto-coloring>>': ['<Control-slash>'],
'<<undo>>': ['<Control-z>']}
if keySetName:
pass
return keyBindings
def LoadCfgFiles(self): def LoadCfgFiles(self):
""" """