diff -r 76f831e4b806 Lib/idlelib/autocomplete_w.py --- a/Lib/idlelib/autocomplete_w.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/autocomplete_w.py Fri Jun 10 00:16:27 2016 -0400 @@ -2,6 +2,7 @@ An auto-completion window for IDLE, used by the autocomplete extension """ from tkinter import * +from tkinter.ttk import Scrollbar from idlelib.multicall import MC_SHIFT from idlelib.autocomplete import COMPLETE_FILES, COMPLETE_ATTRIBUTES diff -r 76f831e4b806 Lib/idlelib/config_key.py --- a/Lib/idlelib/config_key.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/config_key.py Fri Jun 10 00:16:27 2016 -0400 @@ -2,31 +2,35 @@ Dialog for building Tkinter accelerator key bindings """ from tkinter import * +from tkinter.ttk import Scrollbar import tkinter.messagebox as tkMessageBox import string import sys class GetKeysDialog(Toplevel): - def __init__(self,parent,title,action,currentKeySequences,_htest=False): + def __init__(self, parent, title, action, currentKeySequences, + _htest=False, _utest=False): """ action - string, the name of the virtual event these keys will be mapped to currentKeys - list, a list of all key sequence lists currently mapped to virtual events, for overlap checking + _utest - bool, do not wait when running unittest _htest - bool, change box location when running htest """ Toplevel.__init__(self, parent) + self.withdraw() #hide while setting geometry self.configure(borderwidth=5) - self.resizable(height=FALSE,width=FALSE) + self.resizable(height=FALSE, width=FALSE) self.title(title) self.transient(parent) self.grab_set() self.protocol("WM_DELETE_WINDOW", self.Cancel) self.parent = parent self.action=action - self.currentKeySequences=currentKeySequences - self.result='' - self.keyString=StringVar(self) + self.currentKeySequences = currentKeySequences + self.result = '' + self.keyString = StringVar(self) self.keyString.set('') self.SetModifiersForPlatform() # set self.modifiers, self.modifier_label self.modifier_vars = [] @@ -37,7 +41,6 @@ self.advanced = False self.CreateWidgets() self.LoadFinalKeyList() - self.withdraw() #hide while setting geometry self.update_idletasks() self.geometry( "+%d+%d" % ( @@ -47,8 +50,9 @@ ((parent.winfo_height()/2 - self.winfo_reqheight()/2) if not _htest else 150) ) ) #centre dialog over parent (or below htest box) - self.deiconify() #geometry set, unhide - self.wait_window() + if not _utest: + self.deiconify() #geometry set, unhide + self.wait_window() def CreateWidgets(self): frameMain = Frame(self,borderwidth=2,relief=SUNKEN) @@ -261,6 +265,7 @@ keysOK = True return keysOK + if __name__ == '__main__': from idlelib.idle_test.htest import run run(GetKeysDialog) diff -r 76f831e4b806 Lib/idlelib/configdialog.py --- a/Lib/idlelib/configdialog.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/configdialog.py Fri Jun 10 00:16:27 2016 -0400 @@ -10,6 +10,7 @@ """ from tkinter import * +from tkinter.ttk import Scrollbar import tkinter.messagebox as tkMessageBox import tkinter.colorchooser as tkColorChooser import tkinter.font as tkFont diff -r 76f831e4b806 Lib/idlelib/debugger.py --- a/Lib/idlelib/debugger.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/debugger.py Fri Jun 10 00:16:27 2016 -0400 @@ -1,6 +1,7 @@ import os import bdb from tkinter import * +from tkinter.ttk import Scrollbar from idlelib.windows import ListedToplevel from idlelib.scrolledlist import ScrolledList from idlelib import macosx diff -r 76f831e4b806 Lib/idlelib/idle_test/htest.py --- a/Lib/idlelib/idle_test/htest.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/idle_test/htest.py Fri Jun 10 00:16:27 2016 -0400 @@ -68,6 +68,7 @@ from importlib import import_module from idlelib.macosx import _init_tk_type import tkinter as tk +from tkinter.ttk import Scrollbar AboutDialog_spec = { 'file': 'help_about', @@ -344,7 +345,7 @@ frameLabel.pack() text = tk.Text(frameLabel, wrap='word') text.configure(bg=root.cget('bg'), relief='flat', height=4, width=70) - scrollbar = tk.Scrollbar(frameLabel, command=text.yview) + scrollbar = Scrollbar(frameLabel, command=text.yview) text.config(yscrollcommand=scrollbar.set) scrollbar.pack(side='right', fill='y', expand=False) text.pack(side='left', fill='both', expand=True) diff -r 76f831e4b806 Lib/idlelib/idle_test/test_autocomplete.py --- a/Lib/idlelib/idle_test/test_autocomplete.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/idle_test/test_autocomplete.py Fri Jun 10 00:16:27 2016 -0400 @@ -1,10 +1,14 @@ +''' Test autocomplete and autocomple_w + +Coverage of autocomple: 56% +''' import unittest from test.support import requires from tkinter import Tk, Text import idlelib.autocomplete as ac import idlelib.autocomplete_w as acw -import idlelib.macosx as mac +from idlelib import macosx from idlelib.idle_test.mock_idle import Func from idlelib.idle_test.mock_tk import Event @@ -27,7 +31,7 @@ def setUpClass(cls): requires('gui') cls.root = Tk() - mac.setupApp(cls.root, None) + macosx.setupApp(cls.root, None) cls.text = Text(cls.root) cls.editor = DummyEditwin(cls.root, cls.text) diff -r 76f831e4b806 Lib/idlelib/idle_test/test_config_key.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_config_key.py Fri Jun 10 00:16:27 2016 -0400 @@ -0,0 +1,31 @@ +''' Test idlelib.config_key. + +Coverage: 56% +''' +from idlelib import config_key +from test.support import requires +requires('gui') +import unittest +from tkinter import Tk, Text + + +class GetKeysTest(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.root = Tk() + + @classmethod + def tearDownClass(cls): + cls.root.destroy() + del cls.root + + + def test_init(self): + dia = config_key.GetKeysDialog( + self.root, 'test', '<>', [''], _utest=True) + dia.Cancel() + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff -r 76f831e4b806 Lib/idlelib/idle_test/test_debugger.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_debugger.py Fri Jun 10 00:16:27 2016 -0400 @@ -0,0 +1,29 @@ +''' Test idlelib.debugger. + +Coverage: 19% +''' +from idlelib import debugger +from test.support import requires +requires('gui') +import unittest +from tkinter import Tk + + +class NameSpaceTest(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.root = Tk() + cls.root.withdraw() + + @classmethod + def tearDownClass(cls): + cls.root.destroy() + del cls.root + + def test_init(self): + debugger.NamespaceViewer(self.root, 'Test') + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff -r 76f831e4b806 Lib/idlelib/idle_test/test_scrolledlist.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_scrolledlist.py Fri Jun 10 00:16:27 2016 -0400 @@ -0,0 +1,29 @@ +''' Test idlelib.scrolledlist. + +Coverage: 39% +''' +from idlelib import scrolledlist +from test.support import requires +requires('gui') +import unittest +from tkinter import Tk + + +class ScrolledListTest(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.root = Tk() + + @classmethod + def tearDownClass(cls): + cls.root.destroy() + del cls.root + + + def test_init(self): + scrolledlist.ScrolledList(self.root) + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff -r 76f831e4b806 Lib/idlelib/idle_test/test_textview.py --- a/Lib/idlelib/idle_test/test_textview.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/idle_test/test_textview.py Fri Jun 10 00:16:27 2016 -0400 @@ -7,13 +7,13 @@ The coverage is essentially 100%. ''' +from idlelib import textview as tv from test.support import requires requires('gui') import unittest import os from tkinter import Tk -from idlelib import textview as tv from idlelib.idle_test.mock_idle import Func from idlelib.idle_test.mock_tk import Mbox diff -r 76f831e4b806 Lib/idlelib/idle_test/test_tree.py --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Lib/idlelib/idle_test/test_tree.py Fri Jun 10 00:16:27 2016 -0400 @@ -0,0 +1,36 @@ +''' Test idlelib.tree. + +Coverage: 56% +''' +from idlelib import tree +from test.support import requires +requires('gui') +import os +import unittest +from tkinter import Tk + + +class TreeTest(unittest.TestCase): + + @classmethod + def setUpClass(cls): + cls.root = Tk() + cls.root.withdraw() + + @classmethod + def tearDownClass(cls): + cls.root.destroy() + del cls.root + + def test_init(self): + # Start with code slightly adapted from htest. + sc = tree.ScrolledCanvas( + self.root, bg="white", highlightthickness=0, takefocus=1) + sc.frame.pack(expand=1, fill="both", side='left') + item = tree.FileTreeItem(tree.ICONDIR) + node = tree.TreeNode(sc.canvas, None, item) + node.expand() + + +if __name__ == '__main__': + unittest.main(verbosity=2) diff -r 76f831e4b806 Lib/idlelib/scrolledlist.py --- a/Lib/idlelib/scrolledlist.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/scrolledlist.py Fri Jun 10 00:16:27 2016 -0400 @@ -1,5 +1,6 @@ from tkinter import * from idlelib import macosx +from tkinter.ttk import Scrollbar class ScrolledList: @@ -124,22 +125,20 @@ pass -def _scrolled_list(parent): - root = Tk() - root.title("Test ScrolledList") +def _scrolled_list(parent): # htest # + top = Toplevel(parent) width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) - root.geometry("+%d+%d"%(x, y + 150)) + top.geometry("+%d+%d"%(x+200, y + 175)) class MyScrolledList(ScrolledList): def fill_menu(self): self.menu.add_command(label="right click") def on_select(self, index): print("select", self.get(index)) def on_double(self, index): print("double", self.get(index)) - scrolled_list = MyScrolledList(root) + scrolled_list = MyScrolledList(top) for i in range(30): scrolled_list.append("Item %02d" % i) - root.mainloop() - if __name__ == '__main__': + # At the moment, test_scrolledlist merely creates instance, like htest. from idlelib.idle_test.htest import run run(_scrolled_list) diff -r 76f831e4b806 Lib/idlelib/textview.py --- a/Lib/idlelib/textview.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/textview.py Fri Jun 10 00:16:27 2016 -0400 @@ -3,6 +3,7 @@ """ from tkinter import * +from tkinter.ttk import Scrollbar import tkinter.messagebox as tkMessageBox class TextViewer(Toplevel): @@ -50,7 +51,7 @@ self.buttonOk = Button(frameButtons, text='Close', command=self.Ok, takefocus=FALSE) self.scrollbarView = Scrollbar(frameText, orient=VERTICAL, - takefocus=FALSE, highlightthickness=0) + takefocus=FALSE) self.textView = Text(frameText, wrap=WORD, highlightthickness=0, fg=self.fg, bg=self.bg) self.scrollbarView.config(command=self.textView.yview) diff -r 76f831e4b806 Lib/idlelib/tree.py --- a/Lib/idlelib/tree.py Thu Jun 09 21:09:15 2016 -0400 +++ b/Lib/idlelib/tree.py Fri Jun 10 00:16:27 2016 -0400 @@ -16,7 +16,7 @@ import os from tkinter import * - +from tkinter.ttk import Scrollbar from idlelib import zoomheight from idlelib.config import idleConf @@ -449,18 +449,17 @@ return "break" -def _tree_widget(parent): - root = Tk() - root.title("Test TreeWidget") +def _tree_widget(parent): # htest # + top = Toplevel(parent) width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) - root.geometry("+%d+%d"%(x, y + 150)) - sc = ScrolledCanvas(root, bg="white", highlightthickness=0, takefocus=1) + top.geometry("+%d+%d"%(x+50, y+175)) + sc = ScrolledCanvas(top, bg="white", highlightthickness=0, takefocus=1) sc.frame.pack(expand=1, fill="both", side=LEFT) - item = FileTreeItem(os.getcwd()) + item = FileTreeItem(ICONDIR) node = TreeNode(sc.canvas, None, item) node.expand() - root.mainloop() if __name__ == '__main__': + # test_tree is currently a copy of this from idlelib.idle_test.htest import run run(_tree_widget)