summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven M. Gava <elguavas@python.net>2001-12-03 00:37:28 (GMT)
committerSteven M. Gava <elguavas@python.net>2001-12-03 00:37:28 (GMT)
commit17d015409765d29e199d4828cb136acd3196efe6 (patch)
tree5894be28faad0c3178e07918a19618fec242419f
parent20ffa0e5bc274ac873a4ff318deb1faaefee0703 (diff)
downloadcpython-17d015409765d29e199d4828cb136acd3196efe6.zip
cpython-17d015409765d29e199d4828cb136acd3196efe6.tar.gz
cpython-17d015409765d29e199d4828cb136acd3196efe6.tar.bz2
further work on new configuration system, specifically,
on keybinding configuration
-rw-r--r--Lib/idlelib/Bindings.py13
-rw-r--r--Lib/idlelib/config-keys.def114
-rw-r--r--Lib/idlelib/configHandler.py49
3 files changed, 110 insertions, 66 deletions
diff --git a/Lib/idlelib/Bindings.py b/Lib/idlelib/Bindings.py
index 7baa913..1a8374b 100644
--- a/Lib/idlelib/Bindings.py
+++ b/Lib/idlelib/Bindings.py
@@ -14,7 +14,8 @@
import sys
import string
-from keydefs import *
+#from keydefs import *
+from configHandler import idleConf
menudefs = [
# underscore prefixes character to underscore
@@ -65,9 +66,11 @@ menudefs = [
]),
]
-if sys.platform == 'win32':
- default_keydefs = windows_keydefs
-else:
- default_keydefs = unix_keydefs
+#if sys.platform == 'win32':
+# default_keydefs = windows_keydefs
+#else:
+# default_keydefs = unix_keydefs
+
+default_keydefs = idleConf.GetKeys(keySetName=None)
del sys
diff --git a/Lib/idlelib/config-keys.def b/Lib/idlelib/config-keys.def
index cae0301..feec31c 100644
--- a/Lib/idlelib/config-keys.def
+++ b/Lib/idlelib/config-keys.def
@@ -1,58 +1,64 @@
# IDLE reads several config files to determine user preferences. This
# 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]
-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>'
-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>'
+[IDLE CUA-ish]
+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-Shift-z>
+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>
-[IDLE Classic - posix]
-Copy= '<Alt-w> <Meta-w>'
-Cut= '<Control-w>'
-Paste= '<Control-y>'
-beginning-of-line= '<Control-a> <Home>'
-center-insert= '<Control-l>'
-close-all-windows= '<Control-x><Control-c>'
-close-window= '<Control-x><Control-0> <Control-x><Key-0>'
-do-nothing= '<Control-x>'
-dump-undo-state= '<Control-backslash>'
-end-of-file= '<Control-d>'
-help= '<F1>'
-history-next= '<Alt-n> <Meta-n>'
-history-previous= '<Alt-p> <Meta-p>'
-interrupt-execution= '<Control-c>'
-open-class-browser= '<Control-x><Control-b>'
-open-module= '<Control-x><Control-m>'
-open-new-window= '<Control-x><Control-n>'
-open-window-from-file= '<Control-x><Control-f>'
-plain-newline-and-indent= '<Control-j>'
-redo= '<Alt-z> <Meta-z>'
-save-copy-of-window-as-file= '<Control-x><w>'
-save-window-as-file= '<Control-x><Control-w>'
-save-window= '<Control-x><Control-s>'
-select-all= '<Alt-a> <Meta-a>'
-toggle-auto-coloring= '<Control-slash>'
-undo= '<Control-z>'
+[IDLE Emacs-ish]
+Copy=<Alt-w> <Meta-w>
+Cut=<Control-w>
+Paste=<Control-y>
+beginning-of-line=<Control-a> <Home>
+center-insert=<Control-l>
+close-all-windows=<Control-x><Control-c>
+close-window=<Control-x><Control-0> <Control-x><Key-0>
+do-nothing=<Control-x>
+dump-undo-state=<Control-backslash>
+end-of-file=<Control-d>
+history-next=<Alt-n> <Meta-n>
+history-previous=<Alt-p> <Meta-p>
+interrupt-execution=<Control-c>
+open-class-browser=<Control-x><Control-b>
+open-module=<Control-x><Control-m>
+open-new-window=<Control-x><Control-n>
+open-window-from-file=<Control-x><Control-f>
+plain-newline-and-indent=<Control-j>
+python-docs=<Control-h>
+python-context-help=<Control-Shift-h>
+redo=<Alt-z> <Meta-z>
+save-copy-of-window-as-file=<Control-x><w>
+save-window-as-file=<Control-x><Control-w>
+save-window=<Control-x><Control-s>
+select-all=<Alt-a> <Meta-a>
+toggle-auto-coloring=<Control-slash>
+undo=<Control-z>
diff --git a/Lib/idlelib/configHandler.py b/Lib/idlelib/configHandler.py
index 4539627..f1fbd8d 100644
--- a/Lib/idlelib/configHandler.py
+++ b/Lib/idlelib/configHandler.py
@@ -174,13 +174,48 @@ class IdleConf:
"""
pass
- def GetKeys(self, name=None):
- """
- Gets the requested keybindings or returns a final fallback keybinding
- set in case one can't be obtained from either the user or default
- config files.
- """
- pass
+ def GetKeys(self, keySetName=None):
+ """
+ returns the requested keybindings, with fallbacks if required.
+ """
+ #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):
"""