diff options
author | Guilherme Polo <ggpolo@gmail.com> | 2009-02-09 20:40:42 (GMT) |
---|---|---|
committer | Guilherme Polo <ggpolo@gmail.com> | 2009-02-09 20:40:42 (GMT) |
commit | a91790a5b0b3c8967d5c42407bb500d298e06d7d (patch) | |
tree | a1c54b7fd945c05f436e2aec8ff9ba5a9d64a9d6 | |
parent | 87ec0855c680689898f8f0097efa18c6cb088dfd (diff) | |
download | cpython-a91790a5b0b3c8967d5c42407bb500d298e06d7d.zip cpython-a91790a5b0b3c8967d5c42407bb500d298e06d7d.tar.gz cpython-a91790a5b0b3c8967d5c42407bb500d298e06d7d.tar.bz2 |
Merged revisions 69460,69467,69470 via svnmerge from
svn+ssh://pythondev/python/trunk
........
r69460 | guilherme.polo | 2009-02-09 14:09:17 -0200 (Mon, 09 Feb 2009) | 1 line
Turned setup_master public
........
r69467 | guilherme.polo | 2009-02-09 17:21:21 -0200 (Mon, 09 Feb 2009) | 2 lines
Some tests for Tkinter.Text.search
........
r69470 | guilherme.polo | 2009-02-09 17:57:04 -0200 (Mon, 09 Feb 2009) | 1 line
Checking for tk availability before continuing (basically the same that is done in test_ttk_guionly)
........
-rwxr-xr-x | Lib/test/regrtest.py | 4 | ||||
-rw-r--r-- | Lib/test/test_tk.py | 22 | ||||
-rw-r--r-- | Lib/tkinter/test/test_tkinter/__init__.py | 0 | ||||
-rw-r--r-- | Lib/tkinter/test/test_tkinter/test_text.py | 39 | ||||
-rw-r--r-- | Lib/tkinter/ttk.py | 40 |
5 files changed, 84 insertions, 21 deletions
diff --git a/Lib/test/regrtest.py b/Lib/test/regrtest.py index 8ab0e48..203bd95 100755 --- a/Lib/test/regrtest.py +++ b/Lib/test/regrtest.py @@ -1075,6 +1075,7 @@ _expectations = { test_pty test_socketserver test_tcl + test_tk test_ttk_guionly test_ttk_textonly test_timeout @@ -1092,6 +1093,7 @@ _expectations = { test_kqueue test_ossaudiodev test_tcl + test_tk test_ttk_guionly test_ttk_textonly test_zipimport @@ -1109,6 +1111,7 @@ _expectations = { test_ossaudiodev test_pep277 test_tcl + test_tk test_ttk_guionly test_ttk_textonly test_multiprocessing @@ -1125,6 +1128,7 @@ _expectations = { test_ossaudiodev test_pep277 test_tcl + test_tk test_ttk_guionly test_ttk_textonly test_multiprocessing diff --git a/Lib/test/test_tk.py b/Lib/test/test_tk.py new file mode 100644 index 0000000..8b21a0f --- /dev/null +++ b/Lib/test/test_tk.py @@ -0,0 +1,22 @@ +import tkinter +from tkinter.test import runtktests +from test import support + +try: + tkinter.Button() +except tkinter.TclError as msg: + # assuming tk is not available + raise support.TestSkipped("tk not available: %s" % msg) + +def test_main(enable_gui=False): + if enable_gui: + if support.use_resources is None: + support.use_resources = ['gui'] + elif 'gui' not in support.use_resources: + support.use_resources.append('gui') + + support.run_unittest( + *runtktests.get_tests(text=False, packages=['test_tkinter'])) + +if __name__ == '__main__': + test_main(enable_gui=True) diff --git a/Lib/tkinter/test/test_tkinter/__init__.py b/Lib/tkinter/test/test_tkinter/__init__.py new file mode 100644 index 0000000..e69de29 --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/__init__.py diff --git a/Lib/tkinter/test/test_tkinter/test_text.py b/Lib/tkinter/test/test_tkinter/test_text.py new file mode 100644 index 0000000..fffd455 --- /dev/null +++ b/Lib/tkinter/test/test_tkinter/test_text.py @@ -0,0 +1,39 @@ +import unittest +import tkinter +from test.support import requires, run_unittest +from tkinter.ttk import setup_master + +requires('gui') + +class TextTest(unittest.TestCase): + + def setUp(self): + self.root = setup_master() + self.text = tkinter.Text(self.root) + + def tearDown(self): + self.text.destroy() + + + def test_search(self): + text = self.text + + # pattern and index are obligatory arguments. + self.failUnlessRaises(tkinter.TclError, text.search, None, '1.0') + self.failUnlessRaises(tkinter.TclError, text.search, 'a', None) + self.failUnlessRaises(tkinter.TclError, text.search, None, None) + + # Invalid text index. + self.failUnlessRaises(tkinter.TclError, text.search, '', 0) + + # Check if we are getting the indices as strings -- you are likely + # to get Tcl_Obj under Tk 8.5 if Tkinter doesn't convert it. + text.insert('1.0', 'hi-test') + self.failUnlessEqual(text.search('-test', '1.0', 'end'), '1.2') + self.failUnlessEqual(text.search('test', '1.0', 'end'), '1.3') + + +tests_gui = (TextTest, ) + +if __name__ == "__main__": + run_unittest(*tests_gui) diff --git a/Lib/tkinter/ttk.py b/Lib/tkinter/ttk.py index 89a9bf1..108a65f 100644 --- a/Lib/tkinter/ttk.py +++ b/Lib/tkinter/ttk.py @@ -23,7 +23,7 @@ __all__ = ["Button", "Checkbutton", "Combobox", "Entry", "Frame", "Label", # Extensions "LabeledScale", "OptionMenu", # functions - "tclobjs_to_py"] + "tclobjs_to_py", "setup_master"] import tkinter @@ -47,24 +47,6 @@ def _load_tile(master): master.tk.eval('package require tile') # TclError may be raised here master._tile_loaded = True - -def _setup_master(master=None): - """If master is not None, itself is returned. If master is None, - the default master is returned if there is one, otherwise a new - master is created and returned. - - If it is not allowed to use the default root and master is None, - RuntimeError is raised.""" - if master is None: - if tkinter._support_default_root: - master = tkinter._default_root or tkinter.Tk() - else: - raise RuntimeError( - "No master specified and tkinter is " - "configured to not support default root") - return master - - def _format_optdict(optdict, script=False, ignore=None): """Formats optdict to a tuple to pass it to tk.call. @@ -367,6 +349,22 @@ def tclobjs_to_py(adict): return adict +def setup_master(master=None): + """If master is not None, itself is returned. If master is None, + the default master is returned if there is one, otherwise a new + master is created and returned. + + If it is not allowed to use the default root and master is None, + RuntimeError is raised.""" + if master is None: + if tkinter._support_default_root: + master = tkinter._default_root or tkinter.Tk() + else: + raise RuntimeError( + "No master specified and tkinter is " + "configured to not support default root") + return master + class Style(object): """Manipulate style database.""" @@ -374,7 +372,7 @@ class Style(object): _name = "ttk::style" def __init__(self, master=None): - master = _setup_master(master) + master = setup_master(master) if not getattr(master, '_tile_loaded', False): # Load tile now, if needed @@ -555,7 +553,7 @@ class Widget(tkinter.Widget): active, disabled, focus, pressed, selected, background, readonly, alternate, invalid """ - master = _setup_master(master) + master = setup_master(master) if not getattr(master, '_tile_loaded', False): # Load tile now, if needed _load_tile(master) |