mirror of https://github.com/python/cpython
Issue #16511: Use default IDLE width and height if config param is not valid.
Patch Serhiy Storchaka.
This commit is contained in:
commit
7174f0883c
|
@ -170,13 +170,15 @@ class EditorWindow(object):
|
||||||
'recent-files.lst')
|
'recent-files.lst')
|
||||||
self.text_frame = text_frame = Frame(top)
|
self.text_frame = text_frame = Frame(top)
|
||||||
self.vbar = vbar = Scrollbar(text_frame, name='vbar')
|
self.vbar = vbar = Scrollbar(text_frame, name='vbar')
|
||||||
self.width = idleConf.GetOption('main','EditorWindow','width')
|
self.width = idleConf.GetOption('main', 'EditorWindow',
|
||||||
|
'width', type='int')
|
||||||
text_options = {
|
text_options = {
|
||||||
'name': 'text',
|
'name': 'text',
|
||||||
'padx': 5,
|
'padx': 5,
|
||||||
'wrap': 'none',
|
'wrap': 'none',
|
||||||
'width': self.width,
|
'width': self.width,
|
||||||
'height': idleConf.GetOption('main', 'EditorWindow', 'height')}
|
'height': idleConf.GetOption('main', 'EditorWindow',
|
||||||
|
'height', type='int')}
|
||||||
if TkVersion >= 8.5:
|
if TkVersion >= 8.5:
|
||||||
# Starting with tk 8.5 we have to set the new tabstyle option
|
# Starting with tk 8.5 we have to set the new tabstyle option
|
||||||
# to 'wordprocessor' to achieve the same display of tabs as in
|
# to 'wordprocessor' to achieve the same display of tabs as in
|
||||||
|
@ -253,7 +255,8 @@ class EditorWindow(object):
|
||||||
if idleConf.GetOption('main', 'EditorWindow', 'font-bold', type='bool'):
|
if idleConf.GetOption('main', 'EditorWindow', 'font-bold', type='bool'):
|
||||||
fontWeight='bold'
|
fontWeight='bold'
|
||||||
text.config(font=(idleConf.GetOption('main', 'EditorWindow', 'font'),
|
text.config(font=(idleConf.GetOption('main', 'EditorWindow', 'font'),
|
||||||
idleConf.GetOption('main', 'EditorWindow', 'font-size'),
|
idleConf.GetOption('main', 'EditorWindow',
|
||||||
|
'font-size', type='int'),
|
||||||
fontWeight))
|
fontWeight))
|
||||||
text_frame.pack(side=LEFT, fill=BOTH, expand=1)
|
text_frame.pack(side=LEFT, fill=BOTH, expand=1)
|
||||||
text.pack(side=TOP, fill=BOTH, expand=1)
|
text.pack(side=TOP, fill=BOTH, expand=1)
|
||||||
|
@ -268,7 +271,8 @@ class EditorWindow(object):
|
||||||
# Although use-spaces=0 can be configured manually in config-main.def,
|
# Although use-spaces=0 can be configured manually in config-main.def,
|
||||||
# configuration of tabs v. spaces is not supported in the configuration
|
# configuration of tabs v. spaces is not supported in the configuration
|
||||||
# dialog. IDLE promotes the preferred Python indentation: use spaces!
|
# dialog. IDLE promotes the preferred Python indentation: use spaces!
|
||||||
usespaces = idleConf.GetOption('main', 'Indent', 'use-spaces', type='bool')
|
usespaces = idleConf.GetOption('main', 'Indent',
|
||||||
|
'use-spaces', type='bool')
|
||||||
self.usetabs = not usespaces
|
self.usetabs = not usespaces
|
||||||
|
|
||||||
# tabwidth is the display width of a literal tab character.
|
# tabwidth is the display width of a literal tab character.
|
||||||
|
@ -382,9 +386,11 @@ class EditorWindow(object):
|
||||||
self.text.tag_remove("sel", "1.0", "end")
|
self.text.tag_remove("sel", "1.0", "end")
|
||||||
else:
|
else:
|
||||||
if not self.text.index("sel.first"):
|
if not self.text.index("sel.first"):
|
||||||
self.text.mark_set("my_anchor", "insert") # there was no previous selection
|
# there was no previous selection
|
||||||
|
self.text.mark_set("my_anchor", "insert")
|
||||||
else:
|
else:
|
||||||
if self.text.compare(self.text.index("sel.first"), "<", self.text.index("insert")):
|
if self.text.compare(self.text.index("sel.first"), "<",
|
||||||
|
self.text.index("insert")):
|
||||||
self.text.mark_set("my_anchor", "sel.first") # extend back
|
self.text.mark_set("my_anchor", "sel.first") # extend back
|
||||||
else:
|
else:
|
||||||
self.text.mark_set("my_anchor", "sel.last") # extend forward
|
self.text.mark_set("my_anchor", "sel.last") # extend forward
|
||||||
|
@ -766,7 +772,8 @@ class EditorWindow(object):
|
||||||
if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
|
if idleConf.GetOption('main','EditorWindow','font-bold',type='bool'):
|
||||||
fontWeight='bold'
|
fontWeight='bold'
|
||||||
self.text.config(font=(idleConf.GetOption('main','EditorWindow','font'),
|
self.text.config(font=(idleConf.GetOption('main','EditorWindow','font'),
|
||||||
idleConf.GetOption('main','EditorWindow','font-size'),
|
idleConf.GetOption('main','EditorWindow','font-size',
|
||||||
|
type='int'),
|
||||||
fontWeight))
|
fontWeight))
|
||||||
|
|
||||||
def RemoveKeybindings(self):
|
def RemoveKeybindings(self):
|
||||||
|
|
|
@ -32,7 +32,8 @@ class FormatParagraph:
|
||||||
self.editwin = None
|
self.editwin = None
|
||||||
|
|
||||||
def format_paragraph_event(self, event):
|
def format_paragraph_event(self, event):
|
||||||
maxformatwidth = int(idleConf.GetOption('main','FormatParagraph','paragraph'))
|
maxformatwidth = int(idleConf.GetOption('main', 'FormatParagraph',
|
||||||
|
'paragraph', type='int'))
|
||||||
text = self.editwin.text
|
text = self.editwin.text
|
||||||
first, last = self.editwin.get_selection_indices()
|
first, last = self.editwin.get_selection_indices()
|
||||||
if first and last:
|
if first and last:
|
||||||
|
@ -46,7 +47,8 @@ class FormatParagraph:
|
||||||
lines = data.split("\n")
|
lines = data.split("\n")
|
||||||
lines = map(lambda st, l=len(comment_header): st[l:], lines)
|
lines = map(lambda st, l=len(comment_header): st[l:], lines)
|
||||||
data = "\n".join(lines)
|
data = "\n".join(lines)
|
||||||
# Reformat to maxformatwidth chars or a 20 char width, whichever is greater.
|
# Reformat to maxformatwidth chars or a 20 char width,
|
||||||
|
# whichever is greater.
|
||||||
format_width = max(maxformatwidth - len(comment_header), 20)
|
format_width = max(maxformatwidth - len(comment_header), 20)
|
||||||
newdata = reformat_paragraph(data, format_width)
|
newdata = reformat_paragraph(data, format_width)
|
||||||
# re-split and re-insert the comment header.
|
# re-split and re-insert the comment header.
|
||||||
|
|
|
@ -925,7 +925,7 @@ class ConfigDialog(Toplevel):
|
||||||
for font in fonts:
|
for font in fonts:
|
||||||
self.listFontName.insert(END,font)
|
self.listFontName.insert(END,font)
|
||||||
configuredFont=idleConf.GetOption('main','EditorWindow','font',
|
configuredFont=idleConf.GetOption('main','EditorWindow','font',
|
||||||
default='courier')
|
default='courier')
|
||||||
lc_configuredFont = configuredFont.lower()
|
lc_configuredFont = configuredFont.lower()
|
||||||
self.fontName.set(lc_configuredFont)
|
self.fontName.set(lc_configuredFont)
|
||||||
lc_fonts = [s.lower() for s in fonts]
|
lc_fonts = [s.lower() for s in fonts]
|
||||||
|
@ -935,13 +935,13 @@ class ConfigDialog(Toplevel):
|
||||||
self.listFontName.select_set(currentFontIndex)
|
self.listFontName.select_set(currentFontIndex)
|
||||||
self.listFontName.select_anchor(currentFontIndex)
|
self.listFontName.select_anchor(currentFontIndex)
|
||||||
##font size dropdown
|
##font size dropdown
|
||||||
fontSize=idleConf.GetOption('main','EditorWindow','font-size',
|
fontSize=idleConf.GetOption('main', 'EditorWindow', 'font-size',
|
||||||
default='10')
|
type='int', default='10')
|
||||||
self.optMenuFontSize.SetMenu(('7','8','9','10','11','12','13','14',
|
self.optMenuFontSize.SetMenu(('7','8','9','10','11','12','13','14',
|
||||||
'16','18','20','22'),fontSize )
|
'16','18','20','22'), fontSize )
|
||||||
##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()
|
||||||
|
|
||||||
|
@ -1022,10 +1022,13 @@ class ConfigDialog(Toplevel):
|
||||||
self.autoSave.set(idleConf.GetOption('main', 'General', 'autosave',
|
self.autoSave.set(idleConf.GetOption('main', 'General', 'autosave',
|
||||||
default=0, type='bool'))
|
default=0, 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'))
|
type='int'))
|
||||||
|
self.winHeight.set(idleConf.GetOption('main','EditorWindow','height',
|
||||||
|
type='int'))
|
||||||
#initial paragraph reformat size
|
#initial paragraph reformat size
|
||||||
self.paraWidth.set(idleConf.GetOption('main','FormatParagraph','paragraph'))
|
self.paraWidth.set(idleConf.GetOption('main','FormatParagraph','paragraph',
|
||||||
|
type='int'))
|
||||||
# default source encoding
|
# default source encoding
|
||||||
self.encoding.set(idleConf.GetOption('main', 'EditorWindow',
|
self.encoding.set(idleConf.GetOption('main', 'EditorWindow',
|
||||||
'encoding', default='none'))
|
'encoding', default='none'))
|
||||||
|
|
|
@ -238,24 +238,39 @@ class IdleConf:
|
||||||
printed to stderr.
|
printed to stderr.
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if self.userCfg[configType].has_option(section,option):
|
try:
|
||||||
return self.userCfg[configType].Get(section, option,
|
if self.userCfg[configType].has_option(section,option):
|
||||||
type=type, raw=raw)
|
return self.userCfg[configType].Get(section, option,
|
||||||
elif self.defaultCfg[configType].has_option(section,option):
|
type=type, raw=raw)
|
||||||
return self.defaultCfg[configType].Get(section, option,
|
except ValueError:
|
||||||
type=type, raw=raw)
|
warning = ('\n Warning: configHandler.py - IdleConf.GetOption -\n'
|
||||||
else: #returning default, print warning
|
' invalid %r value for configuration option %r\n'
|
||||||
if warn_on_default:
|
' from section %r: %r\n' %
|
||||||
warning = ('\n Warning: configHandler.py - IdleConf.GetOption -\n'
|
(type, option, section,
|
||||||
' problem retrieving configuration option %r\n'
|
self.userCfg[configType].Get(section, option,
|
||||||
' from section %r.\n'
|
raw=raw)))
|
||||||
' returning default value: %r\n' %
|
try:
|
||||||
(option, section, default))
|
sys.stderr.write(warning)
|
||||||
try:
|
except IOError:
|
||||||
sys.stderr.write(warning)
|
pass
|
||||||
except IOError:
|
try:
|
||||||
pass
|
if self.defaultCfg[configType].has_option(section,option):
|
||||||
return default
|
return self.defaultCfg[configType].Get(section, option,
|
||||||
|
type=type, raw=raw)
|
||||||
|
except ValueError:
|
||||||
|
pass
|
||||||
|
#returning default, print warning
|
||||||
|
if warn_on_default:
|
||||||
|
warning = ('\n Warning: configHandler.py - IdleConf.GetOption -\n'
|
||||||
|
' problem retrieving configuration option %r\n'
|
||||||
|
' from section %r.\n'
|
||||||
|
' returning default value: %r\n' %
|
||||||
|
(option, section, default))
|
||||||
|
try:
|
||||||
|
sys.stderr.write(warning)
|
||||||
|
except IOError:
|
||||||
|
pass
|
||||||
|
return default
|
||||||
|
|
||||||
def SetOption(self, configType, section, option, value):
|
def SetOption(self, configType, section, option, value):
|
||||||
"""In user's config file, set section's option to value.
|
"""In user's config file, set section's option to value.
|
||||||
|
|
|
@ -114,6 +114,9 @@ Core and Builtins
|
||||||
Library
|
Library
|
||||||
-------
|
-------
|
||||||
|
|
||||||
|
- Issue #16511: Use default IDLE width and height if config param is not valid.
|
||||||
|
Patch Serhiy Storchaka.
|
||||||
|
|
||||||
- Issue #16443: Add docstrings to regular expression match objects.
|
- Issue #16443: Add docstrings to regular expression match objects.
|
||||||
Patch by Anton Kasyanov.
|
Patch by Anton Kasyanov.
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue