Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
e52f2d14
Commit
e52f2d14
authored
Dec 31, 2002
by
Kurt B. Kaiser
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Whitespace Normalization
parent
1d0d7f72
Changes
23
Hide whitespace changes
Inline
Side-by-side
Showing
23 changed files
with
306 additions
and
322 deletions
+306
-322
Lib/idlelib/CallTipWindow.py
Lib/idlelib/CallTipWindow.py
+1
-1
Lib/idlelib/CallTips.py
Lib/idlelib/CallTips.py
+5
-5
Lib/idlelib/ColorDelegator.py
Lib/idlelib/ColorDelegator.py
+2
-2
Lib/idlelib/Debugger.py
Lib/idlelib/Debugger.py
+4
-4
Lib/idlelib/EditorWindow.py
Lib/idlelib/EditorWindow.py
+20
-20
Lib/idlelib/IOBinding.py
Lib/idlelib/IOBinding.py
+4
-4
Lib/idlelib/OutputWindow.py
Lib/idlelib/OutputWindow.py
+0
-7
Lib/idlelib/PyShell.py
Lib/idlelib/PyShell.py
+17
-17
Lib/idlelib/RemoteDebugger.py
Lib/idlelib/RemoteDebugger.py
+2
-3
Lib/idlelib/ScriptBinding.py
Lib/idlelib/ScriptBinding.py
+2
-2
Lib/idlelib/ZoomHeight.py
Lib/idlelib/ZoomHeight.py
+2
-2
Lib/idlelib/aboutDialog.py
Lib/idlelib/aboutDialog.py
+6
-6
Lib/idlelib/boolcheck.py
Lib/idlelib/boolcheck.py
+1
-2
Lib/idlelib/configDialog.py
Lib/idlelib/configDialog.py
+88
-88
Lib/idlelib/configHandler.py
Lib/idlelib/configHandler.py
+89
-89
Lib/idlelib/configHelpSourceEdit.py
Lib/idlelib/configHelpSourceEdit.py
+7
-9
Lib/idlelib/configSectionNameDialog.py
Lib/idlelib/configSectionNameDialog.py
+4
-6
Lib/idlelib/dynOptionMenuWidget.py
Lib/idlelib/dynOptionMenuWidget.py
+2
-2
Lib/idlelib/keybindingDialog.py
Lib/idlelib/keybindingDialog.py
+18
-18
Lib/idlelib/macosx_main.py
Lib/idlelib/macosx_main.py
+3
-3
Lib/idlelib/rpc.py
Lib/idlelib/rpc.py
+13
-15
Lib/idlelib/tabpage.py
Lib/idlelib/tabpage.py
+10
-11
Lib/idlelib/textView.py
Lib/idlelib/textView.py
+6
-6
No files found.
Lib/idlelib/CallTipWindow.py
View file @
e52f2d14
...
@@ -37,7 +37,7 @@ class CallTip:
...
@@ -37,7 +37,7 @@ class CallTip:
# This command is only needed and available on Tk >= 8.4.0 for OSX
# This command is only needed and available on Tk >= 8.4.0 for OSX
# Without it, call tips intrude on the typing process by grabbing
# Without it, call tips intrude on the typing process by grabbing
# the focus.
# the focus.
tw
.
tk
.
call
(
"::tk::unsupported::MacWindowStyle"
,
"style"
,
tw
.
_w
,
tw
.
tk
.
call
(
"::tk::unsupported::MacWindowStyle"
,
"style"
,
tw
.
_w
,
"help"
,
"noActivates"
)
"help"
,
"noActivates"
)
except
TclError
:
except
TclError
:
pass
pass
...
...
Lib/idlelib/CallTips.py
View file @
e52f2d14
...
@@ -81,10 +81,10 @@ class CallTips:
...
@@ -81,10 +81,10 @@ class CallTips:
while
i
and
str
[
i
-
1
]
in
idchars
:
while
i
and
str
[
i
-
1
]
in
idchars
:
i
-=
1
i
-=
1
return
str
[
i
:]
return
str
[
i
:]
def
fetch_tip
(
self
,
name
):
def
fetch_tip
(
self
,
name
):
"""Return the argument list and docstring of a function or class
"""Return the argument list and docstring of a function or class
If there is a Python subprocess, get the calltip there. Otherwise,
If there is a Python subprocess, get the calltip there. Otherwise,
either fetch_tip() is running in the subprocess itself or it was called
either fetch_tip() is running in the subprocess itself or it was called
in an IDLE EditorWindow before any script had been run.
in an IDLE EditorWindow before any script had been run.
...
@@ -93,7 +93,7 @@ class CallTips:
...
@@ -93,7 +93,7 @@ class CallTips:
two unrelated modules are being edited some calltips in the current
two unrelated modules are being edited some calltips in the current
module may be inoperative if the module was not the last to run.
module may be inoperative if the module was not the last to run.
"""
"""
try
:
try
:
rpcclt
=
self
.
editwin
.
flist
.
pyshell
.
interp
.
rpcclt
rpcclt
=
self
.
editwin
.
flist
.
pyshell
.
interp
.
rpcclt
except
:
except
:
...
@@ -211,7 +211,7 @@ if __name__=='__main__':
...
@@ -211,7 +211,7 @@ if __name__=='__main__':
print
"%d of %d tests failed"
%
(
len
(
failed
),
len
(
tests
))
print
"%d of %d tests failed"
%
(
len
(
failed
),
len
(
tests
))
tc
=
TC
()
tc
=
TC
()
tests
=
(
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
tests
=
(
t1
,
t2
,
t3
,
t4
,
t5
,
t6
,
TC
,
tc
.
t1
,
tc
.
t2
,
tc
.
t3
,
tc
.
t4
,
tc
.
t5
,
tc
.
t6
)
TC
,
tc
.
t1
,
tc
.
t2
,
tc
.
t3
,
tc
.
t4
,
tc
.
t5
,
tc
.
t6
)
test
(
tests
)
test
(
tests
)
Lib/idlelib/ColorDelegator.py
View file @
e52f2d14
...
@@ -52,7 +52,7 @@ class ColorDelegator(Delegator):
...
@@ -52,7 +52,7 @@ class ColorDelegator(Delegator):
if
cnf
:
if
cnf
:
apply
(
self
.
tag_configure
,
(
tag
,),
cnf
)
apply
(
self
.
tag_configure
,
(
tag
,),
cnf
)
self
.
tag_raise
(
'sel'
)
self
.
tag_raise
(
'sel'
)
def
LoadTagDefs
(
self
):
def
LoadTagDefs
(
self
):
theme
=
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'name'
)
theme
=
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'name'
)
self
.
tagdefs
=
{
self
.
tagdefs
=
{
...
@@ -67,7 +67,7 @@ class ColorDelegator(Delegator):
...
@@ -67,7 +67,7 @@ class ColorDelegator(Delegator):
# The following is used by ReplaceDialog:
# The following is used by ReplaceDialog:
"hit"
:
idleConf
.
GetHighlight
(
theme
,
"hit"
),
"hit"
:
idleConf
.
GetHighlight
(
theme
,
"hit"
),
}
}
if
DEBUG
:
print
'tagdefs'
,
tagdefs
if
DEBUG
:
print
'tagdefs'
,
tagdefs
def
insert
(
self
,
index
,
chars
,
tags
=
None
):
def
insert
(
self
,
index
,
chars
,
tags
=
None
):
...
...
Lib/idlelib/Debugger.py
View file @
e52f2d14
...
@@ -15,17 +15,17 @@ class Idb(bdb.Bdb):
...
@@ -15,17 +15,17 @@ class Idb(bdb.Bdb):
def
user_line
(
self
,
frame
):
def
user_line
(
self
,
frame
):
co_filename
=
frame
.
f_code
.
co_filename
co_filename
=
frame
.
f_code
.
co_filename
co_name
=
frame
.
f_code
.
co_name
co_name
=
frame
.
f_code
.
co_name
## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
## print>>sys.__stderr__, "*function: ", frame.f_code.co_name
## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
## print>>sys.__stderr__, "*file: ", frame.f_code.co_filename
## print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
## print>>sys.__stderr__, "*line number: ", frame.f_code.co_firstlineno
## print>>sys.__stderr__, "*name: ", co_name
## print>>sys.__stderr__, "*name: ", co_name
## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
## print>>sys.__stderr__, "*function: ", frame.f_locals.get(co_name,None)
try
:
try
:
# XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
# XXX 12 Dec 2002 CGT TO DO: Find way to get a reference to the
# XXX currently running function. If the function has an
# XXX currently running function. If the function has an
# attribute called "DebuggerStepThrough", prevent the debugger
# attribute called "DebuggerStepThrough", prevent the debugger
# from stepping through Idle code. The following doesn't work
# from stepping through Idle code. The following doesn't work
# in instance methods. Hard coded some workarounds.
# in instance methods. Hard coded some workarounds.
...
@@ -75,7 +75,7 @@ class Debugger:
...
@@ -75,7 +75,7 @@ class Debugger:
self
.
frame
=
None
self
.
frame
=
None
self
.
make_gui
()
self
.
make_gui
()
self
.
interacting
=
0
self
.
interacting
=
0
def
run
(
self
,
*
args
):
def
run
(
self
,
*
args
):
try
:
try
:
self
.
interacting
=
1
self
.
interacting
=
1
...
...
Lib/idlelib/EditorWindow.py
View file @
e52f2d14
...
@@ -111,7 +111,7 @@ class EditorWindow:
...
@@ -111,7 +111,7 @@ class EditorWindow:
text
.
bind
(
"<<untabify-region>>"
,
self
.
untabify_region_event
)
text
.
bind
(
"<<untabify-region>>"
,
self
.
untabify_region_event
)
text
.
bind
(
"<<toggle-tabs>>"
,
self
.
toggle_tabs_event
)
text
.
bind
(
"<<toggle-tabs>>"
,
self
.
toggle_tabs_event
)
text
.
bind
(
"<<change-indentwidth>>"
,
self
.
change_indentwidth_event
)
text
.
bind
(
"<<change-indentwidth>>"
,
self
.
change_indentwidth_event
)
if
flist
:
if
flist
:
flist
.
inversedict
[
self
]
=
key
flist
.
inversedict
[
self
]
=
key
if
key
:
if
key
:
...
@@ -186,7 +186,7 @@ class EditorWindow:
...
@@ -186,7 +186,7 @@ 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
)
self
.
status_bar
.
set_label
(
'column'
,
'Col: ?'
,
side
=
RIGHT
)
self
.
status_bar
.
set_label
(
'column'
,
'Col: ?'
,
side
=
RIGHT
)
...
@@ -273,21 +273,21 @@ class EditorWindow:
...
@@ -273,21 +273,21 @@ class EditorWindow:
def
about_dialog
(
self
,
event
=
None
):
def
about_dialog
(
self
,
event
=
None
):
aboutDialog
.
AboutDialog
(
self
.
top
,
'About IDLEfork'
)
aboutDialog
.
AboutDialog
(
self
.
top
,
'About IDLEfork'
)
def
config_dialog
(
self
,
event
=
None
):
def
config_dialog
(
self
,
event
=
None
):
configDialog
.
ConfigDialog
(
self
.
top
,
'Settings'
)
configDialog
.
ConfigDialog
(
self
.
top
,
'Settings'
)
def
good_advice
(
self
,
event
=
None
):
def
good_advice
(
self
,
event
=
None
):
tkMessageBox
.
showinfo
(
'Advice'
,
"Don't Panic!"
,
master
=
self
.
text
)
tkMessageBox
.
showinfo
(
'Advice'
,
"Don't Panic!"
,
master
=
self
.
text
)
def
view_readme
(
self
,
event
=
None
):
def
view_readme
(
self
,
event
=
None
):
fn
=
os
.
path
.
join
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)),
'README.txt'
)
fn
=
os
.
path
.
join
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)),
'README.txt'
)
textView
.
TextViewer
(
self
.
top
,
'IDLEfork - README'
,
fn
)
textView
.
TextViewer
(
self
.
top
,
'IDLEfork - README'
,
fn
)
def
help_dialog
(
self
,
event
=
None
):
def
help_dialog
(
self
,
event
=
None
):
fn
=
os
.
path
.
join
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)),
'help.txt'
)
fn
=
os
.
path
.
join
(
os
.
path
.
abspath
(
os
.
path
.
dirname
(
__file__
)),
'help.txt'
)
textView
.
TextViewer
(
self
.
top
,
'Help'
,
fn
)
textView
.
TextViewer
(
self
.
top
,
'Help'
,
fn
)
help_url
=
"http://www.python.org/doc/current/"
help_url
=
"http://www.python.org/doc/current/"
if
sys
.
platform
[:
3
]
==
"win"
:
if
sys
.
platform
[:
3
]
==
"win"
:
fn
=
os
.
path
.
dirname
(
__file__
)
fn
=
os
.
path
.
dirname
(
__file__
)
...
@@ -469,7 +469,7 @@ class EditorWindow:
...
@@ -469,7 +469,7 @@ class EditorWindow:
self
.
per
.
removefilter
(
self
.
color
)
self
.
per
.
removefilter
(
self
.
color
)
self
.
color
=
None
self
.
color
=
None
self
.
per
.
insertfilter
(
self
.
undo
)
self
.
per
.
insertfilter
(
self
.
undo
)
def
ResetColorizer
(
self
):
def
ResetColorizer
(
self
):
"Update the colour theme if it is changed"
"Update the colour theme if it is changed"
# Called from configDialog.py
# Called from configDialog.py
...
@@ -478,7 +478,7 @@ class EditorWindow:
...
@@ -478,7 +478,7 @@ class EditorWindow:
self
.
per
.
insertfilter
(
self
.
color
)
self
.
per
.
insertfilter
(
self
.
color
)
def
ResetFont
(
self
):
def
ResetFont
(
self
):
"Update the text widgets' font if it is changed"
"Update the text widgets' font if it is changed"
# Called from configDialog.py
# Called from configDialog.py
fontWeight
=
'normal'
fontWeight
=
'normal'
if
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'font-bold'
,
type
=
'bool'
):
if
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'font-bold'
,
type
=
'bool'
):
...
@@ -535,15 +535,15 @@ class EditorWindow:
...
@@ -535,15 +535,15 @@ class EditorWindow:
self
.
menuExtraHelp
.
add_command
(
label
=
menuItem
[
0
],
self
.
menuExtraHelp
.
add_command
(
label
=
menuItem
[
0
],
command
=
self
.
__DisplayExtraHelpCallback
(
menuItem
[
1
]))
command
=
self
.
__DisplayExtraHelpCallback
(
menuItem
[
1
]))
else
:
#no extra help items
else
:
#no extra help items
if
hasattr
(
self
,
'menuExtraHelp'
):
if
hasattr
(
self
,
'menuExtraHelp'
):
helpMenu
.
delete
(
cascadeIndex
-
1
)
helpMenu
.
delete
(
cascadeIndex
-
1
)
del
(
self
.
menuExtraHelp
)
del
(
self
.
menuExtraHelp
)
def
__DisplayExtraHelpCallback
(
self
,
helpFile
):
def
__DisplayExtraHelpCallback
(
self
,
helpFile
):
def
DisplayExtraHelp
(
helpFile
=
helpFile
):
def
DisplayExtraHelp
(
helpFile
=
helpFile
):
self
.
display_docs
(
helpFile
)
self
.
display_docs
(
helpFile
)
return
DisplayExtraHelp
return
DisplayExtraHelp
def
UpdateRecentFilesList
(
self
,
newFile
=
None
):
def
UpdateRecentFilesList
(
self
,
newFile
=
None
):
"Load or update the recent files list, and menu if required"
"Load or update the recent files list, and menu if required"
rfList
=
[]
rfList
=
[]
...
@@ -553,7 +553,7 @@ class EditorWindow:
...
@@ -553,7 +553,7 @@ class EditorWindow:
rfList
=
RFfile
.
readlines
()
rfList
=
RFfile
.
readlines
()
finally
:
finally
:
RFfile
.
close
()
RFfile
.
close
()
if
newFile
:
if
newFile
:
newFile
=
os
.
path
.
abspath
(
newFile
)
+
'
\
n
'
newFile
=
os
.
path
.
abspath
(
newFile
)
+
'
\
n
'
if
newFile
in
rfList
:
if
newFile
in
rfList
:
rfList
.
remove
(
newFile
)
rfList
.
remove
(
newFile
)
...
@@ -567,7 +567,7 @@ class EditorWindow:
...
@@ -567,7 +567,7 @@ class EditorWindow:
for
instance
in
self
.
top
.
instanceDict
.
keys
():
for
instance
in
self
.
top
.
instanceDict
.
keys
():
menu
=
instance
.
menuRecentFiles
menu
=
instance
.
menuRecentFiles
menu
.
delete
(
1
,
END
)
menu
.
delete
(
1
,
END
)
i
=
0
;
ul
=
0
;
ullen
=
len
(
ullist
)
i
=
0
;
ul
=
0
;
ullen
=
len
(
ullist
)
for
file
in
rfList
:
for
file
in
rfList
:
fileName
=
file
[
0
:
-
1
]
fileName
=
file
[
0
:
-
1
]
callback
=
instance
.
__RecentFileCallback
(
fileName
)
callback
=
instance
.
__RecentFileCallback
(
fileName
)
...
@@ -577,13 +577,13 @@ class EditorWindow:
...
@@ -577,13 +577,13 @@ class EditorWindow:
command
=
callback
,
command
=
callback
,
underline
=
ul
)
underline
=
ul
)
i
+=
1
i
+=
1
def
__CleanRecentFiles
(
self
,
rfList
):
def
__CleanRecentFiles
(
self
,
rfList
):
origRfList
=
rfList
[:]
origRfList
=
rfList
[:]
count
=
0
count
=
0
nonFiles
=
[]
nonFiles
=
[]
for
path
in
rfList
:
for
path
in
rfList
:
if
not
os
.
path
.
exists
(
path
[
0
:
-
1
]):
if
not
os
.
path
.
exists
(
path
[
0
:
-
1
]):
nonFiles
.
append
(
count
)
nonFiles
.
append
(
count
)
count
=
count
+
1
count
=
count
+
1
if
nonFiles
:
if
nonFiles
:
...
@@ -599,12 +599,12 @@ class EditorWindow:
...
@@ -599,12 +599,12 @@ class EditorWindow:
finally
:
finally
:
RFfile
.
close
()
RFfile
.
close
()
return
rfList
return
rfList
def
__RecentFileCallback
(
self
,
fileName
):
def
__RecentFileCallback
(
self
,
fileName
):
def
OpenRecentFile
(
fileName
=
fileName
):
def
OpenRecentFile
(
fileName
=
fileName
):
self
.
io
.
open
(
editFile
=
fileName
)
self
.
io
.
open
(
editFile
=
fileName
)
return
OpenRecentFile
return
OpenRecentFile
def
saved_change_hook
(
self
):
def
saved_change_hook
(
self
):
short
=
self
.
short_title
()
short
=
self
.
short_title
()
long
=
self
.
long_title
()
long
=
self
.
long_title
()
...
@@ -672,7 +672,7 @@ class EditorWindow:
...
@@ -672,7 +672,7 @@ class EditorWindow:
def
maybesave
(
self
):
def
maybesave
(
self
):
if
self
.
io
:
if
self
.
io
:
if
not
self
.
get_saved
():
if
not
self
.
get_saved
():
if
self
.
top
.
state
()
!=
'normal'
:
if
self
.
top
.
state
()
!=
'normal'
:
self
.
top
.
deiconify
()
self
.
top
.
deiconify
()
self
.
top
.
lower
()
self
.
top
.
lower
()
self
.
top
.
lift
()
self
.
top
.
lift
()
...
...
Lib/idlelib/IOBinding.py
View file @
e52f2d14
...
@@ -103,7 +103,7 @@ class IOBinding:
...
@@ -103,7 +103,7 @@ class IOBinding:
self
.
save_a_copy
)
self
.
save_a_copy
)
self
.
fileencoding
=
None
self
.
fileencoding
=
None
self
.
__id_print
=
self
.
text
.
bind
(
"<<print-window>>"
,
self
.
print_window
)
self
.
__id_print
=
self
.
text
.
bind
(
"<<print-window>>"
,
self
.
print_window
)
def
close
(
self
):
def
close
(
self
):
# Undo command bindings
# Undo command bindings
self
.
text
.
unbind
(
"<<open-window-from-file>>"
,
self
.
__id_open
)
self
.
text
.
unbind
(
"<<open-window-from-file>>"
,
self
.
__id_open
)
...
@@ -366,7 +366,7 @@ class IOBinding:
...
@@ -366,7 +366,7 @@ class IOBinding:
"# -*- coding: %s -*-
\
n
to your file"
%
enc
,
"# -*- coding: %s -*-
\
n
to your file"
%
enc
,
master
=
self
.
text
)
master
=
self
.
text
)
return
chars
return
chars
def
fixlastline
(
self
):
def
fixlastline
(
self
):
c
=
self
.
text
.
get
(
"end-2c"
)
c
=
self
.
text
.
get
(
"end-2c"
)
if
c
!=
'
\
n
'
:
if
c
!=
'
\
n
'
:
...
@@ -403,10 +403,10 @@ class IOBinding:
...
@@ -403,10 +403,10 @@ class IOBinding:
output
=
"Printing command: %s
\
n
"
%
repr
(
command
)
+
output
output
=
"Printing command: %s
\
n
"
%
repr
(
command
)
+
output
tkMessageBox
.
showerror
(
"Print status"
,
output
,
master
=
self
.
text
)
tkMessageBox
.
showerror
(
"Print status"
,
output
,
master
=
self
.
text
)
else
:
#no printing for this platform
else
:
#no printing for this platform
message
=
"Printing is not enabled for this platform: %s"
%
platform
message
=
"Printing is not enabled for this platform: %s"
%
platform
tkMessageBox
.
showinfo
(
"Print status"
,
message
,
master
=
self
.
text
)
tkMessageBox
.
showinfo
(
"Print status"
,
message
,
master
=
self
.
text
)
return
"break"
return
"break"
opendialog
=
None
opendialog
=
None
savedialog
=
None
savedialog
=
None
...
...
Lib/idlelib/OutputWindow.py
View file @
e52f2d14
...
@@ -146,10 +146,3 @@ class OnDemandOutputWindow:
...
@@ -146,10 +146,3 @@ class OnDemandOutputWindow:
# def flush(self):
# def flush(self):
# pass
# pass
Lib/idlelib/PyShell.py
View file @
e52f2d14
...
@@ -62,7 +62,7 @@ def extended_linecache_checkcache(orig_checkcache=linecache.checkcache):
...
@@ -62,7 +62,7 @@ def extended_linecache_checkcache(orig_checkcache=linecache.checkcache):
save
[
filename
]
=
cache
[
filename
]
save
[
filename
]
=
cache
[
filename
]
orig_checkcache
()
orig_checkcache
()
cache
.
update
(
save
)
cache
.
update
(
save
)
# Patch linecache.checkcache():
# Patch linecache.checkcache():
linecache
.
checkcache
=
extended_linecache_checkcache
linecache
.
checkcache
=
extended_linecache_checkcache
...
@@ -194,7 +194,7 @@ class PyShellEditorWindow(EditorWindow):
...
@@ -194,7 +194,7 @@ class PyShellEditorWindow(EditorWindow):
lines
=
open
(
self
.
breakpointPath
,
"r"
).
readlines
()
lines
=
open
(
self
.
breakpointPath
,
"r"
).
readlines
()
for
line
in
lines
:
for
line
in
lines
:
if
line
.
startswith
(
filename
+
'='
):
if
line
.
startswith
(
filename
+
'='
):
breakpoint_linenumbers
=
eval
(
line
[
len
(
filename
)
+
1
:])
breakpoint_linenumbers
=
eval
(
line
[
len
(
filename
)
+
1
:])
for
breakpoint_linenumber
in
breakpoint_linenumbers
:
for
breakpoint_linenumber
in
breakpoint_linenumbers
:
self
.
set_breakpoint
(
breakpoint_linenumber
)
self
.
set_breakpoint
(
breakpoint_linenumber
)
...
@@ -226,7 +226,7 @@ class PyShellEditorWindow(EditorWindow):
...
@@ -226,7 +226,7 @@ class PyShellEditorWindow(EditorWindow):
"Extend base method - clear breaks when module is closed"
"Extend base method - clear breaks when module is closed"
self
.
clear_file_breaks
()
self
.
clear_file_breaks
()
EditorWindow
.
_close
(
self
)
EditorWindow
.
_close
(
self
)
class
PyShellFileList
(
FileList
):
class
PyShellFileList
(
FileList
):
"Extend base class: file list when a shell is present"
"Extend base class: file list when a shell is present"
...
@@ -246,7 +246,7 @@ class PyShellFileList(FileList):
...
@@ -246,7 +246,7 @@ class PyShellFileList(FileList):
class
ModifiedColorDelegator
(
ColorDelegator
):
class
ModifiedColorDelegator
(
ColorDelegator
):
"Extend base class: colorizer for the shell window itself"
"Extend base class: colorizer for the shell window itself"
def
__init__
(
self
):
def
__init__
(
self
):
ColorDelegator
.
__init__
(
self
)
ColorDelegator
.
__init__
(
self
)
self
.
LoadTagDefs
()
self
.
LoadTagDefs
()
...
@@ -255,7 +255,7 @@ class ModifiedColorDelegator(ColorDelegator):
...
@@ -255,7 +255,7 @@ class ModifiedColorDelegator(ColorDelegator):
self
.
tag_remove
(
"TODO"
,
"1.0"
,
"iomark"
)
self
.
tag_remove
(
"TODO"
,
"1.0"
,
"iomark"
)
self
.
tag_add
(
"SYNC"
,
"1.0"
,
"iomark"
)
self
.
tag_add
(
"SYNC"
,
"1.0"
,
"iomark"
)
ColorDelegator
.
recolorize_main
(
self
)
ColorDelegator
.
recolorize_main
(
self
)
def
LoadTagDefs
(
self
):
def
LoadTagDefs
(
self
):
ColorDelegator
.
LoadTagDefs
(
self
)
ColorDelegator
.
LoadTagDefs
(
self
)
theme
=
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'name'
)
theme
=
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'name'
)
...
@@ -300,7 +300,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -300,7 +300,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
rpcclt
=
None
rpcclt
=
None
rpcpid
=
None
rpcpid
=
None
def
spawn_subprocess
(
self
):
def
spawn_subprocess
(
self
):
args
=
self
.
build_subprocess_arglist
()
args
=
self
.
build_subprocess_arglist
()
self
.
rpcpid
=
os
.
spawnv
(
os
.
P_NOWAIT
,
args
[
0
],
args
)
self
.
rpcpid
=
os
.
spawnv
(
os
.
P_NOWAIT
,
args
[
0
],
args
)
...
@@ -312,7 +312,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -312,7 +312,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
# here are the applet architectures tried:
# here are the applet architectures tried:
#
#
# framework applet: sys.executable + -p is correct
# framework applet: sys.executable + -p is correct
# python 2.2 + pure python main applet:
# python 2.2 + pure python main applet:
# sys.executable + -p is correct
# sys.executable + -p is correct
# pythonw idle.py: sys.executable + -c is correct
# pythonw idle.py: sys.executable + -c is correct
#
#
...
@@ -360,7 +360,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -360,7 +360,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
# close only the subprocess debugger
# close only the subprocess debugger
debug
=
self
.
getdebugger
()
debug
=
self
.
getdebugger
()
if
debug
:
if
debug
:
RemoteDebugger
.
close_subprocess_debugger
(
self
.
rpcclt
)
RemoteDebugger
.
close_subprocess_debugger
(
self
.
rpcclt
)
# kill subprocess, spawn a new one, accept connection
# kill subprocess, spawn a new one, accept connection
self
.
rpcclt
.
close
()
self
.
rpcclt
.
close
()
self
.
spawn_subprocess
()
self
.
spawn_subprocess
()
...
@@ -434,7 +434,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -434,7 +434,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
while
tb
:
while
tb
:
for
rpcfile
in
exclude
:
for
rpcfile
in
exclude
:
if
tb
[
-
1
][
0
].
count
(
rpcfile
):
if
tb
[
-
1
][
0
].
count
(
rpcfile
):
break
break
else
:
else
:
break
break
del
tb
[
-
1
]
del
tb
[
-
1
]
...
@@ -525,7 +525,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -525,7 +525,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
lines
=
source
.
split
(
"
\
n
"
)
lines
=
source
.
split
(
"
\
n
"
)
linecache
.
cache
[
filename
]
=
len
(
source
)
+
1
,
0
,
lines
,
filename
linecache
.
cache
[
filename
]
=
len
(
source
)
+
1
,
0
,
lines
,
filename
return
filename
return
filename
def
showsyntaxerror
(
self
,
filename
=
None
):
def
showsyntaxerror
(
self
,
filename
=
None
):
"""Extend base class method: Add Colorizing
"""Extend base class method: Add Colorizing
...
@@ -587,7 +587,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
...
@@ -587,7 +587,7 @@ class ModifiedInterpreter(InteractiveInterpreter):
"The Python Shell window is already executing a command; "
"The Python Shell window is already executing a command; "
"please wait until it is finished."
,
"please wait until it is finished."
,
master
=
self
.
tkconsole
.
text
)
master
=
self
.
tkconsole
.
text
)
def
runcommand
(
self
,
code
):
def
runcommand
(
self
,
code
):
"Run the code without invoking the debugger"
"Run the code without invoking the debugger"
# The code better not raise an exception!
# The code better not raise an exception!
...
@@ -1075,10 +1075,10 @@ class PseudoFile:
...
@@ -1075,10 +1075,10 @@ class PseudoFile:
usage_msg
=
"""
\
usage_msg
=
"""
\
USAGE: idle [-deis] [-t title] [file]*
USAGE: idle [-deis] [-t title] [file]*
idle [-ds] [-t title] (-c cmd | -r file) [arg]*
idle [-ds] [-t title] (-c cmd | -r file) [arg]*
idle [-ds] [-t title] - [arg]*
idle [-ds] [-t title] - [arg]*
-h print this help message and exit
-h print this help message and exit
The following options will override the IDLE 'settings' configuration:
The following options will override the IDLE 'settings' configuration:
...
@@ -1175,7 +1175,7 @@ def main():
...
@@ -1175,7 +1175,7 @@ def main():
if
args
and
args
[
0
]
==
'-'
:
if
args
and
args
[
0
]
==
'-'
:
cmd
=
sys
.
stdin
.
read
()
cmd
=
sys
.
stdin
.
read
()
enable_shell
=
True
enable_shell
=
True
use_subprocess
=
True
use_subprocess
=
True
# process sys.argv and sys.path:
# process sys.argv and sys.path:
...
@@ -1202,9 +1202,9 @@ def main():
...
@@ -1202,9 +1202,9 @@ def main():
sys
.
path
.
insert
(
0
,
dir
)
sys
.
path
.
insert
(
0
,
dir
)
# check the IDLE settings configuration (but command line overrides)
# check the IDLE settings configuration (but command line overrides)
edit_start
=
idleConf
.
GetOption
(
'main'
,
'General'
,
edit_start
=
idleConf
.
GetOption
(
'main'
,
'General'
,
'editor-on-startup'
,
type
=
'bool'
)
'editor-on-startup'
,
type
=
'bool'
)
enable_edit
=
enable_edit
or
edit_start
enable_edit
=
enable_edit
or
edit_start
enable_shell
=
enable_shell
or
not
edit_start
enable_shell
=
enable_shell
or
not
edit_start
# start editor and/or shell windows:
# start editor and/or shell windows:
root
=
Tk
(
className
=
"Idle"
)
root
=
Tk
(
className
=
"Idle"
)
fixwordbreaks
(
root
)
fixwordbreaks
(
root
)
...
@@ -1258,7 +1258,7 @@ start. Here are some possible causes of this problem:
...
@@ -1258,7 +1258,7 @@ start. Here are some possible causes of this problem:
3. Personal firewall software is preventing IDLE from using this port
3. Personal firewall software is preventing IDLE from using this port
IDLE makes and accepts connections only with this computer, and does not
IDLE makes and accepts connections only with this computer, and does not
communicate over the internet in any way. Its use of port 8833 should not
communicate over the internet in any way. Its use of port 8833 should not
be a security risk on a single-user machine.
be a security risk on a single-user machine.
"""
"""
...
...
Lib/idlelib/RemoteDebugger.py
View file @
e52f2d14
...
@@ -121,7 +121,7 @@ class IdbAdapter:
...
@@ -121,7 +121,7 @@ class IdbAdapter:
def
clear_all_file_breaks
(
self
,
filename
):
def
clear_all_file_breaks
(
self
,
filename
):
msg
=
self
.
idb
.
clear_all_file_breaks
(
filename
)
msg
=
self
.
idb
.
clear_all_file_breaks
(
filename
)
return
msg
return
msg
#----------called by a FrameProxy----------
#----------called by a FrameProxy----------
def
frame_attr
(
self
,
fid
,
name
):
def
frame_attr
(
self
,
fid
,
name
):
...
@@ -366,7 +366,7 @@ def close_remote_debugger(rpcclt):
...
@@ -366,7 +366,7 @@ def close_remote_debugger(rpcclt):
debugger and RPC link objects. (The second reference to the debugger GUI
debugger and RPC link objects. (The second reference to the debugger GUI
is deleted in PyShell.close_remote_debugger().)
is deleted in PyShell.close_remote_debugger().)
"""
"""
close_subprocess_debugger
(
rpcclt
)
close_subprocess_debugger
(
rpcclt
)
rpcclt
.
unregister
(
gui_adap_oid
)
rpcclt
.
unregister
(
gui_adap_oid
)
...
@@ -377,4 +377,3 @@ def restart_subprocess_debugger(rpcclt):
...
@@ -377,4 +377,3 @@ def restart_subprocess_debugger(rpcclt):
idb_adap_oid_ret
=
rpcclt
.
remotecall
(
"exec"
,
"start_the_debugger"
,
\
idb_adap_oid_ret
=
rpcclt
.
remotecall
(
"exec"
,
"start_the_debugger"
,
\
(
gui_adap_oid
,),
{})
(
gui_adap_oid
,),
{})
assert
idb_adap_oid_ret
==
idb_adap_oid
,
'Idb restarted with different oid'
assert
idb_adap_oid_ret
==
idb_adap_oid
,
'Idb restarted with different oid'
Lib/idlelib/ScriptBinding.py
View file @
e52f2d14
...
@@ -99,7 +99,7 @@ class ScriptBinding:
...
@@ -99,7 +99,7 @@ class ScriptBinding:
self
.
errorbox
(
"Syntax error"
,
self
.
errorbox
(
"Syntax error"
,
"There's an error in your program:
\
n
"
+
msg
)
"There's an error in your program:
\
n
"
+
msg
)
return
False
return
False
def
colorize_syntax_error
(
self
,
msg
,
lineno
,
offset
):
def
colorize_syntax_error
(
self
,
msg
,
lineno
,
offset
):
text
=
self
.
editwin
.
text
text
=
self
.
editwin
.
text
pos
=
"0.0 + %d lines + %d chars"
%
(
lineno
-
1
,
offset
-
1
)
pos
=
"0.0 + %d lines + %d chars"
%
(
lineno
-
1
,
offset
-
1
)
...
@@ -112,7 +112,7 @@ class ScriptBinding:
...
@@ -112,7 +112,7 @@ class ScriptBinding:
else
:
else
:
text
.
mark_set
(
"insert"
,
pos
+
"+1c"
)
text
.
mark_set
(
"insert"
,
pos
+
"+1c"
)
text
.
see
(
pos
)
text
.
see
(
pos
)
def
run_script_event
(
self
,
event
):
def
run_script_event
(
self
,
event
):
"Check syntax, if ok run the script in the shell top level"
"Check syntax, if ok run the script in the shell top level"
filename
=
self
.
getfilename
()
filename
=
self
.
getfilename
()
...
...
Lib/idlelib/ZoomHeight.py
View file @
e52f2d14
...
@@ -10,7 +10,7 @@ class ZoomHeight:
...
@@ -10,7 +10,7 @@ class ZoomHeight:
(
'_Zoom Height'
,
'<<zoom-height>>'
),
(
'_Zoom Height'
,
'<<zoom-height>>'
),
])
])
]
]
def
__init__
(
self
,
editwin
):
def
__init__
(
self
,
editwin
):
self
.
editwin
=
editwin
self
.
editwin
=
editwin
...
@@ -33,7 +33,7 @@ def zoom_height(top):
...
@@ -33,7 +33,7 @@ def zoom_height(top):
#newy = 24
#newy = 24
newy
=
0
newy
=
0
#newheight = newheight - 96
#newheight = newheight - 96
newheight
=
newheight
-
88
newheight
=
newheight
-
88
if
height
>=
newheight
:
if
height
>=
newheight
:
newgeom
=
""
newgeom
=
""
else
:
else
:
...
...
Lib/idlelib/aboutDialog.py
View file @
e52f2d14
...
@@ -10,7 +10,7 @@ import idlever
...
@@ -10,7 +10,7 @@ import idlever
class
AboutDialog
(
Toplevel
):
class
AboutDialog
(
Toplevel
):
"""
"""
modal about dialog for idle
modal about dialog for idle
"""
"""
def
__init__
(
self
,
parent
,
title
):
def
__init__
(
self
,
parent
,
title
):
Toplevel
.
__init__
(
self
,
parent
)
Toplevel
.
__init__
(
self
,
parent
)
self
.
configure
(
borderwidth
=
5
)
self
.
configure
(
borderwidth
=
5
)
...
@@ -18,7 +18,7 @@ class AboutDialog(Toplevel):
...
@@ -18,7 +18,7 @@ class AboutDialog(Toplevel):
parent
.
winfo_rooty
()
+
30
))
parent
.
winfo_rooty
()
+
30
))
self
.
bg
=
"#707070"
self
.
bg
=
"#707070"
self
.
fg
=
"#ffffff"
self
.
fg
=
"#ffffff"
self
.
CreateWidgets
()
self
.
CreateWidgets
()
self
.
resizable
(
height
=
FALSE
,
width
=
FALSE
)
self
.
resizable
(
height
=
FALSE
,
width
=
FALSE
)
self
.
title
(
title
)
self
.
title
(
title
)
...
@@ -33,7 +33,7 @@ class AboutDialog(Toplevel):
...
@@ -33,7 +33,7 @@ class AboutDialog(Toplevel):
self
.
bind
(
'<Return>'
,
self
.
Ok
)
#dismiss dialog
self
.
bind
(
'<Return>'
,
self
.
Ok
)
#dismiss dialog
self
.
bind
(
'<Escape>'
,
self
.
Ok
)
#dismiss dialog
self
.
bind
(
'<Escape>'
,
self
.
Ok
)
#dismiss dialog
self
.
wait_window
()
self
.
wait_window
()
def
CreateWidgets
(
self
):
def
CreateWidgets
(
self
):
frameMain
=
Frame
(
self
,
borderwidth
=
2
,
relief
=
SUNKEN
)
frameMain
=
Frame
(
self
,
borderwidth
=
2
,
relief
=
SUNKEN
)
frameButtons
=
Frame
(
self
)
frameButtons
=
Frame
(
self
)
...
@@ -83,7 +83,7 @@ class AboutDialog(Toplevel):
...
@@ -83,7 +83,7 @@ class AboutDialog(Toplevel):
#handle weird tk version num in windoze python >= 1.6 (?!?)
#handle weird tk version num in windoze python >= 1.6 (?!?)
tkVer
=
`TkVersion`
.
split
(
'.'
)
tkVer
=
`TkVersion`
.
split
(
'.'
)
tkVer
[
len
(
tkVer
)
-
1
]
=
str
(
'%.3g'
%
(
float
(
'.'
+
tkVer
[
len
(
tkVer
)
-
1
])))[
2
:]
tkVer
[
len
(
tkVer
)
-
1
]
=
str
(
'%.3g'
%
(
float
(
'.'
+
tkVer
[
len
(
tkVer
)
-
1
])))[
2
:]
if
tkVer
[
len
(
tkVer
)
-
1
]
==
''
:
if
tkVer
[
len
(
tkVer
)
-
1
]
==
''
:
tkVer
[
len
(
tkVer
)
-
1
]
=
'0'
tkVer
[
len
(
tkVer
)
-
1
]
=
'0'
tkVer
=
string
.
join
(
tkVer
,
'.'
)
tkVer
=
string
.
join
(
tkVer
,
'.'
)
labelTkVer
=
Label
(
frameBg
,
text
=
'Tk version: '
+
labelTkVer
=
Label
(
frameBg
,
text
=
'Tk version: '
+
...
@@ -105,7 +105,7 @@ class AboutDialog(Toplevel):
...
@@ -105,7 +105,7 @@ class AboutDialog(Toplevel):
def
ShowLicense
(
self
):
def
ShowLicense
(
self
):
self
.
ViewFile
(
'About - License'
,
'LICENSE.txt'
)
self
.
ViewFile
(
'About - License'
,
'LICENSE.txt'
)
def
ShowCredits
(
self
):
def
ShowCredits
(
self
):
self
.
ViewFile
(
'About - Credits'
,
'CREDITS.txt'
)
self
.
ViewFile
(
'About - Credits'
,
'CREDITS.txt'
)
...
@@ -115,7 +115,7 @@ class AboutDialog(Toplevel):
...
@@ -115,7 +115,7 @@ class AboutDialog(Toplevel):
def
Ok
(
self
,
event
=
None
):
def
Ok
(
self
,
event
=
None
):
self
.
destroy
()
self
.
destroy
()
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
#test the dialog
#test the dialog
root
=
Tk
()
root
=
Tk
()
...
...
Lib/idlelib/boolcheck.py
View file @
e52f2d14
"boolcheck - import this module to ensure True, False, bool() builtins exist."
"boolcheck - import this module to ensure True, False, bool() builtins exist."
try
:
try
:
True
True
except
NameError
:
except
NameError
:
import
__builtin__
import
__builtin__
...
@@ -7,4 +7,3 @@ except NameError:
...
@@ -7,4 +7,3 @@ except NameError:
__builtin__
.
False
=
0
__builtin__
.
False
=
0
from
operator
import
truth
from
operator
import
truth
__builtin__
.
bool
=
truth
__builtin__
.
bool
=
truth
Lib/idlelib/configDialog.py
View file @
e52f2d14
...
@@ -14,7 +14,7 @@ from configHelpSourceEdit import GetHelpSourceDialog
...
@@ -14,7 +14,7 @@ from configHelpSourceEdit import GetHelpSourceDialog
class
ConfigDialog
(
Toplevel
):
class
ConfigDialog
(
Toplevel
):
"""
"""
configuration dialog for idle
configuration dialog for idle
"""
"""
def
__init__
(
self
,
parent
,
title
):
def
__init__
(
self
,
parent
,
title
):
Toplevel
.
__init__
(
self
,
parent
)
Toplevel
.
__init__
(
self
,
parent
)
self
.
configure
(
borderwidth
=
5
)
self
.
configure
(
borderwidth
=
5
)
...
@@ -22,7 +22,7 @@ class ConfigDialog(Toplevel):
...
@@ -22,7 +22,7 @@ class ConfigDialog(Toplevel):
parent
.
winfo_rooty
()
+
30
))
parent
.
winfo_rooty
()
+
30
))
#Theme Elements. Each theme element key is it's display name.
#Theme Elements. Each theme element key is it's display name.
#The first value of the tuple is the sample area tag name.
#The first value of the tuple is the sample area tag name.
#The second value is the display name list sort index.
#The second value is the display name list sort index.
self
.
themeElements
=
{
'Normal Text'
:(
'normal'
,
'00'
),
self
.
themeElements
=
{
'Normal Text'
:(
'normal'
,
'00'
),
'Python Keywords'
:(
'keyword'
,
'01'
),
'Python Keywords'
:(
'keyword'
,
'01'
),
'Python Definitions'
:(
'definition'
,
'02'
),
'Python Definitions'
:(
'definition'
,
'02'
),
...
@@ -48,9 +48,9 @@ class ConfigDialog(Toplevel):
...
@@ -48,9 +48,9 @@ class ConfigDialog(Toplevel):
#self.bind('<Alt-a>',self.Apply) #apply changes, save
#self.bind('<Alt-a>',self.Apply) #apply changes, save
#self.bind('<F1>',self.Help) #context help
#self.bind('<F1>',self.Help) #context help
self
.
LoadConfigs
()
self
.
LoadConfigs
()
self
.
AttachVarCallbacks
()
#avoid callbacks during LoadConfigs
self
.
AttachVarCallbacks
()
#avoid callbacks during LoadConfigs
self
.
wait_window
()
self
.
wait_window
()
def
CreateWidgets
(
self
):
def
CreateWidgets
(
self
):
self
.
tabPages
=
TabPageSet
(
self
,
self
.
tabPages
=
TabPageSet
(
self
,
pageNames
=
[
'Fonts/Tabs'
,
'Highlighting'
,
'Keys'
,
'General'
])
pageNames
=
[
'Fonts/Tabs'
,
'Highlighting'
,
'Keys'
,
'General'
])
...
@@ -75,7 +75,7 @@ class ConfigDialog(Toplevel):
...
@@ -75,7 +75,7 @@ class ConfigDialog(Toplevel):
self
.
buttonCancel
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
)
self
.
buttonCancel
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
)
frameActionButtons
.
pack
(
side
=
BOTTOM
)
frameActionButtons
.
pack
(
side
=
BOTTOM
)
self
.
tabPages
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
self
.
tabPages
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
def
CreatePageFontTab
(
self
):
def
CreatePageFontTab
(
self
):
#tkVars
#tkVars
self
.
fontSize
=
StringVar
(
self
)
self
.
fontSize
=
StringVar
(
self
)
...
@@ -83,7 +83,7 @@ class ConfigDialog(Toplevel):
...
@@ -83,7 +83,7 @@ class ConfigDialog(Toplevel):
self
.
fontName
=
StringVar
(
self
)
self
.
fontName
=
StringVar
(
self
)
self
.
spaceNum
=
IntVar
(
self
)
self
.
spaceNum
=
IntVar
(
self
)
#self.tabCols=IntVar(self)
#self.tabCols=IntVar(self)
self
.
indentBySpaces
=
BooleanVar
(
self
)
self
.
indentBySpaces
=
BooleanVar
(
self
)
self
.
editFont
=
tkFont
.
Font
(
self
,(
'courier'
,
12
,
'normal'
))
self
.
editFont
=
tkFont
.
Font
(
self
,(
'courier'
,
12
,
'normal'
))
##widget creation
##widget creation
#body frame
#body frame
...
@@ -168,7 +168,7 @@ class ConfigDialog(Toplevel):
...
@@ -168,7 +168,7 @@ class ConfigDialog(Toplevel):
self
.
fgHilite
=
BooleanVar
(
self
)
self
.
fgHilite
=
BooleanVar
(
self
)
self
.
colour
=
StringVar
(
self
)
self
.
colour
=
StringVar
(
self
)
self
.
fontName
=
StringVar
(
self
)
self
.
fontName
=
StringVar
(
self
)
self
.
themeIsBuiltin
=
BooleanVar
(
self
)
self
.
themeIsBuiltin
=
BooleanVar
(
self
)
self
.
highlightTarget
=
StringVar
(
self
)
self
.
highlightTarget
=
StringVar
(
self
)
##widget creation
##widget creation
#body frame
#body frame
...
@@ -194,7 +194,7 @@ class ConfigDialog(Toplevel):
...
@@ -194,7 +194,7 @@ class ConfigDialog(Toplevel):
(
' '
,
'normal'
),(
'stderr'
,
'stderr'
),(
'
\
n
'
,
'normal'
))
(
' '
,
'normal'
),(
'stderr'
,
'stderr'
),(
'
\
n
'
,
'normal'
))
for
txTa
in
textAndTags
:
for
txTa
in
textAndTags
:
text
.
insert
(
END
,
txTa
[
0
],
txTa
[
1
])
text
.
insert
(
END
,
txTa
[
0
],
txTa
[
1
])
for
element
in
self
.
themeElements
.
keys
():
for
element
in
self
.
themeElements
.
keys
():
text
.
tag_bind
(
self
.
themeElements
[
element
][
0
],
'<ButtonPress-1>'
,
text
.
tag_bind
(
self
.
themeElements
[
element
][
0
],
'<ButtonPress-1>'
,
lambda
event
,
elem
=
element
:
event
.
widget
.
winfo_toplevel
()
lambda
event
,
elem
=
element
:
event
.
widget
.
winfo_toplevel
()
.
highlightTarget
.
set
(
elem
))
.
highlightTarget
.
set
(
elem
))
...
@@ -211,7 +211,7 @@ class ConfigDialog(Toplevel):
...
@@ -211,7 +211,7 @@ class ConfigDialog(Toplevel):
self
.
radioBg
=
Radiobutton
(
frameFgBg
,
variable
=
self
.
fgHilite
,
self
.
radioBg
=
Radiobutton
(
frameFgBg
,
variable
=
self
.
fgHilite
,
value
=
0
,
text
=
'Background'
,
command
=
self
.
SetColourSampleBinding
)
value
=
0
,
text
=
'Background'
,
command
=
self
.
SetColourSampleBinding
)
self
.
fgHilite
.
set
(
1
)
self
.
fgHilite
.
set
(
1
)
buttonSaveCustomTheme
=
Button
(
frameCustom
,
buttonSaveCustomTheme
=
Button
(
frameCustom
,
text
=
'Save as New Custom Theme'
,
command
=
self
.
SaveAsNewTheme
)
text
=
'Save as New Custom Theme'
,
command
=
self
.
SaveAsNewTheme
)
#frameTheme
#frameTheme
labelThemeTitle
=
Label
(
frameTheme
,
text
=
'Select a Highlighting Theme'
)
labelThemeTitle
=
Label
(
frameTheme
,
text
=
'Select a Highlighting Theme'
)
...
@@ -240,7 +240,7 @@ class ConfigDialog(Toplevel):
...
@@ -240,7 +240,7 @@ class ConfigDialog(Toplevel):
self
.
optMenuHighlightTarget
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
X
,
padx
=
8
,
pady
=
3
)
self
.
optMenuHighlightTarget
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
X
,
padx
=
8
,
pady
=
3
)
self
.
radioFg
.
pack
(
side
=
LEFT
,
anchor
=
E
)
self
.
radioFg
.
pack
(
side
=
LEFT
,
anchor
=
E
)
self
.
radioBg
.
pack
(
side
=
RIGHT
,
anchor
=
W
)
self
.
radioBg
.
pack
(
side
=
RIGHT
,
anchor
=
W
)
buttonSaveCustomTheme
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
buttonSaveCustomTheme
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
#frameTheme
#frameTheme
labelThemeTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelThemeTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelTypeTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelTypeTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
...
@@ -256,7 +256,7 @@ class ConfigDialog(Toplevel):
...
@@ -256,7 +256,7 @@ class ConfigDialog(Toplevel):
self
.
bindingTarget
=
StringVar
(
self
)
self
.
bindingTarget
=
StringVar
(
self
)
self
.
builtinKeys
=
StringVar
(
self
)
self
.
builtinKeys
=
StringVar
(
self
)
self
.
customKeys
=
StringVar
(
self
)
self
.
customKeys
=
StringVar
(
self
)
self
.
keysAreBuiltin
=
BooleanVar
(
self
)
self
.
keysAreBuiltin
=
BooleanVar
(
self
)
self
.
keyBinding
=
StringVar
(
self
)
self
.
keyBinding
=
StringVar
(
self
)
##widget creation
##widget creation
#body frame
#body frame
...
@@ -300,8 +300,8 @@ class ConfigDialog(Toplevel):
...
@@ -300,8 +300,8 @@ class ConfigDialog(Toplevel):
frameKeySets
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
,
fill
=
Y
)
frameKeySets
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
,
fill
=
Y
)
#frameCustom
#frameCustom
labelCustomTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelCustomTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
buttonSaveCustomKeys
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
buttonSaveCustomKeys
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
self
.
buttonNewKeys
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
self
.
buttonNewKeys
.
pack
(
side
=
BOTTOM
,
fill
=
X
,
padx
=
5
,
pady
=
5
)
frameTarget
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
,
expand
=
TRUE
,
fill
=
BOTH
)
frameTarget
.
pack
(
side
=
LEFT
,
padx
=
5
,
pady
=
5
,
expand
=
TRUE
,
fill
=
BOTH
)
#frame target
#frame target
frameTarget
.
columnconfigure
(
0
,
weight
=
1
)
frameTarget
.
columnconfigure
(
0
,
weight
=
1
)
...
@@ -321,16 +321,16 @@ class ConfigDialog(Toplevel):
...
@@ -321,16 +321,16 @@ class ConfigDialog(Toplevel):
return
frame
return
frame
def
CreatePageGeneral
(
self
):
def
CreatePageGeneral
(
self
):
#tkVars
#tkVars
self
.
winWidth
=
StringVar
(
self
)
self
.
winWidth
=
StringVar
(
self
)
self
.
winHeight
=
StringVar
(
self
)
self
.
winHeight
=
StringVar
(
self
)
self
.
startupEdit
=
IntVar
(
self
)
self
.
startupEdit
=
IntVar
(
self
)
self
.
userHelpBrowser
=
BooleanVar
(
self
)
self
.
userHelpBrowser
=
BooleanVar
(
self
)
self
.
helpBrowser
=
StringVar
(
self
)
self
.
helpBrowser
=
StringVar
(
self
)
#widget creation
#widget creation
#body
#body
frame
=
self
.
tabPages
.
pages
[
'General'
][
'page'
]
frame
=
self
.
tabPages
.
pages
[
'General'
][
'page'
]
#body section frames
#body section frames
frameRun
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
frameRun
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
frameWinSize
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
frameWinSize
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
frameHelp
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
frameHelp
=
Frame
(
frame
,
borderwidth
=
2
,
relief
=
GROOVE
)
...
@@ -383,7 +383,7 @@ class ConfigDialog(Toplevel):
...
@@ -383,7 +383,7 @@ class ConfigDialog(Toplevel):
labelRunTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelRunTitle
.
pack
(
side
=
TOP
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelRunChoiceTitle
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelRunChoiceTitle
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
radioStartupEdit
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
radioStartupEdit
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
radioStartupShell
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
radioStartupShell
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
#frameWinSize
#frameWinSize
labelWinSizeTitle
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
labelWinSizeTitle
.
pack
(
side
=
LEFT
,
anchor
=
W
,
padx
=
5
,
pady
=
5
)
entryWinHeight
.
pack
(
side
=
RIGHT
,
anchor
=
E
,
padx
=
10
,
pady
=
5
)
entryWinHeight
.
pack
(
side
=
RIGHT
,
anchor
=
E
,
padx
=
10
,
pady
=
5
)
...
@@ -414,12 +414,12 @@ class ConfigDialog(Toplevel):
...
@@ -414,12 +414,12 @@ class ConfigDialog(Toplevel):
self
.
colour
.
trace_variable
(
'w'
,
self
.
VarChanged_colour
)
self
.
colour
.
trace_variable
(
'w'
,
self
.
VarChanged_colour
)
self
.
builtinTheme
.
trace_variable
(
'w'
,
self
.
VarChanged_builtinTheme
)
self
.
builtinTheme
.
trace_variable
(
'w'
,
self
.
VarChanged_builtinTheme
)
self
.
customTheme
.
trace_variable
(
'w'
,
self
.
VarChanged_customTheme
)
self
.
customTheme
.
trace_variable
(
'w'
,
self
.
VarChanged_customTheme
)
self
.
themeIsBuiltin
.
trace_variable
(
'w'
,
self
.
VarChanged_themeIsBuiltin
)
self
.
themeIsBuiltin
.
trace_variable
(
'w'
,
self
.
VarChanged_themeIsBuiltin
)
self
.
highlightTarget
.
trace_variable
(
'w'
,
self
.
VarChanged_highlightTarget
)
self
.
highlightTarget
.
trace_variable
(
'w'
,
self
.
VarChanged_highlightTarget
)
self
.
keyBinding
.
trace_variable
(
'w'
,
self
.
VarChanged_keyBinding
)
self
.
keyBinding
.
trace_variable
(
'w'
,
self
.
VarChanged_keyBinding
)
self
.
builtinKeys
.
trace_variable
(
'w'
,
self
.
VarChanged_builtinKeys
)
self
.
builtinKeys
.
trace_variable
(
'w'
,
self
.
VarChanged_builtinKeys
)
self
.
customKeys
.
trace_variable
(
'w'
,
self
.
VarChanged_customKeys
)
self
.
customKeys
.
trace_variable
(
'w'
,
self
.
VarChanged_customKeys
)
self
.
keysAreBuiltin
.
trace_variable
(
'w'
,
self
.
VarChanged_keysAreBuiltin
)
self
.
keysAreBuiltin
.
trace_variable
(
'w'
,
self
.
VarChanged_keysAreBuiltin
)
self
.
winWidth
.
trace_variable
(
'w'
,
self
.
VarChanged_winWidth
)
self
.
winWidth
.
trace_variable
(
'w'
,
self
.
VarChanged_winWidth
)
self
.
winHeight
.
trace_variable
(
'w'
,
self
.
VarChanged_winHeight
)
self
.
winHeight
.
trace_variable
(
'w'
,
self
.
VarChanged_winHeight
)
self
.
startupEdit
.
trace_variable
(
'w'
,
self
.
VarChanged_startupEdit
)
self
.
startupEdit
.
trace_variable
(
'w'
,
self
.
VarChanged_startupEdit
)
...
@@ -427,7 +427,7 @@ class ConfigDialog(Toplevel):
...
@@ -427,7 +427,7 @@ class ConfigDialog(Toplevel):
def
VarChanged_fontSize
(
self
,
*
params
):
def
VarChanged_fontSize
(
self
,
*
params
):
value
=
self
.
fontSize
.
get
()
value
=
self
.
fontSize
.
get
()
self
.
AddChangedItem
(
'main'
,
'EditorWindow'
,
'font-size'
,
value
)
self
.
AddChangedItem
(
'main'
,
'EditorWindow'
,
'font-size'
,
value
)
def
VarChanged_fontName
(
self
,
*
params
):
def
VarChanged_fontName
(
self
,
*
params
):
value
=
self
.
fontName
.
get
()
value
=
self
.
fontName
.
get
()
self
.
AddChangedItem
(
'main'
,
'EditorWindow'
,
'font'
,
value
)
self
.
AddChangedItem
(
'main'
,
'EditorWindow'
,
'font'
,
value
)
...
@@ -472,7 +472,7 @@ class ConfigDialog(Toplevel):
...
@@ -472,7 +472,7 @@ class ConfigDialog(Toplevel):
def
VarChanged_highlightTarget
(
self
,
*
params
):
def
VarChanged_highlightTarget
(
self
,
*
params
):
self
.
SetHighlightTarget
()
self
.
SetHighlightTarget
()
def
VarChanged_keyBinding
(
self
,
*
params
):
def
VarChanged_keyBinding
(
self
,
*
params
):
value
=
self
.
keyBinding
.
get
()
value
=
self
.
keyBinding
.
get
()
keySet
=
self
.
customKeys
.
get
()
keySet
=
self
.
customKeys
.
get
()
...
@@ -484,7 +484,7 @@ class ConfigDialog(Toplevel):
...
@@ -484,7 +484,7 @@ class ConfigDialog(Toplevel):
extName
=
idleConf
.
GetExtnNameForEvent
(
event
)
extName
=
idleConf
.
GetExtnNameForEvent
(
event
)
extKeybindSection
=
extName
+
'_cfgBindings'
extKeybindSection
=
extName
+
'_cfgBindings'
self
.
AddChangedItem
(
'extensions'
,
extKeybindSection
,
event
,
value
)
self
.
AddChangedItem
(
'extensions'
,
extKeybindSection
,
event
,
value
)
def
VarChanged_builtinKeys
(
self
,
*
params
):
def
VarChanged_builtinKeys
(
self
,
*
params
):
value
=
self
.
builtinKeys
.
get
()
value
=
self
.
builtinKeys
.
get
()
self
.
AddChangedItem
(
'main'
,
'Keys'
,
'name'
,
value
)
self
.
AddChangedItem
(
'main'
,
'Keys'
,
'name'
,
value
)
...
@@ -497,9 +497,9 @@ class ConfigDialog(Toplevel):
...
@@ -497,9 +497,9 @@ class ConfigDialog(Toplevel):
self
.
LoadKeysList
(
value
)
self
.
LoadKeysList
(
value
)
def
VarChanged_keysAreBuiltin
(
self
,
*
params
):
def
VarChanged_keysAreBuiltin
(
self
,
*
params
):
value
=
self
.
keysAreBuiltin
.
get
()
value
=
self
.
keysAreBuiltin
.
get
()
self
.
AddChangedItem
(
'main'
,
'Keys'
,
'default'
,
value
)
self
.
AddChangedItem
(
'main'
,
'Keys'
,
'default'
,
value
)
if
value
:
if
value
:
self
.
VarChanged_builtinKeys
()
self
.
VarChanged_builtinKeys
()
else
:
else
:
self
.
VarChanged_customKeys
()
self
.
VarChanged_customKeys
()
...
@@ -518,8 +518,8 @@ class ConfigDialog(Toplevel):
...
@@ -518,8 +518,8 @@ class ConfigDialog(Toplevel):
def
ResetChangedItems
(
self
):
def
ResetChangedItems
(
self
):
#When any config item is changed in this dialog, an entry
#When any config item is changed in this dialog, an entry
#should be made in the relevant section (config type) of this
#should be made in the relevant section (config type) of this
#dictionary. The key should be the config file section name and the
#dictionary. The key should be the config file section name and the
#value a dictionary, whose key:value pairs are item=value pairs for
#value a dictionary, whose key:value pairs are item=value pairs for
#that config file section.
#that config file section.
self
.
changedItems
=
{
'main'
:{},
'highlight'
:{},
'keys'
:{},
'extensions'
:{}}
self
.
changedItems
=
{
'main'
:{},
'highlight'
:{},
'keys'
:{},
'extensions'
:{}}
...
@@ -527,9 +527,9 @@ class ConfigDialog(Toplevel):
...
@@ -527,9 +527,9 @@ class ConfigDialog(Toplevel):
def
AddChangedItem
(
self
,
type
,
section
,
item
,
value
):
def
AddChangedItem
(
self
,
type
,
section
,
item
,
value
):
value
=
str
(
value
)
#make sure we use a string
value
=
str
(
value
)
#make sure we use a string
if
not
self
.
changedItems
[
type
].
has_key
(
section
):
if
not
self
.
changedItems
[
type
].
has_key
(
section
):
self
.
changedItems
[
type
][
section
]
=
{}
self
.
changedItems
[
type
][
section
]
=
{}
self
.
changedItems
[
type
][
section
][
item
]
=
value
self
.
changedItems
[
type
][
section
][
item
]
=
value
def
GetDefaultItems
(
self
):
def
GetDefaultItems
(
self
):
dItems
=
{
'main'
:{},
'highlight'
:{},
'keys'
:{},
'extensions'
:{}}
dItems
=
{
'main'
:{},
'highlight'
:{},
'keys'
:{},
'extensions'
:{}}
for
configType
in
dItems
.
keys
():
for
configType
in
dItems
.
keys
():
...
@@ -537,11 +537,11 @@ class ConfigDialog(Toplevel):
...
@@ -537,11 +537,11 @@ class ConfigDialog(Toplevel):
for
section
in
sections
:
for
section
in
sections
:
dItems
[
configType
][
section
]
=
{}
dItems
[
configType
][
section
]
=
{}
options
=
idleConf
.
defaultCfg
[
configType
].
GetOptionList
(
section
)
options
=
idleConf
.
defaultCfg
[
configType
].
GetOptionList
(
section
)
for
option
in
options
:
for
option
in
options
:
dItems
[
configType
][
section
][
option
]
=
(
dItems
[
configType
][
section
][
option
]
=
(
idleConf
.
defaultCfg
[
configType
].
Get
(
section
,
option
))
idleConf
.
defaultCfg
[
configType
].
Get
(
section
,
option
))
return
dItems
return
dItems
def
SetThemeType
(
self
):
def
SetThemeType
(
self
):
if
self
.
themeIsBuiltin
.
get
():
if
self
.
themeIsBuiltin
.
get
():
self
.
optMenuThemeBuiltin
.
config
(
state
=
NORMAL
)
self
.
optMenuThemeBuiltin
.
config
(
state
=
NORMAL
)
...
@@ -563,14 +563,14 @@ class ConfigDialog(Toplevel):
...
@@ -563,14 +563,14 @@ class ConfigDialog(Toplevel):
self
.
radioKeysCustom
.
config
(
state
=
NORMAL
)
self
.
radioKeysCustom
.
config
(
state
=
NORMAL
)
self
.
optMenuKeysCustom
.
config
(
state
=
NORMAL
)
self
.
optMenuKeysCustom
.
config
(
state
=
NORMAL
)
self
.
buttonDeleteCustomKeys
.
config
(
state
=
NORMAL
)
self
.
buttonDeleteCustomKeys
.
config
(
state
=
NORMAL
)
def
GetNewKeys
(
self
):
def
GetNewKeys
(
self
):
listIndex
=
self
.
listBindings
.
index
(
ANCHOR
)
listIndex
=
self
.
listBindings
.
index
(
ANCHOR
)
binding
=
self
.
listBindings
.
get
(
listIndex
)
binding
=
self
.
listBindings
.
get
(
listIndex
)
bindName
=
binding
.
split
()[
0
]
#first part, up to first space
bindName
=
binding
.
split
()[
0
]
#first part, up to first space
if
self
.
keysAreBuiltin
.
get
():
if
self
.
keysAreBuiltin
.
get
():
currentKeySetName
=
self
.
builtinKeys
.
get
()
currentKeySetName
=
self
.
builtinKeys
.
get
()
else
:
else
:
currentKeySetName
=
self
.
customKeys
.
get
()
currentKeySetName
=
self
.
customKeys
.
get
()
currentBindings
=
idleConf
.
GetCurrentKeySet
()
currentBindings
=
idleConf
.
GetCurrentKeySet
()
if
currentKeySetName
in
self
.
changedItems
[
'keys'
].
keys
():
#unsaved changes
if
currentKeySetName
in
self
.
changedItems
[
'keys'
].
keys
():
#unsaved changes
...
@@ -589,8 +589,8 @@ class ConfigDialog(Toplevel):
...
@@ -589,8 +589,8 @@ class ConfigDialog(Toplevel):
self
.
listBindings
.
select_set
(
listIndex
)
self
.
listBindings
.
select_set
(
listIndex
)
self
.
listBindings
.
select_anchor
(
listIndex
)
self
.
listBindings
.
select_anchor
(
listIndex
)
return
return
else
:
#create new custom key set based on previously active key set
else
:
#create new custom key set based on previously active key set
self
.
CreateNewKeySet
(
newKeySet
)
self
.
CreateNewKeySet
(
newKeySet
)
self
.
listBindings
.
delete
(
listIndex
)
self
.
listBindings
.
delete
(
listIndex
)
self
.
listBindings
.
insert
(
listIndex
,
bindName
+
' - '
+
newKeys
)
self
.
listBindings
.
insert
(
listIndex
,
bindName
+
' - '
+
newKeys
)
self
.
listBindings
.
select_set
(
listIndex
)
self
.
listBindings
.
select_set
(
listIndex
)
...
@@ -606,7 +606,7 @@ class ConfigDialog(Toplevel):
...
@@ -606,7 +606,7 @@ class ConfigDialog(Toplevel):
newKeySet
=
GetCfgSectionNameDialog
(
self
,
'New Custom Key Set'
,
newKeySet
=
GetCfgSectionNameDialog
(
self
,
'New Custom Key Set'
,
message
,
usedNames
).
result
message
,
usedNames
).
result
return
newKeySet
return
newKeySet
def
SaveAsNewKeySet
(
self
):
def
SaveAsNewKeySet
(
self
):
newKeysName
=
self
.
GetNewKeysName
(
'New Key Set Name:'
)
newKeysName
=
self
.
GetNewKeysName
(
'New Key Set Name:'
)
if
newKeysName
:
if
newKeysName
:
...
@@ -618,9 +618,9 @@ class ConfigDialog(Toplevel):
...
@@ -618,9 +618,9 @@ class ConfigDialog(Toplevel):
def
CreateNewKeySet
(
self
,
newKeySetName
):
def
CreateNewKeySet
(
self
,
newKeySetName
):
#creates new custom key set based on the previously active key set,
#creates new custom key set based on the previously active key set,
#and makes the new key set active
#and makes the new key set active
if
self
.
keysAreBuiltin
.
get
():
if
self
.
keysAreBuiltin
.
get
():
prevKeySetName
=
self
.
builtinKeys
.
get
()
prevKeySetName
=
self
.
builtinKeys
.
get
()
else
:
else
:
prevKeySetName
=
self
.
customKeys
.
get
()
prevKeySetName
=
self
.
customKeys
.
get
()
prevKeys
=
idleConf
.
GetCoreKeys
(
prevKeySetName
)
prevKeys
=
idleConf
.
GetCoreKeys
(
prevKeySetName
)
newKeys
=
{}
newKeys
=
{}
...
@@ -641,7 +641,7 @@ class ConfigDialog(Toplevel):
...
@@ -641,7 +641,7 @@ class ConfigDialog(Toplevel):
self
.
optMenuKeysCustom
.
SetMenu
(
customKeyList
,
newKeySetName
)
self
.
optMenuKeysCustom
.
SetMenu
(
customKeyList
,
newKeySetName
)
self
.
keysAreBuiltin
.
set
(
0
)
self
.
keysAreBuiltin
.
set
(
0
)
self
.
SetKeysType
()
self
.
SetKeysType
()
def
LoadKeysList
(
self
,
keySetName
):
def
LoadKeysList
(
self
,
keySetName
):
reselect
=
0
reselect
=
0
newKeySet
=
0
newKeySet
=
0
...
@@ -652,7 +652,7 @@ class ConfigDialog(Toplevel):
...
@@ -652,7 +652,7 @@ class ConfigDialog(Toplevel):
bindNames
=
keySet
.
keys
()
bindNames
=
keySet
.
keys
()
bindNames
.
sort
()
bindNames
.
sort
()
self
.
listBindings
.
delete
(
0
,
END
)
self
.
listBindings
.
delete
(
0
,
END
)
for
bindName
in
bindNames
:
for
bindName
in
bindNames
:
key
=
string
.
join
(
keySet
[
bindName
])
#make key(s) into a string
key
=
string
.
join
(
keySet
[
bindName
])
#make key(s) into a string
bindName
=
bindName
[
2
:
-
2
]
#trim off the angle brackets
bindName
=
bindName
[
2
:
-
2
]
#trim off the angle brackets
if
keySetName
in
self
.
changedItems
[
'keys'
].
keys
():
if
keySetName
in
self
.
changedItems
[
'keys'
].
keys
():
...
@@ -690,7 +690,7 @@ class ConfigDialog(Toplevel):
...
@@ -690,7 +690,7 @@ class ConfigDialog(Toplevel):
#user can't back out of these changes, they must be applied now
#user can't back out of these changes, they must be applied now
self
.
Apply
()
self
.
Apply
()
self
.
SetKeysType
()
self
.
SetKeysType
()
def
DeleteCustomTheme
(
self
):
def
DeleteCustomTheme
(
self
):
themeName
=
self
.
customTheme
.
get
()
themeName
=
self
.
customTheme
.
get
()
if
not
tkMessageBox
.
askyesno
(
'Delete Theme'
,
'Are you sure you wish '
+
if
not
tkMessageBox
.
askyesno
(
'Delete Theme'
,
'Are you sure you wish '
+
...
@@ -722,7 +722,7 @@ class ConfigDialog(Toplevel):
...
@@ -722,7 +722,7 @@ class ConfigDialog(Toplevel):
prevColour
=
self
.
frameColourSet
.
cget
(
'bg'
)
prevColour
=
self
.
frameColourSet
.
cget
(
'bg'
)
rgbTuplet
,
colourString
=
tkColorChooser
.
askcolor
(
parent
=
self
,
rgbTuplet
,
colourString
=
tkColorChooser
.
askcolor
(
parent
=
self
,
title
=
'Pick new colour for : '
+
target
,
initialcolor
=
prevColour
)
title
=
'Pick new colour for : '
+
target
,
initialcolor
=
prevColour
)
if
colourString
and
(
colourString
!=
prevColour
):
if
colourString
and
(
colourString
!=
prevColour
):
#user didn't cancel, and they chose a new colour
#user didn't cancel, and they chose a new colour
if
self
.
themeIsBuiltin
.
get
():
#current theme is a built-in
if
self
.
themeIsBuiltin
.
get
():
#current theme is a built-in
message
=
(
'Your changes will be saved as a new Custom Theme. '
+
message
=
(
'Your changes will be saved as a new Custom Theme. '
+
...
@@ -730,12 +730,12 @@ class ConfigDialog(Toplevel):
...
@@ -730,12 +730,12 @@ class ConfigDialog(Toplevel):
newTheme
=
self
.
GetNewThemeName
(
message
)
newTheme
=
self
.
GetNewThemeName
(
message
)
if
not
newTheme
:
#user cancelled custom theme creation
if
not
newTheme
:
#user cancelled custom theme creation
return
return
else
:
#create new custom theme based on previously active theme
else
:
#create new custom theme based on previously active theme
self
.
CreateNewTheme
(
newTheme
)
self
.
CreateNewTheme
(
newTheme
)
self
.
colour
.
set
(
colourString
)
self
.
colour
.
set
(
colourString
)
else
:
#current theme is user defined
else
:
#current theme is user defined
self
.
colour
.
set
(
colourString
)
self
.
colour
.
set
(
colourString
)
def
OnNewColourSet
(
self
):
def
OnNewColourSet
(
self
):
newColour
=
self
.
colour
.
get
()
newColour
=
self
.
colour
.
get
()
self
.
frameColourSet
.
config
(
bg
=
newColour
)
#set sample
self
.
frameColourSet
.
config
(
bg
=
newColour
)
#set sample
...
@@ -754,7 +754,7 @@ class ConfigDialog(Toplevel):
...
@@ -754,7 +754,7 @@ class ConfigDialog(Toplevel):
newTheme
=
GetCfgSectionNameDialog
(
self
,
'New Custom Theme'
,
newTheme
=
GetCfgSectionNameDialog
(
self
,
'New Custom Theme'
,
message
,
usedNames
).
result
message
,
usedNames
).
result
return
newTheme
return
newTheme
def
SaveAsNewTheme
(
self
):
def
SaveAsNewTheme
(
self
):
newThemeName
=
self
.
GetNewThemeName
(
'New Theme Name:'
)
newThemeName
=
self
.
GetNewThemeName
(
'New Theme Name:'
)
if
newThemeName
:
if
newThemeName
:
...
@@ -763,10 +763,10 @@ class ConfigDialog(Toplevel):
...
@@ -763,10 +763,10 @@ class ConfigDialog(Toplevel):
def
CreateNewTheme
(
self
,
newThemeName
):
def
CreateNewTheme
(
self
,
newThemeName
):
#creates new custom theme based on the previously active theme,
#creates new custom theme based on the previously active theme,
#and makes the new theme active
#and makes the new theme active
if
self
.
themeIsBuiltin
.
get
():
if
self
.
themeIsBuiltin
.
get
():
themeType
=
'default'
themeType
=
'default'
themeName
=
self
.
builtinTheme
.
get
()
themeName
=
self
.
builtinTheme
.
get
()
else
:
else
:
themeType
=
'user'
themeType
=
'user'
themeName
=
self
.
customTheme
.
get
()
themeName
=
self
.
customTheme
.
get
()
newTheme
=
idleConf
.
GetThemeDict
(
themeType
,
themeName
)
newTheme
=
idleConf
.
GetThemeDict
(
themeType
,
themeName
)
...
@@ -783,16 +783,16 @@ class ConfigDialog(Toplevel):
...
@@ -783,16 +783,16 @@ class ConfigDialog(Toplevel):
self
.
optMenuThemeCustom
.
SetMenu
(
customThemeList
,
newThemeName
)
self
.
optMenuThemeCustom
.
SetMenu
(
customThemeList
,
newThemeName
)
self
.
themeIsBuiltin
.
set
(
0
)
self
.
themeIsBuiltin
.
set
(
0
)
self
.
SetThemeType
()
self
.
SetThemeType
()
def
OnListFontButtonRelease
(
self
,
event
):
def
OnListFontButtonRelease
(
self
,
event
):
self
.
fontName
.
set
(
self
.
listFontName
.
get
(
ANCHOR
))
self
.
fontName
.
set
(
self
.
listFontName
.
get
(
ANCHOR
))
self
.
SetFontSample
()
self
.
SetFontSample
()
def
SetFontSample
(
self
,
event
=
None
):
def
SetFontSample
(
self
,
event
=
None
):
fontName
=
self
.
fontName
.
get
()
fontName
=
self
.
fontName
.
get
()
if
self
.
fontBold
.
get
():
if
self
.
fontBold
.
get
():
fontWeight
=
tkFont
.
BOLD
fontWeight
=
tkFont
.
BOLD
else
:
else
:
fontWeight
=
tkFont
.
NORMAL
fontWeight
=
tkFont
.
NORMAL
self
.
editFont
.
config
(
size
=
self
.
fontSize
.
get
(),
self
.
editFont
.
config
(
size
=
self
.
fontSize
.
get
(),
weight
=
fontWeight
,
family
=
fontName
)
weight
=
fontWeight
,
family
=
fontName
)
...
@@ -807,10 +807,10 @@ class ConfigDialog(Toplevel):
...
@@ -807,10 +807,10 @@ class ConfigDialog(Toplevel):
self
.
radioBg
.
config
(
state
=
NORMAL
)
self
.
radioBg
.
config
(
state
=
NORMAL
)
self
.
fgHilite
.
set
(
1
)
self
.
fgHilite
.
set
(
1
)
self
.
SetColourSample
()
self
.
SetColourSample
()
def
SetColourSampleBinding
(
self
,
*
args
):
def
SetColourSampleBinding
(
self
,
*
args
):
self
.
SetColourSample
()
self
.
SetColourSample
()
def
SetColourSample
(
self
):
def
SetColourSample
(
self
):
#set the colour smaple area
#set the colour smaple area
tag
=
self
.
themeElements
[
self
.
highlightTarget
.
get
()][
0
]
tag
=
self
.
themeElements
[
self
.
highlightTarget
.
get
()][
0
]
...
@@ -818,7 +818,7 @@ class ConfigDialog(Toplevel):
...
@@ -818,7 +818,7 @@ class ConfigDialog(Toplevel):
else
:
plane
=
'background'
else
:
plane
=
'background'
colour
=
self
.
textHighlightSample
.
tag_cget
(
tag
,
plane
)
colour
=
self
.
textHighlightSample
.
tag_cget
(
tag
,
plane
)
self
.
frameColourSet
.
config
(
bg
=
colour
)
self
.
frameColourSet
.
config
(
bg
=
colour
)
def
PaintThemeSample
(
self
):
def
PaintThemeSample
(
self
):
if
self
.
themeIsBuiltin
.
get
():
#a default theme
if
self
.
themeIsBuiltin
.
get
():
#a default theme
theme
=
self
.
builtinTheme
.
get
()
theme
=
self
.
builtinTheme
.
get
()
...
@@ -828,7 +828,7 @@ class ConfigDialog(Toplevel):
...
@@ -828,7 +828,7 @@ class ConfigDialog(Toplevel):
element
=
self
.
themeElements
[
elementTitle
][
0
]
element
=
self
.
themeElements
[
elementTitle
][
0
]
colours
=
idleConf
.
GetHighlight
(
theme
,
element
)
colours
=
idleConf
.
GetHighlight
(
theme
,
element
)
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'
,
fgBg
=
'bg'
)
'normal'
,
fgBg
=
'bg'
)
#handle any unsaved changes to this theme
#handle any unsaved changes to this theme
if
theme
in
self
.
changedItems
[
'highlight'
].
keys
():
if
theme
in
self
.
changedItems
[
'highlight'
].
keys
():
...
@@ -839,16 +839,16 @@ class ConfigDialog(Toplevel):
...
@@ -839,16 +839,16 @@ class ConfigDialog(Toplevel):
colours
[
'background'
]
=
themeDict
[
element
+
'-background'
]
colours
[
'background'
]
=
themeDict
[
element
+
'-background'
]
apply
(
self
.
textHighlightSample
.
tag_config
,(
element
,),
colours
)
apply
(
self
.
textHighlightSample
.
tag_config
,(
element
,),
colours
)
self
.
SetColourSample
()
self
.
SetColourSample
()
def
OnCheckUserHelpBrowser
(
self
):
def
OnCheckUserHelpBrowser
(
self
):
if
self
.
userHelpBrowser
.
get
():
if
self
.
userHelpBrowser
.
get
():
self
.
entryHelpBrowser
.
config
(
state
=
NORMAL
)
self
.
entryHelpBrowser
.
config
(
state
=
NORMAL
)
else
:
else
:
self
.
entryHelpBrowser
.
config
(
state
=
DISABLED
)
self
.
entryHelpBrowser
.
config
(
state
=
DISABLED
)
def
HelpSourceSelected
(
self
,
event
):
def
HelpSourceSelected
(
self
,
event
):
self
.
SetHelpListButtonStates
()
self
.
SetHelpListButtonStates
()
def
SetHelpListButtonStates
(
self
):
def
SetHelpListButtonStates
(
self
):
if
self
.
listHelp
.
size
()
<
1
:
#no entries in list
if
self
.
listHelp
.
size
()
<
1
:
#no entries in list
self
.
buttonHelpListEdit
.
config
(
state
=
DISABLED
)
self
.
buttonHelpListEdit
.
config
(
state
=
DISABLED
)
...
@@ -868,7 +868,7 @@ class ConfigDialog(Toplevel):
...
@@ -868,7 +868,7 @@ class ConfigDialog(Toplevel):
self
.
listHelp
.
insert
(
END
,
helpSource
[
0
]
+
' '
+
helpSource
[
1
])
self
.
listHelp
.
insert
(
END
,
helpSource
[
0
]
+
' '
+
helpSource
[
1
])
self
.
UpdateUserHelpChangedItems
()
self
.
UpdateUserHelpChangedItems
()
self
.
SetHelpListButtonStates
()
self
.
SetHelpListButtonStates
()
def
HelpListItemEdit
(
self
):
def
HelpListItemEdit
(
self
):
itemIndex
=
self
.
listHelp
.
index
(
ANCHOR
)
itemIndex
=
self
.
listHelp
.
index
(
ANCHOR
)
helpSource
=
self
.
userHelpList
[
itemIndex
]
helpSource
=
self
.
userHelpList
[
itemIndex
]
...
@@ -881,14 +881,14 @@ class ConfigDialog(Toplevel):
...
@@ -881,14 +881,14 @@ class ConfigDialog(Toplevel):
self
.
listHelp
.
insert
(
itemIndex
,
newHelpSource
[
0
]
+
' '
+
newHelpSource
[
1
])
self
.
listHelp
.
insert
(
itemIndex
,
newHelpSource
[
0
]
+
' '
+
newHelpSource
[
1
])
self
.
UpdateUserHelpChangedItems
()
self
.
UpdateUserHelpChangedItems
()
self
.
SetHelpListButtonStates
()
self
.
SetHelpListButtonStates
()
def
HelpListItemRemove
(
self
):
def
HelpListItemRemove
(
self
):
itemIndex
=
self
.
listHelp
.
index
(
ANCHOR
)
itemIndex
=
self
.
listHelp
.
index
(
ANCHOR
)
del
(
self
.
userHelpList
[
itemIndex
])
del
(
self
.
userHelpList
[
itemIndex
])
self
.
listHelp
.
delete
(
itemIndex
)
self
.
listHelp
.
delete
(
itemIndex
)
self
.
UpdateUserHelpChangedItems
()
self
.
UpdateUserHelpChangedItems
()
self
.
SetHelpListButtonStates
()
self
.
SetHelpListButtonStates
()
def
UpdateUserHelpChangedItems
(
self
):
def
UpdateUserHelpChangedItems
(
self
):
#clear and rebuild the HelpFiles secion in self.changedItems
#clear and rebuild the HelpFiles secion in self.changedItems
if
self
.
changedItems
[
'main'
].
has_key
(
'HelpFiles'
):
if
self
.
changedItems
[
'main'
].
has_key
(
'HelpFiles'
):
...
@@ -896,7 +896,7 @@ class ConfigDialog(Toplevel):
...
@@ -896,7 +896,7 @@ class ConfigDialog(Toplevel):
for
num
in
range
(
1
,
len
(
self
.
userHelpList
)
+
1
):
for
num
in
range
(
1
,
len
(
self
.
userHelpList
)
+
1
):
self
.
AddChangedItem
(
'main'
,
'HelpFiles'
,
str
(
num
),
self
.
AddChangedItem
(
'main'
,
'HelpFiles'
,
str
(
num
),
string
.
join
(
self
.
userHelpList
[
num
-
1
],
';'
))
string
.
join
(
self
.
userHelpList
[
num
-
1
],
';'
))
def
LoadFontCfg
(
self
):
def
LoadFontCfg
(
self
):
##base editor font selection list
##base editor font selection list
fonts
=
list
(
tkFont
.
families
(
self
))
fonts
=
list
(
tkFont
.
families
(
self
))
...
@@ -919,9 +919,9 @@ class ConfigDialog(Toplevel):
...
@@ -919,9 +919,9 @@ class ConfigDialog(Toplevel):
##fontWeight
##fontWeight
self
.
fontBold
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
self
.
fontBold
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'font-bold'
,
default
=
0
,
type
=
'bool'
))
'font-bold'
,
default
=
0
,
type
=
'bool'
))
##font sample
##font sample
self
.
SetFontSample
()
self
.
SetFontSample
()
def
LoadTabCfg
(
self
):
def
LoadTabCfg
(
self
):
##indent type radiobuttons
##indent type radiobuttons
spaceIndent
=
idleConf
.
GetOption
(
'main'
,
'Indent'
,
'use-spaces'
,
spaceIndent
=
idleConf
.
GetOption
(
'main'
,
'Indent'
,
'use-spaces'
,
...
@@ -934,7 +934,7 @@ class ConfigDialog(Toplevel):
...
@@ -934,7 +934,7 @@ class ConfigDialog(Toplevel):
# default=4,type='int')
# default=4,type='int')
self
.
spaceNum
.
set
(
spaceNum
)
self
.
spaceNum
.
set
(
spaceNum
)
#self.tabCols.set(tabCols)
#self.tabCols.set(tabCols)
def
LoadThemeCfg
(
self
):
def
LoadThemeCfg
(
self
):
##current theme type radiobutton
##current theme type radiobutton
self
.
themeIsBuiltin
.
set
(
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'default'
,
self
.
themeIsBuiltin
.
set
(
idleConf
.
GetOption
(
'main'
,
'Theme'
,
'default'
,
...
@@ -950,7 +950,7 @@ class ConfigDialog(Toplevel):
...
@@ -950,7 +950,7 @@ class ConfigDialog(Toplevel):
itemList
.
sort
()
itemList
.
sort
()
if
not
itemList
:
if
not
itemList
:
self
.
radioThemeCustom
.
config
(
state
=
DISABLED
)
self
.
radioThemeCustom
.
config
(
state
=
DISABLED
)
self
.
customTheme
.
set
(
'- no custom themes -'
)
self
.
customTheme
.
set
(
'- no custom themes -'
)
else
:
else
:
self
.
optMenuThemeCustom
.
SetMenu
(
itemList
,
itemList
[
0
])
self
.
optMenuThemeCustom
.
SetMenu
(
itemList
,
itemList
[
0
])
else
:
#user theme selected
else
:
#user theme selected
...
@@ -964,15 +964,15 @@ class ConfigDialog(Toplevel):
...
@@ -964,15 +964,15 @@ class ConfigDialog(Toplevel):
##load theme element option menu
##load theme element option menu
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
])
self
.
PaintThemeSample
()
self
.
PaintThemeSample
()
self
.
SetHighlightTarget
()
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
elif
self
.
themeElements
[
a
][
1
]
==
self
.
themeElements
[
b
][
1
]:
return
0
elif
self
.
themeElements
[
a
][
1
]
==
self
.
themeElements
[
b
][
1
]:
return
0
else
:
return
1
else
:
return
1
def
LoadKeyCfg
(
self
):
def
LoadKeyCfg
(
self
):
##current keys type radiobutton
##current keys type radiobutton
self
.
keysAreBuiltin
.
set
(
idleConf
.
GetOption
(
'main'
,
'Keys'
,
'default'
,
self
.
keysAreBuiltin
.
set
(
idleConf
.
GetOption
(
'main'
,
'Keys'
,
'default'
,
...
@@ -987,8 +987,8 @@ class ConfigDialog(Toplevel):
...
@@ -987,8 +987,8 @@ class ConfigDialog(Toplevel):
itemList
=
idleConf
.
GetSectionList
(
'user'
,
'keys'
)
itemList
=
idleConf
.
GetSectionList
(
'user'
,
'keys'
)
itemList
.
sort
()
itemList
.
sort
()
if
not
itemList
:
if
not
itemList
:
self
.
radioKeysCustom
.
config
(
state
=
DISABLED
)
self
.
radioKeysCustom
.
config
(
state
=
DISABLED
)
self
.
customKeys
.
set
(
'- no custom keys -'
)
self
.
customKeys
.
set
(
'- no custom keys -'
)
else
:
else
:
self
.
optMenuKeysCustom
.
SetMenu
(
itemList
,
itemList
[
0
])
self
.
optMenuKeysCustom
.
SetMenu
(
itemList
,
itemList
[
0
])
else
:
#user key set selected
else
:
#user key set selected
...
@@ -998,17 +998,17 @@ class ConfigDialog(Toplevel):
...
@@ -998,17 +998,17 @@ class ConfigDialog(Toplevel):
itemList
=
idleConf
.
GetSectionList
(
'default'
,
'keys'
)
itemList
=
idleConf
.
GetSectionList
(
'default'
,
'keys'
)
itemList
.
sort
()
itemList
.
sort
()
self
.
optMenuKeysBuiltin
.
SetMenu
(
itemList
,
itemList
[
0
])
self
.
optMenuKeysBuiltin
.
SetMenu
(
itemList
,
itemList
[
0
])
self
.
SetKeysType
()
self
.
SetKeysType
()
##load keyset element list
##load keyset element list
keySetName
=
idleConf
.
CurrentKeys
()
keySetName
=
idleConf
.
CurrentKeys
()
self
.
LoadKeysList
(
keySetName
)
self
.
LoadKeysList
(
keySetName
)
def
LoadGeneralCfg
(
self
):
def
LoadGeneralCfg
(
self
):
#startup state
#startup state
self
.
startupEdit
.
set
(
idleConf
.
GetOption
(
'main'
,
'General'
,
self
.
startupEdit
.
set
(
idleConf
.
GetOption
(
'main'
,
'General'
,
'editor-on-startup'
,
default
=
1
,
type
=
'bool'
))
'editor-on-startup'
,
default
=
1
,
type
=
'bool'
))
#initial window size
#initial window size
self
.
winWidth
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'width'
))
self
.
winWidth
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'width'
))
self
.
winHeight
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'height'
))
self
.
winHeight
.
set
(
idleConf
.
GetOption
(
'main'
,
'EditorWindow'
,
'height'
))
#help browsing
#help browsing
self
.
userHelpList
=
idleConf
.
GetExtraHelpSourceList
(
'user'
)
self
.
userHelpList
=
idleConf
.
GetExtraHelpSourceList
(
'user'
)
...
@@ -1020,22 +1020,22 @@ class ConfigDialog(Toplevel):
...
@@ -1020,22 +1020,22 @@ class ConfigDialog(Toplevel):
#self.helpBrowser.set(idleConf.GetOption('main','General',
#self.helpBrowser.set(idleConf.GetOption('main','General',
# 'user-help-browser-command',default=''))
# 'user-help-browser-command',default=''))
#self.OnCheckUserHelpBrowser()
#self.OnCheckUserHelpBrowser()
def
LoadConfigs
(
self
):
def
LoadConfigs
(
self
):
"""
"""
load configuration from default and user config files and populate
load configuration from default and user config files and populate
the widgets on the config dialog pages.
the widgets on the config dialog pages.
"""
"""
### fonts / tabs page
### fonts / tabs page
self
.
LoadFontCfg
()
self
.
LoadFontCfg
()
self
.
LoadTabCfg
()
self
.
LoadTabCfg
()
### highlighting page
### highlighting page
self
.
LoadThemeCfg
()
self
.
LoadThemeCfg
()
### keys page
### keys page
self
.
LoadKeyCfg
()
self
.
LoadKeyCfg
()
### general page
### general page
self
.
LoadGeneralCfg
()
self
.
LoadGeneralCfg
()
def
SaveNewKeySet
(
self
,
keySetName
,
keySet
):
def
SaveNewKeySet
(
self
,
keySetName
,
keySet
):
"""
"""
save a newly created core key set.
save a newly created core key set.
...
@@ -1047,7 +1047,7 @@ class ConfigDialog(Toplevel):
...
@@ -1047,7 +1047,7 @@ class ConfigDialog(Toplevel):
for
event
in
keySet
.
keys
():
for
event
in
keySet
.
keys
():
value
=
keySet
[
event
]
value
=
keySet
[
event
]
idleConf
.
userCfg
[
'keys'
].
SetOption
(
keySetName
,
event
,
value
)
idleConf
.
userCfg
[
'keys'
].
SetOption
(
keySetName
,
event
,
value
)
def
SaveNewTheme
(
self
,
themeName
,
theme
):
def
SaveNewTheme
(
self
,
themeName
,
theme
):
"""
"""
save a newly created theme.
save a newly created theme.
...
@@ -1059,7 +1059,7 @@ class ConfigDialog(Toplevel):
...
@@ -1059,7 +1059,7 @@ class ConfigDialog(Toplevel):
for
element
in
theme
.
keys
():
for
element
in
theme
.
keys
():
value
=
theme
[
element
]
value
=
theme
[
element
]
idleConf
.
userCfg
[
'highlight'
].
SetOption
(
themeName
,
element
,
value
)
idleConf
.
userCfg
[
'highlight'
].
SetOption
(
themeName
,
element
,
value
)
def
SetUserValue
(
self
,
configType
,
section
,
item
,
value
):
def
SetUserValue
(
self
,
configType
,
section
,
item
,
value
):
if
idleConf
.
defaultCfg
[
configType
].
has_option
(
section
,
item
):
if
idleConf
.
defaultCfg
[
configType
].
has_option
(
section
,
item
):
if
idleConf
.
defaultCfg
[
configType
].
Get
(
section
,
item
)
==
value
:
if
idleConf
.
defaultCfg
[
configType
].
Get
(
section
,
item
)
==
value
:
...
@@ -1067,7 +1067,7 @@ class ConfigDialog(Toplevel):
...
@@ -1067,7 +1067,7 @@ class ConfigDialog(Toplevel):
return
idleConf
.
userCfg
[
configType
].
RemoveOption
(
section
,
item
)
return
idleConf
.
userCfg
[
configType
].
RemoveOption
(
section
,
item
)
#if we got here set the option
#if we got here set the option
return
idleConf
.
userCfg
[
configType
].
SetOption
(
section
,
item
,
value
)
return
idleConf
.
userCfg
[
configType
].
SetOption
(
section
,
item
,
value
)
def
SaveAllChangedConfigs
(
self
):
def
SaveAllChangedConfigs
(
self
):
"""
"""
save all configuration changes to user config files.
save all configuration changes to user config files.
...
@@ -1082,12 +1082,12 @@ class ConfigDialog(Toplevel):
...
@@ -1082,12 +1082,12 @@ class ConfigDialog(Toplevel):
value
=
self
.
changedItems
[
configType
][
section
][
item
]
value
=
self
.
changedItems
[
configType
][
section
][
item
]
if
self
.
SetUserValue
(
configType
,
section
,
item
,
value
):
if
self
.
SetUserValue
(
configType
,
section
,
item
,
value
):
cfgTypeHasChanges
=
1
cfgTypeHasChanges
=
1
if
cfgTypeHasChanges
:
if
cfgTypeHasChanges
:
idleConf
.
userCfg
[
configType
].
Save
()
idleConf
.
userCfg
[
configType
].
Save
()
self
.
ResetChangedItems
()
#clear the changed items dict
self
.
ResetChangedItems
()
#clear the changed items dict
def
ActivateConfigChanges
(
self
):
def
ActivateConfigChanges
(
self
):
#things that need to be done to make
#things that need to be done to make
#applied config changes dynamic:
#applied config changes dynamic:
#update editor/shell font and repaint
#update editor/shell font and repaint
#dynamically update indentation setttings
#dynamically update indentation setttings
...
@@ -1100,7 +1100,7 @@ class ConfigDialog(Toplevel):
...
@@ -1100,7 +1100,7 @@ class ConfigDialog(Toplevel):
instance
.
ResetFont
()
instance
.
ResetFont
()
instance
.
ResetKeybindings
()
instance
.
ResetKeybindings
()
instance
.
ResetExtraHelpMenu
()
instance
.
ResetExtraHelpMenu
()
def
Cancel
(
self
):
def
Cancel
(
self
):
self
.
destroy
()
self
.
destroy
()
...
...
Lib/idlelib/configHandler.py
View file @
e52f2d14
...
@@ -5,8 +5,8 @@ Provides access to stored idle configuration information.
...
@@ -5,8 +5,8 @@ Provides access to stored idle configuration information.
# when a problem occurs in returning a requested configuration value back to
# when a problem occurs in returning a requested configuration value back to
# idle. This is to allow idle to continue to function in spite of errors in
# idle. This is to allow idle to continue to function in spite of errors in
# the retrieval of config information. When a default is returned instead of
# the retrieval of config information. When a default is returned instead of
# a requested config value, a message is printed to stderr to aid in
# a requested config value, a message is printed to stderr to aid in
# configuration problem notification and resolution.
# configuration problem notification and resolution.
import
os
,
sys
,
string
import
os
,
sys
,
string
from
ConfigParser
import
ConfigParser
,
NoOptionError
,
NoSectionError
from
ConfigParser
import
ConfigParser
,
NoOptionError
,
NoSectionError
...
@@ -26,17 +26,17 @@ class IdleConfParser(ConfigParser):
...
@@ -26,17 +26,17 @@ class IdleConfParser(ConfigParser):
"""
"""
self
.
file
=
cfgFile
self
.
file
=
cfgFile
ConfigParser
.
__init__
(
self
,
defaults
=
cfgDefaults
)
ConfigParser
.
__init__
(
self
,
defaults
=
cfgDefaults
)
def
Get
(
self
,
section
,
option
,
type
=
None
,
default
=
None
):
def
Get
(
self
,
section
,
option
,
type
=
None
,
default
=
None
):
"""
"""
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
type
==
'bool'
:
if
type
==
'bool'
:
getVal
=
self
.
getboolean
getVal
=
self
.
getboolean
elif
type
==
'int'
:
elif
type
==
'int'
:
getVal
=
self
.
getint
getVal
=
self
.
getint
else
:
else
:
getVal
=
self
.
get
getVal
=
self
.
get
if
self
.
has_option
(
section
,
option
):
if
self
.
has_option
(
section
,
option
):
#return getVal(section, option, raw, vars, default)
#return getVal(section, option, raw, vars, default)
...
@@ -54,11 +54,11 @@ class IdleConfParser(ConfigParser):
...
@@ -54,11 +54,11 @@ class IdleConfParser(ConfigParser):
return
[]
return
[]
def
Load
(
self
):
def
Load
(
self
):
"""
"""
Load the configuration file from disk
Load the configuration file from disk
"""
"""
self
.
read
(
self
.
file
)
self
.
read
(
self
.
file
)
class
IdleUserConfParser
(
IdleConfParser
):
class
IdleUserConfParser
(
IdleConfParser
):
"""
"""
IdleConfigParser specialised for user configuration handling.
IdleConfigParser specialised for user configuration handling.
...
@@ -70,15 +70,15 @@ class IdleUserConfParser(IdleConfParser):
...
@@ -70,15 +70,15 @@ class IdleUserConfParser(IdleConfParser):
"""
"""
if
not
self
.
has_section
(
section
):
if
not
self
.
has_section
(
section
):
self
.
add_section
(
section
)
self
.
add_section
(
section
)
def
RemoveEmptySections
(
self
):
def
RemoveEmptySections
(
self
):
"""
"""
remove any sections that have no options
remove any sections that have no options
"""
"""
for
section
in
self
.
sections
():
for
section
in
self
.
sections
():
if
not
self
.
GetOptionList
(
section
):
if
not
self
.
GetOptionList
(
section
):
self
.
remove_section
(
section
)
self
.
remove_section
(
section
)
def
IsEmpty
(
self
):
def
IsEmpty
(
self
):
"""
"""
Remove empty sections and then return 1 if parser has no sections
Remove empty sections and then return 1 if parser has no sections
...
@@ -89,7 +89,7 @@ class IdleUserConfParser(IdleConfParser):
...
@@ -89,7 +89,7 @@ class IdleUserConfParser(IdleConfParser):
return
0
return
0
else
:
else
:
return
1
return
1
def
RemoveOption
(
self
,
section
,
option
):
def
RemoveOption
(
self
,
section
,
option
):
"""
"""
If section/option exists, remove it.
If section/option exists, remove it.
...
@@ -97,7 +97,7 @@ class IdleUserConfParser(IdleConfParser):
...
@@ -97,7 +97,7 @@ class IdleUserConfParser(IdleConfParser):
"""
"""
if
self
.
has_section
(
section
):
if
self
.
has_section
(
section
):
return
self
.
remove_option
(
section
,
option
)
return
self
.
remove_option
(
section
,
option
)
def
SetOption
(
self
,
section
,
option
,
value
):
def
SetOption
(
self
,
section
,
option
,
value
):
"""
"""
Sets option to value, adding section if required.
Sets option to value, adding section if required.
...
@@ -114,14 +114,14 @@ class IdleUserConfParser(IdleConfParser):
...
@@ -114,14 +114,14 @@ class IdleUserConfParser(IdleConfParser):
self
.
add_section
(
section
)
self
.
add_section
(
section
)
self
.
set
(
section
,
option
,
value
)
self
.
set
(
section
,
option
,
value
)
return
1
return
1
def
RemoveFile
(
self
):
def
RemoveFile
(
self
):
"""
"""
Removes the user config file from disk if it exists.
Removes the user config file from disk if it exists.
"""
"""
if
os
.
path
.
exists
(
self
.
file
):
if
os
.
path
.
exists
(
self
.
file
):
os
.
remove
(
self
.
file
)
os
.
remove
(
self
.
file
)
def
Save
(
self
):
def
Save
(
self
):
"""
"""
If config isn't empty, write file to disk. If config is empty,
If config isn't empty, write file to disk. If config is empty,
...
@@ -154,10 +154,10 @@ class IdleConf:
...
@@ -154,10 +154,10 @@ class IdleConf:
self
.
CreateConfigHandlers
()
self
.
CreateConfigHandlers
()
self
.
LoadCfgFiles
()
self
.
LoadCfgFiles
()
#self.LoadCfg()
#self.LoadCfg()
def
CreateConfigHandlers
(
self
):
def
CreateConfigHandlers
(
self
):
"""
"""
set up a dictionary of config parsers for default and user
set up a dictionary of config parsers for default and user
configurations respectively
configurations respectively
"""
"""
#build idle install path
#build idle install path
...
@@ -170,15 +170,15 @@ class IdleConf:
...
@@ -170,15 +170,15 @@ class IdleConf:
defCfgFiles
=
{}
defCfgFiles
=
{}
usrCfgFiles
=
{}
usrCfgFiles
=
{}
for
cfgType
in
configTypes
:
#build config file names
for
cfgType
in
configTypes
:
#build config file names
defCfgFiles
[
cfgType
]
=
os
.
path
.
join
(
idleDir
,
'config-'
+
cfgType
+
'.def'
)
defCfgFiles
[
cfgType
]
=
os
.
path
.
join
(
idleDir
,
'config-'
+
cfgType
+
'.def'
)
usrCfgFiles
[
cfgType
]
=
os
.
path
.
join
(
userDir
,
'config-'
+
cfgType
+
'.cfg'
)
usrCfgFiles
[
cfgType
]
=
os
.
path
.
join
(
userDir
,
'config-'
+
cfgType
+
'.cfg'
)
for
cfgType
in
configTypes
:
#create config parsers
for
cfgType
in
configTypes
:
#create config parsers
self
.
defaultCfg
[
cfgType
]
=
IdleConfParser
(
defCfgFiles
[
cfgType
])
self
.
defaultCfg
[
cfgType
]
=
IdleConfParser
(
defCfgFiles
[
cfgType
])
self
.
userCfg
[
cfgType
]
=
IdleUserConfParser
(
usrCfgFiles
[
cfgType
])
self
.
userCfg
[
cfgType
]
=
IdleUserConfParser
(
usrCfgFiles
[
cfgType
])
def
GetUserCfgDir
(
self
):
def
GetUserCfgDir
(
self
):
"""
"""
Creates (if required) and returns a filesystem directory for storing
Creates (if required) and returns a filesystem directory for storing
user config files.
user config files.
"""
"""
cfgDir
=
'.idlerc'
cfgDir
=
'.idlerc'
...
@@ -192,23 +192,23 @@ class IdleConf:
...
@@ -192,23 +192,23 @@ class IdleConf:
if
userDir
==
'~'
:
#we still don't have a home directory
if
userDir
==
'~'
:
#we still don't have a home directory
#traditionally idle has defaulted to os.getcwd(), is this adeqate?
#traditionally idle has defaulted to os.getcwd(), is this adeqate?
userDir
=
os
.
getcwd
()
#hack for no real homedir
userDir
=
os
.
getcwd
()
#hack for no real homedir
userDir
=
os
.
path
.
join
(
userDir
,
cfgDir
)
userDir
=
os
.
path
.
join
(
userDir
,
cfgDir
)
if
not
os
.
path
.
exists
(
userDir
):
if
not
os
.
path
.
exists
(
userDir
):
try
:
#make the config dir if it doesn't exist yet
try
:
#make the config dir if it doesn't exist yet
os
.
mkdir
(
userDir
)
os
.
mkdir
(
userDir
)
except
IOError
:
except
IOError
:
warn
=
(
'
\
n
Warning: unable to create user config directory
\
n
'
+
warn
=
(
'
\
n
Warning: unable to create user config directory
\
n
'
+
userDir
+
'
\
n
'
)
userDir
+
'
\
n
'
)
sys
.
stderr
.
write
(
warn
)
sys
.
stderr
.
write
(
warn
)
return
userDir
return
userDir
def
GetOption
(
self
,
configType
,
section
,
option
,
default
=
None
,
type
=
None
):
def
GetOption
(
self
,
configType
,
section
,
option
,
default
=
None
,
type
=
None
):
"""
"""
Get an option value for given config type and given general
Get an option value for given config type and given general
configuration section/option or return a default. If type is specified,
configuration section/option or return a default. If type is specified,
return as type. Firstly the user configuration is checked, with a
return as type. Firstly the user configuration is checked, with a
fallback to the default configuration, and a final 'catch all'
fallback to the default configuration, and a final 'catch all'
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 a default is returned a warning is printed to stderr.
...
@@ -224,12 +224,12 @@ class IdleConf:
...
@@ -224,12 +224,12 @@ class IdleConf:
' returning default value: '
+
`default`
+
'
\
n
'
)
' returning default value: '
+
`default`
+
'
\
n
'
)
sys
.
stderr
.
write
(
warning
)
sys
.
stderr
.
write
(
warning
)
return
default
return
default
def
GetSectionList
(
self
,
configSet
,
configType
):
def
GetSectionList
(
self
,
configSet
,
configType
):
"""
"""
Get a list of sections from either the user or default config for
Get a list of sections from either the user or default config for
the given config type.
the given config type.
configSet must be either 'user' or 'default'
configSet must be either 'user' or 'default'
configType must be one of ('main','extensions','highlight','keys')
configType must be one of ('main','extensions','highlight','keys')
"""
"""
if
not
(
configType
in
(
'main'
,
'extensions'
,
'highlight'
,
'keys'
)):
if
not
(
configType
in
(
'main'
,
'extensions'
,
'highlight'
,
'keys'
)):
...
@@ -241,13 +241,13 @@ class IdleConf:
...
@@ -241,13 +241,13 @@ class IdleConf:
else
:
else
:
raise
InvalidConfigSet
,
'Invalid configSet specified'
raise
InvalidConfigSet
,
'Invalid configSet specified'
return
cfgParser
.
sections
()
return
cfgParser
.
sections
()
def
GetHighlight
(
self
,
theme
,
element
,
fgBg
=
None
):
def
GetHighlight
(
self
,
theme
,
element
,
fgBg
=
None
):
"""
"""
return individual highlighting theme elements.
return individual highlighting theme elements.
fgBg - string ('fg'or'bg') or None, if None return a dictionary
fgBg - string ('fg'or'bg') or None, if None return a dictionary
containing fg and bg colours (appropriate for passing to Tkinter in,
containing fg and bg colours (appropriate for passing to Tkinter in,
e.g., a tag_config call), otherwise fg or bg colour only as specified.
e.g., a tag_config call), otherwise fg or bg colour only as specified.
"""
"""
if
self
.
defaultCfg
[
'highlight'
].
has_section
(
theme
):
if
self
.
defaultCfg
[
'highlight'
].
has_section
(
theme
):
themeDict
=
self
.
GetThemeDict
(
'default'
,
theme
)
themeDict
=
self
.
GetThemeDict
(
'default'
,
theme
)
...
@@ -256,7 +256,7 @@ class IdleConf:
...
@@ -256,7 +256,7 @@ class IdleConf:
fore
=
themeDict
[
element
+
'-foreground'
]
fore
=
themeDict
[
element
+
'-foreground'
]
if
element
==
'cursor'
:
#there is no config value for cursor bg
if
element
==
'cursor'
:
#there is no config value for cursor bg
back
=
themeDict
[
'normal-background'
]
back
=
themeDict
[
'normal-background'
]
else
:
else
:
back
=
themeDict
[
element
+
'-background'
]
back
=
themeDict
[
element
+
'-background'
]
highlight
=
{
"foreground"
:
fore
,
"background"
:
back
}
highlight
=
{
"foreground"
:
fore
,
"background"
:
back
}
if
not
fgBg
:
#return dict of both colours
if
not
fgBg
:
#return dict of both colours
...
@@ -266,7 +266,7 @@ class IdleConf:
...
@@ -266,7 +266,7 @@ class IdleConf:
return
highlight
[
"foreground"
]
return
highlight
[
"foreground"
]
if
fgBg
==
'bg'
:
if
fgBg
==
'bg'
:
return
highlight
[
"background"
]
return
highlight
[
"background"
]
else
:
else
:
raise
InvalidFgBg
,
'Invalid fgBg specified'
raise
InvalidFgBg
,
'Invalid fgBg specified'
def
GetThemeDict
(
self
,
type
,
themeName
):
def
GetThemeDict
(
self
,
type
,
themeName
):
...
@@ -275,7 +275,7 @@ class IdleConf:
...
@@ -275,7 +275,7 @@ class IdleConf:
themeName - string, theme name
themeName - string, theme name
Returns a dictionary which holds {option:value} for each element
Returns a dictionary which holds {option:value} for each element
in the specified theme. Values are loaded over a set of ultimate last
in the specified theme. Values are loaded over a set of ultimate last
fallback defaults to guarantee that all theme elements are present in
fallback defaults to guarantee that all theme elements are present in
a newly created theme.
a newly created theme.
"""
"""
if
type
==
'user'
:
if
type
==
'user'
:
...
@@ -288,15 +288,15 @@ class IdleConf:
...
@@ -288,15 +288,15 @@ class IdleConf:
#(apart from cursor) even though all these values are not yet used
#(apart from cursor) even though all these values are not yet used
#by idle, to allow for their use in the future. Default values are
#by idle, to allow for their use in the future. Default values are
#generally black and white.
#generally black and white.
theme
=
{
'normal-foreground'
:
'#000000'
,
theme
=
{
'normal-foreground'
:
'#000000'
,
'normal-background'
:
'#ffffff'
,
'normal-background'
:
'#ffffff'
,
'keyword-foreground'
:
'#000000'
,
'keyword-foreground'
:
'#000000'
,
'keyword-background'
:
'#ffffff'
,
'keyword-background'
:
'#ffffff'
,
'comment-foreground'
:
'#000000'
,
'comment-foreground'
:
'#000000'
,
'comment-background'
:
'#ffffff'
,
'comment-background'
:
'#ffffff'
,
'string-foreground'
:
'#000000'
,
'string-foreground'
:
'#000000'
,
'string-background'
:
'#ffffff'
,
'string-background'
:
'#ffffff'
,
'definition-foreground'
:
'#000000'
,
'definition-foreground'
:
'#000000'
,
'definition-background'
:
'#ffffff'
,
'definition-background'
:
'#ffffff'
,
'hilite-foreground'
:
'#000000'
,
'hilite-foreground'
:
'#000000'
,
'hilite-background'
:
'gray'
,
'hilite-background'
:
'gray'
,
...
@@ -305,9 +305,9 @@ class IdleConf:
...
@@ -305,9 +305,9 @@ class IdleConf:
'hit-foreground'
:
'#ffffff'
,
'hit-foreground'
:
'#ffffff'
,
'hit-background'
:
'#000000'
,
'hit-background'
:
'#000000'
,
'error-foreground'
:
'#ffffff'
,
'error-foreground'
:
'#ffffff'
,
'error-background'
:
'#000000'
,
'error-background'
:
'#000000'
,
#cursor (only foreground can be set)
#cursor (only foreground can be set)
'cursor-foreground'
:
'#000000'
,
'cursor-foreground'
:
'#000000'
,
#shell window
#shell window
'stdout-foreground'
:
'#000000'
,
'stdout-foreground'
:
'#000000'
,
'stdout-background'
:
'#ffffff'
,
'stdout-background'
:
'#ffffff'
,
...
@@ -323,22 +323,22 @@ class IdleConf:
...
@@ -323,22 +323,22 @@ class IdleConf:
'
\
n
from theme '
+
`themeName`
+
'.
\
n
'
+
'
\
n
from theme '
+
`themeName`
+
'.
\
n
'
+
' returning default value: '
+
`theme[element]`
+
'
\
n
'
)
' returning default value: '
+
`theme[element]`
+
'
\
n
'
)
sys
.
stderr
.
write
(
warning
)
sys
.
stderr
.
write
(
warning
)
colour
=
cfgParser
.
Get
(
themeName
,
element
,
default
=
theme
[
element
])
colour
=
cfgParser
.
Get
(
themeName
,
element
,
default
=
theme
[
element
])
theme
[
element
]
=
colour
theme
[
element
]
=
colour
return
theme
return
theme
def
CurrentTheme
(
self
):
def
CurrentTheme
(
self
):
"""
"""
Returns the name of the currently active theme
Returns the name of the currently active theme
"""
"""
return
self
.
GetOption
(
'main'
,
'Theme'
,
'name'
,
default
=
''
)
return
self
.
GetOption
(
'main'
,
'Theme'
,
'name'
,
default
=
''
)
def
CurrentKeys
(
self
):
def
CurrentKeys
(
self
):
"""
"""
Returns the name of the currently active key set
Returns the name of the currently active key set
"""
"""
return
self
.
GetOption
(
'main'
,
'Keys'
,
'name'
,
default
=
''
)
return
self
.
GetOption
(
'main'
,
'Keys'
,
'name'
,
default
=
''
)
def
GetExtensions
(
self
,
activeOnly
=
1
):
def
GetExtensions
(
self
,
activeOnly
=
1
):
"""
"""
Gets a list of all idle extensions declared in the config files.
Gets a list of all idle extensions declared in the config files.
...
@@ -350,7 +350,7 @@ class IdleConf:
...
@@ -350,7 +350,7 @@ class IdleConf:
self
.
GetSectionList
(
'user'
,
'extensions'
))
self
.
GetSectionList
(
'user'
,
'extensions'
))
for
extn
in
userExtns
:
for
extn
in
userExtns
:
if
extn
not
in
extns
:
#user has added own extension
if
extn
not
in
extns
:
#user has added own extension
extns
.
append
(
extn
)
extns
.
append
(
extn
)
if
activeOnly
:
if
activeOnly
:
activeExtns
=
[]
activeExtns
=
[]
for
extn
in
extns
:
for
extn
in
extns
:
...
@@ -360,21 +360,21 @@ class IdleConf:
...
@@ -360,21 +360,21 @@ class IdleConf:
activeExtns
.
append
(
extn
)
activeExtns
.
append
(
extn
)
return
activeExtns
return
activeExtns
else
:
else
:
return
extns
return
extns
def
RemoveKeyBindNames
(
self
,
extnNameList
):
def
RemoveKeyBindNames
(
self
,
extnNameList
):
#get rid of keybinding section names
#get rid of keybinding section names
names
=
extnNameList
names
=
extnNameList
kbNameIndicies
=
[]
kbNameIndicies
=
[]
for
name
in
names
:
for
name
in
names
:
if
name
.
endswith
(
'_bindings'
)
or
name
.
endswith
(
'_cfgBindings'
):
if
name
.
endswith
(
'_bindings'
)
or
name
.
endswith
(
'_cfgBindings'
):
kbNameIndicies
.
append
(
names
.
index
(
name
))
kbNameIndicies
.
append
(
names
.
index
(
name
))
kbNameIndicies
.
sort
()
kbNameIndicies
.
sort
()
kbNameIndicies
.
reverse
()
kbNameIndicies
.
reverse
()
for
index
in
kbNameIndicies
:
#delete each keybinding section name
for
index
in
kbNameIndicies
:
#delete each keybinding section name
del
(
names
[
index
])
del
(
names
[
index
])
return
names
return
names
def
GetExtnNameForEvent
(
self
,
virtualEvent
):
def
GetExtnNameForEvent
(
self
,
virtualEvent
):
"""
"""
Returns the name of the extension that virtualEvent is bound in, or
Returns the name of the extension that virtualEvent is bound in, or
...
@@ -389,7 +389,7 @@ class IdleConf:
...
@@ -389,7 +389,7 @@ class IdleConf:
if
event
==
vEvent
:
if
event
==
vEvent
:
extName
=
extn
extName
=
extn
return
extName
return
extName
def
GetExtensionKeys
(
self
,
extensionName
):
def
GetExtensionKeys
(
self
,
extensionName
):
"""
"""
returns a dictionary of the configurable keybindings for a particular
returns a dictionary of the configurable keybindings for a particular
...
@@ -405,8 +405,8 @@ class IdleConf:
...
@@ -405,8 +405,8 @@ class IdleConf:
event
=
'<<'
+
eventName
+
'>>'
event
=
'<<'
+
eventName
+
'>>'
binding
=
activeKeys
[
event
]
binding
=
activeKeys
[
event
]
extKeys
[
event
]
=
binding
extKeys
[
event
]
=
binding
return
extKeys
return
extKeys
def
__GetRawExtensionKeys
(
self
,
extensionName
):
def
__GetRawExtensionKeys
(
self
,
extensionName
):
"""
"""
returns a dictionary of the configurable keybindings for a particular
returns a dictionary of the configurable keybindings for a particular
...
@@ -422,13 +422,13 @@ class IdleConf:
...
@@ -422,13 +422,13 @@ class IdleConf:
eventName
,
default
=
''
).
split
()
eventName
,
default
=
''
).
split
()
event
=
'<<'
+
eventName
+
'>>'
event
=
'<<'
+
eventName
+
'>>'
extKeys
[
event
]
=
binding
extKeys
[
event
]
=
binding
return
extKeys
return
extKeys
def
GetExtensionBindings
(
self
,
extensionName
):
def
GetExtensionBindings
(
self
,
extensionName
):
"""
"""
Returns a dictionary of all the event bindings for a particular
Returns a dictionary of all the event bindings for a particular
extension. The configurable keybindings are returned as they exist in
extension. The configurable keybindings are returned as they exist in
the dictionary returned by GetCurrentKeySet; that is, where re-used
the dictionary returned by GetCurrentKeySet; that is, where re-used
keybindings are disabled.
keybindings are disabled.
"""
"""
bindsName
=
extensionName
+
'_bindings'
bindsName
=
extensionName
+
'_bindings'
...
@@ -441,14 +441,14 @@ class IdleConf:
...
@@ -441,14 +441,14 @@ class IdleConf:
eventName
,
default
=
''
).
split
()
eventName
,
default
=
''
).
split
()
event
=
'<<'
+
eventName
+
'>>'
event
=
'<<'
+
eventName
+
'>>'
extBinds
[
event
]
=
binding
extBinds
[
event
]
=
binding
return
extBinds
return
extBinds
def
GetKeyBinding
(
self
,
keySetName
,
eventStr
):
def
GetKeyBinding
(
self
,
keySetName
,
eventStr
):
"""
"""
returns the keybinding for a specific event.
returns the keybinding for a specific event.
keySetName - string, name of key binding set
keySetName - string, name of key binding set
eventStr - string, the virtual event we want the binding for,
eventStr - string, the virtual event we want the binding for,
represented as a string, eg. '<<event>>'
represented as a string, eg. '<<event>>'
"""
"""
eventName
=
eventStr
[
2
:
-
2
]
#trim off the angle brackets
eventName
=
eventStr
[
2
:
-
2
]
#trim off the angle brackets
...
@@ -457,10 +457,10 @@ class IdleConf:
...
@@ -457,10 +457,10 @@ class IdleConf:
def
GetCurrentKeySet
(
self
):
def
GetCurrentKeySet
(
self
):
return
self
.
GetKeySet
(
self
.
CurrentKeys
())
return
self
.
GetKeySet
(
self
.
CurrentKeys
())
def
GetKeySet
(
self
,
keySetName
):
def
GetKeySet
(
self
,
keySetName
):
"""
"""
Returns a dictionary of: all requested core keybindings, plus the
Returns a dictionary of: all requested core keybindings, plus the
keybindings for all currently active extensions. If a binding defined
keybindings for all currently active extensions. If a binding defined
in an extension is already in use, that binding is disabled.
in an extension is already in use, that binding is disabled.
"""
"""
...
@@ -483,7 +483,7 @@ class IdleConf:
...
@@ -483,7 +483,7 @@ class IdleConf:
the enclosing '<< >>'
the enclosing '<< >>'
"""
"""
return
(
'<<'
+
virtualEvent
+
'>>'
)
in
self
.
GetCoreKeys
().
keys
()
return
(
'<<'
+
virtualEvent
+
'>>'
)
in
self
.
GetCoreKeys
().
keys
()
def
GetCoreKeys
(
self
,
keySetName
=
None
):
def
GetCoreKeys
(
self
,
keySetName
=
None
):
"""
"""
returns the requested set of core keybindings, with fallbacks if
returns the requested set of core keybindings, with fallbacks if
...
@@ -504,7 +504,7 @@ class IdleConf:
...
@@ -504,7 +504,7 @@ class IdleConf:
'<<do-nothing>>'
:
[
'<Control-x>'
],
'<<do-nothing>>'
:
[
'<Control-x>'
],
'<<end-of-file>>'
:
[
'<Control-d>'
],
'<<end-of-file>>'
:
[
'<Control-d>'
],
'<<python-docs>>'
:
[
'<F1>'
],
'<<python-docs>>'
:
[
'<F1>'
],
'<<python-context-help>>'
:
[
'<Shift-F1>'
],
'<<python-context-help>>'
:
[
'<Shift-F1>'
],
'<<history-next>>'
:
[
'<Alt-n>'
],
'<<history-next>>'
:
[
'<Alt-n>'
],
'<<history-previous>>'
:
[
'<Alt-p>'
],
'<<history-previous>>'
:
[
'<Alt-p>'
],
'<<interrupt-execution>>'
:
[
'<Control-c>'
],
'<<interrupt-execution>>'
:
[
'<Control-c>'
],
...
@@ -527,7 +527,7 @@ class IdleConf:
...
@@ -527,7 +527,7 @@ class IdleConf:
'<<find-selection>>'
:
[
'<Control-F3>'
],
'<<find-selection>>'
:
[
'<Control-F3>'
],
'<<find>>'
:
[
'<Control-f>'
],
'<<find>>'
:
[
'<Control-f>'
],
'<<replace>>'
:
[
'<Control-h>'
],
'<<replace>>'
:
[
'<Control-h>'
],
'<<goto-line>>'
:
[
'<Alt-g>'
],
'<<goto-line>>'
:
[
'<Alt-g>'
],
'<<smart-backspace>>'
:
[
'<Key-BackSpace>'
],
'<<smart-backspace>>'
:
[
'<Key-BackSpace>'
],
'<<newline-and-indent>>'
:
[
'<Key-Return> <Key-KP_Enter>'
],
'<<newline-and-indent>>'
:
[
'<Key-Return> <Key-KP_Enter>'
],
'<<smart-indent>>'
:
[
'<Key-Tab>'
],
'<<smart-indent>>'
:
[
'<Key-Tab>'
],
...
@@ -552,18 +552,18 @@ class IdleConf:
...
@@ -552,18 +552,18 @@ class IdleConf:
' returning default value: '
+
`keyBindings[event]`
+
'
\
n
'
)
' returning default value: '
+
`keyBindings[event]`
+
'
\
n
'
)
sys
.
stderr
.
write
(
warning
)
sys
.
stderr
.
write
(
warning
)
return
keyBindings
return
keyBindings
def
GetExtraHelpSourceList
(
self
,
configSet
):
def
GetExtraHelpSourceList
(
self
,
configSet
):
"""
"""
Returns a list of tuples containing the details of any additional
Returns a list of tuples containing the details of any additional
help sources configured in the requested configSet ('user' or 'default')
help sources configured in the requested configSet ('user' or 'default')
, or an empty list if there are none. Returned tuples are of the form
, or an empty list if there are none. Returned tuples are of the form
form (menu_item , path_to_help_file , option).
form (menu_item , path_to_help_file , option).
"""
"""
helpSources
=
[]
helpSources
=
[]
if
configSet
==
'user'
:
if
configSet
==
'user'
:
cfgParser
=
self
.
userCfg
[
'main'
]
cfgParser
=
self
.
userCfg
[
'main'
]
elif
configSet
==
'default'
:
elif
configSet
==
'default'
:
cfgParser
=
self
.
defaultCfg
[
'main'
]
cfgParser
=
self
.
defaultCfg
[
'main'
]
else
:
else
:
raise
InvalidConfigSet
,
'Invalid configSet specified'
raise
InvalidConfigSet
,
'Invalid configSet specified'
...
@@ -583,28 +583,28 @@ class IdleConf:
...
@@ -583,28 +583,28 @@ class IdleConf:
def
GetAllExtraHelpSourcesList
(
self
):
def
GetAllExtraHelpSourcesList
(
self
):
"""
"""
Returns a list of tuples containing the details of all additional help
Returns a list of tuples containing the details of all additional help
sources configured, or an empty list if there are none. Tuples are of
sources configured, or an empty list if there are none. Tuples are of
the format returned by GetExtraHelpSourceList.
the format returned by GetExtraHelpSourceList.
"""
"""
allHelpSources
=
(
self
.
GetExtraHelpSourceList
(
'default'
)
+
allHelpSources
=
(
self
.
GetExtraHelpSourceList
(
'default'
)
+
self
.
GetExtraHelpSourceList
(
'user'
)
)
self
.
GetExtraHelpSourceList
(
'user'
)
)
return
allHelpSources
return
allHelpSources
def
LoadCfgFiles
(
self
):
def
LoadCfgFiles
(
self
):
"""
"""
load all configuration files.
load all configuration files.
"""
"""
for
key
in
self
.
defaultCfg
.
keys
():
for
key
in
self
.
defaultCfg
.
keys
():
self
.
defaultCfg
[
key
].
Load
()
self
.
defaultCfg
[
key
].
Load
()
self
.
userCfg
[
key
].
Load
()
#same keys
self
.
userCfg
[
key
].
Load
()
#same keys
def
SaveUserCfgFiles
(
self
):
def
SaveUserCfgFiles
(
self
):
"""
"""
write all loaded user configuration files back to disk
write all loaded user configuration files back to disk
"""
"""
for
key
in
self
.
userCfg
.
keys
():
for
key
in
self
.
userCfg
.
keys
():
self
.
userCfg
[
key
].
Save
()
self
.
userCfg
[
key
].
Save
()
idleConf
=
IdleConf
()
idleConf
=
IdleConf
()
...
@@ -618,7 +618,7 @@ if __name__ == '__main__':
...
@@ -618,7 +618,7 @@ if __name__ == '__main__':
print
sections
print
sections
for
section
in
sections
:
for
section
in
sections
:
options
=
cfg
[
key
].
options
(
section
)
options
=
cfg
[
key
].
options
(
section
)
print
section
print
section
print
options
print
options
for
option
in
options
:
for
option
in
options
:
print
option
,
'='
,
cfg
[
key
].
Get
(
section
,
option
)
print
option
,
'='
,
cfg
[
key
].
Get
(
section
,
option
)
...
...
Lib/idlelib/configHelpSourceEdit.py
View file @
e52f2d14
...
@@ -27,7 +27,7 @@ class GetHelpSourceDialog(Toplevel):
...
@@ -27,7 +27,7 @@ class GetHelpSourceDialog(Toplevel):
self
.
withdraw
()
#hide while setting geometry
self
.
withdraw
()
#hide while setting geometry
self
.
update_idletasks
()
self
.
update_idletasks
()
#needs to be done here so that the winfo_reqwidth is valid
#needs to be done here so that the winfo_reqwidth is valid
self
.
geometry
(
"+%d+%d"
%
self
.
geometry
(
"+%d+%d"
%
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
-
(
self
.
winfo_reqwidth
()
/
2
)),
-
(
self
.
winfo_reqwidth
()
/
2
)),
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
...
@@ -63,7 +63,7 @@ class GetHelpSourceDialog(Toplevel):
...
@@ -63,7 +63,7 @@ class GetHelpSourceDialog(Toplevel):
self
.
buttonCancel
.
grid
(
row
=
0
,
column
=
1
,
padx
=
5
,
pady
=
5
)
self
.
buttonCancel
.
grid
(
row
=
0
,
column
=
1
,
padx
=
5
,
pady
=
5
)
def
MenuOk
(
self
):
def
MenuOk
(
self
):
#simple validity check for a sensible
#simple validity check for a sensible
#menu item name
#menu item name
menuOk
=
1
menuOk
=
1
menu
=
self
.
menu
.
get
()
menu
=
self
.
menu
.
get
()
...
@@ -80,9 +80,9 @@ class GetHelpSourceDialog(Toplevel):
...
@@ -80,9 +80,9 @@ class GetHelpSourceDialog(Toplevel):
self
.
entryMenu
.
focus_set
()
self
.
entryMenu
.
focus_set
()
menuOk
=
0
menuOk
=
0
return
menuOk
return
menuOk
def
PathOk
(
self
):
def
PathOk
(
self
):
#simple validity check for menu file path
#simple validity check for menu file path
pathOk
=
1
pathOk
=
1
path
=
self
.
path
.
get
()
path
=
self
.
path
.
get
()
path
.
strip
()
path
.
strip
()
...
@@ -97,13 +97,13 @@ class GetHelpSourceDialog(Toplevel):
...
@@ -97,13 +97,13 @@ class GetHelpSourceDialog(Toplevel):
self
.
entryPath
.
focus_set
()
self
.
entryPath
.
focus_set
()
pathOk
=
0
pathOk
=
0
return
pathOk
return
pathOk
def
Ok
(
self
,
event
=
None
):
def
Ok
(
self
,
event
=
None
):
if
self
.
MenuOk
():
if
self
.
MenuOk
():
if
self
.
PathOk
():
if
self
.
PathOk
():
self
.
result
=
(
self
.
menu
.
get
().
strip
(),
self
.
path
.
get
().
strip
()
)
self
.
result
=
(
self
.
menu
.
get
().
strip
(),
self
.
path
.
get
().
strip
()
)
self
.
destroy
()
self
.
destroy
()
def
Cancel
(
self
,
event
=
None
):
def
Cancel
(
self
,
event
=
None
):
self
.
result
=
None
self
.
result
=
None
self
.
destroy
()
self
.
destroy
()
...
@@ -117,5 +117,3 @@ if __name__ == '__main__':
...
@@ -117,5 +117,3 @@ if __name__ == '__main__':
print
dlg
.
result
print
dlg
.
result
Button
(
root
,
text
=
'Dialog'
,
command
=
run
).
pack
()
Button
(
root
,
text
=
'Dialog'
,
command
=
run
).
pack
()
root
.
mainloop
()
root
.
mainloop
()
Lib/idlelib/configSectionNameDialog.py
View file @
e52f2d14
...
@@ -27,7 +27,7 @@ class GetCfgSectionNameDialog(Toplevel):
...
@@ -27,7 +27,7 @@ class GetCfgSectionNameDialog(Toplevel):
self
.
update_idletasks
()
self
.
update_idletasks
()
#needs to be done here so that the winfo_reqwidth is valid
#needs to be done here so that the winfo_reqwidth is valid
self
.
messageInfo
.
config
(
width
=
self
.
frameMain
.
winfo_reqwidth
())
self
.
messageInfo
.
config
(
width
=
self
.
frameMain
.
winfo_reqwidth
())
self
.
geometry
(
"+%d+%d"
%
self
.
geometry
(
"+%d+%d"
%
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
-
(
self
.
winfo_reqwidth
()
/
2
)),
-
(
self
.
winfo_reqwidth
()
/
2
)),
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
...
@@ -56,7 +56,7 @@ class GetCfgSectionNameDialog(Toplevel):
...
@@ -56,7 +56,7 @@ class GetCfgSectionNameDialog(Toplevel):
self
.
buttonCancel
.
grid
(
row
=
0
,
column
=
1
,
padx
=
5
,
pady
=
5
)
self
.
buttonCancel
.
grid
(
row
=
0
,
column
=
1
,
padx
=
5
,
pady
=
5
)
def
NameOk
(
self
):
def
NameOk
(
self
):
#simple validity check for a sensible
#simple validity check for a sensible
#ConfigParser file section name
#ConfigParser file section name
nameOk
=
1
nameOk
=
1
name
=
self
.
name
.
get
()
name
=
self
.
name
.
get
()
...
@@ -75,12 +75,12 @@ class GetCfgSectionNameDialog(Toplevel):
...
@@ -75,12 +75,12 @@ class GetCfgSectionNameDialog(Toplevel):
message
=
'This name is already in use.'
)
message
=
'This name is already in use.'
)
nameOk
=
0
nameOk
=
0
return
nameOk
return
nameOk
def
Ok
(
self
,
event
=
None
):
def
Ok
(
self
,
event
=
None
):
if
self
.
NameOk
():
if
self
.
NameOk
():
self
.
result
=
self
.
name
.
get
().
strip
()
self
.
result
=
self
.
name
.
get
().
strip
()
self
.
destroy
()
self
.
destroy
()
def
Cancel
(
self
,
event
=
None
):
def
Cancel
(
self
,
event
=
None
):
self
.
result
=
''
self
.
result
=
''
self
.
destroy
()
self
.
destroy
()
...
@@ -95,5 +95,3 @@ if __name__ == '__main__':
...
@@ -95,5 +95,3 @@ if __name__ == '__main__':
print
dlg
.
result
print
dlg
.
result
Button
(
root
,
text
=
'Dialog'
,
command
=
run
).
pack
()
Button
(
root
,
text
=
'Dialog'
,
command
=
run
).
pack
()
root
.
mainloop
()
root
.
mainloop
()
Lib/idlelib/dynOptionMenuWidget.py
View file @
e52f2d14
...
@@ -20,12 +20,12 @@ class DynOptionMenu(OptionMenu):
...
@@ -20,12 +20,12 @@ class DynOptionMenu(OptionMenu):
#self.menu=self['menu']
#self.menu=self['menu']
self
.
variable
=
variable
self
.
variable
=
variable
self
.
command
=
kwargs
.
get
(
'command'
)
self
.
command
=
kwargs
.
get
(
'command'
)
def
SetMenu
(
self
,
valueList
,
value
=
None
):
def
SetMenu
(
self
,
valueList
,
value
=
None
):
"""
"""
clear and reload the menu with a new set of options.
clear and reload the menu with a new set of options.
valueList - list of new options
valueList - list of new options
value - initial value to set the optionmenu's menubutton to
value - initial value to set the optionmenu's menubutton to
"""
"""
self
[
'menu'
].
delete
(
0
,
'end'
)
self
[
'menu'
].
delete
(
0
,
'end'
)
for
item
in
valueList
:
for
item
in
valueList
:
...
...
Lib/idlelib/keybindingDialog.py
View file @
e52f2d14
"""
"""
dialog for building tkinter accelerator key bindings
dialog for building tkinter accelerator key bindings
"""
"""
from
Tkinter
import
*
from
Tkinter
import
*
import
tkMessageBox
import
tkMessageBox
...
@@ -11,7 +11,7 @@ class GetKeysDialog(Toplevel):
...
@@ -11,7 +11,7 @@ class GetKeysDialog(Toplevel):
action - string, the name of the virtual event these keys will be
action - string, the name of the virtual event these keys will be
mapped to
mapped to
currentKeys - list, a list of all key sequence lists currently mapped
currentKeys - list, a list of all key sequence lists currently mapped
to virtual events, for overlap checking
to virtual events, for overlap checking
"""
"""
Toplevel
.
__init__
(
self
,
parent
)
Toplevel
.
__init__
(
self
,
parent
)
self
.
configure
(
borderwidth
=
5
)
self
.
configure
(
borderwidth
=
5
)
...
@@ -36,14 +36,14 @@ class GetKeysDialog(Toplevel):
...
@@ -36,14 +36,14 @@ class GetKeysDialog(Toplevel):
self
.
LoadFinalKeyList
()
self
.
LoadFinalKeyList
()
self
.
withdraw
()
#hide while setting geometry
self
.
withdraw
()
#hide while setting geometry
self
.
update_idletasks
()
self
.
update_idletasks
()
self
.
geometry
(
"+%d+%d"
%
self
.
geometry
(
"+%d+%d"
%
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
((
parent
.
winfo_rootx
()
+
((
parent
.
winfo_width
()
/
2
)
-
(
self
.
winfo_reqwidth
()
/
2
)),
-
(
self
.
winfo_reqwidth
()
/
2
)),
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
parent
.
winfo_rooty
()
+
((
parent
.
winfo_height
()
/
2
)
-
(
self
.
winfo_reqheight
()
/
2
))
))
)
#centre dialog over parent
-
(
self
.
winfo_reqheight
()
/
2
))
))
)
#centre dialog over parent
self
.
deiconify
()
#geometry set, unhide
self
.
deiconify
()
#geometry set, unhide
self
.
wait_window
()
self
.
wait_window
()
def
CreateWidgets
(
self
):
def
CreateWidgets
(
self
):
frameMain
=
Frame
(
self
,
borderwidth
=
2
,
relief
=
SUNKEN
)
frameMain
=
Frame
(
self
,
borderwidth
=
2
,
relief
=
SUNKEN
)
frameMain
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
frameMain
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
...
@@ -143,19 +143,19 @@ class GetKeysDialog(Toplevel):
...
@@ -143,19 +143,19 @@ class GetKeysDialog(Toplevel):
self
.
ClearKeySeq
()
self
.
ClearKeySeq
()
self
.
buttonLevel
.
config
(
text
=
'Advanced Key Binding Entry >>'
)
self
.
buttonLevel
.
config
(
text
=
'Advanced Key Binding Entry >>'
)
self
.
frameKeySeqBasic
.
lift
()
self
.
frameKeySeqBasic
.
lift
()
self
.
frameControlsBasic
.
lift
()
self
.
frameControlsBasic
.
lift
()
def
FinalKeySelected
(
self
,
event
):
def
FinalKeySelected
(
self
,
event
):
self
.
BuildKeyString
()
self
.
BuildKeyString
()
def
BuildKeyString
(
self
):
def
BuildKeyString
(
self
):
keyList
=
[]
keyList
=
[]
modifiers
=
self
.
GetModifiers
()
modifiers
=
self
.
GetModifiers
()
finalKey
=
self
.
listKeysFinal
.
get
(
ANCHOR
)
finalKey
=
self
.
listKeysFinal
.
get
(
ANCHOR
)
if
modifiers
:
modifiers
[
0
]
=
'<'
+
modifiers
[
0
]
if
modifiers
:
modifiers
[
0
]
=
'<'
+
modifiers
[
0
]
keyList
=
keyList
+
modifiers
keyList
=
keyList
+
modifiers
if
finalKey
:
if
finalKey
:
if
(
not
modifiers
)
and
(
finalKey
not
if
(
not
modifiers
)
and
(
finalKey
not
in
self
.
alphanumKeys
+
self
.
punctuationKeys
):
in
self
.
alphanumKeys
+
self
.
punctuationKeys
):
finalKey
=
'<'
+
self
.
TranslateKey
(
finalKey
)
finalKey
=
'<'
+
self
.
TranslateKey
(
finalKey
)
else
:
else
:
...
@@ -163,7 +163,7 @@ class GetKeysDialog(Toplevel):
...
@@ -163,7 +163,7 @@ class GetKeysDialog(Toplevel):
keyList
.
append
(
finalKey
+
'>'
)
keyList
.
append
(
finalKey
+
'>'
)
keyStr
=
string
.
join
(
keyList
,
'-'
)
keyStr
=
string
.
join
(
keyList
,
'-'
)
self
.
keyString
.
set
(
keyStr
)
self
.
keyString
.
set
(
keyStr
)
def
GetModifiers
(
self
):
def
GetModifiers
(
self
):
modList
=
[
variable
.
get
()
for
variable
in
self
.
modifier_vars
]
modList
=
[
variable
.
get
()
for
variable
in
self
.
modifier_vars
]
return
filter
(
None
,
modList
)
return
filter
(
None
,
modList
)
...
@@ -174,7 +174,7 @@ class GetKeysDialog(Toplevel):
...
@@ -174,7 +174,7 @@ class GetKeysDialog(Toplevel):
for
variable
in
self
.
modifier_vars
:
for
variable
in
self
.
modifier_vars
:
variable
.
set
(
''
)
variable
.
set
(
''
)
self
.
keyString
.
set
(
''
)
self
.
keyString
.
set
(
''
)
def
LoadFinalKeyList
(
self
):
def
LoadFinalKeyList
(
self
):
#these tuples are also available for use in validity checks
#these tuples are also available for use in validity checks
self
.
functionKeys
=
(
'F1'
,
'F2'
,
'F2'
,
'F4'
,
'F5'
,
'F6'
,
'F7'
,
'F8'
,
'F9'
,
self
.
functionKeys
=
(
'F1'
,
'F2'
,
'F2'
,
'F4'
,
'F5'
,
'F6'
,
'F7'
,
'F8'
,
'F9'
,
...
@@ -190,7 +190,7 @@ class GetKeysDialog(Toplevel):
...
@@ -190,7 +190,7 @@ class GetKeysDialog(Toplevel):
self
.
whitespaceKeys
+
self
.
editKeys
+
self
.
moveKeys
)
self
.
whitespaceKeys
+
self
.
editKeys
+
self
.
moveKeys
)
apply
(
self
.
listKeysFinal
.
insert
,
apply
(
self
.
listKeysFinal
.
insert
,
(
END
,)
+
keys
)
(
END
,)
+
keys
)
def
TranslateKey
(
self
,
key
):
def
TranslateKey
(
self
,
key
):
#translate from key list value to tkinter key-id
#translate from key list value to tkinter key-id
translateDict
=
{
'~'
:
'asciitilde'
,
'!'
:
'exclam'
,
'@'
:
'at'
,
'#'
:
'numbersign'
,
translateDict
=
{
'~'
:
'asciitilde'
,
'!'
:
'exclam'
,
'@'
:
'at'
,
'#'
:
'numbersign'
,
...
@@ -206,16 +206,16 @@ class GetKeysDialog(Toplevel):
...
@@ -206,16 +206,16 @@ class GetKeysDialog(Toplevel):
key
=
translateDict
[
key
]
key
=
translateDict
[
key
]
key
=
'Key-'
+
key
key
=
'Key-'
+
key
return
key
return
key
def
Ok
(
self
,
event
=
None
):
def
Ok
(
self
,
event
=
None
):
if
self
.
KeysOk
():
if
self
.
KeysOk
():
self
.
result
=
self
.
keyString
.
get
()
self
.
result
=
self
.
keyString
.
get
()
self
.
destroy
()
self
.
destroy
()
def
Cancel
(
self
,
event
=
None
):
def
Cancel
(
self
,
event
=
None
):
self
.
result
=
''
self
.
result
=
''
self
.
destroy
()
self
.
destroy
()
def
KeysOk
(
self
):
def
KeysOk
(
self
):
#simple validity check
#simple validity check
keysOk
=
1
keysOk
=
1
...
@@ -232,13 +232,13 @@ class GetKeysDialog(Toplevel):
...
@@ -232,13 +232,13 @@ class GetKeysDialog(Toplevel):
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
message
=
'No final key specified.'
)
message
=
'No final key specified.'
)
keysOk
=
0
keysOk
=
0
elif
(
not
modifiers
)
and
(
finalKey
in
elif
(
not
modifiers
)
and
(
finalKey
in
self
.
alphanumKeys
+
self
.
punctuationKeys
):
self
.
alphanumKeys
+
self
.
punctuationKeys
):
#modifier required
#modifier required
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
message
=
'No modifier key(s) specified.'
)
message
=
'No modifier key(s) specified.'
)
keysOk
=
0
keysOk
=
0
elif
(
modifiers
==
[
'Shift'
])
and
(
finalKey
not
elif
(
modifiers
==
[
'Shift'
])
and
(
finalKey
not
in
self
.
functionKeys
+
(
'Tab'
,)):
in
self
.
functionKeys
+
(
'Tab'
,)):
#shift alone is only a useful modifier with a function key
#shift alone is only a useful modifier with a function key
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
tkMessageBox
.
showerror
(
title
=
'Key Sequence Error'
,
...
@@ -250,7 +250,7 @@ class GetKeysDialog(Toplevel):
...
@@ -250,7 +250,7 @@ class GetKeysDialog(Toplevel):
message
=
'This key combination is already in use.'
)
message
=
'This key combination is already in use.'
)
keysOk
=
0
keysOk
=
0
return
keysOk
return
keysOk
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
#test the dialog
#test the dialog
root
=
Tk
()
root
=
Tk
()
...
...
Lib/idlelib/macosx_main.py
View file @
e52f2d14
...
@@ -3,8 +3,8 @@
...
@@ -3,8 +3,8 @@
Installation:
Installation:
see the install_IDLE target in python/dist/src/Mac/OSX/Makefile
see the install_IDLE target in python/dist/src/Mac/OSX/Makefile
Usage:
Usage:
1. Double clicking IDLE icon will open IDLE.
1. Double clicking IDLE icon will open IDLE.
2. Dropping file on IDLE icon will open that file in IDLE.
2. Dropping file on IDLE icon will open that file in IDLE.
...
@@ -26,7 +26,7 @@ except NameError:
...
@@ -26,7 +26,7 @@ except NameError:
__file__
=
sys
.
argv
[
0
]
__file__
=
sys
.
argv
[
0
]
idlelib
=
join
(
split
(
__file__
)[
0
],
'idlelib'
)
idlelib
=
join
(
split
(
__file__
)[
0
],
'idlelib'
)
if
isdir
(
idlelib
):
if
isdir
(
idlelib
):
sys
.
path
.
append
(
idlelib
)
sys
.
path
.
append
(
idlelib
)
# see if we are being asked to execute the subprocess code
# see if we are being asked to execute the subprocess code
if
'-p'
in
sys
.
argv
:
if
'-p'
in
sys
.
argv
:
...
...
Lib/idlelib/rpc.py
View file @
e52f2d14
...
@@ -56,7 +56,7 @@ def pickle_code(co):
...
@@ -56,7 +56,7 @@ def pickle_code(co):
# def pickle_function(fn):
# def pickle_function(fn):
# assert isinstance(fn, type.FunctionType)
# assert isinstance(fn, type.FunctionType)
# return `fn`
# return `fn`
copy_reg
.
pickle
(
types
.
CodeType
,
pickle_code
,
unpickle_code
)
copy_reg
.
pickle
(
types
.
CodeType
,
pickle_code
,
unpickle_code
)
# copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)
# copy_reg.pickle(types.FunctionType, pickle_function, unpickle_function)
...
@@ -75,13 +75,13 @@ class RPCServer(SocketServer.TCPServer):
...
@@ -75,13 +75,13 @@ class RPCServer(SocketServer.TCPServer):
def
server_activate
(
self
):
def
server_activate
(
self
):
"""Override TCPServer method, connect() instead of listen()
"""Override TCPServer method, connect() instead of listen()
Due to the reversed connection, self.server_address is actually the
Due to the reversed connection, self.server_address is actually the
address of the Idle Client to which we are connecting.
address of the Idle Client to which we are connecting.
"""
"""
self
.
socket
.
connect
(
self
.
server_address
)
self
.
socket
.
connect
(
self
.
server_address
)
def
get_request
(
self
):
def
get_request
(
self
):
"Override TCPServer method, return already connected socket"
"Override TCPServer method, return already connected socket"
return
self
.
socket
,
self
.
server_address
return
self
.
socket
,
self
.
server_address
...
@@ -126,7 +126,7 @@ class SocketIO:
...
@@ -126,7 +126,7 @@ class SocketIO:
pass
pass
def
localcall
(
self
,
request
):
def
localcall
(
self
,
request
):
self
.
debug
(
"localcall:"
,
request
)
self
.
debug
(
"localcall:"
,
request
)
try
:
try
:
how
,
(
oid
,
methodname
,
args
,
kwargs
)
=
request
how
,
(
oid
,
methodname
,
args
,
kwargs
)
=
request
except
TypeError
:
except
TypeError
:
...
@@ -174,7 +174,7 @@ class SocketIO:
...
@@ -174,7 +174,7 @@ class SocketIO:
return
(
"EXCEPTION"
,
(
mod
,
name
,
args
,
tb
))
return
(
"EXCEPTION"
,
(
mod
,
name
,
args
,
tb
))
def
remotecall
(
self
,
oid
,
methodname
,
args
,
kwargs
):
def
remotecall
(
self
,
oid
,
methodname
,
args
,
kwargs
):
self
.
debug
(
"remotecall:"
)
self
.
debug
(
"remotecall:"
)
seq
=
self
.
asynccall
(
oid
,
methodname
,
args
,
kwargs
)
seq
=
self
.
asynccall
(
oid
,
methodname
,
args
,
kwargs
)
return
self
.
asyncreturn
(
seq
)
return
self
.
asyncreturn
(
seq
)
...
@@ -215,7 +215,7 @@ class SocketIO:
...
@@ -215,7 +215,7 @@ class SocketIO:
# do the best we can:
# do the best we can:
raise
name
,
args
raise
name
,
args
if
how
==
"ERROR"
:
if
how
==
"ERROR"
:
self
.
debug
(
"decoderesponse: Internal ERROR:"
,
what
)
self
.
debug
(
"decoderesponse: Internal ERROR:"
,
what
)
raise
RuntimeError
,
what
raise
RuntimeError
,
what
raise
SystemError
,
(
how
,
what
)
raise
SystemError
,
(
how
,
what
)
...
@@ -359,7 +359,7 @@ class SocketIO:
...
@@ -359,7 +359,7 @@ class SocketIO:
cv
.
notify
()
cv
.
notify
()
self
.
statelock
.
release
()
self
.
statelock
.
release
()
continue
continue
#----------------- end class SocketIO --------------------
#----------------- end class SocketIO --------------------
class
RemoteObject
:
class
RemoteObject
:
...
@@ -465,7 +465,7 @@ def _getattributes(obj, attributes):
...
@@ -465,7 +465,7 @@ def _getattributes(obj, attributes):
for
name
in
dir
(
obj
):
for
name
in
dir
(
obj
):
attr
=
getattr
(
obj
,
name
)
attr
=
getattr
(
obj
,
name
)
if
not
callable
(
attr
):
if
not
callable
(
attr
):
attributes
[
name
]
=
1
attributes
[
name
]
=
1
class
MethodProxy
:
class
MethodProxy
:
...
@@ -486,14 +486,14 @@ def testServer(addr):
...
@@ -486,14 +486,14 @@ def testServer(addr):
# XXX 25 Jul 02 KBK needs update to use rpc.py register/unregister methods
# XXX 25 Jul 02 KBK needs update to use rpc.py register/unregister methods
class
RemotePerson
:
class
RemotePerson
:
def
__init__
(
self
,
name
):
def
__init__
(
self
,
name
):
self
.
name
=
name
self
.
name
=
name
def
greet
(
self
,
name
):
def
greet
(
self
,
name
):
print
"(someone called greet)"
print
"(someone called greet)"
print
"Hello %s, I am %s."
%
(
name
,
self
.
name
)
print
"Hello %s, I am %s."
%
(
name
,
self
.
name
)
print
print
def
getName
(
self
):
def
getName
(
self
):
print
"(someone called getName)"
print
"(someone called getName)"
print
print
return
self
.
name
return
self
.
name
def
greet_this_guy
(
self
,
name
):
def
greet_this_guy
(
self
,
name
):
print
"(someone called greet_this_guy)"
print
"(someone called greet_this_guy)"
...
@@ -502,7 +502,7 @@ def testServer(addr):
...
@@ -502,7 +502,7 @@ def testServer(addr):
remote_guy
.
greet
(
"Thomas Edison"
)
remote_guy
.
greet
(
"Thomas Edison"
)
print
"Done."
print
"Done."
print
print
person
=
RemotePerson
(
"Thomas Edison"
)
person
=
RemotePerson
(
"Thomas Edison"
)
svr
=
RPCServer
(
addr
)
svr
=
RPCServer
(
addr
)
svr
.
register
(
'thomas'
,
person
)
svr
.
register
(
'thomas'
,
person
)
...
@@ -526,12 +526,12 @@ def testClient(addr):
...
@@ -526,12 +526,12 @@ def testClient(addr):
thomas
.
greet
(
"Alexander Bell"
)
thomas
.
greet
(
"Alexander Bell"
)
#clt.remotecall("thomas","greet",("Alexander Bell",), {})
#clt.remotecall("thomas","greet",("Alexander Bell",), {})
print
"Done."
print
"Done."
print
print
time
.
sleep
(
2
)
time
.
sleep
(
2
)
# demonstrates remote server calling local instance
# demonstrates remote server calling local instance
class
LocalPerson
:
class
LocalPerson
:
def
__init__
(
self
,
name
):
def
__init__
(
self
,
name
):
self
.
name
=
name
self
.
name
=
name
def
greet
(
self
,
name
):
def
greet
(
self
,
name
):
print
"You've greeted me!"
print
"You've greeted me!"
def
getName
(
self
):
def
getName
(
self
):
...
@@ -551,5 +551,3 @@ def test():
...
@@ -551,5 +551,3 @@ def test():
if
__name__
==
'__main__'
:
if
__name__
==
'__main__'
:
test
()
test
()
Lib/idlelib/tabpage.py
View file @
e52f2d14
...
@@ -10,23 +10,23 @@ class AlreadyExists(Exception): pass
...
@@ -10,23 +10,23 @@ class AlreadyExists(Exception): pass
class
PageTab
(
Frame
):
class
PageTab
(
Frame
):
"""
"""
a 'page tab' like framed button
a 'page tab' like framed button
"""
"""
def
__init__
(
self
,
parent
):
def
__init__
(
self
,
parent
):
Frame
.
__init__
(
self
,
parent
,
borderwidth
=
2
,
relief
=
RIDGE
)
Frame
.
__init__
(
self
,
parent
,
borderwidth
=
2
,
relief
=
RIDGE
)
self
.
button
=
Radiobutton
(
self
,
padx
=
5
,
pady
=
5
,
takefocus
=
FALSE
,
self
.
button
=
Radiobutton
(
self
,
padx
=
5
,
pady
=
5
,
takefocus
=
FALSE
,
indicatoron
=
FALSE
,
highlightthickness
=
0
,
indicatoron
=
FALSE
,
highlightthickness
=
0
,
borderwidth
=
0
,
selectcolor
=
self
.
cget
(
'bg'
))
borderwidth
=
0
,
selectcolor
=
self
.
cget
(
'bg'
))
self
.
button
.
pack
()
self
.
button
.
pack
()
class
TabPageSet
(
Frame
):
class
TabPageSet
(
Frame
):
"""
"""
a set of 'pages' with TabButtons for controlling their display
a set of 'pages' with TabButtons for controlling their display
"""
"""
def
__init__
(
self
,
parent
,
pageNames
=
[],
**
kw
):
def
__init__
(
self
,
parent
,
pageNames
=
[],
**
kw
):
"""
"""
pageNames - a list of strings, each string will be the dictionary key
pageNames - a list of strings, each string will be the dictionary key
to a page's data, and the name displayed on the page's tab. Should be
to a page's data, and the name displayed on the page's tab. Should be
specified in desired page order. The first page will be the default
specified in desired page order. The first page will be the default
and first active page.
and first active page.
"""
"""
Frame
.
__init__
(
self
,
parent
,
kw
)
Frame
.
__init__
(
self
,
parent
,
kw
)
...
@@ -48,12 +48,12 @@ class TabPageSet(Frame):
...
@@ -48,12 +48,12 @@ class TabPageSet(Frame):
else
:
else
:
raise
InvalidTabPage
,
'Invalid TabPage Name'
raise
InvalidTabPage
,
'Invalid TabPage Name'
## pop up the active 'tab' only
## pop up the active 'tab' only
for
page
in
self
.
pages
.
keys
():
for
page
in
self
.
pages
.
keys
():
self
.
pages
[
page
][
'tab'
].
config
(
relief
=
RIDGE
)
self
.
pages
[
page
][
'tab'
].
config
(
relief
=
RIDGE
)
self
.
pages
[
self
.
GetActivePage
()][
'tab'
].
config
(
relief
=
RAISED
)
self
.
pages
[
self
.
GetActivePage
()][
'tab'
].
config
(
relief
=
RAISED
)
## switch page
## switch page
self
.
pages
[
self
.
GetActivePage
()][
'page'
].
lift
()
self
.
pages
[
self
.
GetActivePage
()][
'page'
].
lift
()
def
GetActivePage
(
self
):
def
GetActivePage
(
self
):
return
self
.
activePage
.
get
()
return
self
.
activePage
.
get
()
...
@@ -67,7 +67,7 @@ class TabPageSet(Frame):
...
@@ -67,7 +67,7 @@ class TabPageSet(Frame):
value
=
pageName
)
value
=
pageName
)
self
.
pages
[
pageName
][
'tab'
].
pack
(
side
=
LEFT
)
self
.
pages
[
pageName
][
'tab'
].
pack
(
side
=
LEFT
)
self
.
pages
[
pageName
][
'page'
].
grid
(
row
=
1
,
column
=
0
,
sticky
=
NSEW
)
self
.
pages
[
pageName
][
'page'
].
grid
(
row
=
1
,
column
=
0
,
sticky
=
NSEW
)
if
len
(
self
.
pages
)
==
1
:
# adding first page
if
len
(
self
.
pages
)
==
1
:
# adding first page
self
.
defaultPage
=
pageName
self
.
defaultPage
=
pageName
self
.
activePage
.
set
(
self
.
defaultPage
)
self
.
activePage
.
set
(
self
.
defaultPage
)
self
.
ChangePage
()
self
.
ChangePage
()
...
@@ -83,11 +83,11 @@ class TabPageSet(Frame):
...
@@ -83,11 +83,11 @@ class TabPageSet(Frame):
# handle removing last remaining, or default, or active page
# handle removing last remaining, or default, or active page
if
not
self
.
pages
:
# removed last remaining page
if
not
self
.
pages
:
# removed last remaining page
self
.
defaultPage
=
''
self
.
defaultPage
=
''
return
return
if
pageName
==
self
.
defaultPage
:
# set a new default page
if
pageName
==
self
.
defaultPage
:
# set a new default page
self
.
defaultPage
=
\
self
.
defaultPage
=
\
self
.
tabBar
.
winfo_children
()[
0
].
button
.
cget
(
'text'
)
self
.
tabBar
.
winfo_children
()[
0
].
button
.
cget
(
'text'
)
if
pageName
==
self
.
GetActivePage
():
# set a new active page
if
pageName
==
self
.
GetActivePage
():
# set a new active page
self
.
activePage
.
set
(
self
.
defaultPage
)
self
.
activePage
.
set
(
self
.
defaultPage
)
self
.
ChangePage
()
self
.
ChangePage
()
...
@@ -111,4 +111,3 @@ if __name__ == '__main__':
...
@@ -111,4 +111,3 @@ if __name__ == '__main__':
entryPgName
.
pack
(
padx
=
5
)
entryPgName
.
pack
(
padx
=
5
)
tabPage
.
ChangePage
()
tabPage
.
ChangePage
()
root
.
mainloop
()
root
.
mainloop
()
Lib/idlelib/textView.py
View file @
e52f2d14
##---------------------------------------------------------------------------##
##---------------------------------------------------------------------------##
##
##
## idle - simple text view dialog
## idle - simple text view dialog
## elguavas
## elguavas
##
##
##---------------------------------------------------------------------------##
##---------------------------------------------------------------------------##
"""
"""
simple text browser for idle
simple text browser for idle
...
@@ -13,7 +13,7 @@ import tkMessageBox
...
@@ -13,7 +13,7 @@ import tkMessageBox
class
TextViewer
(
Toplevel
):
class
TextViewer
(
Toplevel
):
"""
"""
simple text viewer dialog for idle
simple text viewer dialog for idle
"""
"""
def
__init__
(
self
,
parent
,
title
,
fileName
):
def
__init__
(
self
,
parent
,
title
,
fileName
):
"""
"""
fileName - string,should be an absoulute filename
fileName - string,should be an absoulute filename
...
@@ -39,7 +39,7 @@ class TextViewer(Toplevel):
...
@@ -39,7 +39,7 @@ class TextViewer(Toplevel):
self
.
LoadTextFile
(
fileName
)
self
.
LoadTextFile
(
fileName
)
self
.
textView
.
config
(
state
=
DISABLED
)
self
.
textView
.
config
(
state
=
DISABLED
)
self
.
wait_window
()
self
.
wait_window
()
def
LoadTextFile
(
self
,
fileName
):
def
LoadTextFile
(
self
,
fileName
):
textFile
=
None
textFile
=
None
try
:
try
:
...
@@ -49,7 +49,7 @@ class TextViewer(Toplevel):
...
@@ -49,7 +49,7 @@ class TextViewer(Toplevel):
message
=
'Unable to load file '
+
`fileName`
+
' .'
)
message
=
'Unable to load file '
+
`fileName`
+
' .'
)
else
:
else
:
self
.
textView
.
insert
(
0.0
,
textFile
.
read
())
self
.
textView
.
insert
(
0.0
,
textFile
.
read
())
def
CreateWidgets
(
self
):
def
CreateWidgets
(
self
):
frameText
=
Frame
(
self
)
frameText
=
Frame
(
self
)
frameButtons
=
Frame
(
self
)
frameButtons
=
Frame
(
self
)
...
@@ -65,7 +65,7 @@ class TextViewer(Toplevel):
...
@@ -65,7 +65,7 @@ class TextViewer(Toplevel):
self
.
textView
.
pack
(
side
=
LEFT
,
expand
=
TRUE
,
fill
=
BOTH
)
self
.
textView
.
pack
(
side
=
LEFT
,
expand
=
TRUE
,
fill
=
BOTH
)
frameButtons
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
frameButtons
.
pack
(
side
=
BOTTOM
,
fill
=
X
)
frameText
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
frameText
.
pack
(
side
=
TOP
,
expand
=
TRUE
,
fill
=
BOTH
)
def
Ok
(
self
,
event
=
None
):
def
Ok
(
self
,
event
=
None
):
self
.
destroy
()
self
.
destroy
()
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment