diff --git a/Lib/idlelib/NEWS.txt b/Lib/idlelib/NEWS.txt index 6688c5ac189..12a0c6f726e 100644 --- a/Lib/idlelib/NEWS.txt +++ b/Lib/idlelib/NEWS.txt @@ -45,6 +45,8 @@ What's New in IDLE 2.6a1? *Release date: XX-XXX-200X* UNRELEASED, but merged into 3.0 +- Configure Dialog: improved layout for keybinding. Patch 1457 Tal Einat. + - tabpage.py updated: tabbedPages.py now supports multiple dynamic rows of tabs. Patch 1612746 Tal Einat. diff --git a/Lib/idlelib/configDialog.py b/Lib/idlelib/configDialog.py index d00b579c20c..e7a06909cb5 100644 --- a/Lib/idlelib/configDialog.py +++ b/Lib/idlelib/configDialog.py @@ -90,7 +90,7 @@ def CreateWidgets(self): self.buttonApply.pack(side=LEFT,padx=5) self.buttonCancel.pack(side=LEFT,padx=5) frameActionButtons.pack(side=BOTTOM) - Frame(self, border=0).pack(side=BOTTOM,pady=2) + Frame(self, height=2, borderwidth=0).pack(side=BOTTOM) self.tabPages.pack(side=TOP,expand=TRUE,fill=BOTH) def CreatePageFontTab(self): @@ -274,26 +274,26 @@ def CreatePageKeys(self): self.listBindings.config(xscrollcommand=scrollTargetX.set) self.buttonNewKeys=Button(frameCustom,text='Get New Keys for Selection', command=self.GetNewKeys,state=DISABLED) - buttonSaveCustomKeys=Button(frameCustom, - text='Save as New Custom Key Set',command=self.SaveAsNewKeySet) #frameKeySets - labelTypeTitle=Label(frameKeySets,text='Select : ') - self.radioKeysBuiltin=Radiobutton(frameKeySets,variable=self.keysAreBuiltin, - value=1,command=self.SetKeysType,text='a Built-in Key Set') - self.radioKeysCustom=Radiobutton(frameKeySets,variable=self.keysAreBuiltin, - value=0,command=self.SetKeysType,text='a Custom Key Set') - self.optMenuKeysBuiltin=DynOptionMenu(frameKeySets, + frames = [Frame(frameKeySets, padx=2, pady=2, borderwidth=0) + for i in range(2)] + self.radioKeysBuiltin=Radiobutton(frames[0],variable=self.keysAreBuiltin, + value=1,command=self.SetKeysType,text='Use a Built-in Key Set') + self.radioKeysCustom=Radiobutton(frames[0],variable=self.keysAreBuiltin, + value=0,command=self.SetKeysType,text='Use a Custom Key Set') + self.optMenuKeysBuiltin=DynOptionMenu(frames[0], self.builtinKeys,None,command=None) - self.optMenuKeysCustom=DynOptionMenu(frameKeySets, + self.optMenuKeysCustom=DynOptionMenu(frames[0], self.customKeys,None,command=None) - self.buttonDeleteCustomKeys=Button(frameKeySets,text='Delete Custom Key Set', + self.buttonDeleteCustomKeys=Button(frames[1],text='Delete Custom Key Set', command=self.DeleteCustomKeys) + buttonSaveCustomKeys=Button(frames[1], + text='Save as New Custom Key Set',command=self.SaveAsNewKeySet) ##widget packing #body - frameCustom.pack(side=LEFT,padx=5,pady=5,expand=TRUE,fill=BOTH) - frameKeySets.pack(side=LEFT,padx=5,pady=5,fill=Y) + frameCustom.pack(side=BOTTOM,padx=5,pady=5,expand=TRUE,fill=BOTH) + frameKeySets.pack(side=BOTTOM,padx=5,pady=5,fill=BOTH) #frameCustom - buttonSaveCustomKeys.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) #frame target @@ -304,12 +304,14 @@ def CreatePageKeys(self): scrollTargetY.grid(row=1,column=1,sticky=NS) scrollTargetX.grid(row=2,column=0,sticky=EW) #frameKeySets - labelTypeTitle.pack(side=TOP,anchor=W,padx=5,pady=5) - self.radioKeysBuiltin.pack(side=TOP,anchor=W,padx=5) - self.radioKeysCustom.pack(side=TOP,anchor=W,padx=5,pady=2) - self.optMenuKeysBuiltin.pack(side=TOP,fill=X,padx=5,pady=5) - self.optMenuKeysCustom.pack(side=TOP,fill=X,anchor=W,padx=5,pady=5) - self.buttonDeleteCustomKeys.pack(side=TOP,fill=X,padx=5,pady=5) + self.radioKeysBuiltin.grid(row=0, column=0, sticky=W+NS) + self.radioKeysCustom.grid(row=1, column=0, sticky=W+NS) + self.optMenuKeysBuiltin.grid(row=0, column=1, sticky=NSEW) + self.optMenuKeysCustom.grid(row=1, column=1, sticky=NSEW) + self.buttonDeleteCustomKeys.pack(side=LEFT,fill=X,expand=True,padx=2) + buttonSaveCustomKeys.pack(side=LEFT,fill=X,expand=True,padx=2) + frames[0].pack(side=TOP, fill=BOTH, expand=True) + frames[1].pack(side=TOP, fill=X, expand=True, pady=2) return frame def CreatePageGeneral(self): diff --git a/Lib/test/test_descr.py b/Lib/test/test_descr.py index 199a49ca166..8ccece1e833 100644 --- a/Lib/test/test_descr.py +++ b/Lib/test/test_descr.py @@ -1976,7 +1976,7 @@ class X(object): def properties_plus(): - class C: + class C(object): foo = property(doc="hello") @foo.getter def foo(self): @@ -1991,8 +1991,11 @@ def foo(self): assert C.foo.__doc__ == "hello" assert not hasattr(c, "foo") c.foo = -42 + assert hasattr(c, '_foo') + assert c._foo == 42 assert c.foo == 42 del c.foo + assert not hasattr(c, '_foo') assert not hasattr(c, "foo") class D(C): @@ -2008,20 +2011,20 @@ def foo(self): del d.foo del d.foo - class E: + class E(object): @property def foo(self): return self._foo @foo.setter - def foo (self, value): + def foo(self, value): raise RuntimeError @foo.setter + def foo(self, value): + self._foo = abs(value) @foo.deleter def foo(self, value=None): - if value is None: - del self._foo - else: - self._foo = abs(value) + del self._foo + e = E() e.foo = -42 assert e.foo == 42 @@ -4223,6 +4226,7 @@ def test_main(): recursions() weakrefs() properties() + properties_plus() supers() inherits() keywords() diff --git a/Misc/Vim/vimrc b/Misc/Vim/vimrc index 11ec638042e..2013bf30e69 100644 --- a/Misc/Vim/vimrc +++ b/Misc/Vim/vimrc @@ -41,10 +41,12 @@ au BufRead,BufNewFile Makefile* set noexpandtab " Use the below highlight group when displaying bad whitespace is desired highlight BadWhitespace ctermbg=red guibg=red -" Display tabs at the beginning of a line in Python mode as bad +" Display tabs at the beginning of a line in Python mode as bad. " Should be done for C code, but not until all code has been moved to 4-space " indents. au BufRead,BufNewFile *.py,*.pyw match BadWhitespace /^\t\+/ +" Make trailing whitespace be flagged as bad. +au BufRead,BufNewFile *.py,*.pyw,*.c,*.h match BadWhitespace /\s\+$/ " Wrap text after a certain number of characters " Python: 79 @@ -86,12 +88,3 @@ au BufNewFile *.py,*.pyw,*.c,*.h set fileformat=unix " Keep indentation level from previous line: ``set autoindent`` " Folding based on indentation: ``set foldmethod=indent`` - -" Make trailing whitespace explicit (left off since this will automatically -" insert the highlight or characters *as you type*, which can get annoying): -"``match BadWhitespace /\s\+$/`` -" -" or, for a non-colored, character-based solution: -" -"``set list listchars=trail:-`` - diff --git a/Modules/timemodule.c b/Modules/timemodule.c index 36a723ae339..8854d0d825a 100644 --- a/Modules/timemodule.c +++ b/Modules/timemodule.c @@ -332,7 +332,7 @@ time_gmtime(PyObject *self, PyObject *args) } PyDoc_STRVAR(gmtime_doc, -"gmtime([seconds]) -> (tm_year, tm_mon, tm_day, tm_hour, tm_min,\n\ +"gmtime([seconds]) -> (tm_year, tm_mon, tm_mday, tm_hour, tm_min,\n\ tm_sec, tm_wday, tm_yday, tm_isdst)\n\ \n\ Convert seconds since the Epoch to a time tuple expressing UTC (a.k.a.\n\ @@ -348,7 +348,8 @@ time_localtime(PyObject *self, PyObject *args) } PyDoc_STRVAR(localtime_doc, -"localtime([seconds]) -> (tm_year,tm_mon,tm_day,tm_hour,tm_min,tm_sec,tm_wday,tm_yday,tm_isdst)\n\ +"localtime([seconds]) -> (tm_year,tm_mon,tm_mday,tm_hour,tm_min,\n\ + tm_sec,tm_wday,tm_yday,tm_isdst)\n\ \n\ Convert seconds since the Epoch to a time tuple expressing local time.\n\ When 'seconds' is not passed in, convert the current time instead.");