uawdijnntqw1x1x1
IP : 216.73.216.110
Hostname : 6.87.74.97.host.secureserver.net
Kernel : Linux 6.87.74.97.host.secureserver.net 4.18.0-553.83.1.el8_10.x86_64 #1 SMP Mon Nov 10 04:22:44 EST 2025 x86_64
Disable Function : None :)
OS : Linux
PATH:
/
home
/
emeraadmin
/
www
/
wp-admin
/
..
/
node_modules
/
d3-array
/
src
/
..
/
..
/
..
/
Classes
/
..
/
4d695
/
lib-tk.tar
/
/
test/test_tkinter/__init__.py000064400000000000151703463030012343 0ustar00test/test_tkinter/__init__.pyc000064400000000220151703463030012512 0ustar00� zfc@sdS(N((((s9/usr/lib64/python2.7/lib-tk/test/test_tkinter/__init__.pyt<module>ttest/test_tkinter/__init__.pyo000064400000000220151703463030012526 0ustar00� zfc@sdS(N((((s9/usr/lib64/python2.7/lib-tk/test/test_tkinter/__init__.pyt<module>ttest/test_tkinter/test_font.py000064400000007746151703463030012641 0ustar00import unittest import Tkinter as tkinter import tkFont as font from test.test_support import requires, run_unittest, gc_collect from test_ttk.support import AbstractTkTest requires('gui') fontname = "TkDefaultFont" class FontTest(AbstractTkTest, unittest.TestCase): @classmethod def setUpClass(cls): AbstractTkTest.setUpClass.__func__(cls) try: cls.font = font.Font(root=cls.root, name=fontname, exists=True) except tkinter.TclError: cls.font = font.Font(root=cls.root, name=fontname, exists=False) def test_configure(self): options = self.font.configure() self.assertGreaterEqual(set(options), {'family', 'size', 'weight', 'slant', 'underline', 'overstrike'}) for key in options: self.assertEqual(self.font.cget(key), options[key]) self.assertEqual(self.font[key], options[key]) for key in 'family', 'weight', 'slant': self.assertIsInstance(options[key], str) self.assertIsInstance(self.font.cget(key), str) self.assertIsInstance(self.font[key], str) sizetype = int if self.wantobjects else str for key in 'size', 'underline', 'overstrike': self.assertIsInstance(options[key], sizetype) self.assertIsInstance(self.font.cget(key), sizetype) self.assertIsInstance(self.font[key], sizetype) def test_unicode_family(self): family = u'MS \u30b4\u30b7\u30c3\u30af' try: f = font.Font(root=self.root, family=family, exists=True) except tkinter.TclError: f = font.Font(root=self.root, family=family, exists=False) self.assertEqual(f.cget('family'), family) del f gc_collect() def test_actual(self): options = self.font.actual() self.assertGreaterEqual(set(options), {'family', 'size', 'weight', 'slant', 'underline', 'overstrike'}) for key in options: self.assertEqual(self.font.actual(key), options[key]) for key in 'family', 'weight', 'slant': self.assertIsInstance(options[key], str) self.assertIsInstance(self.font.actual(key), str) sizetype = int if self.wantobjects else str for key in 'size', 'underline', 'overstrike': self.assertIsInstance(options[key], sizetype) self.assertIsInstance(self.font.actual(key), sizetype) def test_name(self): self.assertEqual(self.font.name, fontname) self.assertEqual(str(self.font), fontname) def test_eq(self): font1 = font.Font(root=self.root, name=fontname, exists=True) font2 = font.Font(root=self.root, name=fontname, exists=True) self.assertIsNot(font1, font2) self.assertEqual(font1, font2) self.assertNotEqual(font1, font1.copy()) self.assertNotEqual(font1, 0) self.assertNotIn(font1, [0]) def test_measure(self): self.assertIsInstance(self.font.measure('abc'), int) def test_metrics(self): metrics = self.font.metrics() self.assertGreaterEqual(set(metrics), {'ascent', 'descent', 'linespace', 'fixed'}) for key in metrics: self.assertEqual(self.font.metrics(key), metrics[key]) self.assertIsInstance(metrics[key], int) self.assertIsInstance(self.font.metrics(key), int) def test_families(self): families = font.families(self.root) self.assertIsInstance(families, tuple) self.assertTrue(families) for family in families: self.assertIsInstance(family, (str, unicode)) self.assertTrue(family) def test_names(self): names = font.names(self.root) self.assertIsInstance(names, tuple) self.assertTrue(names) for name in names: self.assertIsInstance(name, (str, unicode)) self.assertTrue(name) self.assertIn(fontname, names) tests_gui = (FontTest, ) if __name__ == "__main__": run_unittest(*tests_gui) test/test_tkinter/test_font.pyc000064400000011672151703463030012775 0ustar00� zfc@s�ddlZddlZddlZddlmZmZmZddl m Z ed�dZde ejfd��YZ e fZedkr�ee�ndS( i����N(trequirestrun_unittestt gc_collect(tAbstractTkTesttguit TkDefaultFonttFontTestcBsheZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �ZRS( cCswtjj|�y(tjd|jdtdt�|_Wn8tj k rrtjd|jdtdt �|_nXdS(Ntroottnametexists(Rt setUpClasst__func__tfonttFontRtfontnametTruettkintertTclErrortFalse(tcls((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyR s (cCsL|jj�}|jt|�ddddddh�xI|D]A}|j|jj|�||�|j|j|||�q>WxUdD]M}|j||t�|j|jj|�t�|j|j|t�q�W|jr�t nt}xUdD]M}|j|||�|j|jj|�|�|j|j||�q�WdS( Ntfamilytsizetweighttslantt underlinet overstrike(RRR(RRR( Rt configuretassertGreaterEqualtsettassertEqualtcgettassertIsInstancetstrtwantobjectstint(tselftoptionstkeytsizetype((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_configures cCs�d}y%tjd|jd|dt�}Wn5tjk rbtjd|jd|dt�}nX|j|jd�|�~t �dS(NuMS ゴシックRRR ( RR RRRRRRRR(R#Rtf((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_unicode_family&s%%cCs|jj�}|jt|�ddddddh�x.|D]&}|j|jj|�||�q>Wx>dD]6}|j||t�|j|jj|�t�qoW|jr�tnt}x>dD]6}|j|||�|j|jj|�|�q�WdS( NRRRRRR(RRR(RRR( RtactualRRRRR R!R"(R#R$R%R&((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_actual0s $ cCs3|j|jjt�|jt|j�t�dS(N(RRRRR (R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_name>scCs�tjd|jdtdt�}tjd|jdtdt�}|j||�|j||�|j||j��|j|d�|j |dg�dS(NRRR i( RR RRRtassertIsNotRtassertNotEqualtcopytassertNotIn(R#tfont1tfont2((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_eqBs!!cCs |j|jjd�t�dS(Ntabc(RRtmeasureR"(R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_measureKscCs�|jj�}|jt|�ddddh�x^|D]V}|j|jj|�||�|j||t�|j|jj|�t�q8WdS(Ntascenttdescentt linespacetfixed(RtmetricsRRRRR"(R#R;R%((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_metricsNs cCsgtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6WdS(N(RtfamiliesRRttuplet assertTrueR tunicode(R#R=R((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_familiesWs cCswtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6W|jt |�dS(N( RtnamesRRR>R?R R@tassertInR(R#RBR((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_names_s ( t__name__t __module__tclassmethodR R'R)R+R,R3R6R<RARD(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyRs t__main__(tunittesttTkinterRttkFontRttest.test_supportRRRttest_ttk.supportRRtTestCaseRt tests_guiRE(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt<module>s ] test/test_tkinter/test_font.pyo000064400000011672151703463030013011 0ustar00� zfc@s�ddlZddlZddlZddlmZmZmZddl m Z ed�dZde ejfd��YZ e fZedkr�ee�ndS( i����N(trequirestrun_unittestt gc_collect(tAbstractTkTesttguit TkDefaultFonttFontTestcBsheZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �ZRS( cCswtjj|�y(tjd|jdtdt�|_Wn8tj k rrtjd|jdtdt �|_nXdS(Ntroottnametexists(Rt setUpClasst__func__tfonttFontRtfontnametTruettkintertTclErrortFalse(tcls((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyR s (cCsL|jj�}|jt|�ddddddh�xI|D]A}|j|jj|�||�|j|j|||�q>WxUdD]M}|j||t�|j|jj|�t�|j|j|t�q�W|jr�t nt}xUdD]M}|j|||�|j|jj|�|�|j|j||�q�WdS( Ntfamilytsizetweighttslantt underlinet overstrike(RRR(RRR( Rt configuretassertGreaterEqualtsettassertEqualtcgettassertIsInstancetstrtwantobjectstint(tselftoptionstkeytsizetype((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_configures cCs�d}y%tjd|jd|dt�}Wn5tjk rbtjd|jd|dt�}nX|j|jd�|�~t �dS(NuMS ゴシックRRR ( RR RRRRRRRR(R#Rtf((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_unicode_family&s%%cCs|jj�}|jt|�ddddddh�x.|D]&}|j|jj|�||�q>Wx>dD]6}|j||t�|j|jj|�t�qoW|jr�tnt}x>dD]6}|j|||�|j|jj|�|�q�WdS( NRRRRRR(RRR(RRR( RtactualRRRRR R!R"(R#R$R%R&((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_actual0s $ cCs3|j|jjt�|jt|j�t�dS(N(RRRRR (R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_name>scCs�tjd|jdtdt�}tjd|jdtdt�}|j||�|j||�|j||j��|j|d�|j |dg�dS(NRRR i( RR RRRtassertIsNotRtassertNotEqualtcopytassertNotIn(R#tfont1tfont2((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_eqBs!!cCs |j|jjd�t�dS(Ntabc(RRtmeasureR"(R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_measureKscCs�|jj�}|jt|�ddddh�x^|D]V}|j|jj|�||�|j||t�|j|jj|�t�q8WdS(Ntascenttdescentt linespacetfixed(RtmetricsRRRRR"(R#R;R%((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_metricsNs cCsgtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6WdS(N(RtfamiliesRRttuplet assertTrueR tunicode(R#R=R((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_familiesWs cCswtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6W|jt |�dS(N( RtnamesRRR>R?R R@tassertInR(R#RBR((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt test_names_s ( t__name__t __module__tclassmethodR R'R)R+R,R3R6R<RARD(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyRs t__main__(tunittesttTkinterRttkFontRttest.test_supportRRRttest_ttk.supportRRtTestCaseRt tests_guiRE(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyt<module>s ] test/test_tkinter/test_geometry_managers.py000064400000117167151703463030015402 0ustar00import unittest import re import Tkinter as tkinter from Tkinter import TclError from test.test_support import requires, run_unittest from test_ttk.support import pixels_conv, tcl_version, requires_tcl from widget_tests import AbstractWidgetTest, int_round requires('gui') class PackTest(AbstractWidgetTest, unittest.TestCase): test_keys = None def create2(self): pack = tkinter.Toplevel(self.root, name='pack') pack.wm_geometry('300x200+0+0') pack.wm_minsize(1, 1) a = tkinter.Frame(pack, name='a', width=20, height=40, bg='red') b = tkinter.Frame(pack, name='b', width=50, height=30, bg='blue') c = tkinter.Frame(pack, name='c', width=80, height=80, bg='green') d = tkinter.Frame(pack, name='d', width=40, height=30, bg='yellow') return pack, a, b, c, d def test_pack_configure_after(self): pack, a, b, c, d = self.create2() with self.assertRaisesRegexp(TclError, 'window "%s" isn\'t packed' % b): a.pack_configure(after=b) with self.assertRaisesRegexp(TclError, 'bad window path name ".foo"'): a.pack_configure(after='.foo') a.pack_configure(side='top') b.pack_configure(side='top') c.pack_configure(side='top') d.pack_configure(side='top') self.assertEqual(pack.pack_slaves(), [a, b, c, d]) a.pack_configure(after=b) self.assertEqual(pack.pack_slaves(), [b, a, c, d]) a.pack_configure(after=a) self.assertEqual(pack.pack_slaves(), [b, a, c, d]) def test_pack_configure_anchor(self): pack, a, b, c, d = self.create2() def check(anchor, geom): a.pack_configure(side='top', ipadx=5, padx=10, ipady=15, pady=20, expand=True, anchor=anchor) self.root.update() self.assertEqual(a.winfo_geometry(), geom) check('n', '30x70+135+20') check('ne', '30x70+260+20') check('e', '30x70+260+65') check('se', '30x70+260+110') check('s', '30x70+135+110') check('sw', '30x70+10+110') check('w', '30x70+10+65') check('nw', '30x70+10+20') check('center', '30x70+135+65') def test_pack_configure_before(self): pack, a, b, c, d = self.create2() with self.assertRaisesRegexp(TclError, 'window "%s" isn\'t packed' % b): a.pack_configure(before=b) with self.assertRaisesRegexp(TclError, 'bad window path name ".foo"'): a.pack_configure(before='.foo') a.pack_configure(side='top') b.pack_configure(side='top') c.pack_configure(side='top') d.pack_configure(side='top') self.assertEqual(pack.pack_slaves(), [a, b, c, d]) a.pack_configure(before=d) self.assertEqual(pack.pack_slaves(), [b, c, a, d]) a.pack_configure(before=a) self.assertEqual(pack.pack_slaves(), [b, c, a, d]) def test_pack_configure_expand(self): pack, a, b, c, d = self.create2() def check(*geoms): self.root.update() self.assertEqual(a.winfo_geometry(), geoms[0]) self.assertEqual(b.winfo_geometry(), geoms[1]) self.assertEqual(c.winfo_geometry(), geoms[2]) self.assertEqual(d.winfo_geometry(), geoms[3]) a.pack_configure(side='left') b.pack_configure(side='top') c.pack_configure(side='right') d.pack_configure(side='bottom') check('20x40+0+80', '50x30+135+0', '80x80+220+75', '40x30+100+170') a.pack_configure(side='left', expand='yes') b.pack_configure(side='top', expand='on') c.pack_configure(side='right', expand=True) d.pack_configure(side='bottom', expand=1) check('20x40+40+80', '50x30+175+35', '80x80+180+110', '40x30+100+135') a.pack_configure(side='left', expand='yes', fill='both') b.pack_configure(side='top', expand='on', fill='both') c.pack_configure(side='right', expand=True, fill='both') d.pack_configure(side='bottom', expand=1, fill='both') check('100x200+0+0', '200x100+100+0', '160x100+140+100', '40x100+100+100') def test_pack_configure_in(self): pack, a, b, c, d = self.create2() a.pack_configure(side='top') b.pack_configure(side='top') c.pack_configure(side='top') d.pack_configure(side='top') a.pack_configure(in_=pack) self.assertEqual(pack.pack_slaves(), [b, c, d, a]) a.pack_configure(in_=c) self.assertEqual(pack.pack_slaves(), [b, c, d]) self.assertEqual(c.pack_slaves(), [a]) with self.assertRaisesRegexp(TclError, 'can\'t pack %s inside itself' % (a,)): a.pack_configure(in_=a) with self.assertRaisesRegexp(TclError, 'bad window path name ".foo"'): a.pack_configure(in_='.foo') def test_pack_configure_padx_ipadx_fill(self): pack, a, b, c, d = self.create2() def check(geom1, geom2, **kwargs): a.pack_forget() b.pack_forget() a.pack_configure(**kwargs) b.pack_configure(expand=True, fill='both') self.root.update() self.assertEqual(a.winfo_geometry(), geom1) self.assertEqual(b.winfo_geometry(), geom2) check('20x40+260+80', '240x200+0+0', side='right', padx=20) check('20x40+250+80', '240x200+0+0', side='right', padx=(10, 30)) check('60x40+240+80', '240x200+0+0', side='right', ipadx=20) check('30x40+260+80', '250x200+0+0', side='right', ipadx=5, padx=10) check('20x40+260+80', '240x200+0+0', side='right', padx=20, fill='x') check('20x40+249+80', '240x200+0+0', side='right', padx=(9, 31), fill='x') check('60x40+240+80', '240x200+0+0', side='right', ipadx=20, fill='x') check('30x40+260+80', '250x200+0+0', side='right', ipadx=5, padx=10, fill='x') check('30x40+255+80', '250x200+0+0', side='right', ipadx=5, padx=(5, 15), fill='x') check('20x40+140+0', '300x160+0+40', side='top', padx=20) check('20x40+120+0', '300x160+0+40', side='top', padx=(0, 40)) check('60x40+120+0', '300x160+0+40', side='top', ipadx=20) check('30x40+135+0', '300x160+0+40', side='top', ipadx=5, padx=10) check('30x40+130+0', '300x160+0+40', side='top', ipadx=5, padx=(5, 15)) check('260x40+20+0', '300x160+0+40', side='top', padx=20, fill='x') check('260x40+25+0', '300x160+0+40', side='top', padx=(25, 15), fill='x') check('300x40+0+0', '300x160+0+40', side='top', ipadx=20, fill='x') check('280x40+10+0', '300x160+0+40', side='top', ipadx=5, padx=10, fill='x') check('280x40+5+0', '300x160+0+40', side='top', ipadx=5, padx=(5, 15), fill='x') a.pack_configure(padx='1c') self.assertEqual(a.pack_info()['padx'], self._str(pack.winfo_pixels('1c'))) a.pack_configure(ipadx='1c') self.assertEqual(a.pack_info()['ipadx'], self._str(pack.winfo_pixels('1c'))) def test_pack_configure_pady_ipady_fill(self): pack, a, b, c, d = self.create2() def check(geom1, geom2, **kwargs): a.pack_forget() b.pack_forget() a.pack_configure(**kwargs) b.pack_configure(expand=True, fill='both') self.root.update() self.assertEqual(a.winfo_geometry(), geom1) self.assertEqual(b.winfo_geometry(), geom2) check('20x40+280+80', '280x200+0+0', side='right', pady=20) check('20x40+280+70', '280x200+0+0', side='right', pady=(10, 30)) check('20x80+280+60', '280x200+0+0', side='right', ipady=20) check('20x50+280+75', '280x200+0+0', side='right', ipady=5, pady=10) check('20x40+280+80', '280x200+0+0', side='right', pady=20, fill='x') check('20x40+280+69', '280x200+0+0', side='right', pady=(9, 31), fill='x') check('20x80+280+60', '280x200+0+0', side='right', ipady=20, fill='x') check('20x50+280+75', '280x200+0+0', side='right', ipady=5, pady=10, fill='x') check('20x50+280+70', '280x200+0+0', side='right', ipady=5, pady=(5, 15), fill='x') check('20x40+140+20', '300x120+0+80', side='top', pady=20) check('20x40+140+0', '300x120+0+80', side='top', pady=(0, 40)) check('20x80+140+0', '300x120+0+80', side='top', ipady=20) check('20x50+140+10', '300x130+0+70', side='top', ipady=5, pady=10) check('20x50+140+5', '300x130+0+70', side='top', ipady=5, pady=(5, 15)) check('300x40+0+20', '300x120+0+80', side='top', pady=20, fill='x') check('300x40+0+25', '300x120+0+80', side='top', pady=(25, 15), fill='x') check('300x80+0+0', '300x120+0+80', side='top', ipady=20, fill='x') check('300x50+0+10', '300x130+0+70', side='top', ipady=5, pady=10, fill='x') check('300x50+0+5', '300x130+0+70', side='top', ipady=5, pady=(5, 15), fill='x') a.pack_configure(pady='1c') self.assertEqual(a.pack_info()['pady'], self._str(pack.winfo_pixels('1c'))) a.pack_configure(ipady='1c') self.assertEqual(a.pack_info()['ipady'], self._str(pack.winfo_pixels('1c'))) def test_pack_configure_side(self): pack, a, b, c, d = self.create2() def check(side, geom1, geom2): a.pack_configure(side=side) self.assertEqual(a.pack_info()['side'], side) b.pack_configure(expand=True, fill='both') self.root.update() self.assertEqual(a.winfo_geometry(), geom1) self.assertEqual(b.winfo_geometry(), geom2) check('top', '20x40+140+0', '300x160+0+40') check('bottom', '20x40+140+160', '300x160+0+0') check('left', '20x40+0+80', '280x200+20+0') check('right', '20x40+280+80', '280x200+0+0') def test_pack_forget(self): pack, a, b, c, d = self.create2() a.pack_configure() b.pack_configure() c.pack_configure() self.assertEqual(pack.pack_slaves(), [a, b, c]) b.pack_forget() self.assertEqual(pack.pack_slaves(), [a, c]) b.pack_forget() self.assertEqual(pack.pack_slaves(), [a, c]) d.pack_forget() def test_pack_info(self): pack, a, b, c, d = self.create2() with self.assertRaisesRegexp(TclError, 'window "%s" isn\'t packed' % a): a.pack_info() a.pack_configure() b.pack_configure(side='right', in_=a, anchor='s', expand=True, fill='x', ipadx=5, padx=10, ipady=2, pady=(5, 15)) info = a.pack_info() self.assertIsInstance(info, dict) self.assertEqual(info['anchor'], 'center') self.assertEqual(info['expand'], self._str(0)) self.assertEqual(info['fill'], 'none') self.assertEqual(info['in'], pack) self.assertEqual(info['ipadx'], self._str(0)) self.assertEqual(info['ipady'], self._str(0)) self.assertEqual(info['padx'], self._str(0)) self.assertEqual(info['pady'], self._str(0)) self.assertEqual(info['side'], 'top') info = b.pack_info() self.assertIsInstance(info, dict) self.assertEqual(info['anchor'], 's') self.assertEqual(info['expand'], self._str(1)) self.assertEqual(info['fill'], 'x') self.assertEqual(info['in'], a) self.assertEqual(info['ipadx'], self._str(5)) self.assertEqual(info['ipady'], self._str(2)) self.assertEqual(info['padx'], self._str(10)) self.assertEqual(info['pady'], self._str((5, 15))) self.assertEqual(info['side'], 'right') def test_pack_propagate(self): pack, a, b, c, d = self.create2() pack.configure(width=300, height=200) a.pack_configure() pack.pack_propagate(False) self.root.update() self.assertEqual(pack.winfo_reqwidth(), 300) self.assertEqual(pack.winfo_reqheight(), 200) pack.pack_propagate(True) self.root.update() self.assertEqual(pack.winfo_reqwidth(), 20) self.assertEqual(pack.winfo_reqheight(), 40) def test_pack_slaves(self): pack, a, b, c, d = self.create2() self.assertEqual(pack.pack_slaves(), []) a.pack_configure() self.assertEqual(pack.pack_slaves(), [a]) b.pack_configure() self.assertEqual(pack.pack_slaves(), [a, b]) class PlaceTest(AbstractWidgetTest, unittest.TestCase): test_keys = None def create2(self): t = tkinter.Toplevel(self.root, width=300, height=200, bd=0) t.wm_geometry('300x200+0+0') f = tkinter.Frame(t, width=154, height=84, bd=2, relief='raised') f.place_configure(x=48, y=38) f2 = tkinter.Frame(t, width=30, height=60, bd=2, relief='raised') self.root.update() return t, f, f2 def test_place_configure_in(self): t, f, f2 = self.create2() self.assertEqual(f2.winfo_manager(), '') with self.assertRaisesRegexp(TclError, "can't place %s relative to " "itself" % re.escape(str(f2))): f2.place_configure(in_=f2) if tcl_version >= (8, 5): self.assertEqual(f2.winfo_manager(), '') with self.assertRaisesRegexp(TclError, 'bad window path name'): f2.place_configure(in_='spam') f2.place_configure(in_=f) self.assertEqual(f2.winfo_manager(), 'place') def test_place_configure_x(self): t, f, f2 = self.create2() f2.place_configure(in_=f) self.assertEqual(f2.place_info()['x'], '0') self.root.update() self.assertEqual(f2.winfo_x(), 50) f2.place_configure(x=100) self.assertEqual(f2.place_info()['x'], '100') self.root.update() self.assertEqual(f2.winfo_x(), 150) f2.place_configure(x=-10, relx=1) self.assertEqual(f2.place_info()['x'], '-10') self.root.update() self.assertEqual(f2.winfo_x(), 190) with self.assertRaisesRegexp(TclError, 'bad screen distance "spam"'): f2.place_configure(in_=f, x='spam') def test_place_configure_y(self): t, f, f2 = self.create2() f2.place_configure(in_=f) self.assertEqual(f2.place_info()['y'], '0') self.root.update() self.assertEqual(f2.winfo_y(), 40) f2.place_configure(y=50) self.assertEqual(f2.place_info()['y'], '50') self.root.update() self.assertEqual(f2.winfo_y(), 90) f2.place_configure(y=-10, rely=1) self.assertEqual(f2.place_info()['y'], '-10') self.root.update() self.assertEqual(f2.winfo_y(), 110) with self.assertRaisesRegexp(TclError, 'bad screen distance "spam"'): f2.place_configure(in_=f, y='spam') def test_place_configure_relx(self): t, f, f2 = self.create2() f2.place_configure(in_=f) self.assertEqual(f2.place_info()['relx'], '0') self.root.update() self.assertEqual(f2.winfo_x(), 50) f2.place_configure(relx=0.5) self.assertEqual(f2.place_info()['relx'], '0.5') self.root.update() self.assertEqual(f2.winfo_x(), 125) f2.place_configure(relx=1) self.assertEqual(f2.place_info()['relx'], '1') self.root.update() self.assertEqual(f2.winfo_x(), 200) with self.assertRaisesRegexp(TclError, 'expected floating-point number ' 'but got "spam"'): f2.place_configure(in_=f, relx='spam') def test_place_configure_rely(self): t, f, f2 = self.create2() f2.place_configure(in_=f) self.assertEqual(f2.place_info()['rely'], '0') self.root.update() self.assertEqual(f2.winfo_y(), 40) f2.place_configure(rely=0.5) self.assertEqual(f2.place_info()['rely'], '0.5') self.root.update() self.assertEqual(f2.winfo_y(), 80) f2.place_configure(rely=1) self.assertEqual(f2.place_info()['rely'], '1') self.root.update() self.assertEqual(f2.winfo_y(), 120) with self.assertRaisesRegexp(TclError, 'expected floating-point number ' 'but got "spam"'): f2.place_configure(in_=f, rely='spam') def test_place_configure_anchor(self): f = tkinter.Frame(self.root) with self.assertRaisesRegexp(TclError, 'bad anchor "j"'): f.place_configure(anchor='j') with self.assertRaisesRegexp(TclError, 'ambiguous anchor ""'): f.place_configure(anchor='') for value in 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'center': f.place_configure(anchor=value) self.assertEqual(f.place_info()['anchor'], value) def test_place_configure_width(self): t, f, f2 = self.create2() f2.place_configure(in_=f, width=120) self.root.update() self.assertEqual(f2.winfo_width(), 120) f2.place_configure(width='') self.root.update() self.assertEqual(f2.winfo_width(), 30) with self.assertRaisesRegexp(TclError, 'bad screen distance "abcd"'): f2.place_configure(width='abcd') def test_place_configure_height(self): t, f, f2 = self.create2() f2.place_configure(in_=f, height=120) self.root.update() self.assertEqual(f2.winfo_height(), 120) f2.place_configure(height='') self.root.update() self.assertEqual(f2.winfo_height(), 60) with self.assertRaisesRegexp(TclError, 'bad screen distance "abcd"'): f2.place_configure(height='abcd') def test_place_configure_relwidth(self): t, f, f2 = self.create2() f2.place_configure(in_=f, relwidth=0.5) self.root.update() self.assertEqual(f2.winfo_width(), 75) f2.place_configure(relwidth='') self.root.update() self.assertEqual(f2.winfo_width(), 30) with self.assertRaisesRegexp(TclError, 'expected floating-point number ' 'but got "abcd"'): f2.place_configure(relwidth='abcd') def test_place_configure_relheight(self): t, f, f2 = self.create2() f2.place_configure(in_=f, relheight=0.5) self.root.update() self.assertEqual(f2.winfo_height(), 40) f2.place_configure(relheight='') self.root.update() self.assertEqual(f2.winfo_height(), 60) with self.assertRaisesRegexp(TclError, 'expected floating-point number ' 'but got "abcd"'): f2.place_configure(relheight='abcd') def test_place_configure_bordermode(self): f = tkinter.Frame(self.root) with self.assertRaisesRegexp(TclError, 'bad bordermode "j"'): f.place_configure(bordermode='j') with self.assertRaisesRegexp(TclError, 'ambiguous bordermode ""'): f.place_configure(bordermode='') for value in 'inside', 'outside', 'ignore': f.place_configure(bordermode=value) self.assertEqual(f.place_info()['bordermode'], value) def test_place_forget(self): foo = tkinter.Frame(self.root) foo.place_configure(width=50, height=50) self.root.update() foo.place_forget() self.root.update() self.assertFalse(foo.winfo_ismapped()) with self.assertRaises(TypeError): foo.place_forget(0) def test_place_info(self): t, f, f2 = self.create2() f2.place_configure(in_=f, x=1, y=2, width=3, height=4, relx=0.1, rely=0.2, relwidth=0.3, relheight=0.4, anchor='se', bordermode='outside') info = f2.place_info() self.assertIsInstance(info, dict) self.assertEqual(info['x'], '1') self.assertEqual(info['y'], '2') self.assertEqual(info['width'], '3') self.assertEqual(info['height'], '4') self.assertEqual(info['relx'], '0.1') self.assertEqual(info['rely'], '0.2') self.assertEqual(info['relwidth'], '0.3') self.assertEqual(info['relheight'], '0.4') self.assertEqual(info['anchor'], 'se') self.assertEqual(info['bordermode'], 'outside') self.assertEqual(info['x'], '1') self.assertEqual(info['x'], '1') with self.assertRaises(TypeError): f2.place_info(0) def test_place_slaves(self): foo = tkinter.Frame(self.root) bar = tkinter.Frame(self.root) self.assertEqual(foo.place_slaves(), []) bar.place_configure(in_=foo) self.assertEqual(foo.place_slaves(), [bar]) with self.assertRaises(TypeError): foo.place_slaves(0) class GridTest(AbstractWidgetTest, unittest.TestCase): test_keys = None def tearDown(self): cols, rows = self.root.grid_size() for i in range(cols + 1): self.root.grid_columnconfigure(i, weight=0, minsize=0, pad=0, uniform='') for i in range(rows + 1): self.root.grid_rowconfigure(i, weight=0, minsize=0, pad=0, uniform='') self.root.grid_propagate(1) super(GridTest, self).tearDown() def test_grid_configure(self): b = tkinter.Button(self.root) self.assertEqual(b.grid_info(), {}) b.grid_configure() self.assertEqual(b.grid_info()['in'], self.root) self.assertEqual(b.grid_info()['column'], self._str(0)) self.assertEqual(b.grid_info()['row'], self._str(0)) b.grid_configure({'column': 1}, row=2) self.assertEqual(b.grid_info()['column'], self._str(1)) self.assertEqual(b.grid_info()['row'], self._str(2)) def test_grid_configure_column(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad column value "-1": ' 'must be a non-negative integer'): b.grid_configure(column=-1) b.grid_configure(column=2) self.assertEqual(b.grid_info()['column'], self._str(2)) def test_grid_configure_columnspan(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad columnspan value "0": ' 'must be a positive integer'): b.grid_configure(columnspan=0) b.grid_configure(columnspan=2) self.assertEqual(b.grid_info()['columnspan'], self._str(2)) def test_grid_configure_in(self): f = tkinter.Frame(self.root) b = tkinter.Button(self.root) self.assertEqual(b.grid_info(), {}) b.grid_configure() self.assertEqual(b.grid_info()['in'], self.root) b.grid_configure(in_=f) self.assertEqual(b.grid_info()['in'], f) b.grid_configure({'in': self.root}) self.assertEqual(b.grid_info()['in'], self.root) def test_grid_configure_ipadx(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad ipadx value "-1": ' 'must be positive screen distance'): b.grid_configure(ipadx=-1) b.grid_configure(ipadx=1) self.assertEqual(b.grid_info()['ipadx'], self._str(1)) b.grid_configure(ipadx='.5c') self.assertEqual(b.grid_info()['ipadx'], self._str(int_round(pixels_conv('.5c') * self.scaling))) def test_grid_configure_ipady(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad ipady value "-1": ' 'must be positive screen distance'): b.grid_configure(ipady=-1) b.grid_configure(ipady=1) self.assertEqual(b.grid_info()['ipady'], self._str(1)) b.grid_configure(ipady='.5c') self.assertEqual(b.grid_info()['ipady'], self._str(int_round(pixels_conv('.5c') * self.scaling))) def test_grid_configure_padx(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad pad value "-1": ' 'must be positive screen distance'): b.grid_configure(padx=-1) b.grid_configure(padx=1) self.assertEqual(b.grid_info()['padx'], self._str(1)) b.grid_configure(padx=(10, 5)) self.assertEqual(b.grid_info()['padx'], self._str((10, 5))) b.grid_configure(padx='.5c') self.assertEqual(b.grid_info()['padx'], self._str(int_round(pixels_conv('.5c') * self.scaling))) def test_grid_configure_pady(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad pad value "-1": ' 'must be positive screen distance'): b.grid_configure(pady=-1) b.grid_configure(pady=1) self.assertEqual(b.grid_info()['pady'], self._str(1)) b.grid_configure(pady=(10, 5)) self.assertEqual(b.grid_info()['pady'], self._str((10, 5))) b.grid_configure(pady='.5c') self.assertEqual(b.grid_info()['pady'], self._str(int_round(pixels_conv('.5c') * self.scaling))) def test_grid_configure_row(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad (row|grid) value "-1": ' 'must be a non-negative integer'): b.grid_configure(row=-1) b.grid_configure(row=2) self.assertEqual(b.grid_info()['row'], self._str(2)) def test_grid_configure_rownspan(self): b = tkinter.Button(self.root) with self.assertRaisesRegexp(TclError, 'bad rowspan value "0": ' 'must be a positive integer'): b.grid_configure(rowspan=0) b.grid_configure(rowspan=2) self.assertEqual(b.grid_info()['rowspan'], self._str(2)) def test_grid_configure_sticky(self): f = tkinter.Frame(self.root, bg='red') with self.assertRaisesRegexp(TclError, 'bad stickyness value "glue"'): f.grid_configure(sticky='glue') f.grid_configure(sticky='ne') self.assertEqual(f.grid_info()['sticky'], 'ne') f.grid_configure(sticky='n,s,e,w') self.assertEqual(f.grid_info()['sticky'], 'nesw') def test_grid_columnconfigure(self): with self.assertRaises(TypeError): self.root.grid_columnconfigure() self.assertEqual(self.root.grid_columnconfigure(0), {'minsize': 0, 'pad': 0, 'uniform': None, 'weight': 0}) with self.assertRaisesRegexp(TclError, 'bad option "-foo"'): self.root.grid_columnconfigure(0, 'foo') self.root.grid_columnconfigure((0, 3), weight=2) with self.assertRaisesRegexp(TclError, 'must specify a single element on retrieval'): self.root.grid_columnconfigure((0, 3)) b = tkinter.Button(self.root) b.grid_configure(column=0, row=0) if tcl_version >= (8, 5): self.root.grid_columnconfigure('all', weight=3) with self.assertRaisesRegexp(TclError, 'expected integer but got "all"'): self.root.grid_columnconfigure('all') self.assertEqual(self.root.grid_columnconfigure(0, 'weight'), 3) self.assertEqual(self.root.grid_columnconfigure(3, 'weight'), 2) self.assertEqual(self.root.grid_columnconfigure(265, 'weight'), 0) if tcl_version >= (8, 5): self.root.grid_columnconfigure(b, weight=4) self.assertEqual(self.root.grid_columnconfigure(0, 'weight'), 4) def test_grid_columnconfigure_minsize(self): with self.assertRaisesRegexp(TclError, 'bad screen distance "foo"'): self.root.grid_columnconfigure(0, minsize='foo') self.root.grid_columnconfigure(0, minsize=10) self.assertEqual(self.root.grid_columnconfigure(0, 'minsize'), 10) self.assertEqual(self.root.grid_columnconfigure(0)['minsize'], 10) def test_grid_columnconfigure_weight(self): with self.assertRaisesRegexp(TclError, 'expected integer but got "bad"'): self.root.grid_columnconfigure(0, weight='bad') with self.assertRaisesRegexp(TclError, 'invalid arg "-weight": ' 'should be non-negative'): self.root.grid_columnconfigure(0, weight=-3) self.root.grid_columnconfigure(0, weight=3) self.assertEqual(self.root.grid_columnconfigure(0, 'weight'), 3) self.assertEqual(self.root.grid_columnconfigure(0)['weight'], 3) def test_grid_columnconfigure_pad(self): with self.assertRaisesRegexp(TclError, 'bad screen distance "foo"'): self.root.grid_columnconfigure(0, pad='foo') with self.assertRaisesRegexp(TclError, 'invalid arg "-pad": ' 'should be non-negative'): self.root.grid_columnconfigure(0, pad=-3) self.root.grid_columnconfigure(0, pad=3) self.assertEqual(self.root.grid_columnconfigure(0, 'pad'), 3) self.assertEqual(self.root.grid_columnconfigure(0)['pad'], 3) def test_grid_columnconfigure_uniform(self): self.root.grid_columnconfigure(0, uniform='foo') self.assertEqual(self.root.grid_columnconfigure(0, 'uniform'), 'foo') self.assertEqual(self.root.grid_columnconfigure(0)['uniform'], 'foo') def test_grid_rowconfigure(self): with self.assertRaises(TypeError): self.root.grid_rowconfigure() self.assertEqual(self.root.grid_rowconfigure(0), {'minsize': 0, 'pad': 0, 'uniform': None, 'weight': 0}) with self.assertRaisesRegexp(TclError, 'bad option "-foo"'): self.root.grid_rowconfigure(0, 'foo') self.root.grid_rowconfigure((0, 3), weight=2) with self.assertRaisesRegexp(TclError, 'must specify a single element on retrieval'): self.root.grid_rowconfigure((0, 3)) b = tkinter.Button(self.root) b.grid_configure(column=0, row=0) if tcl_version >= (8, 5): self.root.grid_rowconfigure('all', weight=3) with self.assertRaisesRegexp(TclError, 'expected integer but got "all"'): self.root.grid_rowconfigure('all') self.assertEqual(self.root.grid_rowconfigure(0, 'weight'), 3) self.assertEqual(self.root.grid_rowconfigure(3, 'weight'), 2) self.assertEqual(self.root.grid_rowconfigure(265, 'weight'), 0) if tcl_version >= (8, 5): self.root.grid_rowconfigure(b, weight=4) self.assertEqual(self.root.grid_rowconfigure(0, 'weight'), 4) def test_grid_rowconfigure_minsize(self): with self.assertRaisesRegexp(TclError, 'bad screen distance "foo"'): self.root.grid_rowconfigure(0, minsize='foo') self.root.grid_rowconfigure(0, minsize=10) self.assertEqual(self.root.grid_rowconfigure(0, 'minsize'), 10) self.assertEqual(self.root.grid_rowconfigure(0)['minsize'], 10) def test_grid_rowconfigure_weight(self): with self.assertRaisesRegexp(TclError, 'expected integer but got "bad"'): self.root.grid_rowconfigure(0, weight='bad') with self.assertRaisesRegexp(TclError, 'invalid arg "-weight": ' 'should be non-negative'): self.root.grid_rowconfigure(0, weight=-3) self.root.grid_rowconfigure(0, weight=3) self.assertEqual(self.root.grid_rowconfigure(0, 'weight'), 3) self.assertEqual(self.root.grid_rowconfigure(0)['weight'], 3) def test_grid_rowconfigure_pad(self): with self.assertRaisesRegexp(TclError, 'bad screen distance "foo"'): self.root.grid_rowconfigure(0, pad='foo') with self.assertRaisesRegexp(TclError, 'invalid arg "-pad": ' 'should be non-negative'): self.root.grid_rowconfigure(0, pad=-3) self.root.grid_rowconfigure(0, pad=3) self.assertEqual(self.root.grid_rowconfigure(0, 'pad'), 3) self.assertEqual(self.root.grid_rowconfigure(0)['pad'], 3) def test_grid_rowconfigure_uniform(self): self.root.grid_rowconfigure(0, uniform='foo') self.assertEqual(self.root.grid_rowconfigure(0, 'uniform'), 'foo') self.assertEqual(self.root.grid_rowconfigure(0)['uniform'], 'foo') def test_grid_forget(self): b = tkinter.Button(self.root) c = tkinter.Button(self.root) b.grid_configure(row=2, column=2, rowspan=2, columnspan=2, padx=3, pady=4, sticky='ns') self.assertEqual(self.root.grid_slaves(), [b]) b.grid_forget() c.grid_forget() self.assertEqual(self.root.grid_slaves(), []) self.assertEqual(b.grid_info(), {}) b.grid_configure(row=0, column=0) info = b.grid_info() self.assertEqual(info['row'], self._str(0)) self.assertEqual(info['column'], self._str(0)) self.assertEqual(info['rowspan'], self._str(1)) self.assertEqual(info['columnspan'], self._str(1)) self.assertEqual(info['padx'], self._str(0)) self.assertEqual(info['pady'], self._str(0)) self.assertEqual(info['sticky'], '') def test_grid_remove(self): b = tkinter.Button(self.root) c = tkinter.Button(self.root) b.grid_configure(row=2, column=2, rowspan=2, columnspan=2, padx=3, pady=4, sticky='ns') self.assertEqual(self.root.grid_slaves(), [b]) b.grid_remove() c.grid_remove() self.assertEqual(self.root.grid_slaves(), []) self.assertEqual(b.grid_info(), {}) b.grid_configure(row=0, column=0) info = b.grid_info() self.assertEqual(info['row'], self._str(0)) self.assertEqual(info['column'], self._str(0)) self.assertEqual(info['rowspan'], self._str(2)) self.assertEqual(info['columnspan'], self._str(2)) self.assertEqual(info['padx'], self._str(3)) self.assertEqual(info['pady'], self._str(4)) self.assertEqual(info['sticky'], 'ns') def test_grid_info(self): b = tkinter.Button(self.root) self.assertEqual(b.grid_info(), {}) b.grid_configure(row=2, column=2, rowspan=2, columnspan=2, padx=3, pady=4, sticky='ns') info = b.grid_info() self.assertIsInstance(info, dict) self.assertEqual(info['in'], self.root) self.assertEqual(info['row'], self._str(2)) self.assertEqual(info['column'], self._str(2)) self.assertEqual(info['rowspan'], self._str(2)) self.assertEqual(info['columnspan'], self._str(2)) self.assertEqual(info['padx'], self._str(3)) self.assertEqual(info['pady'], self._str(4)) self.assertEqual(info['sticky'], 'ns') def test_grid_bbox(self): self.assertEqual(self.root.grid_bbox(), (0, 0, 0, 0)) self.assertEqual(self.root.grid_bbox(0, 0), (0, 0, 0, 0)) self.assertEqual(self.root.grid_bbox(0, 0, 1, 1), (0, 0, 0, 0)) with self.assertRaisesRegexp(TclError, 'expected integer but got "x"'): self.root.grid_bbox('x', 0) with self.assertRaisesRegexp(TclError, 'expected integer but got "x"'): self.root.grid_bbox(0, 'x') with self.assertRaisesRegexp(TclError, 'expected integer but got "x"'): self.root.grid_bbox(0, 0, 'x', 0) with self.assertRaisesRegexp(TclError, 'expected integer but got "x"'): self.root.grid_bbox(0, 0, 0, 'x') with self.assertRaises(TypeError): self.root.grid_bbox(0, 0, 0, 0, 0) t = self.root # de-maximize t.wm_geometry('1x1+0+0') t.wm_geometry('') f1 = tkinter.Frame(t, width=75, height=75, bg='red') f2 = tkinter.Frame(t, width=90, height=90, bg='blue') f1.grid_configure(row=0, column=0) f2.grid_configure(row=1, column=1) self.root.update() self.assertEqual(t.grid_bbox(), (0, 0, 165, 165)) self.assertEqual(t.grid_bbox(0, 0), (0, 0, 75, 75)) self.assertEqual(t.grid_bbox(0, 0, 1, 1), (0, 0, 165, 165)) self.assertEqual(t.grid_bbox(1, 1), (75, 75, 90, 90)) self.assertEqual(t.grid_bbox(10, 10, 0, 0), (0, 0, 165, 165)) self.assertEqual(t.grid_bbox(-2, -2, -1, -1), (0, 0, 0, 0)) self.assertEqual(t.grid_bbox(10, 10, 12, 12), (165, 165, 0, 0)) def test_grid_location(self): with self.assertRaises(TypeError): self.root.grid_location() with self.assertRaises(TypeError): self.root.grid_location(0) with self.assertRaises(TypeError): self.root.grid_location(0, 0, 0) with self.assertRaisesRegexp(TclError, 'bad screen distance "x"'): self.root.grid_location('x', 'y') with self.assertRaisesRegexp(TclError, 'bad screen distance "y"'): self.root.grid_location('1c', 'y') t = self.root # de-maximize t.wm_geometry('1x1+0+0') t.wm_geometry('') f = tkinter.Frame(t, width=200, height=100, highlightthickness=0, bg='red') self.assertEqual(f.grid_location(10, 10), (-1, -1)) f.grid_configure() self.root.update() self.assertEqual(t.grid_location(-10, -10), (-1, -1)) self.assertEqual(t.grid_location(-10, 0), (-1, 0)) self.assertEqual(t.grid_location(-1, 0), (-1, 0)) self.assertEqual(t.grid_location(0, -10), (0, -1)) self.assertEqual(t.grid_location(0, -1), (0, -1)) self.assertEqual(t.grid_location(0, 0), (0, 0)) self.assertEqual(t.grid_location(200, 0), (0, 0)) self.assertEqual(t.grid_location(201, 0), (1, 0)) self.assertEqual(t.grid_location(0, 100), (0, 0)) self.assertEqual(t.grid_location(0, 101), (0, 1)) self.assertEqual(t.grid_location(201, 101), (1, 1)) def test_grid_propagate(self): self.assertEqual(self.root.grid_propagate(), True) with self.assertRaises(TypeError): self.root.grid_propagate(False, False) self.root.grid_propagate(False) self.assertFalse(self.root.grid_propagate()) f = tkinter.Frame(self.root, width=100, height=100, bg='red') f.grid_configure(row=0, column=0) self.root.update() self.assertEqual(f.winfo_width(), 100) self.assertEqual(f.winfo_height(), 100) f.grid_propagate(False) g = tkinter.Frame(self.root, width=75, height=85, bg='green') g.grid_configure(in_=f, row=0, column=0) self.root.update() self.assertEqual(f.winfo_width(), 100) self.assertEqual(f.winfo_height(), 100) f.grid_propagate(True) self.root.update() self.assertEqual(f.winfo_width(), 75) self.assertEqual(f.winfo_height(), 85) def test_grid_size(self): with self.assertRaises(TypeError): self.root.grid_size(0) self.assertEqual(self.root.grid_size(), (0, 0)) f = tkinter.Scale(self.root) f.grid_configure(row=0, column=0) self.assertEqual(self.root.grid_size(), (1, 1)) f.grid_configure(row=4, column=5) self.assertEqual(self.root.grid_size(), (6, 5)) def test_grid_slaves(self): self.assertEqual(self.root.grid_slaves(), []) a = tkinter.Label(self.root) a.grid_configure(row=0, column=1) b = tkinter.Label(self.root) b.grid_configure(row=1, column=0) c = tkinter.Label(self.root) c.grid_configure(row=1, column=1) d = tkinter.Label(self.root) d.grid_configure(row=1, column=1) self.assertEqual(self.root.grid_slaves(), [d, c, b, a]) self.assertEqual(self.root.grid_slaves(row=0), [a]) self.assertEqual(self.root.grid_slaves(row=1), [d, c, b]) self.assertEqual(self.root.grid_slaves(column=0), [b]) self.assertEqual(self.root.grid_slaves(column=1), [d, c, a]) self.assertEqual(self.root.grid_slaves(row=1, column=1), [d, c]) tests_gui = ( PackTest, PlaceTest, GridTest, ) if __name__ == '__main__': run_unittest(*tests_gui) test/test_tkinter/test_geometry_managers.pyc000064400000120324151703463030015532 0ustar00� zfc@sddlZddlZddlZddlmZddlmZmZddlm Z m Z mZddlm Z mZed�de ejfd��YZd e ejfd ��YZde ejfd��YZeeefZed kree�ndS(i����N(tTclError(trequirestrun_unittest(tpixels_convttcl_versiontrequires_tcl(tAbstractWidgetTestt int_roundtguitPackTestcBs�eZd Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�ZRS(c Cs�tj|jdd�}|jd�|jdd�tj|dddddd d d�}tj|dddd ddd d�}tj|ddddddd d�}tj|dddd ddd d�}|||||fS(Ntnametpacks300x200+0+0itatwidthitheighti(tbgtredtbi2itbluetciPtgreentdtyellow(ttkintertTopleveltroottwm_geometryt wm_minsizetFrame(tselfRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcreate2s ''''cCs;|j�\}}}}}|jtd|��|jd|�WdQX|jtd��|jdd�WdQX|jdd�|jdd�|jdd�|jdd�|j|j�||||g�|jd|�|j|j�||||g�|jd|�|j|j�||||g�dS(Nswindow "%s" isn't packedtaftersbad window path name ".foo"s.footsidettop(RtassertRaisesRegexpRtpack_configuretassertEqualtpack_slaves(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_afters""cs��j�\}�}}}��fd�}|dd�|dd�|dd�|dd �|d d�|dd �|dd�|dd�|dd�dS(Ncs[�jddddddddd d dtd|��jj��j�j�|�dS( NR R!tipadxitpadxi tipadyitpadyitexpandtanchor(R#tTrueRtupdateR$twinfo_geometry(R,tgeom(RR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcheck-s' tns30x70+135+20tnes30x70+260+20tes30x70+260+65tses 30x70+260+110tss 30x70+135+110tsws30x70+10+110tws30x70+10+65tnws30x70+10+20tcenters30x70+135+65(R(RRRRRR1((RRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_anchor+s cCs;|j�\}}}}}|jtd|��|jd|�WdQX|jtd��|jdd�WdQX|jdd�|jdd�|jdd�|jdd�|j|j�||||g�|jd|�|j|j�||||g�|jd|�|j|j�||||g�dS(Nswindow "%s" isn't packedtbeforesbad window path name ".foo"s.fooR R!(RR"RR#R$R%(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_before<s""cs{�j�\}���������fd�}�jdd��jdd��jdd��jdd�|ddd d ��jdddd��jdddd ��jdddt��jdddd�|dddd��jdddddd��jdddd dd��jdddtdd��jdddddd�|dddd�dS(Ncsy�jj��j�j�|d��j�j�|d��j�j�|d��j�j�|d�dS(Niiii(RR.R$R/(tgeoms(RRRRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1Ns R tleftR!trighttbottoms 20x40+0+80s50x30+135+0s80x80+220+75s 40x30+100+170R+tyestonis20x40+40+80s50x30+175+35s 80x80+180+110s 40x30+100+135tfilltboths100x200+0+0s 200x100+100+0s160x100+140+100s40x100+100+100(RR#R-(RRR1((RRRRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_expandLs"cCs2|j�\}}}}}|jdd�|jdd�|jdd�|jdd�|jd|�|j|j�||||g�|jd|�|j|j�|||g�|j|j�|g�|jtd|f��|jd|�WdQX|jtd��|jdd�WdQXdS(NR R!tin_scan't pack %s inside itselfsbad window path name ".foo"s.foo(RR#R$R%R"R(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_inds" cs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d ddddddd �|dddddddd�|dddddd(dd�|dddddddd�|d ddddddd dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd �|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��j�j�d�j|jd&���dS(.Ncst�j��j��j|��jdtdd��jj��j�j�|��j�j�|�dS(NR+RDRE(tpack_forgetR#R-RR.R$R/(tgeom1tgeom2tkwargs(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1ws s20x40+260+80s240x200+0+0R R@R(is20x40+250+80i is60x40+240+80R's30x40+260+80s250x200+0+0iRDtxs20x40+249+80i is30x40+255+80is20x40+140+0s300x160+0+40R!s20x40+120+0ii(s60x40+120+0s30x40+135+0s30x40+130+0s260x40+20+0s260x40+25+0is 300x40+0+0s280x40+10+0s 280x40+5+0t1c(i i(i i(ii(ii((ii(ii(ii(RR#R$t pack_infot_strtwinfo_pixels(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_padx_ipadx_fillusBcs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d ddddddd �|dddddddd�|dddddd(dd�|dddddddd�|d ddddddd dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd �|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��j�j�d�j|jd&���dS(.Ncst�j��j��j|��jdtdd��jj��j�j�|��j�j�|�dS(NR+RDRE(RIR#R-RR.R$R/(RJRKRL(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s s20x40+280+80s280x200+0+0R R@R*is20x40+280+70i is20x80+280+60R)s20x50+280+75iRDRMs20x40+280+69i is20x50+280+70is20x40+140+20s300x120+0+80R!s20x40+140+0ii(s20x80+140+0s20x50+140+10s300x130+0+70s20x50+140+5s300x40+0+20s300x40+0+25is 300x80+0+0s300x50+0+10s 300x50+0+5RN(i i(i i(ii(ii((ii(ii(ii(RR#R$RORPRQ(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_pady_ipady_fill�sBcst�j�\}��}}���fd�}|ddd�|ddd�|dd d �|ddd �dS(Ncs}�jd|��j�j�d|��jdtdd��jj��j�j�|��j�j�|�dS(NR R+RDRE(R#R$ROR-RR.R/(R RJRK(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s R!s20x40+140+0s300x160+0+40RAs 20x40+140+160s300x160+0+0R?s 20x40+0+80s280x200+20+0R@s20x40+280+80s280x200+0+0(R(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_side�scCs�|j�\}}}}}|j�|j�|j�|j|j�|||g�|j�|j|j�||g�|j�|j|j�||g�|j�dS(N(RR#R$R%RI(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_forget�s cCs�|j�\}}}}}|jtd|��|j�WdQX|j�|jddd|dddtdd d ddd dddd� |j�}|j|t�|j|dd�|j|d|j d��|j|dd�|j|d|�|j|d |j d��|j|d|j d��|j|d|j d��|j|d|j d��|j|dd�|j�}|j|t�|j|dd�|j|d|j d��|j|dd �|j|d|�|j|d |j d��|j|d|j d��|j|d|j d ��|j|d|j d��|j|dd�dS(Nswindow "%s" isn't packedR R@RGR,R6R+RDRMR'iR(i R)iR*iR:itnonetinR!i(ii(ii( RR"RROR#R-tassertIsInstancetdictR$RP(RRRRRRtinfo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_info�s8 'cCs�|j�\}}}}}|jdddd�|j�|jt�|jj�|j|j�d�|j|j �d�|jt �|jj�|j|j�d�|j|j �d�dS(NR i,Ri�ii((Rt configureR#tpack_propagatetFalseRR.R$twinfo_reqwidthtwinfo_reqheightR-(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_propagates cCs~|j�\}}}}}|j|j�g�|j�|j|j�|g�|j�|j|j�||g�dS(N(RR$R%R#(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_slavess N(t__name__t __module__tNonet test_keysRR&R;R=RFRHRRRSRTRUR[RaRb(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR s * * t PlaceTestcBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zd�ZRS(c Cs�tj|jdddddd�}|jd�tj|dddd dd dd�}|jd ddd�tj|dddddd dd�}|jj�|||fS(NR i,Ri�tbdis300x200+0+0i�iTitrelieftraisedRMi0tyi&ii<(RRRRRtplace_configureR.(Rtttftf2((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyRs$ '' cCs�|j�\}}}|j|j�d�|jtdtjt|����|jd|�WdQXt d kr�|j|j�d�n|jtd��|jdd�WdQX|jd|�|j|j�d�dS( Nts!can't place %s relative to itselfRGiisbad window path nametspamtplace(ii( RR$t winfo_managerR"RtretescapetstrRlR(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_in$sc Cs5|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jddd d �|j|j�dd�|jj�|j|j�d�|jtd ��|jd|dd�WdQXdS(NRGRMt0i2idt100i�i����trelxis-10i�sbad screen distance "spam"Rq( RRlR$t place_infoRR.twinfo_xR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_x1s c Cs5|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jddd d �|j|j�dd�|jj�|j|j�d�|jtd ��|jd|dd�WdQXdS(NRGRkRxi(i2t50iZi����trelyis-10insbad screen distance "spam"Rq( RRlR$R{RR.twinfo_yR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_yBs c Cs/|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd �|jj�|j|j�d �|jtd��|jd|dd�WdQXdS( NRGRzRxi2g�?s0.5i}it1i�s-expected floating-point number but got "spam"Rq( RRlR$R{RR.R|R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relxSs c Cs/|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd �|jj�|j|j�d �|jtd��|jd|dd�WdQXdS( NRGRRxi(g�?s0.5iPiR�ixs-expected floating-point number but got "spam"Rq( RRlR$R{RR.R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relyes cCs�tj|j�}|jtd��|jdd�WdQX|jtd��|jdd�WdQXx8dD]0}|jd|�|j|j�d|�qkWdS(Nsbad anchor "j"R,tjsambiguous anchor ""RpR2R3R4R5R6R7R8R9R:( R2R3R4R5R6R7R8R9R:(RRRR"RRlR$R{(RRntvalue((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_anchorws cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS(NRGR ixRpisbad screen distance "abcd"tabcd(RRlRR.R$twinfo_widthR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_width�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS(NRGRixRpi<sbad screen distance "abcd"R�(RRlRR.R$twinfo_heightR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_height�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS( NRGtrelwidthg�?iKRpis-expected floating-point number but got "abcd"R�(RRlRR.R$R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relwidth�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS( NRGt relheightg�?i(Rpi<s-expected floating-point number but got "abcd"R�(RRlRR.R$R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relheight�s cCs�tj|j�}|jtd��|jdd�WdQX|jtd��|jdd�WdQXx8d D]0}|jd|�|j|j�d|�qkWdS( Nsbad bordermode "j"t bordermodeR�sambiguous bordermode ""Rptinsidetoutsidetignore(R�R�R�(RRRR"RRlR$R{(RRnR�((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_bordermode�s cCs�tj|j�}|jdddd�|jj�|j�|jj�|j|j��|jt ��|jd�WdQXdS(NR i2Ri( RRRRlR.tplace_forgettassertFalsetwinfo_ismappedtassertRaisest TypeError(Rtfoo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_forget�s cCs�|j�\}}}|jd|dddddddd d ddd dddddddd�|j�}|j|t�|j|dd�|j|dd�|j|dd�|j|dd�|j|d d�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|jt��|jd�WdQXdS(NRGRMiRkiR iRiRzg�������?Rg�������?R�g333333�?R�g�������?R,R5R�R�R�t2t3t4s0.1s0.2s0.3s0.4i(RRlR{RXRYR$R�R�(RRmRnRoRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_info�s(' cCs�tj|j�}tj|j�}|j|j�g�|jd|�|j|j�|g�|jt��|jd�WdQXdS(NRGi(RRRR$tplace_slavesRlR�R�(RR�tbar((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_slaves�sN(RcRdReRfRRwR}R�R�R�R�R�R�R�R�R�R�R�R�(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyRgs tGridTestcBseZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!RS(cCs�|jj�\}}x@t|d�D].}|jj|dddddddd�q&Wx@t|d�D].}|jj|dddddddd�qiW|jjd�tt|�j�dS(NitweightitminsizetpadtuniformRp( Rt grid_sizetrangetgrid_columnconfiguretgrid_rowconfiguretgrid_propagatetsuperR�ttearDown(Rtcolstrowsti((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR��s,,cCs�tj|j�}|j|j�i�|j�|j|j�d|j�|j|j�d|jd��|j|j�d|jd��|jidd6dd�|j|j�d|jd��|j|j�d|jd��dS(NRWtcolumnitrowii(RtButtonRR$t grid_infotgrid_configureRP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure�s ###cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns5bad column value "-1": must be a non-negative integerR�i����i( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_column�s cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns4bad columnspan value "0": must be a positive integert columnspanii( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_columnspans cCs�tj|j�}tj|j�}|j|j�i�|j�|j|j�d|j�|jd|�|j|j�d|�|ji|jd6�|j|j�d|j�dS(NRWRG(RRRR�R$R�R�(RRnR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ins cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jt t d�|j���dS(Ns6bad ipadx value "-1": must be positive screen distanceR'i����is.5c(RR�RR"RR�R$R�RPRRtscaling(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ipadxs#cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jt t d�|j���dS(Ns6bad ipady value "-1": must be positive screen distanceR)i����is.5c(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ipady!s#cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jd ��|jdd�|j|j�d|jt t d�|j���dS( Ns4bad pad value "-1": must be positive screen distanceR(i����ii is.5c(i i(i i(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_padx,s##cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jd ��|jdd�|j|j�d|jt t d�|j���dS( Ns4bad pad value "-1": must be positive screen distanceR*i����ii is.5c(i i(i i(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_pady9s##cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns9bad (row|grid) value "-1": must be a non-negative integerR�i����i( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_rowFs cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns1bad rowspan value "0": must be a positive integertrowspanii( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_rownspanNs cCs�tj|jdd�}|jtd��|jdd�WdQX|jdd�|j|j�dd�|jdd�|j|j�dd�dS( NRRsbad stickyness value "glue"tstickytglueR3sn,s,e,wtnesw(RRRR"RR�R$R�(RRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_stickyVsc Cs�|jt��|jj�WdQX|j|jjd�idd6dd6dd6dd6�|jtd��|jjdd�WdQX|jjddd �|jtd ��|jjd�WdQXtj |j�}|j dddd�tdkr[|jjddd�|jtd��|jjd�WdQX|j|jjdd�d�n|j|jjdd�d �|j|jjdd�d�tdkr�|jj|dd�|j|jjdd�d�ndS(NiR�R�R�R�sbad option "-foo"R�iis*must specify a single element on retrievalR�R�iitallsexpected integer but got "all"i i(ii(ii(ii(ii(R�R�RR�R$ReR"RRR�R�R(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_columnconfigure_s,# "cCs�|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�i (R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt!test_grid_columnconfigure_minsizews c Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsexpected integer but got "bad"iR�tbads-invalid arg "-weight": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt test_grid_columnconfigure_weight~sc Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�s*invalid arg "-pad": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_columnconfigure_pad�scCsY|jjddd�|j|jjdd�d�|j|jjd�dd�dS(NiR�R�(RR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt!test_grid_columnconfigure_uniform�sc Cs�|jt��|jj�WdQX|j|jjd�idd6dd6dd6dd6�|jtd��|jjdd�WdQX|jjddd �|jtd ��|jjd�WdQXtj |j�}|j dddd�tdkr[|jjddd�|jtd��|jjd�WdQX|j|jjdd�d�n|j|jjdd�d �|j|jjdd�d�tdkr�|jj|dd�|j|jjdd�d�ndS(NiR�R�R�R�sbad option "-foo"R�iis*must specify a single element on retrievalR�R�iiR�sexpected integer but got "all"i i(ii(ii(ii(ii(R�R�RR�R$ReR"RRR�R�R(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure�s,# "cCs�|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�i (R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_minsize�s c Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsexpected integer but got "bad"iR�R�s-invalid arg "-weight": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_weight�sc Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�s*invalid arg "-pad": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_pad�scCsY|jjddd�|j|jjdd�d�|j|jjd�dd�dS(NiR�R�(RR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_uniform�scCs�tj|j�}tj|j�}|jdddddddddddd d d�|j|jj�|g�|j�|j�|j|jj�g�|j|j�i�|jdddd�|j�}|j|d|jd��|j|d|jd��|j|d|jd ��|j|d|jd ��|j|d|jd��|j|d|jd��|j|d d�dS(NR�iR�R�R�R(iR*iR�tnsiiRp( RR�RR�R$tgrid_slavestgrid_forgetR�RP(RRRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_forget�s$! cCs�tj|j�}tj|j�}|jdddddddddddd d d�|j|jj�|g�|j�|j�|j|jj�g�|j|j�i�|jdddd�|j�}|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd ��|j|d d�dS( NR�iR�R�R�R(iR*iR�R�i( RR�RR�R$R�tgrid_removeR�RP(RRRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_remove�s$! cCsUtj|j�}|j|j�i�|jdddddddddddd d d�|j�}|j|t�|j|d|j�|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd ��|j|d d�dS( NR�iR�R�R�R(iR*iR�R�RW( RR�RR$R�R�RXRYRP(RRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_info�s!cCs�|j|jj�d�|j|jjdd�d�|j|jjdddd�d�|jtd��|jjdd�WdQX|jtd��|jjdd�WdQX|jtd��|jjdddd�WdQX|jtd��|jjdddd�WdQX|jt��!|jjddddd�WdQX|j}|jd�|jd�tj |ddd dd d�}tj |ddd dd d �}|j dddd�|j dddd�|jj�|j|j�d�|j|jdd�d�|j|jdddd�d�|j|jdd�d�|j|jdddd�d�|j|jdddd�d�|j|jdddd�d�dS(Niisexpected integer but got "x"RMs1x1+0+0RpR iKRRRiZRR�R�i�i i����i����i(iiii(iiii(iiii(iii�i�(iiiKiK(iii�i�(iKiKiZiZ(iii�i�(iiii(i�i�ii(R$Rt grid_bboxR"RR�R�RRRR�R.(RRmtf1Ro((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_bboxs8%" !! """cCs�|jt��|jj�WdQX|jt��|jjd�WdQX|jt��|jjddd�WdQX|jtd��|jjdd�WdQX|jtd��|jjdd�WdQX|j}|jd�|jd�tj|d d ddd ddd�}|j |jdd�d�|j �|jj�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jd d�d�|j |jdd�d�|j |jdd�d�|j |jdd�d �|j |jdd�d!�dS("Nisbad screen distance "x"RMRksbad screen distance "y"RNs1x1+0+0RpR i�RidthighlightthicknessRRi i����i����i�iie(i����i����(i����i����(i����i(i����i(ii����(ii����(ii(ii(ii(ii(ii(ii(R�R�Rt grid_locationR"RRRRR$R�R.(RRmRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_location&s: c Cs�|j|jj�t�|jt��|jjtt�WdQX|jjt�|j|jj��tj |jdddddd�}|j dddd�|jj�|j|j�d�|j|j �d�|jt�tj |jdd dd dd�}|j d|dddd�|jj�|j|j�d�|j|j �d�|jt�|jj�|j|j�d �|j|j �d �dS( NR idRRRR�iR�iKiURRG(R$RR�R-R�R�R^R�RRR�R.R�R�(RRntg((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_propagateFs($ $ cCs�|jt��|jjd�WdQX|j|jj�d�tj|j�}|jdddd�|j|jj�d �|jdddd�|j|jj�d �dS(NiR�R�iiii(ii(ii(ii(R�R�RR�R$RtScaleR�(RRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_size\scCs�|j|jj�g�tj|j�}|jdddd�tj|j�}|jdddd�tj|j�}|jdddd�tj|j�}|jdddd�|j|jj�||||g�|j|jjdd�|g�|j|jjdd�|||g�|j|jjdd�|g�|j|jjdd�|||g�|j|jjdddd�||g�dS(NR�iR�i(R$RR�RtLabelR�(RRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_slavesfs%"("(N("RcRdReRfR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR��s> t__main__(tunittestRttTkinterRRttest.test_supportRRttest_ttk.supportRRRtwidget_testsRRtTestCaseR RgR�t tests_guiRc(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt<module>s ����test/test_tkinter/test_geometry_managers.pyo000064400000120324151703463030015546 0ustar00� zfc@sddlZddlZddlZddlmZddlmZmZddlm Z m Z mZddlm Z mZed�de ejfd��YZd e ejfd ��YZde ejfd��YZeeefZed kree�ndS(i����N(tTclError(trequirestrun_unittest(tpixels_convttcl_versiontrequires_tcl(tAbstractWidgetTestt int_roundtguitPackTestcBs�eZd Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�ZRS(c Cs�tj|jdd�}|jd�|jdd�tj|dddddd d d�}tj|dddd ddd d�}tj|ddddddd d�}tj|dddd ddd d�}|||||fS(Ntnametpacks300x200+0+0itatwidthitheighti(tbgtredtbi2itbluetciPtgreentdtyellow(ttkintertTopleveltroottwm_geometryt wm_minsizetFrame(tselfRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcreate2s ''''cCs;|j�\}}}}}|jtd|��|jd|�WdQX|jtd��|jdd�WdQX|jdd�|jdd�|jdd�|jdd�|j|j�||||g�|jd|�|j|j�||||g�|jd|�|j|j�||||g�dS(Nswindow "%s" isn't packedtaftersbad window path name ".foo"s.footsidettop(RtassertRaisesRegexpRtpack_configuretassertEqualtpack_slaves(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_afters""cs��j�\}�}}}��fd�}|dd�|dd�|dd�|dd �|d d�|dd �|dd�|dd�|dd�dS(Ncs[�jddddddddd d dtd|��jj��j�j�|�dS( NR R!tipadxitpadxi tipadyitpadyitexpandtanchor(R#tTrueRtupdateR$twinfo_geometry(R,tgeom(RR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcheck-s' tns30x70+135+20tnes30x70+260+20tes30x70+260+65tses 30x70+260+110tss 30x70+135+110tsws30x70+10+110tws30x70+10+65tnws30x70+10+20tcenters30x70+135+65(R(RRRRRR1((RRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_anchor+s cCs;|j�\}}}}}|jtd|��|jd|�WdQX|jtd��|jdd�WdQX|jdd�|jdd�|jdd�|jdd�|j|j�||||g�|jd|�|j|j�||||g�|jd|�|j|j�||||g�dS(Nswindow "%s" isn't packedtbeforesbad window path name ".foo"s.fooR R!(RR"RR#R$R%(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_before<s""cs{�j�\}���������fd�}�jdd��jdd��jdd��jdd�|ddd d ��jdddd��jdddd ��jdddt��jdddd�|dddd��jdddddd��jdddd dd��jdddtdd��jdddddd�|dddd�dS(Ncsy�jj��j�j�|d��j�j�|d��j�j�|d��j�j�|d�dS(Niiii(RR.R$R/(tgeoms(RRRRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1Ns R tleftR!trighttbottoms 20x40+0+80s50x30+135+0s80x80+220+75s 40x30+100+170R+tyestonis20x40+40+80s50x30+175+35s 80x80+180+110s 40x30+100+135tfilltboths100x200+0+0s 200x100+100+0s160x100+140+100s40x100+100+100(RR#R-(RRR1((RRRRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_expandLs"cCs2|j�\}}}}}|jdd�|jdd�|jdd�|jdd�|jd|�|j|j�||||g�|jd|�|j|j�|||g�|j|j�|g�|jtd|f��|jd|�WdQX|jtd��|jdd�WdQXdS(NR R!tin_scan't pack %s inside itselfsbad window path name ".foo"s.foo(RR#R$R%R"R(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_inds" cs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d ddddddd �|dddddddd�|dddddd(dd�|dddddddd�|d ddddddd dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd �|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��j�j�d�j|jd&���dS(.Ncst�j��j��j|��jdtdd��jj��j�j�|��j�j�|�dS(NR+RDRE(tpack_forgetR#R-RR.R$R/(tgeom1tgeom2tkwargs(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1ws s20x40+260+80s240x200+0+0R R@R(is20x40+250+80i is60x40+240+80R's30x40+260+80s250x200+0+0iRDtxs20x40+249+80i is30x40+255+80is20x40+140+0s300x160+0+40R!s20x40+120+0ii(s60x40+120+0s30x40+135+0s30x40+130+0s260x40+20+0s260x40+25+0is 300x40+0+0s280x40+10+0s 280x40+5+0t1c(i i(i i(ii(ii((ii(ii(ii(RR#R$t pack_infot_strtwinfo_pixels(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_padx_ipadx_fillusBcs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d ddddddd �|dddddddd�|dddddd(dd�|dddddddd�|d ddddddd dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd �|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��j�j�d�j|jd&���dS(.Ncst�j��j��j|��jdtdd��jj��j�j�|��j�j�|�dS(NR+RDRE(RIR#R-RR.R$R/(RJRKRL(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s s20x40+280+80s280x200+0+0R R@R*is20x40+280+70i is20x80+280+60R)s20x50+280+75iRDRMs20x40+280+69i is20x50+280+70is20x40+140+20s300x120+0+80R!s20x40+140+0ii(s20x80+140+0s20x50+140+10s300x130+0+70s20x50+140+5s300x40+0+20s300x40+0+25is 300x80+0+0s300x50+0+10s 300x50+0+5RN(i i(i i(ii(ii((ii(ii(ii(RR#R$RORPRQ(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_pady_ipady_fill�sBcst�j�\}��}}���fd�}|ddd�|ddd�|dd d �|ddd �dS(Ncs}�jd|��j�j�d|��jdtdd��jj��j�j�|��j�j�|�dS(NR R+RDRE(R#R$ROR-RR.R/(R RJRK(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s R!s20x40+140+0s300x160+0+40RAs 20x40+140+160s300x160+0+0R?s 20x40+0+80s280x200+20+0R@s20x40+280+80s280x200+0+0(R(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_side�scCs�|j�\}}}}}|j�|j�|j�|j|j�|||g�|j�|j|j�||g�|j�|j|j�||g�|j�dS(N(RR#R$R%RI(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_forget�s cCs�|j�\}}}}}|jtd|��|j�WdQX|j�|jddd|dddtdd d ddd dddd� |j�}|j|t�|j|dd�|j|d|j d��|j|dd�|j|d|�|j|d |j d��|j|d|j d��|j|d|j d��|j|d|j d��|j|dd�|j�}|j|t�|j|dd�|j|d|j d��|j|dd �|j|d|�|j|d |j d��|j|d|j d��|j|d|j d ��|j|d|j d��|j|dd�dS(Nswindow "%s" isn't packedR R@RGR,R6R+RDRMR'iR(i R)iR*iR:itnonetinR!i(ii(ii( RR"RROR#R-tassertIsInstancetdictR$RP(RRRRRRtinfo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_info�s8 'cCs�|j�\}}}}}|jdddd�|j�|jt�|jj�|j|j�d�|j|j �d�|jt �|jj�|j|j�d�|j|j �d�dS(NR i,Ri�ii((Rt configureR#tpack_propagatetFalseRR.R$twinfo_reqwidthtwinfo_reqheightR-(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_propagates cCs~|j�\}}}}}|j|j�g�|j�|j|j�|g�|j�|j|j�||g�dS(N(RR$R%R#(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_slavess N(t__name__t __module__tNonet test_keysRR&R;R=RFRHRRRSRTRUR[RaRb(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR s * * t PlaceTestcBs�eZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zd�ZRS(c Cs�tj|jdddddd�}|jd�tj|dddd dd dd�}|jd ddd�tj|dddddd dd�}|jj�|||fS(NR i,Ri�tbdis300x200+0+0i�iTitrelieftraisedRMi0tyi&ii<(RRRRRtplace_configureR.(Rtttftf2((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyRs$ '' cCs�|j�\}}}|j|j�d�|jtdtjt|����|jd|�WdQXt d kr�|j|j�d�n|jtd��|jdd�WdQX|jd|�|j|j�d�dS( Nts!can't place %s relative to itselfRGiisbad window path nametspamtplace(ii( RR$t winfo_managerR"RtretescapetstrRlR(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_in$sc Cs5|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jddd d �|j|j�dd�|jj�|j|j�d�|jtd ��|jd|dd�WdQXdS(NRGRMt0i2idt100i�i����trelxis-10i�sbad screen distance "spam"Rq( RRlR$t place_infoRR.twinfo_xR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_x1s c Cs5|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jddd d �|j|j�dd�|jj�|j|j�d�|jtd ��|jd|dd�WdQXdS(NRGRkRxi(i2t50iZi����trelyis-10insbad screen distance "spam"Rq( RRlR$R{RR.twinfo_yR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_yBs c Cs/|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd �|jj�|j|j�d �|jtd��|jd|dd�WdQXdS( NRGRzRxi2g�?s0.5i}it1i�s-expected floating-point number but got "spam"Rq( RRlR$R{RR.R|R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relxSs c Cs/|j�\}}}|jd|�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd�|jj�|j|j�d�|jdd�|j|j�dd �|jj�|j|j�d �|jtd��|jd|dd�WdQXdS( NRGRRxi(g�?s0.5iPiR�ixs-expected floating-point number but got "spam"Rq( RRlR$R{RR.R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relyes cCs�tj|j�}|jtd��|jdd�WdQX|jtd��|jdd�WdQXx8dD]0}|jd|�|j|j�d|�qkWdS(Nsbad anchor "j"R,tjsambiguous anchor ""RpR2R3R4R5R6R7R8R9R:( R2R3R4R5R6R7R8R9R:(RRRR"RRlR$R{(RRntvalue((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_anchorws cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS(NRGR ixRpisbad screen distance "abcd"tabcd(RRlRR.R$twinfo_widthR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_width�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS(NRGRixRpi<sbad screen distance "abcd"R�(RRlRR.R$twinfo_heightR"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_height�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS( NRGtrelwidthg�?iKRpis-expected floating-point number but got "abcd"R�(RRlRR.R$R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relwidth�s cCs�|j�\}}}|jd|dd�|jj�|j|j�d�|jdd�|jj�|j|j�d�|jtd��|jdd�WdQXdS( NRGt relheightg�?i(Rpi<s-expected floating-point number but got "abcd"R�(RRlRR.R$R�R"R(RRmRnRo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_relheight�s cCs�tj|j�}|jtd��|jdd�WdQX|jtd��|jdd�WdQXx8d D]0}|jd|�|j|j�d|�qkWdS( Nsbad bordermode "j"t bordermodeR�sambiguous bordermode ""Rptinsidetoutsidetignore(R�R�R�(RRRR"RRlR$R{(RRnR�((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_configure_bordermode�s cCs�tj|j�}|jdddd�|jj�|j�|jj�|j|j��|jt ��|jd�WdQXdS(NR i2Ri( RRRRlR.tplace_forgettassertFalsetwinfo_ismappedtassertRaisest TypeError(Rtfoo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_forget�s cCs�|j�\}}}|jd|dddddddd d ddd dddddddd�|j�}|j|t�|j|dd�|j|dd�|j|dd�|j|dd�|j|d d�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|jt��|jd�WdQXdS(NRGRMiRkiR iRiRzg�������?Rg�������?R�g333333�?R�g�������?R,R5R�R�R�t2t3t4s0.1s0.2s0.3s0.4i(RRlR{RXRYR$R�R�(RRmRnRoRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_info�s(' cCs�tj|j�}tj|j�}|j|j�g�|jd|�|j|j�|g�|jt��|jd�WdQXdS(NRGi(RRRR$tplace_slavesRlR�R�(RR�tbar((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_slaves�sN(RcRdReRfRRwR}R�R�R�R�R�R�R�R�R�R�R�R�(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyRgs tGridTestcBseZdZd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!RS(cCs�|jj�\}}x@t|d�D].}|jj|dddddddd�q&Wx@t|d�D].}|jj|dddddddd�qiW|jjd�tt|�j�dS(NitweightitminsizetpadtuniformRp( Rt grid_sizetrangetgrid_columnconfiguretgrid_rowconfiguretgrid_propagatetsuperR�ttearDown(Rtcolstrowsti((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR��s,,cCs�tj|j�}|j|j�i�|j�|j|j�d|j�|j|j�d|jd��|j|j�d|jd��|jidd6dd�|j|j�d|jd��|j|j�d|jd��dS(NRWtcolumnitrowii(RtButtonRR$t grid_infotgrid_configureRP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure�s ###cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns5bad column value "-1": must be a non-negative integerR�i����i( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_column�s cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns4bad columnspan value "0": must be a positive integert columnspanii( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_columnspans cCs�tj|j�}tj|j�}|j|j�i�|j�|j|j�d|j�|jd|�|j|j�d|�|ji|jd6�|j|j�d|j�dS(NRWRG(RRRR�R$R�R�(RRnR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ins cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jt t d�|j���dS(Ns6bad ipadx value "-1": must be positive screen distanceR'i����is.5c(RR�RR"RR�R$R�RPRRtscaling(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ipadxs#cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jt t d�|j���dS(Ns6bad ipady value "-1": must be positive screen distanceR)i����is.5c(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_ipady!s#cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jd ��|jdd�|j|j�d|jt t d�|j���dS( Ns4bad pad value "-1": must be positive screen distanceR(i����ii is.5c(i i(i i(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_padx,s##cCs�tj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��|jdd�|j|j�d|jd ��|jdd�|j|j�d|jt t d�|j���dS( Ns4bad pad value "-1": must be positive screen distanceR*i����ii is.5c(i i(i i(RR�RR"RR�R$R�RPRRR�(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_pady9s##cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns9bad (row|grid) value "-1": must be a non-negative integerR�i����i( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_rowFs cCsrtj|j�}|jtd��|jdd�WdQX|jdd�|j|j�d|jd��dS(Ns1bad rowspan value "0": must be a positive integertrowspanii( RR�RR"RR�R$R�RP(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_rownspanNs cCs�tj|jdd�}|jtd��|jdd�WdQX|jdd�|j|j�dd�|jdd�|j|j�dd�dS( NRRsbad stickyness value "glue"tstickytglueR3sn,s,e,wtnesw(RRRR"RR�R$R�(RRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_configure_stickyVsc Cs�|jt��|jj�WdQX|j|jjd�idd6dd6dd6dd6�|jtd��|jjdd�WdQX|jjddd �|jtd ��|jjd�WdQXtj |j�}|j dddd�tdkr[|jjddd�|jtd��|jjd�WdQX|j|jjdd�d�n|j|jjdd�d �|j|jjdd�d�tdkr�|jj|dd�|j|jjdd�d�ndS(NiR�R�R�R�sbad option "-foo"R�iis*must specify a single element on retrievalR�R�iitallsexpected integer but got "all"i i(ii(ii(ii(ii(R�R�RR�R$ReR"RRR�R�R(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_columnconfigure_s,# "cCs�|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�i (R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt!test_grid_columnconfigure_minsizews c Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsexpected integer but got "bad"iR�tbads-invalid arg "-weight": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt test_grid_columnconfigure_weight~sc Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�s*invalid arg "-pad": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_columnconfigure_pad�scCsY|jjddd�|j|jjdd�d�|j|jjd�dd�dS(NiR�R�(RR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt!test_grid_columnconfigure_uniform�sc Cs�|jt��|jj�WdQX|j|jjd�idd6dd6dd6dd6�|jtd��|jjdd�WdQX|jjddd �|jtd ��|jjd�WdQXtj |j�}|j dddd�tdkr[|jjddd�|jtd��|jjd�WdQX|j|jjdd�d�n|j|jjdd�d �|j|jjdd�d�tdkr�|jj|dd�|j|jjdd�d�ndS(NiR�R�R�R�sbad option "-foo"R�iis*must specify a single element on retrievalR�R�iiR�sexpected integer but got "all"i i(ii(ii(ii(ii(R�R�RR�R$ReR"RRR�R�R(RR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure�s,# "cCs�|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�i (R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_minsize�s c Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsexpected integer but got "bad"iR�R�s-invalid arg "-weight": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_weight�sc Cs�|jtd��|jjddd�WdQX|jtd��|jjddd�WdQX|jjddd�|j|jjdd�d�|j|jjd�dd�dS(Nsbad screen distance "foo"iR�R�s*invalid arg "-pad": should be non-negativei����i(R"RRR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_pad�scCsY|jjddd�|j|jjdd�d�|j|jjd�dd�dS(NiR�R�(RR�R$(R((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_rowconfigure_uniform�scCs�tj|j�}tj|j�}|jdddddddddddd d d�|j|jj�|g�|j�|j�|j|jj�g�|j|j�i�|jdddd�|j�}|j|d|jd��|j|d|jd��|j|d|jd ��|j|d|jd ��|j|d|jd��|j|d|jd��|j|d d�dS(NR�iR�R�R�R(iR*iR�tnsiiRp( RR�RR�R$tgrid_slavestgrid_forgetR�RP(RRRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_forget�s$! cCs�tj|j�}tj|j�}|jdddddddddddd d d�|j|jj�|g�|j�|j�|j|jj�g�|j|j�i�|jdddd�|j�}|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd ��|j|d d�dS( NR�iR�R�R�R(iR*iR�R�i( RR�RR�R$R�tgrid_removeR�RP(RRRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_remove�s$! cCsUtj|j�}|j|j�i�|jdddddddddddd d d�|j�}|j|t�|j|d|j�|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd��|j|d|jd ��|j|d d�dS( NR�iR�R�R�R(iR*iR�R�RW( RR�RR$R�R�RXRYRP(RRRZ((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_info�s!cCs�|j|jj�d�|j|jjdd�d�|j|jjdddd�d�|jtd��|jjdd�WdQX|jtd��|jjdd�WdQX|jtd��|jjdddd�WdQX|jtd��|jjdddd�WdQX|jt��!|jjddddd�WdQX|j}|jd�|jd�tj |ddd dd d�}tj |ddd dd d �}|j dddd�|j dddd�|jj�|j|j�d�|j|jdd�d�|j|jdddd�d�|j|jdd�d�|j|jdddd�d�|j|jdddd�d�|j|jdddd�d�dS(Niisexpected integer but got "x"RMs1x1+0+0RpR iKRRRiZRR�R�i�i i����i����i(iiii(iiii(iiii(iii�i�(iiiKiK(iii�i�(iKiKiZiZ(iii�i�(iiii(i�i�ii(R$Rt grid_bboxR"RR�R�RRRR�R.(RRmtf1Ro((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_bboxs8%" !! """cCs�|jt��|jj�WdQX|jt��|jjd�WdQX|jt��|jjddd�WdQX|jtd��|jjdd�WdQX|jtd��|jjdd�WdQX|j}|jd�|jd�tj|d d ddd ddd�}|j |jdd�d�|j �|jj�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jdd�d�|j |jd d�d�|j |jdd�d�|j |jdd�d�|j |jdd�d �|j |jdd�d!�dS("Nisbad screen distance "x"RMRksbad screen distance "y"RNs1x1+0+0RpR i�RidthighlightthicknessRRi i����i����i�iie(i����i����(i����i����(i����i(i����i(ii����(ii����(ii(ii(ii(ii(ii(ii(R�R�Rt grid_locationR"RRRRR$R�R.(RRmRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_location&s: c Cs�|j|jj�t�|jt��|jjtt�WdQX|jjt�|j|jj��tj |jdddddd�}|j dddd�|jj�|j|j�d�|j|j �d�|jt�tj |jdd dd dd�}|j d|dddd�|jj�|j|j�d�|j|j �d�|jt�|jj�|j|j�d �|j|j �d �dS( NR idRRRR�iR�iKiURRG(R$RR�R-R�R�R^R�RRR�R.R�R�(RRntg((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_propagateFs($ $ cCs�|jt��|jjd�WdQX|j|jj�d�tj|j�}|jdddd�|j|jj�d �|jdddd�|j|jj�d �dS(NiR�R�iiii(ii(ii(ii(R�R�RR�R$RtScaleR�(RRn((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_size\scCs�|j|jj�g�tj|j�}|jdddd�tj|j�}|jdddd�tj|j�}|jdddd�tj|j�}|jdddd�|j|jj�||||g�|j|jjdd�|g�|j|jjdd�|||g�|j|jjdd�|g�|j|jjdd�|||g�|j|jjdddd�||g�dS(NR�iR�i(R$RR�RtLabelR�(RRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_grid_slavesfs%"("(N("RcRdReRfR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR��s> t__main__(tunittestRttTkinterRRttest.test_supportRRttest_ttk.supportRRRtwidget_testsRRtTestCaseR RgR�t tests_guiRc(((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt<module>s ����test/test_tkinter/test_images.py000064400000032050151703463030013122 0ustar00import unittest import Tkinter as tkinter import ttk import test.test_support as support from test_ttk.support import AbstractTkTest, requires_tcl support.requires('gui') class MiscTest(AbstractTkTest, unittest.TestCase): def test_image_types(self): image_types = self.root.image_types() self.assertIsInstance(image_types, tuple) self.assertIn('photo', image_types) self.assertIn('bitmap', image_types) def test_image_names(self): image_names = self.root.image_names() self.assertIsInstance(image_names, tuple) class BitmapImageTest(AbstractTkTest, unittest.TestCase): @classmethod def setUpClass(cls): AbstractTkTest.setUpClass.__func__(cls) cls.testfile = support.findfile('python.xbm', subdir='imghdrdata') def test_create_from_file(self): image = tkinter.BitmapImage('::img::test', master=self.root, foreground='yellow', background='blue', file=self.testfile) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'bitmap') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def test_create_from_data(self): with open(self.testfile, 'rb') as f: data = f.read() image = tkinter.BitmapImage('::img::test', master=self.root, foreground='yellow', background='blue', data=data) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'bitmap') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def assertEqualStrList(self, actual, expected): self.assertIsInstance(actual, str) self.assertEqual(self.root.splitlist(actual), expected) def test_configure_data(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['data'], '-data {} {} {} {}') with open(self.testfile, 'rb') as f: data = f.read() image.configure(data=data) self.assertEqualStrList(image['data'], ('-data', '', '', '', data)) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['maskdata'], '-maskdata {} {} {} {}') image.configure(maskdata=data) self.assertEqualStrList(image['maskdata'], ('-maskdata', '', '', '', data)) def test_configure_file(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['file'], '-file {} {} {} {}') image.configure(file=self.testfile) self.assertEqualStrList(image['file'], ('-file', '', '', '',self.testfile)) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['maskfile'], '-maskfile {} {} {} {}') image.configure(maskfile=self.testfile) self.assertEqualStrList(image['maskfile'], ('-maskfile', '', '', '', self.testfile)) def test_configure_background(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['background'], '-background {} {} {} {}') image.configure(background='blue') self.assertEqual(image['background'], '-background {} {} {} blue') def test_configure_foreground(self): image = tkinter.BitmapImage('::img::test', master=self.root) self.assertEqual(image['foreground'], '-foreground {} {} #000000 #000000') image.configure(foreground='yellow') self.assertEqual(image['foreground'], '-foreground {} {} #000000 yellow') class PhotoImageTest(AbstractTkTest, unittest.TestCase): @classmethod def setUpClass(cls): AbstractTkTest.setUpClass.__func__(cls) cls.testfile = support.findfile('python.gif', subdir='imghdrdata') def create(self): return tkinter.PhotoImage('::img::test', master=self.root, file=self.testfile) def colorlist(self, *args): if tkinter.TkVersion >= 8.6 and self.wantobjects: return args else: return tkinter._join(args) def check_create_from_file(self, ext): testfile = support.findfile('python.' + ext, subdir='imghdrdata') image = tkinter.PhotoImage('::img::test', master=self.root, file=testfile) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'photo') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['data'], '') self.assertEqual(image['file'], testfile) self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def check_create_from_data(self, ext): testfile = support.findfile('python.' + ext, subdir='imghdrdata') with open(testfile, 'rb') as f: data = f.read() image = tkinter.PhotoImage('::img::test', master=self.root, data=data) self.assertEqual(str(image), '::img::test') self.assertEqual(image.type(), 'photo') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image['data'], data if self.wantobjects else data.decode('latin1')) self.assertEqual(image['file'], '') self.assertIn('::img::test', self.root.image_names()) del image self.assertNotIn('::img::test', self.root.image_names()) def test_create_from_ppm_file(self): self.check_create_from_file('ppm') def test_create_from_ppm_data(self): self.check_create_from_data('ppm') def test_create_from_pgm_file(self): self.check_create_from_file('pgm') def test_create_from_pgm_data(self): self.check_create_from_data('pgm') def test_create_from_gif_file(self): self.check_create_from_file('gif') def test_create_from_gif_data(self): self.check_create_from_data('gif') @requires_tcl(8, 6) def test_create_from_png_file(self): self.check_create_from_file('png') @requires_tcl(8, 6) def test_create_from_png_data(self): self.check_create_from_data('png') def test_configure_data(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['data'], '') with open(self.testfile, 'rb') as f: data = f.read() image.configure(data=data) self.assertEqual(image['data'], data if self.wantobjects else data.decode('latin1')) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_format(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['format'], '') image.configure(file=self.testfile, format='gif') self.assertEqual(image['format'], ('gif',) if self.wantobjects else 'gif') self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_file(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['file'], '') image.configure(file=self.testfile) self.assertEqual(image['file'], self.testfile) self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) def test_configure_gamma(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['gamma'], '1.0') image.configure(gamma=2.0) self.assertEqual(image['gamma'], '2.0') def test_configure_width_height(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['width'], '0') self.assertEqual(image['height'], '0') image.configure(width=20) image.configure(height=10) self.assertEqual(image['width'], '20') self.assertEqual(image['height'], '10') self.assertEqual(image.width(), 20) self.assertEqual(image.height(), 10) def test_configure_palette(self): image = tkinter.PhotoImage('::img::test', master=self.root) self.assertEqual(image['palette'], '') image.configure(palette=256) self.assertEqual(image['palette'], '256') image.configure(palette='3/4/2') self.assertEqual(image['palette'], '3/4/2') def test_blank(self): image = self.create() image.blank() self.assertEqual(image.width(), 16) self.assertEqual(image.height(), 16) self.assertEqual(image.get(4, 6), self.colorlist(0, 0, 0)) def test_copy(self): image = self.create() image2 = image.copy() self.assertEqual(image2.width(), 16) self.assertEqual(image2.height(), 16) self.assertEqual(image.get(4, 6), image.get(4, 6)) def test_subsample(self): image = self.create() image2 = image.subsample(2, 3) self.assertEqual(image2.width(), 8) self.assertEqual(image2.height(), 6) self.assertEqual(image2.get(2, 2), image.get(4, 6)) image2 = image.subsample(2) self.assertEqual(image2.width(), 8) self.assertEqual(image2.height(), 8) self.assertEqual(image2.get(2, 3), image.get(4, 6)) def test_zoom(self): image = self.create() image2 = image.zoom(2, 3) self.assertEqual(image2.width(), 32) self.assertEqual(image2.height(), 48) self.assertEqual(image2.get(8, 18), image.get(4, 6)) self.assertEqual(image2.get(9, 20), image.get(4, 6)) image2 = image.zoom(2) self.assertEqual(image2.width(), 32) self.assertEqual(image2.height(), 32) self.assertEqual(image2.get(8, 12), image.get(4, 6)) self.assertEqual(image2.get(9, 13), image.get(4, 6)) def test_put(self): image = self.create() image.put('{red green} {blue yellow}', to=(4, 6)) self.assertEqual(image.get(4, 6), self.colorlist(255, 0, 0)) self.assertEqual(image.get(5, 6), self.colorlist(0, 128 if tkinter.TkVersion >= 8.6 else 255, 0)) self.assertEqual(image.get(4, 7), self.colorlist(0, 0, 255)) self.assertEqual(image.get(5, 7), self.colorlist(255, 255, 0)) image.put((('#f00', '#00ff00'), ('#000000fff', '#ffffffff0000'))) self.assertEqual(image.get(0, 0), self.colorlist(255, 0, 0)) self.assertEqual(image.get(1, 0), self.colorlist(0, 255, 0)) self.assertEqual(image.get(0, 1), self.colorlist(0, 0, 255)) self.assertEqual(image.get(1, 1), self.colorlist(255, 255, 0)) def test_get(self): image = self.create() self.assertEqual(image.get(4, 6), self.colorlist(62, 116, 162)) self.assertEqual(image.get(0, 0), self.colorlist(0, 0, 0)) self.assertEqual(image.get(15, 15), self.colorlist(0, 0, 0)) self.assertRaises(tkinter.TclError, image.get, -1, 0) self.assertRaises(tkinter.TclError, image.get, 0, -1) self.assertRaises(tkinter.TclError, image.get, 16, 15) self.assertRaises(tkinter.TclError, image.get, 15, 16) def test_write(self): image = self.create() self.addCleanup(support.unlink, support.TESTFN) image.write(support.TESTFN) image2 = tkinter.PhotoImage('::img::test2', master=self.root, format='ppm', file=support.TESTFN) self.assertEqual(str(image2), '::img::test2') self.assertEqual(image2.type(), 'photo') self.assertEqual(image2.width(), 16) self.assertEqual(image2.height(), 16) self.assertEqual(image2.get(0, 0), image.get(0, 0)) self.assertEqual(image2.get(15, 8), image.get(15, 8)) image.write(support.TESTFN, format='gif', from_coords=(4, 6, 6, 9)) image3 = tkinter.PhotoImage('::img::test3', master=self.root, format='gif', file=support.TESTFN) self.assertEqual(str(image3), '::img::test3') self.assertEqual(image3.type(), 'photo') self.assertEqual(image3.width(), 2) self.assertEqual(image3.height(), 3) self.assertEqual(image3.get(0, 0), image.get(4, 6)) self.assertEqual(image3.get(1, 2), image.get(5, 8)) tests_gui = (MiscTest, BitmapImageTest, PhotoImageTest,) if __name__ == "__main__": support.run_unittest(*tests_gui) test/test_tkinter/test_images.pyc000064400000037047151703463030013300 0ustar00� zfc@s�ddlZddlZddlZddljZddlmZm Z ej d�deejfd��YZdeejfd��YZ deejfd ��YZee efZed kr�eje�ndS(i����N(tAbstractTkTesttrequires_tcltguitMiscTestcBseZd�Zd�ZRS(cCsC|jj�}|j|t�|jd|�|jd|�dS(Ntphototbitmap(troottimage_typestassertIsInstancettupletassertIn(tselfR((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_image_typesscCs#|jj�}|j|t�dS(N(Rtimage_namesRR (RR ((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_image_namess(t__name__t __module__RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR s tBitmapImageTestcBsVeZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z RS(cCs,tjj|�tjddd�|_dS(Ns python.xbmtsubdirt imghdrdata(Rt setUpClasst__func__tsupporttfindfilettestfile(tcls((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRsc Cs�tjdd|jddddd|j�}|jt|�d�|j|j�d�|j|j�d �|j|j�d �|j d|jj ��~|jd|jj ��dS( Ns::img::testtmastert foregroundtyellowt backgroundtbluetfileRi(ttkintertBitmapImageRRtassertEqualtstrttypetwidththeightR R tassertNotIn(Rtimage((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_filescCs�t|jd��}|j�}WdQXtjdd|jddddd|�}|jt|�d�|j|j�d �|j|j �d �|j|j �d �|jd|jj��~|j d|jj��dS(Ntrbs::img::testRRRRRtdataRi(topenRtreadR R!RR"R#R$R%R&R R R'(RtfR+R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_data*s cCs0|j|t�|j|jj|�|�dS(N(RR#R"Rt splitlist(Rtactualtexpected((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytassertEqualStrList8scCs�tjdd|j�}|j|dd�t|jd��}|j�}WdQX|jd|�|j|ddddd|f�|j|j �d�|j|j �d�|j|d d �|jd |�|j|d dddd|f�dS(Ns::img::testRR+s-data {} {} {} {}R*s-datatitmaskdatas-maskdata {} {} {} {}s -maskdata(R R!RR"R,RR-t configureR3R%R&(RR(R.R+((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_data<s cCs�tjdd|j�}|j|dd�|jd|j�|j|ddddd|jf�|j|j�d�|j|j�d�|j|dd �|jd|j�|j|dd ddd|jf�dS(Ns::img::testRRs-file {} {} {} {}s-fileR4itmaskfiles-maskfile {} {} {} {}s -maskfile( R R!RR"R6RR3R%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_fileLs cCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRRs-background {} {} {} {}Rs-background {} {} {} blue(R R!RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_backgroundZscCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRRs!-foreground {} {} #000000 #000000Rs -foreground {} {} #000000 yellow(R R!RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_foreground`s (RRtclassmethodRR)R/R3R7R9R:R;(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRs tPhotoImageTestcBseZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z edd�d ��Zedd�d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tjj|�tjddd�|_dS(Ns python.gifRR(RRRRRR(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRkscCstjdd|jd|j�S(Ns::img::testRR(R t PhotoImageRR(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcreatepscGs-tjdkr|jr|Stj|�SdS(Ng333333!@(R t TkVersiontwantobjectst_join(Rtargs((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt colorlisttscCs�tjd|dd�}tjdd|jd|�}|jt|�d�|j|j�d�|j|j�d�|j|j �d�|j|d d �|j|d|�|j d|jj��~|jd|jj��dS(Nspython.RRs::img::testRRRiR+R4( RRR R>RR"R#R$R%R&R R R'(RtextRR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcheck_create_from_filezs cCs,tjd|dd�}t|d��}|j�}WdQXtjdd|jd|�}|jt|�d�|j|j �d�|j|j �d �|j|j�d �|j|d|jr�|n|j d ��|j|dd�|jd|jj��~|jd|jj��dS( Nspython.RRR*s::img::testRR+Ritlatin1RR4(RRR,R-R R>RR"R#R$R%R&RAtdecodeR R R'(RRERR.R+R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcheck_create_from_data�s cCs|jd�dS(Ntppm(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_ppm_file�scCs|jd�dS(NRJ(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_ppm_data�scCs|jd�dS(Ntpgm(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_pgm_file�scCs|jd�dS(NRM(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_pgm_data�scCs|jd�dS(Ntgif(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_gif_file�scCs|jd�dS(NRP(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_gif_data�siicCs|jd�dS(Ntpng(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_png_file�scCs|jd�dS(NRS(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_png_data�scCs�tjdd|j�}|j|dd�t|jd��}|j�}WdQX|jd|�|j|d|jr|n|j d��|j|j �d�|j|j�d�dS(Ns::img::testRR+R4R*RGi(R R>RR"R,RR-R6RARHR%R&(RR(R.R+((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR7�scCs�tjdd|j�}|j|dd�|jd|jdd�|j|d|jradnd�|j|j�d�|j|j�d�dS( Ns::img::testRtformatR4RRPi(RP( R R>RR"R6RRAR%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_format�scCs�tjdd|j�}|j|dd�|jd|j�|j|d|j�|j|j�d�|j|j�d�dS(Ns::img::testRRR4i(R R>RR"R6RR%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR9�scCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRtgammas1.0g@s2.0(R R>RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_gamma�scCs�tjdd|j�}|j|dd�|j|dd�|jdd�|jdd�|j|dd�|j|dd �|j|j�d�|j|j�d�dS( Ns::img::testRR%t0R&ii t20t10(R R>RR"R6R%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_width_height�scCsxtjdd|j�}|j|dd�|jdd�|j|dd�|jdd�|j|dd�dS(Ns::img::testRtpaletteR4it256s3/4/2(R R>RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_palette�scCsq|j�}|j�|j|j�d�|j|j�d�|j|jdd�|jddd��dS(Niiii(R?tblankR"R%R&tgetRD(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_blank�s cCsp|j�}|j�}|j|j�d�|j|j�d�|j|jdd�|jdd��dS(Niii(R?tcopyR"R%R&Rb(RR(timage2((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_copy�s cCs�|j�}|jdd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|jd�}|j|j�d�|j|j�d�|j|jdd�|jdd��dS(Niiiii(R?t subsampleR"R%R&Rb(RR(Re((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_subsample�s(cCs)|j�}|jdd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|j|jd d �|jdd��|jd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|j|jd d�|jdd��dS( Niii i0iiiii iii (R?tzoomR"R%R&Rb(RR(Re((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_zooms(((cCs�|j�}|jddd�|j|jdd�|jddd��|j|jdd�|jdtjdkr}d ndd��|j|jdd �|jddd��|j|jdd �|jddd��|jddf�|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��dS(Ns{red green} {blue yellow}ttoiii�iig333333!@i�is#f00s#00ff00s #000000fffs #ffffffff0000i(ii(s#f00s#00ff00(s #000000fffs #ffffffff0000(R?tputR"RbRDR R@(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_puts+ +++++cCs|j�}|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��|jtj|jdd�|jtj|jdd�|jtj|jd d�|jtj|jdd �dS( Niii>iti�iii����i(R?R"RbRDtassertRaisesR tTclError(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_get s+++c Cs�|j�}|jtjtj�|jtj�tjdd|jdddtj�}|j t |�d�|j |j�d�|j |j�d�|j |j �d�|j |jdd�|jdd��|j |jd d �|jd d ��|jtjdddd�tjdd|jdddtj�}|j t |�d�|j |j�d�|j |j�d�|j |j �d�|j |jdd�|jd d��|j |jdd�|jdd ��dS(Ns::img::test2RRVRJRRiiiiRPtfrom_coordsiii s::img::test3iiii(iiii (R?t addCleanupRtunlinktTESTFNtwriteR R>RR"R#R$R%R&Rb(RR(Retimage3((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_write*s,((((RRR<RR?RDRFRIRKRLRNRORQRRRRTRUR7RWR9RYR]R`RcRfRhRjRmRpRw(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR=is4 t__main__(tunittesttTkinterR tttkttest.test_supportttest_supportRttest_ttk.supportRRtrequirestTestCaseRRR=t tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt<module>s R�test/test_tkinter/test_images.pyo000064400000037047151703463030013314 0ustar00� zfc@s�ddlZddlZddlZddljZddlmZm Z ej d�deejfd��YZdeejfd��YZ deejfd ��YZee efZed kr�eje�ndS(i����N(tAbstractTkTesttrequires_tcltguitMiscTestcBseZd�Zd�ZRS(cCsC|jj�}|j|t�|jd|�|jd|�dS(Ntphototbitmap(troottimage_typestassertIsInstancettupletassertIn(tselfR((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_image_typesscCs#|jj�}|j|t�dS(N(Rtimage_namesRR (RR ((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_image_namess(t__name__t __module__RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR s tBitmapImageTestcBsVeZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z RS(cCs,tjj|�tjddd�|_dS(Ns python.xbmtsubdirt imghdrdata(Rt setUpClasst__func__tsupporttfindfilettestfile(tcls((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRsc Cs�tjdd|jddddd|j�}|jt|�d�|j|j�d�|j|j�d �|j|j�d �|j d|jj ��~|jd|jj ��dS( Ns::img::testtmastert foregroundtyellowt backgroundtbluetfileRi(ttkintertBitmapImageRRtassertEqualtstrttypetwidththeightR R tassertNotIn(Rtimage((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_filescCs�t|jd��}|j�}WdQXtjdd|jddddd|�}|jt|�d�|j|j�d �|j|j �d �|j|j �d �|jd|jj��~|j d|jj��dS(Ntrbs::img::testRRRRRtdataRi(topenRtreadR R!RR"R#R$R%R&R R R'(RtfR+R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_data*s cCs0|j|t�|j|jj|�|�dS(N(RR#R"Rt splitlist(Rtactualtexpected((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytassertEqualStrList8scCs�tjdd|j�}|j|dd�t|jd��}|j�}WdQX|jd|�|j|ddddd|f�|j|j �d�|j|j �d�|j|d d �|jd |�|j|d dddd|f�dS(Ns::img::testRR+s-data {} {} {} {}R*s-datatitmaskdatas-maskdata {} {} {} {}s -maskdata(R R!RR"R,RR-t configureR3R%R&(RR(R.R+((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_data<s cCs�tjdd|j�}|j|dd�|jd|j�|j|ddddd|jf�|j|j�d�|j|j�d�|j|dd �|jd|j�|j|dd ddd|jf�dS(Ns::img::testRRs-file {} {} {} {}s-fileR4itmaskfiles-maskfile {} {} {} {}s -maskfile( R R!RR"R6RR3R%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_fileLs cCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRRs-background {} {} {} {}Rs-background {} {} {} blue(R R!RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_backgroundZscCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRRs!-foreground {} {} #000000 #000000Rs -foreground {} {} #000000 yellow(R R!RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_foreground`s (RRtclassmethodRR)R/R3R7R9R:R;(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRs tPhotoImageTestcBseZed��Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z edd�d ��Zedd�d��Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tjj|�tjddd�|_dS(Ns python.gifRR(RRRRRR(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyRkscCstjdd|jd|j�S(Ns::img::testRR(R t PhotoImageRR(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcreatepscGs-tjdkr|jr|Stj|�SdS(Ng333333!@(R t TkVersiontwantobjectst_join(Rtargs((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt colorlisttscCs�tjd|dd�}tjdd|jd|�}|jt|�d�|j|j�d�|j|j�d�|j|j �d�|j|d d �|j|d|�|j d|jj��~|jd|jj��dS(Nspython.RRs::img::testRRRiR+R4( RRR R>RR"R#R$R%R&R R R'(RtextRR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcheck_create_from_filezs cCs,tjd|dd�}t|d��}|j�}WdQXtjdd|jd|�}|jt|�d�|j|j �d�|j|j �d �|j|j�d �|j|d|jr�|n|j d ��|j|dd�|jd|jj��~|jd|jj��dS( Nspython.RRR*s::img::testRR+Ritlatin1RR4(RRR,R-R R>RR"R#R$R%R&RAtdecodeR R R'(RRERR.R+R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pytcheck_create_from_data�s cCs|jd�dS(Ntppm(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_ppm_file�scCs|jd�dS(NRJ(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_ppm_data�scCs|jd�dS(Ntpgm(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_pgm_file�scCs|jd�dS(NRM(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_pgm_data�scCs|jd�dS(Ntgif(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_gif_file�scCs|jd�dS(NRP(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_gif_data�siicCs|jd�dS(Ntpng(RF(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_png_file�scCs|jd�dS(NRS(RI(R((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_create_from_png_data�scCs�tjdd|j�}|j|dd�t|jd��}|j�}WdQX|jd|�|j|d|jr|n|j d��|j|j �d�|j|j�d�dS(Ns::img::testRR+R4R*RGi(R R>RR"R,RR-R6RARHR%R&(RR(R.R+((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR7�scCs�tjdd|j�}|j|dd�|jd|jdd�|j|d|jradnd�|j|j�d�|j|j�d�dS( Ns::img::testRtformatR4RRPi(RP( R R>RR"R6RRAR%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_format�scCs�tjdd|j�}|j|dd�|jd|j�|j|d|j�|j|j�d�|j|j�d�dS(Ns::img::testRRR4i(R R>RR"R6RR%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR9�scCsTtjdd|j�}|j|dd�|jdd�|j|dd�dS(Ns::img::testRtgammas1.0g@s2.0(R R>RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_gamma�scCs�tjdd|j�}|j|dd�|j|dd�|jdd�|jdd�|j|dd�|j|dd �|j|j�d�|j|j�d�dS( Ns::img::testRR%t0R&ii t20t10(R R>RR"R6R%R&(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_width_height�scCsxtjdd|j�}|j|dd�|jdd�|j|dd�|jdd�|j|dd�dS(Ns::img::testRtpaletteR4it256s3/4/2(R R>RR"R6(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_configure_palette�scCsq|j�}|j�|j|j�d�|j|j�d�|j|jdd�|jddd��dS(Niiii(R?tblankR"R%R&tgetRD(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_blank�s cCsp|j�}|j�}|j|j�d�|j|j�d�|j|jdd�|jdd��dS(Niii(R?tcopyR"R%R&Rb(RR(timage2((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_copy�s cCs�|j�}|jdd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|jd�}|j|j�d�|j|j�d�|j|jdd�|jdd��dS(Niiiii(R?t subsampleR"R%R&Rb(RR(Re((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_subsample�s(cCs)|j�}|jdd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|j|jd d �|jdd��|jd�}|j|j�d�|j|j�d�|j|jdd�|jdd��|j|jd d�|jdd��dS( Niii i0iiiii iii (R?tzoomR"R%R&Rb(RR(Re((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_zooms(((cCs�|j�}|jddd�|j|jdd�|jddd��|j|jdd�|jdtjdkr}d ndd��|j|jdd �|jddd��|j|jdd �|jddd��|jddf�|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��dS(Ns{red green} {blue yellow}ttoiii�iig333333!@i�is#f00s#00ff00s #000000fffs #ffffffff0000i(ii(s#f00s#00ff00(s #000000fffs #ffffffff0000(R?tputR"RbRDR R@(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_puts+ +++++cCs|j�}|j|jdd�|jddd��|j|jdd�|jddd��|j|jdd�|jddd��|jtj|jdd�|jtj|jdd�|jtj|jd d�|jtj|jdd �dS( Niii>iti�iii����i(R?R"RbRDtassertRaisesR tTclError(RR(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyttest_get s+++c Cs�|j�}|jtjtj�|jtj�tjdd|jdddtj�}|j t |�d�|j |j�d�|j |j�d�|j |j �d�|j |jdd�|jdd��|j |jd d �|jd d ��|jtjdddd�tjdd|jdddtj�}|j t |�d�|j |j�d�|j |j�d�|j |j �d�|j |jdd�|jd d��|j |jdd�|jdd ��dS(Ns::img::test2RRVRJRRiiiiRPtfrom_coordsiii s::img::test3iiii(iiii (R?t addCleanupRtunlinktTESTFNtwriteR R>RR"R#R$R%R&Rb(RR(Retimage3((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt test_write*s,((((RRR<RR?RDRFRIRKRLRNRORQRRRRTRUR7RWR9RYR]R`RcRfRhRjRmRpRw(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyR=is4 t__main__(tunittesttTkinterR tttkttest.test_supportttest_supportRttest_ttk.supportRRtrequirestTestCaseRRR=t tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt<module>s R�test/test_tkinter/test_loadtk.py000064400000002662151703463030013141 0ustar00import os import sys import unittest from test import test_support from Tkinter import Tcl, TclError test_support.requires('gui') class TkLoadTest(unittest.TestCase): @unittest.skipIf('DISPLAY' not in os.environ, 'No $DISPLAY set.') def testLoadTk(self): tcl = Tcl() self.assertRaises(TclError,tcl.winfo_geometry) tcl.loadtk() self.assertEqual('1x1+0+0', tcl.winfo_geometry()) tcl.destroy() def testLoadTkFailure(self): old_display = None if sys.platform.startswith(('win', 'darwin', 'cygwin')): # no failure possible on windows? # XXX Maybe on tk older than 8.4.13 it would be possible, # see tkinter.h. return with test_support.EnvironmentVarGuard() as env: if 'DISPLAY' in os.environ: del env['DISPLAY'] # on some platforms, deleting environment variables # doesn't actually carry through to the process level # because they don't support unsetenv # If that's the case, abort. display = os.popen('echo $DISPLAY').read().strip() if display: return tcl = Tcl() self.assertRaises(TclError, tcl.winfo_geometry) self.assertRaises(TclError, tcl.loadtk) tests_gui = (TkLoadTest, ) if __name__ == "__main__": test_support.run_unittest(*tests_gui) test/test_tkinter/test_loadtk.pyc000064400000003314151703463030013277 0ustar00� zfc@s�ddlZddlZddlZddlmZddlmZmZejd�dej fd��YZ e fZedkr�ej e�ndS(i����N(ttest_support(tTcltTclErrortguit TkLoadTestcBs5eZejdejkd�d��Zd�ZRS(tDISPLAYsNo $DISPLAY set.cCsJt�}|jt|j�|j�|jd|j��|j�dS(Ns1x1+0+0(RtassertRaisesRtwinfo_geometrytloadtktassertEqualtdestroy(tselfttcl((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt testLoadTks cCs�d}tjjd�rdStj��t}dtjkri|d=tjd�j �j �}|ridSnt�}|jt |j�|jt |j�WdQXdS(NtwintdarwintcygwinRs echo $DISPLAY(RRR(tNonetsystplatformt startswithRtEnvironmentVarGuardtostenvirontpopentreadtstripRRRRR(Rtold_displaytenvtdisplayR((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyttestLoadTkFailures (t__name__t __module__tunittesttskipIfRRR R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyR s$t__main__(RRR!ttestRtTkinterRRtrequirestTestCaseRt tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt<module>s ! test/test_tkinter/test_loadtk.pyo000064400000003314151703463030013313 0ustar00� zfc@s�ddlZddlZddlZddlmZddlmZmZejd�dej fd��YZ e fZedkr�ej e�ndS(i����N(ttest_support(tTcltTclErrortguit TkLoadTestcBs5eZejdejkd�d��Zd�ZRS(tDISPLAYsNo $DISPLAY set.cCsJt�}|jt|j�|j�|jd|j��|j�dS(Ns1x1+0+0(RtassertRaisesRtwinfo_geometrytloadtktassertEqualtdestroy(tselfttcl((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt testLoadTks cCs�d}tjjd�rdStj��t}dtjkri|d=tjd�j �j �}|ridSnt�}|jt |j�|jt |j�WdQXdS(NtwintdarwintcygwinRs echo $DISPLAY(RRR(tNonetsystplatformt startswithRtEnvironmentVarGuardtostenvirontpopentreadtstripRRRRR(Rtold_displaytenvtdisplayR((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyttestLoadTkFailures (t__name__t __module__tunittesttskipIfRRR R(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyR s$t__main__(RRR!ttestRtTkinterRRtrequirestTestCaseRt tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt<module>s ! test/test_tkinter/test_misc.py000064400000010233151703463030012607 0ustar00import unittest import Tkinter as tkinter from test.test_support import requires, run_unittest from test_ttk.support import AbstractTkTest requires('gui') class MiscTest(AbstractTkTest, unittest.TestCase): def test_after(self): root = self.root cbcount = {'count': 0} def callback(start=0, step=1): cbcount['count'] = start + step # Without function, sleeps for ms. self.assertIsNone(root.after(1)) # Set up with callback with no args. cbcount['count'] = 0 timer1 = root.after(0, callback) self.assertIn(timer1, root.tk.call('after', 'info')) (script, _) = root.tk.splitlist(root.tk.call('after', 'info', timer1)) root.update() # Process all pending events. self.assertEqual(cbcount['count'], 1) with self.assertRaises(tkinter.TclError): root.tk.call(script) # Set up with callback with args. cbcount['count'] = 0 timer1 = root.after(0, callback, 42, 11) root.update() # Process all pending events. self.assertEqual(cbcount['count'], 53) # Cancel before called. timer1 = root.after(1000, callback) self.assertIn(timer1, root.tk.call('after', 'info')) (script, _) = root.tk.splitlist(root.tk.call('after', 'info', timer1)) root.after_cancel(timer1) # Cancel this event. self.assertEqual(cbcount['count'], 53) with self.assertRaises(tkinter.TclError): root.tk.call(script) def test_after_idle(self): root = self.root cbcount = {'count': 0} def callback(start=0, step=1): cbcount['count'] = start + step # Set up with callback with no args. cbcount['count'] = 0 idle1 = root.after_idle(callback) self.assertIn(idle1, root.tk.call('after', 'info')) (script, _) = root.tk.splitlist(root.tk.call('after', 'info', idle1)) root.update_idletasks() # Process all pending events. self.assertEqual(cbcount['count'], 1) with self.assertRaises(tkinter.TclError): root.tk.call(script) # Set up with callback with args. cbcount['count'] = 0 idle1 = root.after_idle(callback, 42, 11) root.update_idletasks() # Process all pending events. self.assertEqual(cbcount['count'], 53) # Cancel before called. idle1 = root.after_idle(callback) self.assertIn(idle1, root.tk.call('after', 'info')) (script, _) = root.tk.splitlist(root.tk.call('after', 'info', idle1)) root.after_cancel(idle1) # Cancel this event. self.assertEqual(cbcount['count'], 53) with self.assertRaises(tkinter.TclError): root.tk.call(script) def test_after_cancel(self): root = self.root cbcount = {'count': 0} def callback(): cbcount['count'] += 1 timer1 = root.after(5000, callback) idle1 = root.after_idle(callback) # No value for id raises a ValueError. with self.assertRaises(ValueError): root.after_cancel(None) # Cancel timer event. cbcount['count'] = 0 (script, _) = root.tk.splitlist(root.tk.call('after', 'info', timer1)) root.tk.call(script) self.assertEqual(cbcount['count'], 1) root.after_cancel(timer1) with self.assertRaises(tkinter.TclError): root.tk.call(script) self.assertEqual(cbcount['count'], 1) with self.assertRaises(tkinter.TclError): root.tk.call('after', 'info', timer1) # Cancel same event - nothing happens. root.after_cancel(timer1) # Cancel idle event. cbcount['count'] = 0 (script, _) = root.tk.splitlist(root.tk.call('after', 'info', idle1)) root.tk.call(script) self.assertEqual(cbcount['count'], 1) root.after_cancel(idle1) with self.assertRaises(tkinter.TclError): root.tk.call(script) self.assertEqual(cbcount['count'], 1) with self.assertRaises(tkinter.TclError): root.tk.call('after', 'info', idle1) tests_gui = (MiscTest, ) if __name__ == "__main__": run_unittest(*tests_gui) test/test_tkinter/test_misc.pyc000064400000007400151703463030012754 0ustar00� zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ e fZ edkr�ee �ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguitMiscTestcBs#eZd�Zd�Zd�ZRS(cs�|j}idd6�dd�fd�}|j|jd��d�d<|jd|�}|j||jjdd��|jj|jjdd|��\}}|j�|j�dd�|j t j��|jj|�WdQXd�d<|jd|dd�}|j�|j�dd �|jd |�}|j||jjdd��|jj|jjdd|��\}}|j|�|j�dd �|j t j��|jj|�WdQXdS(Nitcountics||�d<dS(NR((tstarttstep(tcbcount(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pytcallbackstaftertinfoi*ii5i�( troottassertIsNoneR tassertInttktcallt splitlisttupdatetassertEqualtassertRaisesttkintertTclErrortafter_cancel(tselfRR ttimer1tscriptt_((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt test_after s. * * cs�|j}idd6�dd�fd�}d�d<|j|�}|j||jjdd��|jj|jjdd|��\}}|j�|j�dd�|jt j ��|jj|�WdQXd�d<|j|dd�}|j�|j�dd �|j|�}|j||jjdd��|jj|jjdd|��\}}|j|�|j�dd �|jt j ��|jj|�WdQXdS( NiRics||�d<dS(NR((RR(R(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR 1sR Ri*ii5(Rt after_idleRRRRtupdate_idletasksRRRRR(RRR tidle1RR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_idle-s, * * cs|j}idd6��fd�}|jd|�}|j|�}|jt��|jd�WdQXd�d<|jj|jj dd|��\}}|jj |�|j �dd�|j|�|jtj��|jj |�WdQX|j �dd�|jtj��|jj dd|�WdQX|j|�d�d<|jj|jj dd|��\}}|jj |�|j �dd�|j|�|jtj��|jj |�WdQX|j �dd�|jtj��|jj dd|�WdQXdS(NiRcs�dcd7<dS(NRi(((R(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR Qsi�R Ri( RR RRt ValueErrorRtNoneRRRRRR(RRR RRRR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_cancelMs8 * * (t__name__t __module__RR R#(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyRs # t__main__(tunittesttTkinterRttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR$(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt<module>s o test/test_tkinter/test_misc.pyo000064400000007400151703463030012770 0ustar00� zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ e fZ edkr�ee �ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguitMiscTestcBs#eZd�Zd�Zd�ZRS(cs�|j}idd6�dd�fd�}|j|jd��d�d<|jd|�}|j||jjdd��|jj|jjdd|��\}}|j�|j�dd�|j t j��|jj|�WdQXd�d<|jd|dd�}|j�|j�dd �|jd |�}|j||jjdd��|jj|jjdd|��\}}|j|�|j�dd �|j t j��|jj|�WdQXdS(Nitcountics||�d<dS(NR((tstarttstep(tcbcount(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pytcallbackstaftertinfoi*ii5i�( troottassertIsNoneR tassertInttktcallt splitlisttupdatetassertEqualtassertRaisesttkintertTclErrortafter_cancel(tselfRR ttimer1tscriptt_((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt test_after s. * * cs�|j}idd6�dd�fd�}d�d<|j|�}|j||jjdd��|jj|jjdd|��\}}|j�|j�dd�|jt j ��|jj|�WdQXd�d<|j|dd�}|j�|j�dd �|j|�}|j||jjdd��|jj|jjdd|��\}}|j|�|j�dd �|jt j ��|jj|�WdQXdS( NiRics||�d<dS(NR((RR(R(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR 1sR Ri*ii5(Rt after_idleRRRRtupdate_idletasksRRRRR(RRR tidle1RR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_idle-s, * * cs|j}idd6��fd�}|jd|�}|j|�}|jt��|jd�WdQXd�d<|jj|jj dd|��\}}|jj |�|j �dd�|j|�|jtj��|jj |�WdQX|j �dd�|jtj��|jj dd|�WdQX|j|�d�d<|jj|jj dd|��\}}|jj |�|j �dd�|j|�|jtj��|jj |�WdQX|j �dd�|jtj��|jj dd|�WdQXdS(NiRcs�dcd7<dS(NRi(((R(s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyR Qsi�R Ri( RR RRt ValueErrorRtNoneRRRRRR(RRR RRRR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_cancelMs8 * * (t__name__t __module__RR R#(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyRs # t__main__(tunittesttTkinterRttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR$(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyt<module>s o test/test_tkinter/test_text.py000064400000002674151703463030012652 0ustar00import unittest import Tkinter as tkinter from test.test_support import requires, run_unittest from test_ttk.support import AbstractTkTest requires('gui') class TextTest(AbstractTkTest, unittest.TestCase): def setUp(self): super(TextTest, self).setUp() self.text = tkinter.Text(self.root) def test_debug(self): text = self.text olddebug = text.debug() try: text.debug(0) self.assertEqual(text.debug(), 0) text.debug(1) self.assertEqual(text.debug(), 1) finally: text.debug(olddebug) self.assertEqual(text.debug(), olddebug) def test_search(self): text = self.text # pattern and index are obligatory arguments. self.assertRaises(tkinter.TclError, text.search, None, '1.0') self.assertRaises(tkinter.TclError, text.search, 'a', None) self.assertRaises(tkinter.TclError, text.search, None, None) # Invalid text index. self.assertRaises(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.assertEqual(text.search('-test', '1.0', 'end'), '1.2') self.assertEqual(text.search('test', '1.0', 'end'), '1.3') tests_gui = (TextTest, ) if __name__ == "__main__": run_unittest(*tests_gui) test/test_tkinter/test_text.pyc000064400000003467151703463030013016 0ustar00� zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ e fZ edkr�ee �ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguitTextTestcBs#eZd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(tsuperRtsetUpttkintertTexttrootttext(tself((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyR scCs�|j}|j�}zJ|jd�|j|j�d�|jd�|j|j�d�Wd|j|�|j|j�|�XdS(Nii(R tdebugtassertEqual(RR tolddebug((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt test_debugs cCs�|j}|jtj|jdd�|jtj|jdd�|jtj|jdd�|jtj|jdd�|jdd�|j|jddd�d�|j|jd dd�d �dS(Ns1.0tatishi-tests-testtends1.2ttests1.3(R tassertRaisesRtTclErrortsearchtNonetinsertR (RR ((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyttest_searchs (t__name__t __module__RRR(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyRs t__main__(tunittesttTkinterRttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt<module>s $ test/test_tkinter/test_text.pyo000064400000003467151703463030013032 0ustar00� zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ e fZ edkr�ee �ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguitTextTestcBs#eZd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(tsuperRtsetUpttkintertTexttrootttext(tself((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyR scCs�|j}|j�}zJ|jd�|j|j�d�|jd�|j|j�d�Wd|j|�|j|j�|�XdS(Nii(R tdebugtassertEqual(RR tolddebug((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt test_debugs cCs�|j}|jtj|jdd�|jtj|jdd�|jtj|jdd�|jtj|jdd�|jdd�|j|jddd�d�|j|jd dd�d �dS(Ns1.0tatishi-tests-testtends1.2ttests1.3(R tassertRaisesRtTclErrortsearchtNonetinsertR (RR ((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyttest_searchs (t__name__t __module__RRR(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyRs t__main__(tunittesttTkinterRttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR(((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_text.pyt<module>s $ test/test_tkinter/test_variables.py000064400000020305151703463030013625 0ustar00import unittest import gc from Tkinter import (Variable, StringVar, IntVar, DoubleVar, BooleanVar, Tcl, TclError) class TestBase(unittest.TestCase): def setUp(self): self.root = Tcl() def tearDown(self): del self.root class TestVariable(TestBase): def info_exists(self, *args): return self.root.getboolean(self.root.call("info", "exists", *args)) def test_default(self): v = Variable(self.root) self.assertEqual("", v.get()) self.assertRegexpMatches(str(v), r"^PY_VAR(\d+)$") def test_name_and_value(self): v = Variable(self.root, "sample string", "varname") self.assertEqual("sample string", v.get()) self.assertEqual("varname", str(v)) def test___del__(self): self.assertFalse(self.info_exists("varname")) v = Variable(self.root, "sample string", "varname") self.assertTrue(self.info_exists("varname")) del v self.assertFalse(self.info_exists("varname")) def test_dont_unset_not_existing(self): self.assertFalse(self.info_exists("varname")) v1 = Variable(self.root, name="name") v2 = Variable(self.root, name="name") del v1 self.assertFalse(self.info_exists("name")) # shouldn't raise exception del v2 self.assertFalse(self.info_exists("name")) def test___eq__(self): # values doesn't matter, only class and name are checked v1 = Variable(self.root, name="abc") v2 = Variable(self.root, name="abc") self.assertEqual(v1, v2) v3 = Variable(self.root, name="abc") v4 = StringVar(self.root, name="abc") self.assertNotEqual(v3, v4) def test_invalid_name(self): with self.assertRaises(TypeError): Variable(self.root, name=123) def test_null_in_name(self): with self.assertRaises(ValueError): Variable(self.root, name='var\x00name') with self.assertRaises(ValueError): self.root.globalsetvar('var\x00name', "value") with self.assertRaises(ValueError): self.root.setvar('var\x00name', "value") def test_trace(self): v = Variable(self.root) vname = str(v) trace = [] def read_tracer(*args): trace.append(('read',) + args) def write_tracer(*args): trace.append(('write',) + args) cb1 = v.trace_variable('r', read_tracer) cb2 = v.trace_variable('wu', write_tracer) self.assertEqual(sorted(v.trace_vinfo()), [('r', cb1), ('wu', cb2)]) self.assertEqual(trace, []) v.set('spam') self.assertEqual(trace, [('write', vname, '', 'w')]) trace = [] v.get() self.assertEqual(trace, [('read', vname, '', 'r')]) trace = [] info = sorted(v.trace_vinfo()) v.trace_vdelete('w', cb1) # Wrong mode self.assertEqual(sorted(v.trace_vinfo()), info) with self.assertRaises(TclError): v.trace_vdelete('r', 'spam') # Wrong command name self.assertEqual(sorted(v.trace_vinfo()), info) v.trace_vdelete('r', (cb1, 43)) # Wrong arguments self.assertEqual(sorted(v.trace_vinfo()), info) v.get() self.assertEqual(trace, [('read', vname, '', 'r')]) trace = [] v.trace_vdelete('r', cb1) self.assertEqual(v.trace_vinfo(), [('wu', cb2)]) v.get() self.assertEqual(trace, []) trace = [] del write_tracer gc.collect() v.set('eggs') self.assertEqual(trace, [('write', vname, '', 'w')]) #trace = [] #del v #gc.collect() #self.assertEqual(trace, [('write', vname, '', 'u')]) class TestStringVar(TestBase): def test_default(self): v = StringVar(self.root) self.assertEqual("", v.get()) def test_get(self): v = StringVar(self.root, "abc", "name") self.assertEqual("abc", v.get()) self.root.globalsetvar("name", "value") self.assertEqual("value", v.get()) def test_get_null(self): v = StringVar(self.root, "abc\x00def", "name") self.assertEqual("abc\x00def", v.get()) self.root.globalsetvar("name", "val\x00ue") self.assertEqual("val\x00ue", v.get()) class TestIntVar(TestBase): def test_default(self): v = IntVar(self.root) self.assertEqual(0, v.get()) def test_get(self): v = IntVar(self.root, 123, "name") self.assertEqual(123, v.get()) self.root.globalsetvar("name", "345") self.assertEqual(345, v.get()) def test_invalid_value(self): v = IntVar(self.root, name="name") self.root.globalsetvar("name", "value") with self.assertRaises(ValueError): v.get() self.root.globalsetvar("name", "345.0") with self.assertRaises(ValueError): v.get() class TestDoubleVar(TestBase): def test_default(self): v = DoubleVar(self.root) self.assertEqual(0.0, v.get()) def test_get(self): v = DoubleVar(self.root, 1.23, "name") self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar("name", "3.45") self.assertAlmostEqual(3.45, v.get()) def test_get_from_int(self): v = DoubleVar(self.root, 1.23, "name") self.assertAlmostEqual(1.23, v.get()) self.root.globalsetvar("name", "3.45") self.assertAlmostEqual(3.45, v.get()) self.root.globalsetvar("name", "456") self.assertAlmostEqual(456, v.get()) def test_invalid_value(self): v = DoubleVar(self.root, name="name") self.root.globalsetvar("name", "value") with self.assertRaises(ValueError): v.get() class TestBooleanVar(TestBase): def test_default(self): v = BooleanVar(self.root) self.assertIs(v.get(), False) def test_get(self): v = BooleanVar(self.root, True, "name") self.assertIs(v.get(), True) self.root.globalsetvar("name", "0") self.assertIs(v.get(), False) self.root.globalsetvar("name", 42 if self.root.wantobjects() else 1) self.assertIs(v.get(), True) self.root.globalsetvar("name", 0) self.assertIs(v.get(), False) self.root.globalsetvar("name", 42L if self.root.wantobjects() else 1L) self.assertIs(v.get(), True) self.root.globalsetvar("name", 0L) self.assertIs(v.get(), False) self.root.globalsetvar("name", "on") self.assertIs(v.get(), True) self.root.globalsetvar("name", u"0") self.assertIs(v.get(), False) self.root.globalsetvar("name", u"on") self.assertIs(v.get(), True) def test_set(self): true = 1 if self.root.wantobjects() else "1" false = 0 if self.root.wantobjects() else "0" v = BooleanVar(self.root, name="name") v.set(True) self.assertEqual(self.root.globalgetvar("name"), true) v.set("0") self.assertEqual(self.root.globalgetvar("name"), false) v.set(42) self.assertEqual(self.root.globalgetvar("name"), true) v.set(0) self.assertEqual(self.root.globalgetvar("name"), false) v.set(42L) self.assertEqual(self.root.globalgetvar("name"), true) v.set(0L) self.assertEqual(self.root.globalgetvar("name"), false) v.set("on") self.assertEqual(self.root.globalgetvar("name"), true) v.set(u"0") self.assertEqual(self.root.globalgetvar("name"), false) v.set(u"on") self.assertEqual(self.root.globalgetvar("name"), true) def test_invalid_value_domain(self): false = 0 if self.root.wantobjects() else "0" v = BooleanVar(self.root, name="name") with self.assertRaises(TclError): v.set("value") self.assertEqual(self.root.globalgetvar("name"), false) self.root.globalsetvar("name", "value") with self.assertRaises(TclError): v.get() self.root.globalsetvar("name", "1.0") with self.assertRaises(TclError): v.get() tests_gui = (TestVariable, TestStringVar, TestIntVar, TestDoubleVar, TestBooleanVar) if __name__ == "__main__": from test.support import run_unittest run_unittest(*tests_gui) test/test_tkinter/test_variables.pyc000064400000026236151703463030014001 0ustar00� zfc@sddlZddlZddlmZmZmZmZmZmZm Z dej fd��YZdefd��YZdefd��YZ d efd ��YZdefd��YZd efd��YZee eeefZedkrddlmZee�ndS(i����N(tVariablet StringVartIntVart DoubleVart BooleanVartTcltTclErrortTestBasecBseZd�Zd�ZRS(cCst�|_dS(N(Rtroot(tself((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytsetUp scCs |`dS(N(R(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttearDowns(t__name__t __module__R R(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs tTestVariablecBsYeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z RS( cGs"|jj|jjdd|��S(Ntinfotexists(Rt getbooleantcall(R targs((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytinfo_existsscCs?t|j�}|jd|j��|jt|�d�dS(Nts ^PY_VAR(\d+)$(RRtassertEqualtgettassertRegexpMatcheststr(R tv((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_defaultscCsEt|jdd�}|jd|j��|jdt|��dS(Ns sample stringtvarname(RRRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_name_and_valuescCs^|j|jd��t|jdd�}|j|jd��~|j|jd��dS(NRs sample string(tassertFalseRRRt assertTrue(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest___del__s cCsv|j|jd��t|jdd�}t|jdd�}~|j|jd��~|j|jd��dS(NRtname(RRRR(R tv1tv2((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_dont_unset_not_existing&scCsxt|jdd�}t|jdd�}|j||�t|jdd�}t|jdd�}|j||�dS(NR!tabc(RRRRtassertNotEqual(R R"R#tv3tv4((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest___eq__0scCs-|jt��t|jdd�WdQXdS(NR!i{(tassertRaisest TypeErrorRR(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_name:sc Cs|jt��t|jdd�WdQX|jt��|jjdd�WdQX|jt��|jjdd�WdQXdS(NR!svarnametvalue(R*t ValueErrorRRtglobalsetvartsetvar(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_null_in_name>scsot|j�}t|�}g��fd�}�fd�}|jd|�}|jd|�}|jt|j��d|fd|fg�|j�g�|jd�|j�d|ddfg�g�|j�|j�d |ddfg�g�t|j��}|j d|�|jt|j��|�|j t��|j dd�WdQX|jt|j��|�|j d|d f�|jt|j��|�|j�|j�d |ddfg�g�|j d|�|j|j�d|fg�|j�|j�g�g�~tj �|jd�|j�d|ddfg�dS(Ncs�jd|�dS(Ntread(R2(tappend(R(ttrace(s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytread_tracerJscs�jd|�dS(Ntwrite(R6(R3(R(R4(s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytwrite_tracerLstrtwutspamR6RtwR2i+teggs(RRRttrace_variableRtsortedttrace_vinfotsetRt trace_vdeleteR*Rtgctcollect(R RtvnameR5R7tcb1tcb2R((R4s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt test_traceFsF. (RR RRRR R$R)R,R1RG(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs t TestStringVarcBs#eZd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(NR(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRzscCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(NR%R!R-(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_get~scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(NsabcdefR!svalue(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt test_get_null�s(RR RRIRJ(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRHxs t TestIntVarcBs#eZd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(Ni(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(Ni{R!t345iY(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�scCst|jdd�}|jjdd�|jt��|j�WdQX|jjdd�|jt��|j�WdQXdS(NR!R-s345.0(RRR/R*R.R(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_value�s(RR RRIRM(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRK�s t TestDoubleVarcBs,eZd�Zd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(Ng(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(Ng�G�z��?R!s3.45g������@(RRtassertAlmostEqualRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�scCs�t|jdd�}|jd|j��|jjdd�|jd|j��|jjdd�|jd|j��dS(Ng�G�z��?R!s3.45g������@t456i�(RRRORR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_get_from_int�scCsLt|jdd�}|jjdd�|jt��|j�WdQXdS(NR!R-(RRR/R*R.R(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRM�s(RR RRIRQRM(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRN�s tTestBooleanVarcBs,eZd�Zd�Zd�Zd�ZRS(cCs)t|j�}|j|j�t�dS(N(RRtassertIsRtFalse(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCs�t|jtd�}|j|j�t�|jjdd�|j|j�t�|jjd|jj�rudnd�|j|j�t�|jjdd�|j|j�t�|jjd|jj�r�dnd�|j|j�t�|jjdd�|j|j�t�|jjdd �|j|j�t�|jjdd �|j|j�t�|jjdd�|j|j�t�dS(NR!t0i*iil*lltonu0uon(RRtTrueRSRR/RTtwantobjects(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�s$((cCs�|jj�rdnd}|jj�r0dnd}t|jdd�}|jt�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd �|j|jjd�|�|jd �|j|jjd�|�|jd�|j|jjd�|�dS(Nit1iRUR!i*l*lRVu0uon(RRXRR@RWRtglobalgetvar(R ttruetfalseR((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_set�s* cCs�|jj�rdnd}t|jdd�}|jt��|jd�WdQX|j|jjd�|�|jjdd�|jt��|j �WdQX|jjdd�|jt��|j �WdQXdS(NiRUR!R-s1.0( RRXRR*RR@RRZR/R(R R\R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_value_domain�s(RR RRIR]R^(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRR�s t__main__(trun_unittest(tunittestRBtTkinterRRRRRRRtTestCaseRRRHRKRNRRt tests_guiRttest.supportR`(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt<module>s4 h? test/test_tkinter/test_variables.pyo000064400000026236151703463030014015 0ustar00� zfc@sddlZddlZddlmZmZmZmZmZmZm Z dej fd��YZdefd��YZdefd��YZ d efd ��YZdefd��YZd efd��YZee eeefZedkrddlmZee�ndS(i����N(tVariablet StringVartIntVart DoubleVart BooleanVartTcltTclErrortTestBasecBseZd�Zd�ZRS(cCst�|_dS(N(Rtroot(tself((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytsetUp scCs |`dS(N(R(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttearDowns(t__name__t __module__R R(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs tTestVariablecBsYeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z RS( cGs"|jj|jjdd|��S(Ntinfotexists(Rt getbooleantcall(R targs((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytinfo_existsscCs?t|j�}|jd|j��|jt|�d�dS(Nts ^PY_VAR(\d+)$(RRtassertEqualtgettassertRegexpMatcheststr(R tv((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_defaultscCsEt|jdd�}|jd|j��|jdt|��dS(Ns sample stringtvarname(RRRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_name_and_valuescCs^|j|jd��t|jdd�}|j|jd��~|j|jd��dS(NRs sample string(tassertFalseRRRt assertTrue(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest___del__s cCsv|j|jd��t|jdd�}t|jdd�}~|j|jd��~|j|jd��dS(NRtname(RRRR(R tv1tv2((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_dont_unset_not_existing&scCsxt|jdd�}t|jdd�}|j||�t|jdd�}t|jdd�}|j||�dS(NR!tabc(RRRRtassertNotEqual(R R"R#tv3tv4((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest___eq__0scCs-|jt��t|jdd�WdQXdS(NR!i{(tassertRaisest TypeErrorRR(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_name:sc Cs|jt��t|jdd�WdQX|jt��|jjdd�WdQX|jt��|jjdd�WdQXdS(NR!svarnametvalue(R*t ValueErrorRRtglobalsetvartsetvar(R ((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_null_in_name>scsot|j�}t|�}g��fd�}�fd�}|jd|�}|jd|�}|jt|j��d|fd|fg�|j�g�|jd�|j�d|ddfg�g�|j�|j�d |ddfg�g�t|j��}|j d|�|jt|j��|�|j t��|j dd�WdQX|jt|j��|�|j d|d f�|jt|j��|�|j�|j�d |ddfg�g�|j d|�|j|j�d|fg�|j�|j�g�g�~tj �|jd�|j�d|ddfg�dS(Ncs�jd|�dS(Ntread(R2(tappend(R(ttrace(s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytread_tracerJscs�jd|�dS(Ntwrite(R6(R3(R(R4(s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pytwrite_tracerLstrtwutspamR6RtwR2i+teggs(RRRttrace_variableRtsortedttrace_vinfotsetRt trace_vdeleteR*Rtgctcollect(R RtvnameR5R7tcb1tcb2R((R4s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt test_traceFsF. (RR RRRR R$R)R,R1RG(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs t TestStringVarcBs#eZd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(NR(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRzscCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(NR%R!R-(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_get~scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(NsabcdefR!svalue(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt test_get_null�s(RR RRIRJ(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRHxs t TestIntVarcBs#eZd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(Ni(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(Ni{R!t345iY(RRRRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�scCst|jdd�}|jjdd�|jt��|j�WdQX|jjdd�|jt��|j�WdQXdS(NR!R-s345.0(RRR/R*R.R(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_value�s(RR RRIRM(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRK�s t TestDoubleVarcBs,eZd�Zd�Zd�Zd�ZRS(cCs)t|j�}|jd|j��dS(Ng(RRRR(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCsXt|jdd�}|jd|j��|jjdd�|jd|j��dS(Ng�G�z��?R!s3.45g������@(RRtassertAlmostEqualRR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�scCs�t|jdd�}|jd|j��|jjdd�|jd|j��|jjdd�|jd|j��dS(Ng�G�z��?R!s3.45g������@t456i�(RRRORR/(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_get_from_int�scCsLt|jdd�}|jjdd�|jt��|j�WdQXdS(NR!R-(RRR/R*R.R(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRM�s(RR RRIRQRM(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRN�s tTestBooleanVarcBs,eZd�Zd�Zd�Zd�ZRS(cCs)t|j�}|j|j�t�dS(N(RRtassertIsRtFalse(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyR�scCs�t|jtd�}|j|j�t�|jjdd�|j|j�t�|jjd|jj�rudnd�|j|j�t�|jjdd�|j|j�t�|jjd|jj�r�dnd�|j|j�t�|jjdd�|j|j�t�|jjdd �|j|j�t�|jjdd �|j|j�t�|jjdd�|j|j�t�dS(NR!t0i*iil*lltonu0uon(RRtTrueRSRR/RTtwantobjects(R R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRI�s$((cCs�|jj�rdnd}|jj�r0dnd}t|jdd�}|jt�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd�|j|jjd�|�|jd �|j|jjd�|�|jd �|j|jjd�|�|jd�|j|jjd�|�dS(Nit1iRUR!i*l*lRVu0uon(RRXRR@RWRtglobalgetvar(R ttruetfalseR((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_set�s* cCs�|jj�rdnd}t|jdd�}|jt��|jd�WdQX|j|jjd�|�|jjdd�|jt��|j �WdQX|jjdd�|jt��|j �WdQXdS(NiRUR!R-s1.0( RRXRR*RR@RRZR/R(R R\R((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_invalid_value_domain�s(RR RRIR]R^(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRR�s t__main__(trun_unittest(tunittestRBtTkinterRRRRRRRtTestCaseRRRHRKRNRRt tests_guiRttest.supportR`(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt<module>s4 h? test/test_tkinter/test_widgets.py000064400000134207151703463030013332 0ustar00import unittest import Tkinter as tkinter from Tkinter import TclError import os import sys from test.test_support import requires, run_unittest from test_ttk.support import (tcl_version, requires_tcl, get_tk_patchlevel, widget_eq) from widget_tests import ( add_standard_options, noconv, noconv_meth, int_round, pixels_round, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) requires('gui') class AbstractToplevelTest(AbstractWidgetTest, PixelSizeTests): _conv_pad_pixels = noconv_meth def test_class(self): widget = self.create() self.assertEqual(widget['class'], widget.__class__.__name__.title()) self.checkInvalidParam(widget, 'class', 'Foo', errmsg="can't modify -class option after widget is created") widget2 = self.create(class_='Foo') self.assertEqual(widget2['class'], 'Foo') def test_colormap(self): widget = self.create() self.assertEqual(widget['colormap'], '') self.checkInvalidParam(widget, 'colormap', 'new', errmsg="can't modify -colormap option after widget is created") widget2 = self.create(colormap='new') self.assertEqual(widget2['colormap'], 'new') def test_container(self): widget = self.create() self.assertEqual(widget['container'], 0 if self.wantobjects else '0') self.checkInvalidParam(widget, 'container', 1, errmsg="can't modify -container option after widget is created") widget2 = self.create(container=True) self.assertEqual(widget2['container'], 1 if self.wantobjects else '1') def test_visual(self): widget = self.create() self.assertEqual(widget['visual'], '') self.checkInvalidParam(widget, 'visual', 'default', errmsg="can't modify -visual option after widget is created") widget2 = self.create(visual='default') self.assertEqual(widget2['visual'], 'default') @add_standard_options(StandardOptionsTests) class ToplevelTest(AbstractToplevelTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'class', 'colormap', 'container', 'cursor', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'menu', 'padx', 'pady', 'relief', 'screen', 'takefocus', 'use', 'visual', 'width', ) def create(self, **kwargs): return tkinter.Toplevel(self.root, **kwargs) def test_menu(self): widget = self.create() menu = tkinter.Menu(self.root) self.checkParam(widget, 'menu', menu, eq=widget_eq) self.checkParam(widget, 'menu', '') def test_screen(self): widget = self.create() self.assertEqual(widget['screen'], '') try: display = os.environ['DISPLAY'] except KeyError: self.skipTest('No $DISPLAY set.') self.checkInvalidParam(widget, 'screen', display, errmsg="can't modify -screen option after widget is created") widget2 = self.create(screen=display) self.assertEqual(widget2['screen'], display) def test_use(self): widget = self.create() self.assertEqual(widget['use'], '') parent = self.create(container=True) # hex() adds the 'L' suffix for longs wid = '%#x' % parent.winfo_id() widget2 = self.create(use=wid) self.assertEqual(widget2['use'], wid) @add_standard_options(StandardOptionsTests) class FrameTest(AbstractToplevelTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'class', 'colormap', 'container', 'cursor', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'padx', 'pady', 'relief', 'takefocus', 'visual', 'width', ) def create(self, **kwargs): return tkinter.Frame(self.root, **kwargs) @add_standard_options(StandardOptionsTests) class LabelFrameTest(AbstractToplevelTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'class', 'colormap', 'container', 'cursor', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'labelanchor', 'labelwidget', 'padx', 'pady', 'relief', 'takefocus', 'text', 'visual', 'width', ) def create(self, **kwargs): return tkinter.LabelFrame(self.root, **kwargs) def test_labelanchor(self): widget = self.create() self.checkEnumParam(widget, 'labelanchor', 'e', 'en', 'es', 'n', 'ne', 'nw', 's', 'se', 'sw', 'w', 'wn', 'ws') self.checkInvalidParam(widget, 'labelanchor', 'center') def test_labelwidget(self): widget = self.create() label = tkinter.Label(self.root, text='Mupp', name='foo') self.checkParam(widget, 'labelwidget', label, expected='.foo') label.destroy() class AbstractLabelTest(AbstractWidgetTest, IntegerSizeTests): _conv_pixels = noconv_meth def test_highlightthickness(self): widget = self.create() self.checkPixelsParam(widget, 'highlightthickness', 0, 1.3, 2.6, 6, -2, '10p') @add_standard_options(StandardOptionsTests) class LabelTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'compound', 'cursor', 'disabledforeground', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'justify', 'padx', 'pady', 'relief', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength', ) def create(self, **kwargs): return tkinter.Label(self.root, **kwargs) @add_standard_options(StandardOptionsTests) class ButtonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'command', 'compound', 'cursor', 'default', 'disabledforeground', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'justify', 'overrelief', 'padx', 'pady', 'relief', 'repeatdelay', 'repeatinterval', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength') def create(self, **kwargs): return tkinter.Button(self.root, **kwargs) def test_default(self): widget = self.create() self.checkEnumParam(widget, 'default', 'active', 'disabled', 'normal') @add_standard_options(StandardOptionsTests) class CheckbuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'command', 'compound', 'cursor', 'disabledforeground', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'indicatoron', 'justify', 'offrelief', 'offvalue', 'onvalue', 'overrelief', 'padx', 'pady', 'relief', 'selectcolor', 'selectimage', 'state', 'takefocus', 'text', 'textvariable', 'tristateimage', 'tristatevalue', 'underline', 'variable', 'width', 'wraplength', ) def create(self, **kwargs): return tkinter.Checkbutton(self.root, **kwargs) def test_offvalue(self): widget = self.create() self.checkParams(widget, 'offvalue', 1, 2.3, '', 'any string') def test_onvalue(self): widget = self.create() self.checkParams(widget, 'onvalue', 1, 2.3, '', 'any string') @add_standard_options(StandardOptionsTests) class RadiobuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'command', 'compound', 'cursor', 'disabledforeground', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'indicatoron', 'justify', 'offrelief', 'overrelief', 'padx', 'pady', 'relief', 'selectcolor', 'selectimage', 'state', 'takefocus', 'text', 'textvariable', 'tristateimage', 'tristatevalue', 'underline', 'value', 'variable', 'width', 'wraplength', ) def create(self, **kwargs): return tkinter.Radiobutton(self.root, **kwargs) def test_value(self): widget = self.create() self.checkParams(widget, 'value', 1, 2.3, '', 'any string') @add_standard_options(StandardOptionsTests) class MenubuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'compound', 'cursor', 'direction', 'disabledforeground', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'indicatoron', 'justify', 'menu', 'padx', 'pady', 'relief', 'state', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength', ) _conv_pixels = staticmethod(pixels_round) def create(self, **kwargs): return tkinter.Menubutton(self.root, **kwargs) def test_direction(self): widget = self.create() self.checkEnumParam(widget, 'direction', 'above', 'below', 'flush', 'left', 'right') def test_height(self): widget = self.create() self.checkIntegerParam(widget, 'height', 100, -100, 0, conv=str) test_highlightthickness = StandardOptionsTests.test_highlightthickness.im_func @unittest.skipIf(sys.platform == 'darwin', 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() image = tkinter.PhotoImage(master=self.root, name='image1') self.checkParam(widget, 'image', image, conv=str) errmsg = 'image "spam" doesn\'t exist' with self.assertRaises(tkinter.TclError) as cm: widget['image'] = 'spam' if errmsg is not None: self.assertEqual(str(cm.exception), errmsg) with self.assertRaises(tkinter.TclError) as cm: widget.configure({'image': 'spam'}) if errmsg is not None: self.assertEqual(str(cm.exception), errmsg) def test_menu(self): widget = self.create() menu = tkinter.Menu(widget, name='menu') self.checkParam(widget, 'menu', menu, eq=widget_eq) menu.destroy() def test_padx(self): widget = self.create() self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, '12m') self.checkParam(widget, 'padx', -2, expected=0) def test_pady(self): widget = self.create() self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, '12m') self.checkParam(widget, 'pady', -2, expected=0) def test_width(self): widget = self.create() self.checkIntegerParam(widget, 'width', 402, -402, 0, conv=str) class OptionMenuTest(MenubuttonTest, unittest.TestCase): def create(self, default='b', values=('a', 'b', 'c'), **kwargs): return tkinter.OptionMenu(self.root, None, default, *values, **kwargs) @add_standard_options(IntegerSizeTests, StandardOptionsTests) class EntryTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'cursor', 'disabledbackground', 'disabledforeground', 'exportselection', 'font', 'foreground', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'insertbackground', 'insertborderwidth', 'insertofftime', 'insertontime', 'insertwidth', 'invalidcommand', 'justify', 'readonlybackground', 'relief', 'selectbackground', 'selectborderwidth', 'selectforeground', 'show', 'state', 'takefocus', 'textvariable', 'validate', 'validatecommand', 'width', 'xscrollcommand', ) def create(self, **kwargs): return tkinter.Entry(self.root, **kwargs) def test_disabledbackground(self): widget = self.create() self.checkColorParam(widget, 'disabledbackground') def test_insertborderwidth(self): widget = self.create(insertwidth=100) self.checkPixelsParam(widget, 'insertborderwidth', 0, 1.3, 2.6, 6, -2, '10p') # insertborderwidth is bounded above by a half of insertwidth. self.checkParam(widget, 'insertborderwidth', 60, expected=100//2) def test_insertwidth(self): widget = self.create() self.checkPixelsParam(widget, 'insertwidth', 1.3, 3.6, '10p') self.checkParam(widget, 'insertwidth', 0.1, expected=2) self.checkParam(widget, 'insertwidth', -2, expected=2) if pixels_round(0.9) <= 0: self.checkParam(widget, 'insertwidth', 0.9, expected=2) else: self.checkParam(widget, 'insertwidth', 0.9, expected=1) def test_invalidcommand(self): widget = self.create() self.checkCommandParam(widget, 'invalidcommand') self.checkCommandParam(widget, 'invcmd') def test_readonlybackground(self): widget = self.create() self.checkColorParam(widget, 'readonlybackground') def test_show(self): widget = self.create() self.checkParam(widget, 'show', '*') self.checkParam(widget, 'show', '') self.checkParam(widget, 'show', ' ') def test_state(self): widget = self.create() self.checkEnumParam(widget, 'state', 'disabled', 'normal', 'readonly') def test_validate(self): widget = self.create() self.checkEnumParam(widget, 'validate', 'all', 'key', 'focus', 'focusin', 'focusout', 'none') def test_validatecommand(self): widget = self.create() self.checkCommandParam(widget, 'validatecommand') self.checkCommandParam(widget, 'vcmd') @add_standard_options(StandardOptionsTests) class SpinboxTest(EntryTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'background', 'borderwidth', 'buttonbackground', 'buttoncursor', 'buttondownrelief', 'buttonuprelief', 'command', 'cursor', 'disabledbackground', 'disabledforeground', 'exportselection', 'font', 'foreground', 'format', 'from', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'increment', 'insertbackground', 'insertborderwidth', 'insertofftime', 'insertontime', 'insertwidth', 'invalidcommand', 'justify', 'relief', 'readonlybackground', 'repeatdelay', 'repeatinterval', 'selectbackground', 'selectborderwidth', 'selectforeground', 'state', 'takefocus', 'textvariable', 'to', 'validate', 'validatecommand', 'values', 'width', 'wrap', 'xscrollcommand', ) def create(self, **kwargs): return tkinter.Spinbox(self.root, **kwargs) test_show = None def test_buttonbackground(self): widget = self.create() self.checkColorParam(widget, 'buttonbackground') def test_buttoncursor(self): widget = self.create() self.checkCursorParam(widget, 'buttoncursor') def test_buttondownrelief(self): widget = self.create() self.checkReliefParam(widget, 'buttondownrelief') def test_buttonuprelief(self): widget = self.create() self.checkReliefParam(widget, 'buttonuprelief') def test_format(self): widget = self.create() self.checkParam(widget, 'format', '%2f') self.checkParam(widget, 'format', '%2.2f') self.checkParam(widget, 'format', '%.2f') self.checkParam(widget, 'format', '%2.f') self.checkInvalidParam(widget, 'format', '%2e-1f') self.checkInvalidParam(widget, 'format', '2.2') self.checkInvalidParam(widget, 'format', '%2.-2f') self.checkParam(widget, 'format', '%-2.02f') self.checkParam(widget, 'format', '% 2.02f') self.checkParam(widget, 'format', '% -2.200f') self.checkParam(widget, 'format', '%09.200f') self.checkInvalidParam(widget, 'format', '%d') def test_from(self): widget = self.create() self.checkParam(widget, 'to', 100.0) self.checkFloatParam(widget, 'from', -10, 10.2, 11.7) self.checkInvalidParam(widget, 'from', 200, errmsg='-to value must be greater than -from value') def test_increment(self): widget = self.create() self.checkFloatParam(widget, 'increment', -1, 1, 10.2, 12.8, 0) def test_to(self): widget = self.create() self.checkParam(widget, 'from', -100.0) self.checkFloatParam(widget, 'to', -10, 10.2, 11.7) self.checkInvalidParam(widget, 'to', -200, errmsg='-to value must be greater than -from value') def test_values(self): # XXX widget = self.create() self.assertEqual(widget['values'], '') self.checkParam(widget, 'values', 'mon tue wed thur') self.checkParam(widget, 'values', ('mon', 'tue', 'wed', 'thur'), expected='mon tue wed thur') self.checkParam(widget, 'values', (42, 3.14, '', 'any string'), expected='42 3.14 {} {any string}') self.checkParam(widget, 'values', '') def test_wrap(self): widget = self.create() self.checkBooleanParam(widget, 'wrap') def test_bbox(self): widget = self.create() self.assertIsBoundingBox(widget.bbox(0)) self.assertRaises(tkinter.TclError, widget.bbox, 'noindex') self.assertRaises(tkinter.TclError, widget.bbox, None) self.assertRaises(TypeError, widget.bbox) self.assertRaises(TypeError, widget.bbox, 0, 1) def test_selection_element(self): widget = self.create() self.assertEqual(widget.selection_element(), "none") widget.selection_element("buttonup") self.assertEqual(widget.selection_element(), "buttonup") widget.selection_element("buttondown") self.assertEqual(widget.selection_element(), "buttondown") @add_standard_options(StandardOptionsTests) class TextTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'autoseparators', 'background', 'blockcursor', 'borderwidth', 'cursor', 'endline', 'exportselection', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'inactiveselectbackground', 'insertbackground', 'insertborderwidth', 'insertofftime', 'insertontime', 'insertunfocussed', 'insertwidth', 'maxundo', 'padx', 'pady', 'relief', 'selectbackground', 'selectborderwidth', 'selectforeground', 'setgrid', 'spacing1', 'spacing2', 'spacing3', 'startline', 'state', 'tabs', 'tabstyle', 'takefocus', 'undo', 'width', 'wrap', 'xscrollcommand', 'yscrollcommand', ) if tcl_version < (8, 5): _stringify = True def create(self, **kwargs): return tkinter.Text(self.root, **kwargs) def test_autoseparators(self): widget = self.create() self.checkBooleanParam(widget, 'autoseparators') @requires_tcl(8, 5) def test_blockcursor(self): widget = self.create() self.checkBooleanParam(widget, 'blockcursor') @requires_tcl(8, 5) def test_endline(self): widget = self.create() text = '\n'.join('Line %d' for i in range(100)) widget.insert('end', text) self.checkParam(widget, 'endline', 200, expected='') self.checkParam(widget, 'endline', -10, expected='') self.checkInvalidParam(widget, 'endline', 'spam', errmsg='expected integer but got "spam"') self.checkParam(widget, 'endline', 50) self.checkParam(widget, 'startline', 15) self.checkInvalidParam(widget, 'endline', 10, errmsg='-startline must be less than or equal to -endline') def test_height(self): widget = self.create() self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, '3c') self.checkParam(widget, 'height', -100, expected=1) self.checkParam(widget, 'height', 0, expected=1) def test_maxundo(self): widget = self.create() self.checkIntegerParam(widget, 'maxundo', 0, 5, -1) @requires_tcl(8, 5) def test_inactiveselectbackground(self): widget = self.create() self.checkColorParam(widget, 'inactiveselectbackground') @requires_tcl(8, 6) def test_insertunfocussed(self): widget = self.create() self.checkEnumParam(widget, 'insertunfocussed', 'hollow', 'none', 'solid') def test_selectborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'selectborderwidth', 1.3, 2.6, -2, '10p', conv=noconv, keep_orig=tcl_version >= (8, 5)) def test_spacing1(self): widget = self.create() self.checkPixelsParam(widget, 'spacing1', 20, 21.4, 22.6, '0.5c') self.checkParam(widget, 'spacing1', -5, expected=0) def test_spacing2(self): widget = self.create() self.checkPixelsParam(widget, 'spacing2', 5, 6.4, 7.6, '0.1c') self.checkParam(widget, 'spacing2', -1, expected=0) def test_spacing3(self): widget = self.create() self.checkPixelsParam(widget, 'spacing3', 20, 21.4, 22.6, '0.5c') self.checkParam(widget, 'spacing3', -10, expected=0) @requires_tcl(8, 5) def test_startline(self): widget = self.create() text = '\n'.join('Line %d' for i in range(100)) widget.insert('end', text) self.checkParam(widget, 'startline', 200, expected='') self.checkParam(widget, 'startline', -10, expected='') self.checkInvalidParam(widget, 'startline', 'spam', errmsg='expected integer but got "spam"') self.checkParam(widget, 'startline', 10) self.checkParam(widget, 'endline', 50) self.checkInvalidParam(widget, 'startline', 70, errmsg='-startline must be less than or equal to -endline') def test_state(self): widget = self.create() if tcl_version < (8, 5): self.checkParams(widget, 'state', 'disabled', 'normal') else: self.checkEnumParam(widget, 'state', 'disabled', 'normal') def test_tabs(self): widget = self.create() if get_tk_patchlevel() < (8, 5, 11): self.checkParam(widget, 'tabs', (10.2, 20.7, '1i', '2i'), expected=('10.2', '20.7', '1i', '2i')) else: self.checkParam(widget, 'tabs', (10.2, 20.7, '1i', '2i')) self.checkParam(widget, 'tabs', '10.2 20.7 1i 2i', expected=('10.2', '20.7', '1i', '2i')) self.checkParam(widget, 'tabs', '2c left 4c 6c center', expected=('2c', 'left', '4c', '6c', 'center')) self.checkInvalidParam(widget, 'tabs', 'spam', errmsg='bad screen distance "spam"', keep_orig=tcl_version >= (8, 5)) @requires_tcl(8, 5) def test_tabstyle(self): widget = self.create() self.checkEnumParam(widget, 'tabstyle', 'tabular', 'wordprocessor') def test_undo(self): widget = self.create() self.checkBooleanParam(widget, 'undo') def test_width(self): widget = self.create() self.checkIntegerParam(widget, 'width', 402) self.checkParam(widget, 'width', -402, expected=1) self.checkParam(widget, 'width', 0, expected=1) def test_wrap(self): widget = self.create() if tcl_version < (8, 5): self.checkParams(widget, 'wrap', 'char', 'none', 'word') else: self.checkEnumParam(widget, 'wrap', 'char', 'none', 'word') def test_bbox(self): widget = self.create() self.assertIsBoundingBox(widget.bbox('1.1')) self.assertIsNone(widget.bbox('end')) self.assertRaises(tkinter.TclError, widget.bbox, 'noindex') self.assertRaises(tkinter.TclError, widget.bbox, None) self.assertRaises(tkinter.TclError, widget.bbox) self.assertRaises(tkinter.TclError, widget.bbox, '1.1', 'end') @add_standard_options(PixelSizeTests, StandardOptionsTests) class CanvasTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'closeenough', 'confine', 'cursor', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'insertbackground', 'insertborderwidth', 'insertofftime', 'insertontime', 'insertwidth', 'offset', 'relief', 'scrollregion', 'selectbackground', 'selectborderwidth', 'selectforeground', 'state', 'takefocus', 'xscrollcommand', 'xscrollincrement', 'yscrollcommand', 'yscrollincrement', 'width', ) _conv_pixels = staticmethod(int_round) _stringify = True def create(self, **kwargs): return tkinter.Canvas(self.root, **kwargs) def test_closeenough(self): widget = self.create() self.checkFloatParam(widget, 'closeenough', 24, 2.4, 3.6, -3, conv=float) def test_confine(self): widget = self.create() self.checkBooleanParam(widget, 'confine') def test_offset(self): widget = self.create() self.assertEqual(widget['offset'], '0,0') self.checkParams(widget, 'offset', 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'center') self.checkParam(widget, 'offset', '10,20') self.checkParam(widget, 'offset', '#5,6') self.checkInvalidParam(widget, 'offset', 'spam') def test_scrollregion(self): widget = self.create() self.checkParam(widget, 'scrollregion', '0 0 200 150') self.checkParam(widget, 'scrollregion', (0, 0, 200, 150), expected='0 0 200 150') self.checkParam(widget, 'scrollregion', '') self.checkInvalidParam(widget, 'scrollregion', 'spam', errmsg='bad scrollRegion "spam"') self.checkInvalidParam(widget, 'scrollregion', (0, 0, 200, 'spam')) self.checkInvalidParam(widget, 'scrollregion', (0, 0, 200)) self.checkInvalidParam(widget, 'scrollregion', (0, 0, 200, 150, 0)) def test_state(self): widget = self.create() self.checkEnumParam(widget, 'state', 'disabled', 'normal', errmsg='bad state value "{}": must be normal or disabled') def test_xscrollincrement(self): widget = self.create() self.checkPixelsParam(widget, 'xscrollincrement', 40, 0, 41.2, 43.6, -40, '0.5i') def test_yscrollincrement(self): widget = self.create() self.checkPixelsParam(widget, 'yscrollincrement', 10, 0, 11.2, 13.6, -10, '0.1i') @add_standard_options(IntegerSizeTests, StandardOptionsTests) class ListboxTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'activestyle', 'background', 'borderwidth', 'cursor', 'disabledforeground', 'exportselection', 'font', 'foreground', 'height', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'justify', 'listvariable', 'relief', 'selectbackground', 'selectborderwidth', 'selectforeground', 'selectmode', 'setgrid', 'state', 'takefocus', 'width', 'xscrollcommand', 'yscrollcommand', ) def create(self, **kwargs): return tkinter.Listbox(self.root, **kwargs) def test_activestyle(self): widget = self.create() self.checkEnumParam(widget, 'activestyle', 'dotbox', 'none', 'underline') test_justify = requires_tcl(8, 6, 5)(StandardOptionsTests.test_justify.im_func) def test_listvariable(self): widget = self.create() var = tkinter.DoubleVar(self.root) self.checkVariableParam(widget, 'listvariable', var) def test_selectmode(self): widget = self.create() self.checkParam(widget, 'selectmode', 'single') self.checkParam(widget, 'selectmode', 'browse') self.checkParam(widget, 'selectmode', 'multiple') self.checkParam(widget, 'selectmode', 'extended') def test_state(self): widget = self.create() self.checkEnumParam(widget, 'state', 'disabled', 'normal') def test_itemconfigure(self): widget = self.create() with self.assertRaisesRegexp(TclError, 'item number "0" out of range'): widget.itemconfigure(0) colors = 'red orange yellow green blue white violet'.split() widget.insert('end', *colors) for i, color in enumerate(colors): widget.itemconfigure(i, background=color) with self.assertRaises(TypeError): widget.itemconfigure() with self.assertRaisesRegexp(TclError, 'bad listbox index "red"'): widget.itemconfigure('red') self.assertEqual(widget.itemconfigure(0, 'background'), ('background', 'background', 'Background', '', 'red')) self.assertEqual(widget.itemconfigure('end', 'background'), ('background', 'background', 'Background', '', 'violet')) self.assertEqual(widget.itemconfigure('@0,0', 'background'), ('background', 'background', 'Background', '', 'red')) d = widget.itemconfigure(0) self.assertIsInstance(d, dict) for k, v in d.items(): self.assertIn(len(v), (2, 5)) if len(v) == 5: self.assertEqual(v, widget.itemconfigure(0, k)) self.assertEqual(v[4], widget.itemcget(0, k)) def check_itemconfigure(self, name, value): widget = self.create() widget.insert('end', 'a', 'b', 'c', 'd') widget.itemconfigure(0, **{name: value}) self.assertEqual(widget.itemconfigure(0, name)[4], value) self.assertEqual(widget.itemcget(0, name), value) with self.assertRaisesRegexp(TclError, 'unknown color name "spam"'): widget.itemconfigure(0, **{name: 'spam'}) def test_itemconfigure_background(self): self.check_itemconfigure('background', '#ff0000') def test_itemconfigure_bg(self): self.check_itemconfigure('bg', '#ff0000') def test_itemconfigure_fg(self): self.check_itemconfigure('fg', '#110022') def test_itemconfigure_foreground(self): self.check_itemconfigure('foreground', '#110022') def test_itemconfigure_selectbackground(self): self.check_itemconfigure('selectbackground', '#110022') def test_itemconfigure_selectforeground(self): self.check_itemconfigure('selectforeground', '#654321') def test_box(self): lb = self.create() lb.insert(0, *('el%d' % i for i in range(8))) lb.pack() self.assertIsBoundingBox(lb.bbox(0)) self.assertIsNone(lb.bbox(-1)) self.assertIsNone(lb.bbox(10)) self.assertRaises(TclError, lb.bbox, 'noindex') self.assertRaises(TclError, lb.bbox, None) self.assertRaises(TypeError, lb.bbox) self.assertRaises(TypeError, lb.bbox, 0, 1) def test_curselection(self): lb = self.create() lb.insert(0, *('el%d' % i for i in range(8))) lb.selection_clear(0, tkinter.END) lb.selection_set(2, 4) lb.selection_set(6) self.assertEqual(lb.curselection(), (2, 3, 4, 6)) self.assertRaises(TypeError, lb.curselection, 0) def test_get(self): lb = self.create() lb.insert(0, *('el%d' % i for i in range(8))) self.assertEqual(lb.get(0), 'el0') self.assertEqual(lb.get(3), 'el3') self.assertEqual(lb.get('end'), 'el7') self.assertEqual(lb.get(8), '') self.assertEqual(lb.get(-1), '') self.assertEqual(lb.get(3, 5), ('el3', 'el4', 'el5')) self.assertEqual(lb.get(5, 'end'), ('el5', 'el6', 'el7')) self.assertEqual(lb.get(5, 0), ()) self.assertEqual(lb.get(0, 0), ('el0',)) self.assertRaises(TclError, lb.get, 'noindex') self.assertRaises(TclError, lb.get, None) self.assertRaises(TypeError, lb.get) self.assertRaises(TclError, lb.get, 'end', 'noindex') self.assertRaises(TypeError, lb.get, 1, 2, 3) self.assertRaises(TclError, lb.get, 2.4) @add_standard_options(PixelSizeTests, StandardOptionsTests) class ScaleTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'background', 'bigincrement', 'borderwidth', 'command', 'cursor', 'digits', 'font', 'foreground', 'from', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'label', 'length', 'orient', 'relief', 'repeatdelay', 'repeatinterval', 'resolution', 'showvalue', 'sliderlength', 'sliderrelief', 'state', 'takefocus', 'tickinterval', 'to', 'troughcolor', 'variable', 'width', ) default_orient = 'vertical' def create(self, **kwargs): return tkinter.Scale(self.root, **kwargs) def test_bigincrement(self): widget = self.create() self.checkFloatParam(widget, 'bigincrement', 12.4, 23.6, -5) def test_digits(self): widget = self.create() self.checkIntegerParam(widget, 'digits', 5, 0) def test_from(self): widget = self.create() self.checkFloatParam(widget, 'from', 100, 14.9, 15.1, conv=round) def test_label(self): widget = self.create() self.checkParam(widget, 'label', 'any string') self.checkParam(widget, 'label', '') def test_length(self): widget = self.create() self.checkPixelsParam(widget, 'length', 130, 131.2, 135.6, '5i') def test_resolution(self): widget = self.create() self.checkFloatParam(widget, 'resolution', 4.2, 0, 6.7, -2) def test_showvalue(self): widget = self.create() self.checkBooleanParam(widget, 'showvalue') def test_sliderlength(self): widget = self.create() self.checkPixelsParam(widget, 'sliderlength', 10, 11.2, 15.6, -3, '3m') def test_sliderrelief(self): widget = self.create() self.checkReliefParam(widget, 'sliderrelief') def test_tickinterval(self): widget = self.create() self.checkFloatParam(widget, 'tickinterval', 1, 4.3, 7.6, 0, conv=round) self.checkParam(widget, 'tickinterval', -2, expected=2, conv=round) def test_to(self): widget = self.create() self.checkFloatParam(widget, 'to', 300, 14.9, 15.1, -10, conv=round) @add_standard_options(PixelSizeTests, StandardOptionsTests) class ScrollbarTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activerelief', 'background', 'borderwidth', 'command', 'cursor', 'elementborderwidth', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'jump', 'orient', 'relief', 'repeatdelay', 'repeatinterval', 'takefocus', 'troughcolor', 'width', ) _conv_pixels = staticmethod(int_round) _stringify = True default_orient = 'vertical' def create(self, **kwargs): return tkinter.Scrollbar(self.root, **kwargs) def test_activerelief(self): widget = self.create() self.checkReliefParam(widget, 'activerelief') def test_elementborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'elementborderwidth', 4.3, 5.6, -2, '1m') def test_orient(self): widget = self.create() self.checkEnumParam(widget, 'orient', 'vertical', 'horizontal', errmsg='bad orientation "{}": must be vertical or horizontal') def test_activate(self): sb = self.create() for e in ('arrow1', 'slider', 'arrow2'): sb.activate(e) sb.activate('') self.assertRaises(TypeError, sb.activate) self.assertRaises(TypeError, sb.activate, 'arrow1', 'arrow2') def test_set(self): sb = self.create() sb.set(0.2, 0.4) self.assertEqual(sb.get(), (0.2, 0.4)) self.assertRaises(TclError, sb.set, 'abc', 'def') self.assertRaises(TclError, sb.set, 0.6, 'def') self.assertRaises(TclError, sb.set, 0.6, None) self.assertRaises(TclError, sb.set, 0.6) self.assertRaises(TclError, sb.set, 0.6, 0.7, 0.8) @add_standard_options(StandardOptionsTests) class PanedWindowTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'background', 'borderwidth', 'cursor', 'handlepad', 'handlesize', 'height', 'opaqueresize', 'orient', 'proxybackground', 'proxyborderwidth', 'proxyrelief', 'relief', 'sashcursor', 'sashpad', 'sashrelief', 'sashwidth', 'showhandle', 'width', ) default_orient = 'horizontal' def create(self, **kwargs): return tkinter.PanedWindow(self.root, **kwargs) def test_handlepad(self): widget = self.create() self.checkPixelsParam(widget, 'handlepad', 5, 6.4, 7.6, -3, '1m') def test_handlesize(self): widget = self.create() self.checkPixelsParam(widget, 'handlesize', 8, 9.4, 10.6, -3, '2m', conv=noconv) def test_height(self): widget = self.create() self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0, '1i', conv=noconv) def test_opaqueresize(self): widget = self.create() self.checkBooleanParam(widget, 'opaqueresize') @requires_tcl(8, 6, 5) def test_proxybackground(self): widget = self.create() self.checkColorParam(widget, 'proxybackground') @requires_tcl(8, 6, 5) def test_proxyborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'proxyborderwidth', 0, 1.3, 2.9, 6, -2, '10p', conv=noconv) @requires_tcl(8, 6, 5) def test_proxyrelief(self): widget = self.create() self.checkReliefParam(widget, 'proxyrelief') def test_sashcursor(self): widget = self.create() self.checkCursorParam(widget, 'sashcursor') def test_sashpad(self): widget = self.create() self.checkPixelsParam(widget, 'sashpad', 8, 1.3, 2.6, -2, '2m') def test_sashrelief(self): widget = self.create() self.checkReliefParam(widget, 'sashrelief') def test_sashwidth(self): widget = self.create() self.checkPixelsParam(widget, 'sashwidth', 10, 11.1, 15.6, -3, '1m', conv=noconv) def test_showhandle(self): widget = self.create() self.checkBooleanParam(widget, 'showhandle') def test_width(self): widget = self.create() self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0, '5i', conv=noconv) def create2(self): p = self.create() b = tkinter.Button(p) c = tkinter.Button(p) p.add(b) p.add(c) return p, b, c def test_paneconfigure(self): p, b, c = self.create2() self.assertRaises(TypeError, p.paneconfigure) d = p.paneconfigure(b) self.assertIsInstance(d, dict) for k, v in d.items(): self.assertEqual(len(v), 5) self.assertEqual(v, p.paneconfigure(b, k)) self.assertEqual(v[4], p.panecget(b, k)) def check_paneconfigure(self, p, b, name, value, expected, stringify=False): conv = lambda x: x if not self.wantobjects or stringify: expected = str(expected) if self.wantobjects and stringify: conv = str p.paneconfigure(b, **{name: value}) self.assertEqual(conv(p.paneconfigure(b, name)[4]), expected) self.assertEqual(conv(p.panecget(b, name)), expected) def check_paneconfigure_bad(self, p, b, name, msg): with self.assertRaisesRegexp(TclError, msg): p.paneconfigure(b, **{name: 'badValue'}) def test_paneconfigure_after(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'after', c, str(c)) self.check_paneconfigure_bad(p, b, 'after', 'bad window path name "badValue"') def test_paneconfigure_before(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'before', c, str(c)) self.check_paneconfigure_bad(p, b, 'before', 'bad window path name "badValue"') def test_paneconfigure_height(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'height', 10, 10, stringify=get_tk_patchlevel() < (8, 5, 11)) self.check_paneconfigure_bad(p, b, 'height', 'bad screen distance "badValue"') @requires_tcl(8, 5) def test_paneconfigure_hide(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'hide', False, 0) self.check_paneconfigure_bad(p, b, 'hide', 'expected boolean value but got "badValue"') def test_paneconfigure_minsize(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'minsize', 10, 10) self.check_paneconfigure_bad(p, b, 'minsize', 'bad screen distance "badValue"') def test_paneconfigure_padx(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'padx', 1.3, 1) self.check_paneconfigure_bad(p, b, 'padx', 'bad screen distance "badValue"') def test_paneconfigure_pady(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'pady', 1.3, 1) self.check_paneconfigure_bad(p, b, 'pady', 'bad screen distance "badValue"') def test_paneconfigure_sticky(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'sticky', 'nsew', 'nesw') self.check_paneconfigure_bad(p, b, 'sticky', 'bad stickyness value "badValue": must ' 'be a string containing zero or more of ' 'n, e, s, and w') @requires_tcl(8, 5) def test_paneconfigure_stretch(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'stretch', 'alw', 'always') self.check_paneconfigure_bad(p, b, 'stretch', 'bad stretch "badValue": must be ' 'always, first, last, middle, or never') def test_paneconfigure_width(self): p, b, c = self.create2() self.check_paneconfigure(p, b, 'width', 10, 10, stringify=get_tk_patchlevel() < (8, 5, 11)) self.check_paneconfigure_bad(p, b, 'width', 'bad screen distance "badValue"') @add_standard_options(StandardOptionsTests) class MenuTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'activebackground', 'activeborderwidth', 'activeforeground', 'background', 'borderwidth', 'cursor', 'disabledforeground', 'font', 'foreground', 'postcommand', 'relief', 'selectcolor', 'takefocus', 'tearoff', 'tearoffcommand', 'title', 'type', ) _conv_pixels = noconv_meth def create(self, **kwargs): return tkinter.Menu(self.root, **kwargs) def test_postcommand(self): widget = self.create() self.checkCommandParam(widget, 'postcommand') def test_tearoff(self): widget = self.create() self.checkBooleanParam(widget, 'tearoff') def test_tearoffcommand(self): widget = self.create() self.checkCommandParam(widget, 'tearoffcommand') def test_title(self): widget = self.create() self.checkParam(widget, 'title', 'any string') def test_type(self): widget = self.create() self.checkEnumParam(widget, 'type', 'normal', 'tearoff', 'menubar') def test_entryconfigure(self): m1 = self.create() m1.add_command(label='test') self.assertRaises(TypeError, m1.entryconfigure) with self.assertRaisesRegexp(TclError, 'bad menu entry index "foo"'): m1.entryconfigure('foo') d = m1.entryconfigure(1) self.assertIsInstance(d, dict) for k, v in d.items(): self.assertIsInstance(k, str) self.assertIsInstance(v, tuple) self.assertEqual(len(v), 5) self.assertEqual(v[0], k) self.assertEqual(m1.entrycget(1, k), v[4]) m1.destroy() def test_entryconfigure_label(self): m1 = self.create() m1.add_command(label='test') self.assertEqual(m1.entrycget(1, 'label'), 'test') m1.entryconfigure(1, label='changed') self.assertEqual(m1.entrycget(1, 'label'), 'changed') def test_entryconfigure_variable(self): m1 = self.create() v1 = tkinter.BooleanVar(self.root) v2 = tkinter.BooleanVar(self.root) m1.add_checkbutton(variable=v1, onvalue=True, offvalue=False, label='Nonsense') self.assertEqual(str(m1.entrycget(1, 'variable')), str(v1)) m1.entryconfigure(1, variable=v2) self.assertEqual(str(m1.entrycget(1, 'variable')), str(v2)) @add_standard_options(PixelSizeTests, StandardOptionsTests) class MessageTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'anchor', 'aspect', 'background', 'borderwidth', 'cursor', 'font', 'foreground', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'justify', 'padx', 'pady', 'relief', 'takefocus', 'text', 'textvariable', 'width', ) _conv_pad_pixels = noconv_meth def create(self, **kwargs): return tkinter.Message(self.root, **kwargs) def test_aspect(self): widget = self.create() self.checkIntegerParam(widget, 'aspect', 250, 0, -300) tests_gui = [ ButtonTest, CanvasTest, CheckbuttonTest, EntryTest, FrameTest, LabelFrameTest,LabelTest, ListboxTest, MenubuttonTest, MenuTest, MessageTest, OptionMenuTest, PanedWindowTest, RadiobuttonTest, ScaleTest, ScrollbarTest, SpinboxTest, TextTest, ToplevelTest, ] if __name__ == '__main__': run_unittest(*tests_gui) test/test_tkinter/test_widgets.pyc000064400000172022151703463030013472 0ustar00� zfc@sTddlZddlZddlmZddlZddlZddlmZmZddl m Z mZmZm Z ddlmZmZmZmZmZmZmZmZmZmZed�deefd��YZee�d eejfd ��Y�Zee�deejfd��Y�Zee�d eejfd��Y�Zdeefd��YZee�deejfd��Y�Zee�deejfd��Y�Z ee�deejfd��Y�Z!ee�deejfd��Y�Z"ee�deejfd��Y�Z#de#ejfd��YZ$eee�deejfd��Y�Z%ee�de%ejfd ��Y�Z&ee�d!eejfd"��Y�Z'eee�d#eejfd$��Y�Z(eee�d%eejfd&��Y�Z)eee�d'eejfd(��Y�Z*eee�d)eejfd*��Y�Z+ee�d+eejfd,��Y�Z,ee�d-eejfd.��Y�Z-eee�d/eejfd0��Y�Z.e e(e!e%eeee)e#e-e.e$e,e"e*e+e&e'egZ/e0d1krPee/�ndS(2i����N(tTclError(trequirestrun_unittest(ttcl_versiontrequires_tcltget_tk_patchlevelt widget_eq( tadd_standard_optionstnoconvtnoconv_metht int_roundtpixels_roundtAbstractWidgetTesttStandardOptionsTeststIntegerSizeTeststPixelSizeTeststsetUpModuletguitAbstractToplevelTestcBs2eZeZd�Zd�Zd�Zd�ZRS(cCso|j�}|j|d|jjj��|j|dddd�|jdd�}|j|dd�dS(NtclasstFooterrmsgs2can't modify -class option after widget is createdtclass_(tcreatetassertEqualt __class__t__name__ttitletcheckInvalidParam(tselftwidgettwidget2((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_classs cCsc|j�}|j|dd�|j|dddd�|jdd�}|j|dd�dS(NtcolormapttnewRs5can't modify -colormap option after widget is created(RRR(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_colormapscCs�|j�}|j|d|jr(dnd�|j|dddd�|jdt�}|j|d|jrvdnd�dS(Nt containerit0iRs6can't modify -container option after widget is createdt1(RRtwantobjectsRtTrue(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_container's#cCsc|j�}|j|dd�|j|dddd�|jdd�}|j|dd�dS(NtvisualR"tdefaultRs3can't modify -visual option after widget is created(RRR(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_visual/s(Rt __module__R t_conv_pad_pixelsR R$R*R-(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRs tToplevelTestcBs2eZdZd�Zd�Zd�Zd�ZRS(t backgroundtborderwidthRR!R%tcursortheightthighlightbackgroundthighlightcolorthighlightthicknesstmenutpadxtpadytrelieftscreent takefocustuseR+twidthcKstj|j|�S(N(ttkintertTopleveltroot(Rtkwargs((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRBscCsN|j�}tj|j�}|j|d|dt�|j|dd�dS(NR8teqR"(RR@tMenuRBt checkParamR(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_menuEscCs�|j�}|j|dd�ytjd}Wntk rQ|jd�nX|j|d|dd�|jd|�}|j|d|�dS(NR<R"tDISPLAYsNo $DISPLAY set.Rs3can't modify -screen option after widget is created(RRtostenvirontKeyErrortskipTestR(RRtdisplayR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_screenKs cCsl|j�}|j|dd�|jdt�}d|j�}|jd|�}|j|d|�dS(NR>R"R%s%#x(RRR)twinfo_id(RRtparenttwidR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_useWs(R1R2RR!R%R3R4R5R6R7R8R9R:R;R<R=R>R+R?(RR.tOPTIONSRRGRNRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR08s t FrameTestcBseZdZd�ZRS(R1R2RR!R%R3R4R5R6R7R9R:R;R=R+R?cKstj|j|�S(N(R@tFrameRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRjs(R1R2RR!R%R3R4R5R6R7R9R:R;R=R+R?(RR.RSR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRTas tLabelFrameTestcBs)eZdZd�Zd�Zd�ZRS(R1R2RR!R%R3tfontt foregroundR4R5R6R7tlabelanchortlabelwidgetR9R:R;R=ttextR+R?cKstj|j|�S(N(R@t LabelFrameRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRyscCsW|j�}|j|ddddddddd d ddd �|j|dd�dS(NRYtetentestntnetnwtstsetswtwtwntwstcenter(RtcheckEnumParamR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_labelanchor|s cCsQ|j�}tj|jdddd�}|j|d|dd�|j�dS(NR[tMupptnametfooRZtexpecteds.foo(RR@tLabelRBRFtdestroy(RRtlabel((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_labelwidget�s(R1R2RR!R%R3RWRXR4R5R6R7RYRZR9R:R;R=R[R+R?(RR.RSRRkRs(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRVns tAbstractLabelTestcBseZeZd�ZRS(c Cs2|j�}|j|ddddddd�dS(NR7ig�������?g������@ii����t10p(RtcheckPixelsParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_highlightthickness�s(RR.R t_conv_pixelsRw(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRt�st LabelTestcBseZdZd�ZRS(tactivebackgroundtactiveforegroundtanchorR1tbitmapR2tcompoundR3tdisabledforegroundRWRXR4R5R6R7timagetjustifyR9R:R;tstateR=R[ttextvariablet underlineR?t wraplengthcKstj|j|�S(N(R@RpRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s(RzR{R|R1R}R2R~R3RRWRXR4R5R6R7R�R�R9R:R;R�R=R[R�R�R?R�(RR.RSR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRy�st ButtonTestc Bs eZd"Zd �Zd!�ZRS(#RzR{R|R1R}R2tcommandR~R3R,RRWRXR4R5R6R7R�R�t overreliefR9R:R;trepeatdelaytrepeatintervalR�R=R[R�R�R?R�cKstj|j|�S(N(R@tButtonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR,tactivetdisabledtnormal(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_default�s( RzR{R|R1R}R2R�R~R3R,RRWRXR4R5R6R7R�R�R�R9R:R;R�R�R�R=R[R�R�R?R�(RR.RSRR�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tCheckbuttonTestc&Bs)eZd)Zd&�Zd'�Zd(�ZRS(*RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�tindicatoronR�t offrelieftoffvaluetonvalueR�R9R:R;tselectcolortselectimageR�R=R[R�t tristateimaget tristatevalueR�tvariableR?R�cKstj|j|�S(N(R@tCheckbuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RtcheckParams(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_offvalue�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_onvalue�s(&RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�R�R?R�(RR.RSRR�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tRadiobuttonTestc%Bs eZd'Zd%�Zd&�ZRS((RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�tvalueR�R?R�cKstj|j|�S(N(R@tRadiobuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_value�s(%RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�R�R�R?R�(RR.RSRR�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tMenubuttonTestcBs�eZd(Zee�Zd�Zd�Zd �Ze j jZ ej ejd!kd"�d#��Zd$�Zd%�Zd&�Zd'�ZRS()RzR{R|R1R}R2R~R3t directionRRWRXR4R5R6R7R�R�R�R8R9R:R;R�R=R[R�R�R?R�cKstj|j|�S(N(R@t MenubuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR�tabovetbelowtflushtlefttright(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_direction�scCs/|j�}|j|dddddt�dS(NR4idi����itconv(RtcheckIntegerParamtstr(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_heightstdarwins"crashes with Cocoa Tk (issue19733)c Cs�|j�}tjd|jdd�}|j|d|dt�d}|jtj��}d|d<WdQX|dk r�|j t|j �|�n|jtj��}|jidd6�WdQX|dk r�|j t|j �|�ndS(NtmasterRmtimage1R�R�simage "spam" doesn't existtspam(RR@t PhotoImageRBRFR�tassertRaisesRtNoneRt exceptiont configure(RRR�Rtcm((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_image scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRmR8RD(RR@RERFRRq(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRGscCsE|j�}|j|ddddd�|j|dddd�dS( NR9ig������@gffffff@t12mi����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_padxscCsE|j�}|j|ddddd�|j|dddd�dS( NR:ig������@gffffff@R�i����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_pady$scCs/|j�}|j|dddddt�dS(NR?i�in���iR�(RR�R�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_width)s(RzR{R|R1R}R2R~R3R�RRWRXR4R5R6R7R�R�R�R8R9R:R;R�R=R[R�R�R?R�(RR.RStstaticmethodRRxRR�R�R Rwtim_functunittesttskipIftsystplatformR�RGR�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s( tOptionMenuTestcBseZddd�ZRS(tbtatccKstj|jd|||�S(N(R@t OptionMenuRBR�(RR,tvaluesRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR0s(R�R�R�(RR.R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�.st EntryTestcBsheZd)Zd�Zd �Zd!�Zd"�Zd#�Zd$�Zd%�Z d&�Z d'�Zd(�ZRS(*R1R2R3tdisabledbackgroundRtexportselectionRWRXR5R6R7tinsertbackgroundtinsertborderwidtht insertofftimetinsertontimetinsertwidthtinvalidcommandR�treadonlybackgroundR;tselectbackgroundtselectborderwidthtselectforegroundtshowR�R=R�tvalidatetvalidatecommandR?txscrollcommandcKstj|j|�S(N(R@tEntryRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRCscCs |j�}|j|d�dS(NR�(RtcheckColorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_disabledbackgroundFsc CsQ|jdd�}|j|ddddddd �|j|dd dd �dS(NR�idR�ig�������?g������@ii����Rui<Roii2(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertborderwidthJscCs�|j�}|j|dddd�|j|dddd�|j|dddd�td �d kr�|j|dd dd�n|j|dd dd�dS(NR�g�������?g������@Rug�������?Roii����g�������?ii(RRvRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertwidthQscCs0|j�}|j|d�|j|d�dS(NR�tinvcmd(RtcheckCommandParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_invalidcommand[scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_readonlybackground`scCsI|j�}|j|dd�|j|dd�|j|dd�dS(NR�t*R"t (RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_showdscCs)|j�}|j|dddd�dS(NR�R�R�treadonly(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_statejsc Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusouttnone(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_validateoscCs0|j�}|j|d�|j|d�dS(NR�tvcmd(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_validatecommandts(R1R2R3R�RR�RWRXR5R6R7R�R�R�R�R�R�R�R�R;R�R�R�R�R�R=R�R�R�R?R�( RR.RSRR�R�R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�4s( tSpinboxTestc,Bs�eZd9Zd,�Zd:Zd-�Zd.�Zd/�Zd0�Z d1�Z d2�Zd3�Zd4�Z d5�Zd6�Zd7�Zd8�ZRS(;RzR1R2tbuttonbackgroundtbuttoncursortbuttondownrelieftbuttonupreliefR�R3R�RR�RWRXtformattfromR5R6R7t incrementR�R�R�R�R�R�R�R;R�R�R�R�R�R�R�R=R�ttoR�R�R�R?twrapR�cKstj|j|�S(N(R@tSpinboxRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonbackground�scCs |j�}|j|d�dS(NR�(RtcheckCursorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttoncursor�scCs |j�}|j|d�dS(NR�(RtcheckReliefParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttondownrelief�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonuprelief�scCs�|j�}|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd �|j|dd �|j|dd�|j|dd�|j|dd �dS(NR�s%2fs%2.2fs%.2fs%2.fs%2e-1fs2.2s%2.-2fs%-2.02fs% 2.02fs % -2.200fs%09.200fs%d(RRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_format�scCsU|j�}|j|dd�|j|dddd�|j|dddd �dS( NR�gY@R�i����gffffff$@gffffff'@i�Rs*-to value must be greater than -from value(RRFtcheckFloatParamR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_from�s cCs/|j�}|j|dddddd�dS(NR�i����igffffff$@g������)@i(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_increment�scCsU|j�}|j|dd�|j|dddd�|j|dddd �dS( NR�gY�R�i����gffffff$@gffffff'@i8���Rs*-to value must be greater than -from value(RRFRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_to�s cCs||j�}|j|dd�|j|dd�|j|dd dd�|j|dddd�|j|dd�dS(NR�R"smon tue wed thurtmonttuetwedtthurRoi*g��Q� @s any strings42 3.14 {} {any string}(RR R R(i*g��Q� @R"s any string(RRRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_values�scCs |j�}|j|d�dS(NR�(RtcheckBooleanParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_wrap�scCs�|j�}|j|jd��|jtj|jd�|jtj|jd�|jt|j�|jt|jdd�dS(Nitnoindexi(RtassertIsBoundingBoxtbboxR�R@RR�t TypeError(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_bbox�scCsl|j�}|j|j�d�|jd�|j|j�d�|jd�|j|j�d�dS(NR�tbuttonupt buttondown(RRtselection_element(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selection_element�s (,RzR1R2R�R�R�R�R�R3R�RR�RWRXR�R�R5R6R7R�R�R�R�R�R�R�R�R;R�R�R�R�R�R�R�R=R�R�R�R�R�R?R�R�N(RR.RSRR�R�R�R�RRRRRRRRRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�zs8 tTextTestc)Bs1eZd@ZedAkr!eZnd+�Zd,�Zed)d*�d-��Z ed)d*�d.��Z d/�Zd0�Zed)d*�d1��Z ed)d2�d3��Zd4�Zd5�Zd6�Zd7�Zed)d*�d8��Zd9�Zd:�Zed)d*�d;��Zd<�Zd=�Zd>�Zd?�ZRS(BtautoseparatorsR1tblockcursorR2R3tendlineR�RWRXR4R5R6R7tinactiveselectbackgroundR�R�R�R�tinsertunfocussedR�tmaxundoR9R:R;R�R�R�tsetgridtspacing1tspacing2tspacing3t startlineR�ttabsttabstyleR=tundoR?R�R�tyscrollcommandiicKstj|j|�S(N(R@tTextRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_autoseparators�scCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_blockcursor�scCs�|j�}djd�td�D��}|jd|�|j|dddd�|j|dd dd�|j|dd dd�|j|dd �|j|dd�|j|dddd�dS(Ns css|]}dVqdS(sLine %dN((t.0ti((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>sidtendRi�RoR"i����R�Rsexpected integer but got "spam"i2R#ii s1-startline must be less than or equal to -endline(RtjointrangetinsertRFR(RRR[((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_endlinescCs^|j�}|j|ddddd�|j|dddd�|j|dd dd�dS( NR4idg�����LY@gfffff�Y@t3ci����Roii(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NRiii����(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_maxundoscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_inactiveselectbackgroundsicCs)|j�}|j|dddd�dS(NRthollowR�tsolid(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertunfocussedsc Cs>|j�}|j|ddddddtdtd k�dS(NR�g�������?g������@i����RuR�t keep_origii(ii(RRvRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selectborderwidth$scCsE|j�}|j|ddddd�|j|dddd�dS( NR igffffff5@g������6@s0.5ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing1*scCsE|j�}|j|ddddd�|j|dddd�dS( NR!ig������@gffffff@s0.1ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing2/scCsE|j�}|j|ddddd�|j|dddd�dS( NR"igffffff5@g������6@s0.5ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing34scCs�|j�}djd�td�D��}|jd|�|j|dddd�|j|dd dd�|j|dd dd�|j|dd �|j|dd�|j|dddd�dS(Ns css|]}dVqdS(sLine %dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr><sidR-R#i�RoR"i����R�Rsexpected integer but got "spam"i Ri2iFs1-startline must be less than or equal to -endline(RR.R/R0RFR(RRR[((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_startline9scCsK|j�}tdkr1|j|ddd�n|j|ddd�dS(NiiR�R�R�(ii(RRR�Rj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�Gsc Cs�|j�}t�dkr7|j|ddd d�n|j|dd�|j|ddd d�|j|dd d d�|j|dddddtdk�dS(NiiiR$gffffff$@g33333�4@t1it2iRos10.2s20.7s10.2 20.7 1i 2is2c left 4c 6c centert2cR�t4ct6cRiR�Rsbad screen distance "spam"R8(iii(gffffff$@g33333�4@R>R?(s10.2s20.7R>R?(gffffff$@g33333�4@R>R?(s10.2s20.7R>R?(R@R�RARBRi(ii(RRRFRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_tabsNs cCs&|j�}|j|ddd�dS(NR%ttabulart wordprocessor(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_tabstyle]scCs |j�}|j|d�dS(NR&(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_undobscCsU|j�}|j|dd�|j|dddd�|j|dddd�dS(NR?i�in���Roii(RR�RF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�fscCsQ|j�}tdkr4|j|dddd�n|j|dddd�dS(NiiR�tcharR�tword(ii(RRR�Rj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRlscCs�|j�}|j|jd��|j|jd��|jtj|jd�|jtj|jd�|jtj|j�|jtj|jdd�dS(Ns1.1R-R(RRRtassertIsNoneR�R@RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRss()RR1RR2R3RR�RWRXR4R5R6R7RR�R�R�R�RR�RR9R:R;R�R�R�RR R!R"R#R�R$R%R=R&R?R�R�R'(ii(RR.RSRR)t _stringifyRR)RR*R1R�R3R4R7R9R:R;R<R=R�RCRFRGR�RR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�sB t CanvasTestcBsheZd#Zee�ZeZd�Zd�Z d�Z d�Zd�Zd �Z d!�Zd"�ZRS($R1R2tcloseenoughtconfineR3R4R5R6R7R�R�R�R�R�toffsetR;tscrollregionR�R�R�R�R=R�txscrollincrementR'tyscrollincrementR?cKstj|j|�S(N(R@tCanvasRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�sc Cs2|j�}|j|ddddddt�dS(NRMig333333@g������@i����R�(RRtfloat(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_closeenough�scCs |j�}|j|d�dS(NRN(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_confine�scCs�|j�}|j|dd�|j|dddddddd d d�|j|dd�|j|dd �|j|dd�dS(NROs0,0R`RaR]RdRcReRfRbRis10,20s#5,6R�(RRR�RFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_offset�scCs�|j�}|j|dd�|j|dddd�|j|dd�|j|ddd d �|j|dd�|j|dd �|j|dd�dS(NRPs0 0 200 150ii�i�RoR"R�Rsbad scrollRegion "spam"(iii�i�(iii�R�(iii�(iii�i�i(RRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_scrollregion�scCs,|j�}|j|ddddd�dS(NR�R�R�Rs0bad state value "{}": must be normal or disabled(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sc Cs2|j�}|j|ddddddd�dS(NRQi(ig������D@g������E@i���s0.5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_xscrollincrement�sc Cs2|j�}|j|ddddddd�dS(NRRi igffffff&@g333333+@i����s0.1i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_yscrollincrement�s(R1R2RMRNR3R4R5R6R7R�R�R�R�R�ROR;RPR�R�R�R�R=R�RQR'RRR?(RR.RSR�R RxR)RKRRURVRWRXR�RYRZ(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRL}s( tListboxTestcBs�eZd,Zd�Zd�Zeddd�ejj�Zd�Z d�Z d �Zd!�Zd"�Z d#�Zd$�Zd%�Zd&�Zd'�Zd(�Zd)�Zd*�Zd+�ZRS(-tactivestyleR1R2R3RR�RWRXR4R5R6R7R�tlistvariableR;R�R�R�t selectmodeRR�R=R?R�R'cKstj|j|�S(N(R@tListboxRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR\tdotboxR�R�(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_activestyle�siiicCs5|j�}tj|j�}|j|d|�dS(NR](RR@t DoubleVarRBtcheckVariableParam(RRtvar((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_listvariable�scCs\|j�}|j|dd�|j|dd�|j|dd�|j|dd�dS(NR^tsingletbrowsetmultipletextended(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selectmode�s cCs&|j�}|j|ddd�dS(NR�R�R�(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sc Cs�|j�}|jtd��|jd�WdQXdj�}|jd|�x-t|�D]\}}|j|d|�q[W|jt��|j�WdQX|jtd��|jd�WdQX|j |jdd�d�|j |jdd�d�|j |jdd�d�|jd�}|j |t�x�|j�D]s\}}|j t|�d�t|�d krD|j ||jd|��|j |d|jd|��qDqDWdS(Nsitem number "0" out of rangeis)red orange yellow green blue white violetR-R1sbad listbox index "red"tredt BackgroundR"tviolets@0,0iii(R1R1RlR"Rk(R1R1RlR"Rm(R1R1RlR"Rk(ii(RtassertRaisesRegexpRt itemconfiguretsplitR0t enumerateR�RRtassertIsInstancetdicttitemstassertIntlentitemcget(RRtcolorsR,tcolortdtktv((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure�s0c Cs�|j�}|jddddd�|jdi||6�|j|jd|�d|�|j|jd|�|�|jtd��|jdid |6�WdQXdS( NR-R�R�R�Rziisunknown color name "spam"R�(RR0RoRRwRnR(RRmR�R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_itemconfigures cCs|jdd�dS(NR1s#ff0000(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_backgroundscCs|jdd�dS(Ntbgs#ff0000(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_bgscCs|jdd�dS(Ntfgs#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_fgscCs|jdd�dS(NRXs#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_foregroundscCs|jdd�dS(NR�s#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt#test_itemconfigure_selectbackgroundscCs|jdd�dS(NR�s#654321(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt#test_itemconfigure_selectforegroundscCs�|j�}|jdd�td�D��|j�|j|jd��|j|jd��|j|jd��|jt|jd�|jt|jd�|jt |j�|jt |jdd�dS(Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>sii����i Ri(RR0R/tpackRRRJR�RR�R(Rtlb((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_boxs cCs�|j�}|jdd�td�D��|jdtj�|jdd�|jd�|j|j�d�|j t |jd�dS( Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>+siiiii(iiii(RR0R/tselection_clearR@tENDt selection_setRtcurselectionR�R(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_curselection)s cCs�|j�}|jdd�td�D��|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d �|j|jd �d �|j|jdd�d�|j|jdd�d�|j|jdd�d�|j|jdd�d�|jt|jd�|jt|jd�|jt|j�|jt|jdd�|jt|jddd�|jt|jd�dS(Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>4sitel0itel3R-tel7R"i����itel4tel5tel6Riig333333@(R�R�R�(R�R�R�((R�( RR0R/RtgetR�RR�R(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_get2s" (R\R1R2R3RR�RWRXR4R5R6R7R�R]R;R�R�R�R^RR�R=R?R�R'(RR.RSRRaRR ttest_justifyR�ReRjR�R}R~RR�R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR[�s2 t ScaleTestcBs�eZd+ZdZd�Zd �Zd!�Zd"�Zd#�Zd$�Z d%�Z d&�Zd'�Zd(�Z d)�Zd*�ZRS(,RzR1tbigincrementR2R�R3tdigitsRWRXR�R5R6R7RrtlengthtorientR;R�R�t resolutiont showvaluetsliderlengthtsliderreliefR�R=ttickintervalR�ttroughcolorR�R?tverticalcKstj|j|�S(N(R@tScaleRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRSscCs)|j�}|j|dddd�dS(NR�g������(@g������7@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_bigincrementVscCs&|j�}|j|ddd�dS(NR�ii(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_digitsZscCs/|j�}|j|dddddt�dS(NR�idg������-@g333333.@R�(RRtround(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR^scCs6|j�}|j|dd�|j|dd�dS(NRrs any stringR"(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_labelbscCs,|j�}|j|ddddd�dS(NR�i�gffffff`@g33333�`@t5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_lengthgscCs,|j�}|j|ddddd�dS(NR�g������@ig������@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_resolutionkscCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showvalueoscCs/|j�}|j|dddddd�dS(NR�i gffffff&@g333333/@i����t3m(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderlengthsscCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderreliefxsc CsQ|j�}|j|ddddddt�|j|dddd dt�dS( NR�ig333333@gffffff@iR�i����Roi(RRR�RF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tickinterval|s c Cs2|j�}|j|ddddddt�dS(NR�i,g������-@g333333.@i����R�(RRR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s(RzR1R�R2R�R3R�RWRXR�R5R6R7RrR�R�R;R�R�R�R�R�R�R�R=R�R�R�R�R?(RR.RStdefault_orientRR�R�RR�R�R�R�R�R�R�R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�Fs( t ScrollbarTestcBs\eZdZee�ZeZdZd�Z d�Z d�Zd�Zd�Z d�ZRS(RztactivereliefR1R2R�R3telementborderwidthR5R6R7tjumpR�R;R�R�R=R�R?R�cKstj|j|�S(N(R@t ScrollbarRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_activerelief�scCs,|j�}|j|ddddd�dS(NR�g333333@gffffff@i����t1m(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_elementborderwidth�scCs,|j�}|j|ddddd�dS(NR�R�t horizontalRs4bad orientation "{}": must be vertical or horizontal(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_orient�scCsg|j�}xdD]}|j|�qW|jd�|jt|j�|jt|jdd�dS(Ntarrow1tslidertarrow2R"(R�R�R�(RtactivateR�R(RtsbR]((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_activate�s cCs�|j�}|jdd�|j|j�d�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jd�|jt|jddd�dS( Ng�������?g�������?tabctdefg333333�?gffffff�?g�������?(g�������?g�������?(RtsetRR�R�RR�(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_set�s(RzR�R1R2R�R3R�R5R6R7R�R�R;R�R�R=R�R?(RR.RSR�R RxR)RKR�RR�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tPanedWindowTestcBsgeZd2ZdZd�Zd�Zd�Zd�Zd�Ze ddd�d��Z e ddd�d��Ze ddd�d��Zd�Z d�Zd �Zd!�Zd"�Zd#�Zd$�Zd%�Zed&�Zd'�Zd(�Zd)�Zd*�Ze dd�d+��Zd,�Zd-�Zd.�Zd/�Ze dd�d0��Z d1�Z!RS(3R1R2R3t handlepadt handlesizeR4topaqueresizeR�tproxybackgroundtproxyborderwidthtproxyreliefR;t sashcursortsashpadt sashrelieft sashwidtht showhandleR?R�cKstj|j|�S(N(R@tPanedWindowRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR�ig������@gffffff@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_handlepad�sc Cs5|j�}|j|dddddddt�dS(NR�ig������"@g333333%@i����t2mR�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_handlesize�scCs8|j�}|j|ddddddddt�dS( NR4idg�����LY@gfffff�Y@i����iR>R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s!cCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_opaqueresize�siiicCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxybackground�scCs8|j�}|j|ddddddddt�dS( NR�ig�������?g333333@ii����RuR�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyborderwidth�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyrelief�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashcursor�scCs/|j�}|j|dddddd�dS(NR�ig�������?g������@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashpad�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashrelief�sc Cs5|j�}|j|dddddddt�dS(NR�i g333333&@g333333/@i����R�R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashwidth�scCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showhandle�scCs8|j�}|j|ddddddddt�dS( NR?i�gfffff6y@g�����Iy@in���iR�R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s!cCsQ|j�}tj|�}tj|�}|j|�|j|�|||fS(N(RR@R�tadd(RtpR�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcreate2s cCs�|j�\}}}|jt|j�|j|�}|j|t�xl|j�D]^\}}|jt|�d�|j||j||��|j|d|j ||��qTWdS(Nii( R�R�Rt paneconfigureRrRsRtRRvtpanecget(RR�R�R�RzR{R|((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigurescCs�d�}|js|r(t|�}n|jr@|r@t}n|j|i||6�|j||j||�d�|�|j||j||��|�dS(NcSs|S(N((tx((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt<lambda>R"i(R(R�R�RR�(RR�R�RmR�Rot stringifyR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_paneconfigures &c Cs4|jt|��|j|id|6�WdQXdS(NtbadValue(RnRR�(RR�R�Rmtmsg((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_paneconfigure_bad$scCsN|j�\}}}|j||d|t|��|j||dd�dS(Ntaftersbad window path name "badValue"(R�R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_after(scCsN|j�\}}}|j||d|t|��|j||dd�dS(Ntbeforesbad window path name "badValue"(R�R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_before.scCsW|j�\}}}|j||ddddt�dk�|j||dd�dS( NR4i R�iiisbad screen distance "badValue"(iii(R�R�RR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_height4s cCsH|j�\}}}|j||dtd�|j||dd�dS(Nthideis)expected boolean value but got "badValue"(R�R�tFalseR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_hide;scCsH|j�\}}}|j||ddd�|j||dd�dS(Ntminsizei sbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_minsizeBscCsH|j�\}}}|j||ddd�|j||dd�dS(NR9g�������?isbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_padxHscCsH|j�\}}}|j||ddd�|j||dd�dS(NR:g�������?isbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_padyNscCsH|j�\}}}|j||ddd�|j||dd�dS(Ntstickytnsewtnesws[bad stickyness value "badValue": must be a string containing zero or more of n, e, s, and w(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_stickyTscCsH|j�\}}}|j||ddd�|j||dd�dS(NtstretchtalwtalwayssEbad stretch "badValue": must be always, first, last, middle, or never(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_stretch\scCsW|j�\}}}|j||ddddt�dk�|j||dd�dS( NR?i R�iiisbad screen distance "badValue"(iii(R�R�RR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_widthds (R1R2R3R�R�R4R�R�R�R�R�R;R�R�R�R�R�R?("RR.RSR�RR�R�R�R�RR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sH tMenuTestcBseeZdZeZd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z RS(RztactiveborderwidthR{R1R2R3RRWRXtpostcommandR;R�R=ttearoffttearoffcommandRttypecKstj|j|�S(N(R@RERB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRwscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_postcommandzscCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoff~scCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoffcommand�scCs#|j�}|j|dd�dS(NRs any string(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_title�scCs)|j�}|j|dddd�dS(NRR�Rtmenubar(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_type�scCs |j�}|jdd�|jt|j�|jtd��|jd�WdQX|jd�}|j|t�x�|j �D]v\}}|j|t �|j|t�|jt |�d�|j|d|�|j|jd|�|d�q�W|j�dS( NRrttestsbad menu entry index "foo"Rniiii(Rtadd_commandR�RtentryconfigureRnRRrRsRtR�ttupleRRvt entrycgetRq(Rtm1RzR{R|((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure�s$cCsk|j�}|jdd�|j|jdd�d�|jddd�|j|jdd�d�dS(NRrR itchanged(RRRRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure_label�s c Cs�|j�}tj|j�}tj|j�}|jd|dtdtdd�|jt|j dd��t|��|j dd|�|jt|j dd��t|��dS(NR�R�R�RrtNonsensei(RR@t BooleanVarRBtadd_checkbuttonR)R�RR�RR(RRtv1tv2((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure_variable�s((RzRR{R1R2R3RRWRXRR;R�R=RRRR(RR.RSR RxRRRR R RRRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRls tMessageTestcBs&eZdZeZd�Zd�ZRS(R|taspectR1R2R3RWRXR5R6R7R�R9R:R;R=R[R�R?cKstj|j|�S(N(R@tMessageRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NRi�ii���(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_aspect�s(R|RR1R2R3RWRXR5R6R7R�R9R:R;R=R[R�R?(RR.RSR R/RR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s t__main__(1R�tTkinterR@RRIR�ttest.test_supportRRttest_ttk.supportRRRRtwidget_testsRRR R RRR RRRRtTestCaseR0RTRVRtRyR�R�R�R�R�R�R�RRLR[R�R�R�RRt tests_guiR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt<module>sl"F %( AEh�B�B1�Dtest/test_tkinter/test_widgets.pyo000064400000172022151703463030013506 0ustar00� zfc@sTddlZddlZddlmZddlZddlZddlmZmZddl m Z mZmZm Z ddlmZmZmZmZmZmZmZmZmZmZed�deefd��YZee�d eejfd ��Y�Zee�deejfd��Y�Zee�d eejfd��Y�Zdeefd��YZee�deejfd��Y�Zee�deejfd��Y�Z ee�deejfd��Y�Z!ee�deejfd��Y�Z"ee�deejfd��Y�Z#de#ejfd��YZ$eee�deejfd��Y�Z%ee�de%ejfd ��Y�Z&ee�d!eejfd"��Y�Z'eee�d#eejfd$��Y�Z(eee�d%eejfd&��Y�Z)eee�d'eejfd(��Y�Z*eee�d)eejfd*��Y�Z+ee�d+eejfd,��Y�Z,ee�d-eejfd.��Y�Z-eee�d/eejfd0��Y�Z.e e(e!e%eeee)e#e-e.e$e,e"e*e+e&e'egZ/e0d1krPee/�ndS(2i����N(tTclError(trequirestrun_unittest(ttcl_versiontrequires_tcltget_tk_patchlevelt widget_eq( tadd_standard_optionstnoconvtnoconv_metht int_roundtpixels_roundtAbstractWidgetTesttStandardOptionsTeststIntegerSizeTeststPixelSizeTeststsetUpModuletguitAbstractToplevelTestcBs2eZeZd�Zd�Zd�Zd�ZRS(cCso|j�}|j|d|jjj��|j|dddd�|jdd�}|j|dd�dS(NtclasstFooterrmsgs2can't modify -class option after widget is createdtclass_(tcreatetassertEqualt __class__t__name__ttitletcheckInvalidParam(tselftwidgettwidget2((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_classs cCsc|j�}|j|dd�|j|dddd�|jdd�}|j|dd�dS(NtcolormapttnewRs5can't modify -colormap option after widget is created(RRR(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_colormapscCs�|j�}|j|d|jr(dnd�|j|dddd�|jdt�}|j|d|jrvdnd�dS(Nt containerit0iRs6can't modify -container option after widget is createdt1(RRtwantobjectsRtTrue(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_container's#cCsc|j�}|j|dd�|j|dddd�|jdd�}|j|dd�dS(NtvisualR"tdefaultRs3can't modify -visual option after widget is created(RRR(RRR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_visual/s(Rt __module__R t_conv_pad_pixelsR R$R*R-(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRs tToplevelTestcBs2eZdZd�Zd�Zd�Zd�ZRS(t backgroundtborderwidthRR!R%tcursortheightthighlightbackgroundthighlightcolorthighlightthicknesstmenutpadxtpadytrelieftscreent takefocustuseR+twidthcKstj|j|�S(N(ttkintertTopleveltroot(Rtkwargs((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRBscCsN|j�}tj|j�}|j|d|dt�|j|dd�dS(NR8teqR"(RR@tMenuRBt checkParamR(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_menuEscCs�|j�}|j|dd�ytjd}Wntk rQ|jd�nX|j|d|dd�|jd|�}|j|d|�dS(NR<R"tDISPLAYsNo $DISPLAY set.Rs3can't modify -screen option after widget is created(RRtostenvirontKeyErrortskipTestR(RRtdisplayR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_screenKs cCsl|j�}|j|dd�|jdt�}d|j�}|jd|�}|j|d|�dS(NR>R"R%s%#x(RRR)twinfo_id(RRtparenttwidR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_useWs(R1R2RR!R%R3R4R5R6R7R8R9R:R;R<R=R>R+R?(RR.tOPTIONSRRGRNRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR08s t FrameTestcBseZdZd�ZRS(R1R2RR!R%R3R4R5R6R7R9R:R;R=R+R?cKstj|j|�S(N(R@tFrameRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRjs(R1R2RR!R%R3R4R5R6R7R9R:R;R=R+R?(RR.RSR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRTas tLabelFrameTestcBs)eZdZd�Zd�Zd�ZRS(R1R2RR!R%R3tfontt foregroundR4R5R6R7tlabelanchortlabelwidgetR9R:R;R=ttextR+R?cKstj|j|�S(N(R@t LabelFrameRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRyscCsW|j�}|j|ddddddddd d ddd �|j|dd�dS(NRYtetentestntnetnwtstsetswtwtwntwstcenter(RtcheckEnumParamR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_labelanchor|s cCsQ|j�}tj|jdddd�}|j|d|dd�|j�dS(NR[tMupptnametfooRZtexpecteds.foo(RR@tLabelRBRFtdestroy(RRtlabel((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_labelwidget�s(R1R2RR!R%R3RWRXR4R5R6R7RYRZR9R:R;R=R[R+R?(RR.RSRRkRs(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRVns tAbstractLabelTestcBseZeZd�ZRS(c Cs2|j�}|j|ddddddd�dS(NR7ig�������?g������@ii����t10p(RtcheckPixelsParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_highlightthickness�s(RR.R t_conv_pixelsRw(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRt�st LabelTestcBseZdZd�ZRS(tactivebackgroundtactiveforegroundtanchorR1tbitmapR2tcompoundR3tdisabledforegroundRWRXR4R5R6R7timagetjustifyR9R:R;tstateR=R[ttextvariablet underlineR?t wraplengthcKstj|j|�S(N(R@RpRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s(RzR{R|R1R}R2R~R3RRWRXR4R5R6R7R�R�R9R:R;R�R=R[R�R�R?R�(RR.RSR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRy�st ButtonTestc Bs eZd"Zd �Zd!�ZRS(#RzR{R|R1R}R2tcommandR~R3R,RRWRXR4R5R6R7R�R�t overreliefR9R:R;trepeatdelaytrepeatintervalR�R=R[R�R�R?R�cKstj|j|�S(N(R@tButtonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR,tactivetdisabledtnormal(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_default�s( RzR{R|R1R}R2R�R~R3R,RRWRXR4R5R6R7R�R�R�R9R:R;R�R�R�R=R[R�R�R?R�(RR.RSRR�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tCheckbuttonTestc&Bs)eZd)Zd&�Zd'�Zd(�ZRS(*RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�tindicatoronR�t offrelieftoffvaluetonvalueR�R9R:R;tselectcolortselectimageR�R=R[R�t tristateimaget tristatevalueR�tvariableR?R�cKstj|j|�S(N(R@tCheckbuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RtcheckParams(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_offvalue�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_onvalue�s(&RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�R�R?R�(RR.RSRR�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tRadiobuttonTestc%Bs eZd'Zd%�Zd&�ZRS((RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�tvalueR�R?R�cKstj|j|�S(N(R@tRadiobuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@R"s any string(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_value�s(%RzR{R|R1R}R2R�R~R3RRWRXR4R5R6R7R�R�R�R�R�R9R:R;R�R�R�R=R[R�R�R�R�R�R�R?R�(RR.RSRR�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tMenubuttonTestcBs�eZd(Zee�Zd�Zd�Zd �Ze j jZ ej ejd!kd"�d#��Zd$�Zd%�Zd&�Zd'�ZRS()RzR{R|R1R}R2R~R3t directionRRWRXR4R5R6R7R�R�R�R8R9R:R;R�R=R[R�R�R?R�cKstj|j|�S(N(R@t MenubuttonRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR�tabovetbelowtflushtlefttright(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_direction�scCs/|j�}|j|dddddt�dS(NR4idi����itconv(RtcheckIntegerParamtstr(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_heightstdarwins"crashes with Cocoa Tk (issue19733)c Cs�|j�}tjd|jdd�}|j|d|dt�d}|jtj��}d|d<WdQX|dk r�|j t|j �|�n|jtj��}|jidd6�WdQX|dk r�|j t|j �|�ndS(NtmasterRmtimage1R�R�simage "spam" doesn't existtspam(RR@t PhotoImageRBRFR�tassertRaisesRtNoneRt exceptiont configure(RRR�Rtcm((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_image scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRmR8RD(RR@RERFRRq(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRGscCsE|j�}|j|ddddd�|j|dddd�dS( NR9ig������@gffffff@t12mi����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_padxscCsE|j�}|j|ddddd�|j|dddd�dS( NR:ig������@gffffff@R�i����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_pady$scCs/|j�}|j|dddddt�dS(NR?i�in���iR�(RR�R�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_width)s(RzR{R|R1R}R2R~R3R�RRWRXR4R5R6R7R�R�R�R8R9R:R;R�R=R[R�R�R?R�(RR.RStstaticmethodRRxRR�R�R Rwtim_functunittesttskipIftsystplatformR�RGR�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s( tOptionMenuTestcBseZddd�ZRS(tbtatccKstj|jd|||�S(N(R@t OptionMenuRBR�(RR,tvaluesRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR0s(R�R�R�(RR.R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�.st EntryTestcBsheZd)Zd�Zd �Zd!�Zd"�Zd#�Zd$�Zd%�Z d&�Z d'�Zd(�ZRS(*R1R2R3tdisabledbackgroundRtexportselectionRWRXR5R6R7tinsertbackgroundtinsertborderwidtht insertofftimetinsertontimetinsertwidthtinvalidcommandR�treadonlybackgroundR;tselectbackgroundtselectborderwidthtselectforegroundtshowR�R=R�tvalidatetvalidatecommandR?txscrollcommandcKstj|j|�S(N(R@tEntryRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRCscCs |j�}|j|d�dS(NR�(RtcheckColorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_disabledbackgroundFsc CsQ|jdd�}|j|ddddddd �|j|dd dd �dS(NR�idR�ig�������?g������@ii����Rui<Roii2(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertborderwidthJscCs�|j�}|j|dddd�|j|dddd�|j|dddd�td �d kr�|j|dd dd�n|j|dd dd�dS(NR�g�������?g������@Rug�������?Roii����g�������?ii(RRvRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertwidthQscCs0|j�}|j|d�|j|d�dS(NR�tinvcmd(RtcheckCommandParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_invalidcommand[scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_readonlybackground`scCsI|j�}|j|dd�|j|dd�|j|dd�dS(NR�t*R"t (RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_showdscCs)|j�}|j|dddd�dS(NR�R�R�treadonly(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_statejsc Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusouttnone(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_validateoscCs0|j�}|j|d�|j|d�dS(NR�tvcmd(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_validatecommandts(R1R2R3R�RR�RWRXR5R6R7R�R�R�R�R�R�R�R�R;R�R�R�R�R�R=R�R�R�R?R�( RR.RSRR�R�R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�4s( tSpinboxTestc,Bs�eZd9Zd,�Zd:Zd-�Zd.�Zd/�Zd0�Z d1�Z d2�Zd3�Zd4�Z d5�Zd6�Zd7�Zd8�ZRS(;RzR1R2tbuttonbackgroundtbuttoncursortbuttondownrelieftbuttonupreliefR�R3R�RR�RWRXtformattfromR5R6R7t incrementR�R�R�R�R�R�R�R;R�R�R�R�R�R�R�R=R�ttoR�R�R�R?twrapR�cKstj|j|�S(N(R@tSpinboxRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonbackground�scCs |j�}|j|d�dS(NR�(RtcheckCursorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttoncursor�scCs |j�}|j|d�dS(NR�(RtcheckReliefParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttondownrelief�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonuprelief�scCs�|j�}|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd�|j|dd �|j|dd �|j|dd�|j|dd�|j|dd �dS(NR�s%2fs%2.2fs%.2fs%2.fs%2e-1fs2.2s%2.-2fs%-2.02fs% 2.02fs % -2.200fs%09.200fs%d(RRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_format�scCsU|j�}|j|dd�|j|dddd�|j|dddd �dS( NR�gY@R�i����gffffff$@gffffff'@i�Rs*-to value must be greater than -from value(RRFtcheckFloatParamR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_from�s cCs/|j�}|j|dddddd�dS(NR�i����igffffff$@g������)@i(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_increment�scCsU|j�}|j|dd�|j|dddd�|j|dddd �dS( NR�gY�R�i����gffffff$@gffffff'@i8���Rs*-to value must be greater than -from value(RRFRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_to�s cCs||j�}|j|dd�|j|dd�|j|dd dd�|j|dddd�|j|dd�dS(NR�R"smon tue wed thurtmonttuetwedtthurRoi*g��Q� @s any strings42 3.14 {} {any string}(RR R R(i*g��Q� @R"s any string(RRRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_values�scCs |j�}|j|d�dS(NR�(RtcheckBooleanParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_wrap�scCs�|j�}|j|jd��|jtj|jd�|jtj|jd�|jt|j�|jt|jdd�dS(Nitnoindexi(RtassertIsBoundingBoxtbboxR�R@RR�t TypeError(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_bbox�scCsl|j�}|j|j�d�|jd�|j|j�d�|jd�|j|j�d�dS(NR�tbuttonupt buttondown(RRtselection_element(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selection_element�s (,RzR1R2R�R�R�R�R�R3R�RR�RWRXR�R�R5R6R7R�R�R�R�R�R�R�R�R;R�R�R�R�R�R�R�R=R�R�R�R�R�R?R�R�N(RR.RSRR�R�R�R�RRRRRRRRRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�zs8 tTextTestc)Bs1eZd@ZedAkr!eZnd+�Zd,�Zed)d*�d-��Z ed)d*�d.��Z d/�Zd0�Zed)d*�d1��Z ed)d2�d3��Zd4�Zd5�Zd6�Zd7�Zed)d*�d8��Zd9�Zd:�Zed)d*�d;��Zd<�Zd=�Zd>�Zd?�ZRS(BtautoseparatorsR1tblockcursorR2R3tendlineR�RWRXR4R5R6R7tinactiveselectbackgroundR�R�R�R�tinsertunfocussedR�tmaxundoR9R:R;R�R�R�tsetgridtspacing1tspacing2tspacing3t startlineR�ttabsttabstyleR=tundoR?R�R�tyscrollcommandiicKstj|j|�S(N(R@tTextRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_autoseparators�scCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_blockcursor�scCs�|j�}djd�td�D��}|jd|�|j|dddd�|j|dd dd�|j|dd dd�|j|dd �|j|dd�|j|dddd�dS(Ns css|]}dVqdS(sLine %dN((t.0ti((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>sidtendRi�RoR"i����R�Rsexpected integer but got "spam"i2R#ii s1-startline must be less than or equal to -endline(RtjointrangetinsertRFR(RRR[((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_endlinescCs^|j�}|j|ddddd�|j|dddd�|j|dd dd�dS( NR4idg�����LY@gfffff�Y@t3ci����Roii(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NRiii����(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_maxundoscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_inactiveselectbackgroundsicCs)|j�}|j|dddd�dS(NRthollowR�tsolid(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertunfocussedsc Cs>|j�}|j|ddddddtdtd k�dS(NR�g�������?g������@i����RuR�t keep_origii(ii(RRvRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selectborderwidth$scCsE|j�}|j|ddddd�|j|dddd�dS( NR igffffff5@g������6@s0.5ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing1*scCsE|j�}|j|ddddd�|j|dddd�dS( NR!ig������@gffffff@s0.1ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing2/scCsE|j�}|j|ddddd�|j|dddd�dS( NR"igffffff5@g������6@s0.5ci����Roi(RRvRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_spacing34scCs�|j�}djd�td�D��}|jd|�|j|dddd�|j|dd dd�|j|dd dd�|j|dd �|j|dd�|j|dddd�dS(Ns css|]}dVqdS(sLine %dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr><sidR-R#i�RoR"i����R�Rsexpected integer but got "spam"i Ri2iFs1-startline must be less than or equal to -endline(RR.R/R0RFR(RRR[((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_startline9scCsK|j�}tdkr1|j|ddd�n|j|ddd�dS(NiiR�R�R�(ii(RRR�Rj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�Gsc Cs�|j�}t�dkr7|j|ddd d�n|j|dd�|j|ddd d�|j|dd d d�|j|dddddtdk�dS(NiiiR$gffffff$@g33333�4@t1it2iRos10.2s20.7s10.2 20.7 1i 2is2c left 4c 6c centert2cR�t4ct6cRiR�Rsbad screen distance "spam"R8(iii(gffffff$@g33333�4@R>R?(s10.2s20.7R>R?(gffffff$@g33333�4@R>R?(s10.2s20.7R>R?(R@R�RARBRi(ii(RRRFRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_tabsNs cCs&|j�}|j|ddd�dS(NR%ttabulart wordprocessor(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_tabstyle]scCs |j�}|j|d�dS(NR&(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_undobscCsU|j�}|j|dd�|j|dddd�|j|dddd�dS(NR?i�in���Roii(RR�RF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�fscCsQ|j�}tdkr4|j|dddd�n|j|dddd�dS(NiiR�tcharR�tword(ii(RRR�Rj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRlscCs�|j�}|j|jd��|j|jd��|jtj|jd�|jtj|jd�|jtj|j�|jtj|jdd�dS(Ns1.1R-R(RRRtassertIsNoneR�R@RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRss()RR1RR2R3RR�RWRXR4R5R6R7RR�R�R�R�RR�RR9R:R;R�R�R�RR R!R"R#R�R$R%R=R&R?R�R�R'(ii(RR.RSRR)t _stringifyRR)RR*R1R�R3R4R7R9R:R;R<R=R�RCRFRGR�RR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�sB t CanvasTestcBsheZd#Zee�ZeZd�Zd�Z d�Z d�Zd�Zd �Z d!�Zd"�ZRS($R1R2tcloseenoughtconfineR3R4R5R6R7R�R�R�R�R�toffsetR;tscrollregionR�R�R�R�R=R�txscrollincrementR'tyscrollincrementR?cKstj|j|�S(N(R@tCanvasRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�sc Cs2|j�}|j|ddddddt�dS(NRMig333333@g������@i����R�(RRtfloat(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_closeenough�scCs |j�}|j|d�dS(NRN(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_confine�scCs�|j�}|j|dd�|j|dddddddd d d�|j|dd�|j|dd �|j|dd�dS(NROs0,0R`RaR]RdRcReRfRbRis10,20s#5,6R�(RRR�RFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_offset�scCs�|j�}|j|dd�|j|dddd�|j|dd�|j|ddd d �|j|dd�|j|dd �|j|dd�dS(NRPs0 0 200 150ii�i�RoR"R�Rsbad scrollRegion "spam"(iii�i�(iii�R�(iii�(iii�i�i(RRFR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_scrollregion�scCs,|j�}|j|ddddd�dS(NR�R�R�Rs0bad state value "{}": must be normal or disabled(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sc Cs2|j�}|j|ddddddd�dS(NRQi(ig������D@g������E@i���s0.5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_xscrollincrement�sc Cs2|j�}|j|ddddddd�dS(NRRi igffffff&@g333333+@i����s0.1i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_yscrollincrement�s(R1R2RMRNR3R4R5R6R7R�R�R�R�R�ROR;RPR�R�R�R�R=R�RQR'RRR?(RR.RSR�R RxR)RKRRURVRWRXR�RYRZ(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRL}s( tListboxTestcBs�eZd,Zd�Zd�Zeddd�ejj�Zd�Z d�Z d �Zd!�Zd"�Z d#�Zd$�Zd%�Zd&�Zd'�Zd(�Zd)�Zd*�Zd+�ZRS(-tactivestyleR1R2R3RR�RWRXR4R5R6R7R�tlistvariableR;R�R�R�t selectmodeRR�R=R?R�R'cKstj|j|�S(N(R@tListboxRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR\tdotboxR�R�(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_activestyle�siiicCs5|j�}tj|j�}|j|d|�dS(NR](RR@t DoubleVarRBtcheckVariableParam(RRtvar((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_listvariable�scCs\|j�}|j|dd�|j|dd�|j|dd�|j|dd�dS(NR^tsingletbrowsetmultipletextended(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_selectmode�s cCs&|j�}|j|ddd�dS(NR�R�R�(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sc Cs�|j�}|jtd��|jd�WdQXdj�}|jd|�x-t|�D]\}}|j|d|�q[W|jt��|j�WdQX|jtd��|jd�WdQX|j |jdd�d�|j |jdd�d�|j |jdd�d�|jd�}|j |t�x�|j�D]s\}}|j t|�d�t|�d krD|j ||jd|��|j |d|jd|��qDqDWdS(Nsitem number "0" out of rangeis)red orange yellow green blue white violetR-R1sbad listbox index "red"tredt BackgroundR"tviolets@0,0iii(R1R1RlR"Rk(R1R1RlR"Rm(R1R1RlR"Rk(ii(RtassertRaisesRegexpRt itemconfiguretsplitR0t enumerateR�RRtassertIsInstancetdicttitemstassertIntlentitemcget(RRtcolorsR,tcolortdtktv((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure�s0c Cs�|j�}|jddddd�|jdi||6�|j|jd|�d|�|j|jd|�|�|jtd��|jdid |6�WdQXdS( NR-R�R�R�Rziisunknown color name "spam"R�(RR0RoRRwRnR(RRmR�R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_itemconfigures cCs|jdd�dS(NR1s#ff0000(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_backgroundscCs|jdd�dS(Ntbgs#ff0000(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_bgscCs|jdd�dS(Ntfgs#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_fgscCs|jdd�dS(NRXs#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_itemconfigure_foregroundscCs|jdd�dS(NR�s#110022(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt#test_itemconfigure_selectbackgroundscCs|jdd�dS(NR�s#654321(R~(R((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt#test_itemconfigure_selectforegroundscCs�|j�}|jdd�td�D��|j�|j|jd��|j|jd��|j|jd��|jt|jd�|jt|jd�|jt |j�|jt |jdd�dS(Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>sii����i Ri(RR0R/tpackRRRJR�RR�R(Rtlb((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_boxs cCs�|j�}|jdd�td�D��|jdtj�|jdd�|jd�|j|j�d�|j t |jd�dS( Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>+siiiii(iiii(RR0R/tselection_clearR@tENDt selection_setRtcurselectionR�R(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_curselection)s cCs�|j�}|jdd�td�D��|j|jd�d�|j|jd�d�|j|jd�d�|j|jd�d �|j|jd �d �|j|jdd�d�|j|jdd�d�|j|jdd�d�|j|jdd�d�|jt|jd�|jt|jd�|jt|j�|jt|jdd�|jt|jddd�|jt|jd�dS(Nicss|]}d|VqdS(sel%dN((R+R,((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pys <genexpr>4sitel0itel3R-tel7R"i����itel4tel5tel6Riig333333@(R�R�R�(R�R�R�((R�( RR0R/RtgetR�RR�R(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_get2s" (R\R1R2R3RR�RWRXR4R5R6R7R�R]R;R�R�R�R^RR�R=R?R�R'(RR.RSRRaRR ttest_justifyR�ReRjR�R}R~RR�R�R�R�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR[�s2 t ScaleTestcBs�eZd+ZdZd�Zd �Zd!�Zd"�Zd#�Zd$�Z d%�Z d&�Zd'�Zd(�Z d)�Zd*�ZRS(,RzR1tbigincrementR2R�R3tdigitsRWRXR�R5R6R7RrtlengthtorientR;R�R�t resolutiont showvaluetsliderlengthtsliderreliefR�R=ttickintervalR�ttroughcolorR�R?tverticalcKstj|j|�S(N(R@tScaleRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRSscCs)|j�}|j|dddd�dS(NR�g������(@g������7@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_bigincrementVscCs&|j�}|j|ddd�dS(NR�ii(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_digitsZscCs/|j�}|j|dddddt�dS(NR�idg������-@g333333.@R�(RRtround(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR^scCs6|j�}|j|dd�|j|dd�dS(NRrs any stringR"(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_labelbscCs,|j�}|j|ddddd�dS(NR�i�gffffff`@g33333�`@t5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_lengthgscCs,|j�}|j|ddddd�dS(NR�g������@ig������@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_resolutionkscCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showvalueoscCs/|j�}|j|dddddd�dS(NR�i gffffff&@g333333/@i����t3m(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderlengthsscCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderreliefxsc CsQ|j�}|j|ddddddt�|j|dddd dt�dS( NR�ig333333@gffffff@iR�i����Roi(RRR�RF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tickinterval|s c Cs2|j�}|j|ddddddt�dS(NR�i,g������-@g333333.@i����R�(RRR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s(RzR1R�R2R�R3R�RWRXR�R5R6R7RrR�R�R;R�R�R�R�R�R�R�R=R�R�R�R�R?(RR.RStdefault_orientRR�R�RR�R�R�R�R�R�R�R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�Fs( t ScrollbarTestcBs\eZdZee�ZeZdZd�Z d�Z d�Zd�Zd�Z d�ZRS(RztactivereliefR1R2R�R3telementborderwidthR5R6R7tjumpR�R;R�R�R=R�R?R�cKstj|j|�S(N(R@t ScrollbarRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_activerelief�scCs,|j�}|j|ddddd�dS(NR�g333333@gffffff@i����t1m(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_elementborderwidth�scCs,|j�}|j|ddddd�dS(NR�R�t horizontalRs4bad orientation "{}": must be vertical or horizontal(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_orient�scCsg|j�}xdD]}|j|�qW|jd�|jt|j�|jt|jdd�dS(Ntarrow1tslidertarrow2R"(R�R�R�(RtactivateR�R(RtsbR]((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_activate�s cCs�|j�}|jdd�|j|j�d�|jt|jdd�|jt|jdd�|jt|jdd�|jt|jd�|jt|jddd�dS( Ng�������?g�������?tabctdefg333333�?gffffff�?g�������?(g�������?g�������?(RtsetRR�R�RR�(RR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_set�s(RzR�R1R2R�R3R�R5R6R7R�R�R;R�R�R=R�R?(RR.RSR�R RxR)RKR�RR�R�R�R�R�(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s tPanedWindowTestcBsgeZd2ZdZd�Zd�Zd�Zd�Zd�Ze ddd�d��Z e ddd�d��Ze ddd�d��Zd�Z d�Zd �Zd!�Zd"�Zd#�Zd$�Zd%�Zed&�Zd'�Zd(�Zd)�Zd*�Ze dd�d+��Zd,�Zd-�Zd.�Zd/�Ze dd�d0��Z d1�Z!RS(3R1R2R3t handlepadt handlesizeR4topaqueresizeR�tproxybackgroundtproxyborderwidthtproxyreliefR;t sashcursortsashpadt sashrelieft sashwidtht showhandleR?R�cKstj|j|�S(N(R@tPanedWindowRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR�ig������@gffffff@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_handlepad�sc Cs5|j�}|j|dddddddt�dS(NR�ig������"@g333333%@i����t2mR�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_handlesize�scCs8|j�}|j|ddddddddt�dS( NR4idg�����LY@gfffff�Y@i����iR>R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��s!cCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_opaqueresize�siiicCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxybackground�scCs8|j�}|j|ddddddddt�dS( NR�ig�������?g333333@ii����RuR�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyborderwidth�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyrelief�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashcursor�scCs/|j�}|j|dddddd�dS(NR�ig�������?g������@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashpad�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashrelief�sc Cs5|j�}|j|dddddddt�dS(NR�i g333333&@g333333/@i����R�R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashwidth�scCs |j�}|j|d�dS(NR�(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showhandle�scCs8|j�}|j|ddddddddt�dS( NR?i�gfffff6y@g�����Iy@in���iR�R�(RRvR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s!cCsQ|j�}tj|�}tj|�}|j|�|j|�|||fS(N(RR@R�tadd(RtpR�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcreate2s cCs�|j�\}}}|jt|j�|j|�}|j|t�xl|j�D]^\}}|jt|�d�|j||j||��|j|d|j ||��qTWdS(Nii( R�R�Rt paneconfigureRrRsRtRRvtpanecget(RR�R�R�RzR{R|((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigurescCs�d�}|js|r(t|�}n|jr@|r@t}n|j|i||6�|j||j||�d�|�|j||j||��|�dS(NcSs|S(N((tx((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt<lambda>R"i(R(R�R�RR�(RR�R�RmR�Rot stringifyR�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_paneconfigures &c Cs4|jt|��|j|id|6�WdQXdS(NtbadValue(RnRR�(RR�R�Rmtmsg((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pytcheck_paneconfigure_bad$scCsN|j�\}}}|j||d|t|��|j||dd�dS(Ntaftersbad window path name "badValue"(R�R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_after(scCsN|j�\}}}|j||d|t|��|j||dd�dS(Ntbeforesbad window path name "badValue"(R�R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_before.scCsW|j�\}}}|j||ddddt�dk�|j||dd�dS( NR4i R�iiisbad screen distance "badValue"(iii(R�R�RR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_height4s cCsH|j�\}}}|j||dtd�|j||dd�dS(Nthideis)expected boolean value but got "badValue"(R�R�tFalseR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_hide;scCsH|j�\}}}|j||ddd�|j||dd�dS(Ntminsizei sbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_minsizeBscCsH|j�\}}}|j||ddd�|j||dd�dS(NR9g�������?isbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_padxHscCsH|j�\}}}|j||ddd�|j||dd�dS(NR:g�������?isbad screen distance "badValue"(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_padyNscCsH|j�\}}}|j||ddd�|j||dd�dS(Ntstickytnsewtnesws[bad stickyness value "badValue": must be a string containing zero or more of n, e, s, and w(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_stickyTscCsH|j�\}}}|j||ddd�|j||dd�dS(NtstretchtalwtalwayssEbad stretch "badValue": must be always, first, last, middle, or never(R�R�R�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_stretch\scCsW|j�\}}}|j||ddddt�dk�|j||dd�dS( NR?i R�iiisbad screen distance "badValue"(iii(R�R�RR�(RR�R�R�((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_paneconfigure_widthds (R1R2R3R�R�R4R�R�R�R�R�R;R�R�R�R�R�R?("RR.RSR�RR�R�R�R�RR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR��sH tMenuTestcBseeZdZeZd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z RS(RztactiveborderwidthR{R1R2R3RRWRXtpostcommandR;R�R=ttearoffttearoffcommandRttypecKstj|j|�S(N(R@RERB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRwscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_postcommandzscCs |j�}|j|d�dS(NR(RR (RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoff~scCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoffcommand�scCs#|j�}|j|dd�dS(NRs any string(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_title�scCs)|j�}|j|dddd�dS(NRR�Rtmenubar(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt test_type�scCs |j�}|jdd�|jt|j�|jtd��|jd�WdQX|jd�}|j|t�x�|j �D]v\}}|j|t �|j|t�|jt |�d�|j|d|�|j|jd|�|d�q�W|j�dS( NRrttestsbad menu entry index "foo"Rniiii(Rtadd_commandR�RtentryconfigureRnRRrRsRtR�ttupleRRvt entrycgetRq(Rtm1RzR{R|((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure�s$cCsk|j�}|jdd�|j|jdd�d�|jddd�|j|jdd�d�dS(NRrR itchanged(RRRRR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure_label�s c Cs�|j�}tj|j�}tj|j�}|jd|dtdtdd�|jt|j dd��t|��|j dd|�|jt|j dd��t|��dS(NR�R�R�RrtNonsensei(RR@t BooleanVarRBtadd_checkbuttonR)R�RR�RR(RRtv1tv2((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_entryconfigure_variable�s((RzRR{R1R2R3RRWRXRR;R�R=RRRR(RR.RSR RxRRRR R RRRR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRls tMessageTestcBs&eZdZeZd�Zd�ZRS(R|taspectR1R2R3RWRXR5R6R7R�R9R:R;R=R[R�R?cKstj|j|�S(N(R@tMessageRB(RRC((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NRi�ii���(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_aspect�s(R|RR1R2R3RWRXR5R6R7R�R9R:R;R=R[R�R?(RR.RSR R/RR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR�s t__main__(1R�tTkinterR@RRIR�ttest.test_supportRRttest_ttk.supportRRRRtwidget_testsRRR R RRR RRRRtTestCaseR0RTRVRtRyR�R�R�R�R�R�R�RRLR[R�R�R�RRt tests_guiR(((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt<module>sl"F %( AEh�B�B1�Dtest/test_ttk/__init__.py000064400000000000151703463030011465 0ustar00test/test_ttk/__init__.pyc000064400000000214151703463030011637 0ustar00� zfc@sdS(N((((s5/usr/lib64/python2.7/lib-tk/test/test_ttk/__init__.pyt<module>ttest/test_ttk/__init__.pyo000064400000000214151703463030011653 0ustar00� zfc@sdS(N((((s5/usr/lib64/python2.7/lib-tk/test/test_ttk/__init__.pyt<module>ttest/test_ttk/support.py000064400000007222151703463030011457 0ustar00import functools import re import unittest import Tkinter as tkinter class AbstractTkTest: @classmethod def setUpClass(cls): cls._old_support_default_root = tkinter._support_default_root destroy_default_root() tkinter.NoDefaultRoot() cls.root = tkinter.Tk() cls.wantobjects = cls.root.wantobjects() # De-maximize main window. # Some window managers can maximize new windows. cls.root.wm_state('normal') try: cls.root.wm_attributes('-zoomed', False) except tkinter.TclError: pass @classmethod def tearDownClass(cls): cls.root.update_idletasks() cls.root.destroy() del cls.root tkinter._default_root = None tkinter._support_default_root = cls._old_support_default_root def setUp(self): self.root.deiconify() def tearDown(self): for w in self.root.winfo_children(): w.destroy() self.root.withdraw() def destroy_default_root(): if getattr(tkinter, '_default_root', None): tkinter._default_root.update_idletasks() tkinter._default_root.destroy() tkinter._default_root = None def simulate_mouse_click(widget, x, y): """Generate proper events to click at the x, y position (tries to act like an X server).""" widget.event_generate('<Enter>', x=0, y=0) widget.event_generate('<Motion>', x=x, y=y) widget.event_generate('<ButtonPress-1>', x=x, y=y) widget.event_generate('<ButtonRelease-1>', x=x, y=y) import _tkinter tcl_version = tuple(map(int, _tkinter.TCL_VERSION.split('.'))) def requires_tcl(*version): if len(version) <= 2: return unittest.skipUnless(tcl_version >= version, 'requires Tcl version >= ' + '.'.join(map(str, version))) def deco(test): @functools.wraps(test) def newtest(self): if get_tk_patchlevel() < version: self.skipTest('requires Tcl version >= ' + '.'.join(map(str, version))) test(self) return newtest return deco _tk_patchlevel = None def get_tk_patchlevel(): global _tk_patchlevel if _tk_patchlevel is None: tcl = tkinter.Tcl() patchlevel = tcl.call('info', 'patchlevel') m = re.match(r'(\d+)\.(\d+)([ab.])(\d+)$', patchlevel) major, minor, releaselevel, serial = m.groups() major, minor, serial = int(major), int(minor), int(serial) releaselevel = {'a': 'alpha', 'b': 'beta', '.': 'final'}[releaselevel] if releaselevel == 'final': _tk_patchlevel = major, minor, serial, releaselevel, 0 else: _tk_patchlevel = major, minor, 0, releaselevel, serial return _tk_patchlevel units = { 'c': 72 / 2.54, # centimeters 'i': 72, # inches 'm': 72 / 25.4, # millimeters 'p': 1, # points } def pixels_conv(value): return float(value[:-1]) * units[value[-1:]] def tcl_obj_eq(actual, expected): if actual == expected: return True if isinstance(actual, _tkinter.Tcl_Obj): if isinstance(expected, str): return str(actual) == expected if isinstance(actual, tuple): if isinstance(expected, tuple): return (len(actual) == len(expected) and all(tcl_obj_eq(act, exp) for act, exp in zip(actual, expected))) return False def widget_eq(actual, expected): if actual == expected: return True if isinstance(actual, (str, tkinter.Widget)): if isinstance(expected, (str, tkinter.Widget)): return str(actual) == str(expected) return False test/test_ttk/support.pyc000064400000012334151703463030011622 0ustar00� zfc@s�ddlZddlZddlZddlZddd��YZd�Zd�ZddlZe e eejj d���Zd�Zdad�Zid d d6d d6d d d6dd6Zd�Zd�Zd�ZdS(i����NtAbstractTkTestcBs8eZed��Zed��Zd�Zd�ZRS(cCs�tj|_t�tj�tj�|_|jj�|_|jjd�y|jj dt �Wntjk r{nXdS(Ntnormals-zoomed(ttkintert_support_default_roott_old_support_default_roottdestroy_default_roott NoDefaultRoottTktroottwantobjectstwm_statet wm_attributestFalsetTclError(tcls((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt setUpClasss cCs9|jj�|jj�|`dt_|jt_dS(N(Rtupdate_idletaskstdestroytNoneRt _default_rootRR(R((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt tearDownClasss cCs|jj�dS(N(Rt deiconify(tself((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytsetUpscCs5x!|jj�D]}|j�qW|jj�dS(N(Rtwinfo_childrenRtwithdraw(Rtw((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyttearDown"s(t__name__t __module__tclassmethodRRRR(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyRs cCs<ttdd�r8tjj�tjj�dt_ndS(NR(tgetattrRRRRR(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyR's cCsh|jddddd�|jdd|d|�|jdd|d|�|jdd|d|�dS( sYGenerate proper events to click at the x, y position (tries to act like an X server).s<Enter>txitys<Motion>s<ButtonPress-1>s<ButtonRelease-1>N(tevent_generate(twidgetR R!((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytsimulate_mouse_click-st.csQt��dkr>tjt�kddjtt����S�fd�}|S(Nisrequires Tcl version >= R%cs%tj����fd��}|S(NcsCt��kr5|jddjtt����n�|�dS(Nsrequires Tcl version >= R%(tget_tk_patchleveltskipTesttjointmaptstr(R(ttesttversion(s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytnewtest?s (t functoolstwraps(R+R-(R,(R+s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytdeco>s!(tlentunittestt skipUnlessttcl_versionR(R)R*(R,R0((R,s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytrequires_tcl9s cCs�tdkr�tj�}|jdd�}tjd|�}|j�\}}}}t|�t|�t|�}}}idd6dd6dd 6|}|dkr�||||d faq�||d ||fantS(Ntinfot patchlevels(\d+)\.(\d+)([ab.])(\d+)$talphatatbetatbtfinalR%i( t_tk_patchlevelRRtTcltcalltretmatchtgroupstint(ttclR7tmtmajortminortreleaseleveltserial((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyR&Is&iHgR���Q@tctigffffff9@REitpcCst|d �t|dS(Ni����(tfloattunits(tvalue((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytpixels_conv_scCs�||krtSt|tj�rDt|t�rDt|�|kSnt|t�r�t|t�r�t|�t|�ko�td�t||�D��Snt S(Ncss$|]\}}t||�VqdS(N(t tcl_obj_eq(t.0tacttexp((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pys <genexpr>ks( tTruet isinstancet_tkintertTcl_ObjR*ttupleR1talltzipR(tactualtexpected((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyRQbs cCs]||krtSt|ttjf�rYt|ttjf�rYt|�t|�kSntS(N(RURVR*RtWidgetR(R\R]((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt widget_eqos((R.R@R2tTkinterRRRR$RWRYR)RCtTCL_VERSIONtsplitR4R5RR=R&RNRPRQR_(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt<module>s&! ! test/test_ttk/support.pyo000064400000012334151703463030011636 0ustar00� zfc@s�ddlZddlZddlZddlZddd��YZd�Zd�ZddlZe e eejj d���Zd�Zdad�Zid d d6d d6d d d6dd6Zd�Zd�Zd�ZdS(i����NtAbstractTkTestcBs8eZed��Zed��Zd�Zd�ZRS(cCs�tj|_t�tj�tj�|_|jj�|_|jjd�y|jj dt �Wntjk r{nXdS(Ntnormals-zoomed(ttkintert_support_default_roott_old_support_default_roottdestroy_default_roott NoDefaultRoottTktroottwantobjectstwm_statet wm_attributestFalsetTclError(tcls((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt setUpClasss cCs9|jj�|jj�|`dt_|jt_dS(N(Rtupdate_idletaskstdestroytNoneRt _default_rootRR(R((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt tearDownClasss cCs|jj�dS(N(Rt deiconify(tself((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytsetUpscCs5x!|jj�D]}|j�qW|jj�dS(N(Rtwinfo_childrenRtwithdraw(Rtw((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyttearDown"s(t__name__t __module__tclassmethodRRRR(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyRs cCs<ttdd�r8tjj�tjj�dt_ndS(NR(tgetattrRRRRR(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyR's cCsh|jddddd�|jdd|d|�|jdd|d|�|jdd|d|�dS( sYGenerate proper events to click at the x, y position (tries to act like an X server).s<Enter>txitys<Motion>s<ButtonPress-1>s<ButtonRelease-1>N(tevent_generate(twidgetR R!((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytsimulate_mouse_click-st.csQt��dkr>tjt�kddjtt����S�fd�}|S(Nisrequires Tcl version >= R%cs%tj����fd��}|S(NcsCt��kr5|jddjtt����n�|�dS(Nsrequires Tcl version >= R%(tget_tk_patchleveltskipTesttjointmaptstr(R(ttesttversion(s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytnewtest?s (t functoolstwraps(R+R-(R,(R+s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytdeco>s!(tlentunittestt skipUnlessttcl_versionR(R)R*(R,R0((R,s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytrequires_tcl9s cCs�tdkr�tj�}|jdd�}tjd|�}|j�\}}}}t|�t|�t|�}}}idd6dd6dd 6|}|dkr�||||d faq�||d ||fantS(Ntinfot patchlevels(\d+)\.(\d+)([ab.])(\d+)$talphatatbetatbtfinalR%i( t_tk_patchlevelRRtTcltcalltretmatchtgroupstint(ttclR7tmtmajortminortreleaseleveltserial((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyR&Is&iHgR���Q@tctigffffff9@REitpcCst|d �t|dS(Ni����(tfloattunits(tvalue((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pytpixels_conv_scCs�||krtSt|tj�rDt|t�rDt|�|kSnt|t�r�t|t�r�t|�t|�ko�td�t||�D��Snt S(Ncss$|]\}}t||�VqdS(N(t tcl_obj_eq(t.0tacttexp((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pys <genexpr>ks( tTruet isinstancet_tkintertTcl_ObjR*ttupleR1talltzipR(tactualtexpected((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyRQbs cCs]||krtSt|ttjf�rYt|ttjf�rYt|�t|�kSntS(N(RURVR*RtWidgetR(R\R]((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt widget_eqos((R.R@R2tTkinterRRRR$RWRYR)RCtTCL_VERSIONtsplitR4R5RR=R&RNRPRQR_(((s4/usr/lib64/python2.7/lib-tk/test/test_ttk/support.pyt<module>s&! ! test/test_ttk/test_extensions.py000064400000026325151703463030013206 0ustar00import sys import unittest import Tkinter as tkinter import ttk from test.test_support import requires, run_unittest, swap_attr from test_ttk.support import AbstractTkTest, destroy_default_root requires('gui') class LabeledScaleTest(AbstractTkTest, unittest.TestCase): def tearDown(self): self.root.update_idletasks() super(LabeledScaleTest, self).tearDown() def test_widget_destroy(self): # automatically created variable x = ttk.LabeledScale(self.root) var = x._variable._name x.destroy() self.assertRaises(tkinter.TclError, x.tk.globalgetvar, var) # manually created variable myvar = tkinter.DoubleVar(self.root) name = myvar._name x = ttk.LabeledScale(self.root, variable=myvar) x.destroy() if self.wantobjects: self.assertEqual(x.tk.globalgetvar(name), myvar.get()) else: self.assertEqual(float(x.tk.globalgetvar(name)), myvar.get()) del myvar self.assertRaises(tkinter.TclError, x.tk.globalgetvar, name) # checking that the tracing callback is properly removed myvar = tkinter.IntVar(self.root) # LabeledScale will start tracing myvar x = ttk.LabeledScale(self.root, variable=myvar) x.destroy() # Unless the tracing callback was removed, creating a new # LabeledScale with the same var will cause an error now. This # happens because the variable will be set to (possibly) a new # value which causes the tracing callback to be called and then # it tries calling instance attributes not yet defined. ttk.LabeledScale(self.root, variable=myvar) if hasattr(sys, 'last_type'): self.assertNotEqual(sys.last_type, tkinter.TclError) def test_initialization_no_master(self): # no master passing with swap_attr(tkinter, '_default_root', None), \ swap_attr(tkinter, '_support_default_root', True): try: x = ttk.LabeledScale() self.assertIsNotNone(tkinter._default_root) self.assertEqual(x.master, tkinter._default_root) self.assertEqual(x.tk, tkinter._default_root.tk) x.destroy() finally: destroy_default_root() def test_initialization(self): # master passing master = tkinter.Frame(self.root) x = ttk.LabeledScale(master) self.assertEqual(x.master, master) x.destroy() # variable initialization/passing passed_expected = (('0', 0), (0, 0), (10, 10), (-1, -1), (sys.maxint + 1, sys.maxint + 1)) if self.wantobjects: passed_expected += ((2.5, 2),) for pair in passed_expected: x = ttk.LabeledScale(self.root, from_=pair[0]) self.assertEqual(x.value, pair[1]) x.destroy() x = ttk.LabeledScale(self.root, from_='2.5') self.assertRaises(ValueError, x._variable.get) x.destroy() x = ttk.LabeledScale(self.root, from_=None) self.assertRaises(ValueError, x._variable.get) x.destroy() # variable should have its default value set to the from_ value myvar = tkinter.DoubleVar(self.root, value=20) x = ttk.LabeledScale(self.root, variable=myvar) self.assertEqual(x.value, 0) x.destroy() # check that it is really using a DoubleVar x = ttk.LabeledScale(self.root, variable=myvar, from_=0.5) self.assertEqual(x.value, 0.5) self.assertEqual(x._variable._name, myvar._name) x.destroy() # widget positionment def check_positions(scale, scale_pos, label, label_pos): self.assertEqual(scale.pack_info()['side'], scale_pos) self.assertEqual(label.place_info()['anchor'], label_pos) x = ttk.LabeledScale(self.root, compound='top') check_positions(x.scale, 'bottom', x.label, 'n') x.destroy() x = ttk.LabeledScale(self.root, compound='bottom') check_positions(x.scale, 'top', x.label, 's') x.destroy() # invert default positions x = ttk.LabeledScale(self.root, compound='unknown') check_positions(x.scale, 'top', x.label, 's') x.destroy() x = ttk.LabeledScale(self.root) # take default positions check_positions(x.scale, 'bottom', x.label, 'n') x.destroy() # extra, and invalid, kwargs self.assertRaises(tkinter.TclError, ttk.LabeledScale, master, a='b') def test_horizontal_range(self): lscale = ttk.LabeledScale(self.root, from_=0, to=10) lscale.pack() lscale.wait_visibility() lscale.update() linfo_1 = lscale.label.place_info() prev_xcoord = lscale.scale.coords()[0] self.assertEqual(prev_xcoord, int(linfo_1['x'])) # change range to: from -5 to 5. This should change the x coord of # the scale widget, since 0 is at the middle of the new # range. lscale.scale.configure(from_=-5, to=5) # The following update is needed since the test doesn't use mainloop, # at the same time this shouldn't affect test outcome lscale.update() curr_xcoord = lscale.scale.coords()[0] self.assertNotEqual(prev_xcoord, curr_xcoord) # the label widget should have been repositioned too linfo_2 = lscale.label.place_info() self.assertEqual(lscale.label['text'], 0 if self.wantobjects else '0') self.assertEqual(curr_xcoord, int(linfo_2['x'])) # change the range back lscale.scale.configure(from_=0, to=10) self.assertNotEqual(prev_xcoord, curr_xcoord) self.assertEqual(prev_xcoord, int(linfo_1['x'])) lscale.destroy() def test_variable_change(self): x = ttk.LabeledScale(self.root) x.pack() x.wait_visibility() x.update() curr_xcoord = x.scale.coords()[0] newval = x.value + 1 x.value = newval # The following update is needed since the test doesn't use mainloop, # at the same time this shouldn't affect test outcome x.update() self.assertEqual(x.label['text'], newval if self.wantobjects else str(newval)) self.assertGreater(x.scale.coords()[0], curr_xcoord) self.assertEqual(x.scale.coords()[0], int(x.label.place_info()['x'])) # value outside range if self.wantobjects: conv = lambda x: x else: conv = int x.value = conv(x.scale['to']) + 1 # no changes shouldn't happen x.update() self.assertEqual(conv(x.label['text']), newval) self.assertEqual(x.scale.coords()[0], int(x.label.place_info()['x'])) x.destroy() def test_resize(self): x = ttk.LabeledScale(self.root) x.pack(expand=True, fill='both') x.wait_visibility() x.update() width, height = x.master.winfo_width(), x.master.winfo_height() width_new, height_new = width * 2, height * 2 x.value = 3 x.update() x.master.wm_geometry("%dx%d" % (width_new, height_new)) self.assertEqual(int(x.label.place_info()['x']), x.scale.coords()[0]) # Reset geometry x.master.wm_geometry("%dx%d" % (width, height)) x.destroy() class OptionMenuTest(AbstractTkTest, unittest.TestCase): def setUp(self): super(OptionMenuTest, self).setUp() self.textvar = tkinter.StringVar(self.root) def tearDown(self): del self.textvar super(OptionMenuTest, self).tearDown() def test_widget_destroy(self): var = tkinter.StringVar(self.root) optmenu = ttk.OptionMenu(self.root, var) name = var._name optmenu.update_idletasks() optmenu.destroy() self.assertEqual(optmenu.tk.globalgetvar(name), var.get()) del var self.assertRaises(tkinter.TclError, optmenu.tk.globalgetvar, name) def test_initialization(self): self.assertRaises(tkinter.TclError, ttk.OptionMenu, self.root, self.textvar, invalid='thing') optmenu = ttk.OptionMenu(self.root, self.textvar, 'b', 'a', 'b') self.assertEqual(optmenu._variable.get(), 'b') self.assertTrue(optmenu['menu']) self.assertTrue(optmenu['textvariable']) optmenu.destroy() def test_menu(self): items = ('a', 'b', 'c') default = 'a' optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items) found_default = False for i in range(len(items)): value = optmenu['menu'].entrycget(i, 'value') self.assertEqual(value, items[i]) if value == default: found_default = True self.assertTrue(found_default) optmenu.destroy() # default shouldn't be in menu if it is not part of values default = 'd' optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items) curr = None i = 0 while True: last, curr = curr, optmenu['menu'].entryconfigure(i, 'value') if last == curr: # no more menu entries break self.assertNotEqual(curr, default) i += 1 self.assertEqual(i, len(items)) # check that variable is updated correctly optmenu.pack() optmenu.wait_visibility() optmenu['menu'].invoke(0) self.assertEqual(optmenu._variable.get(), items[0]) # changing to an invalid index shouldn't change the variable self.assertRaises(tkinter.TclError, optmenu['menu'].invoke, -1) self.assertEqual(optmenu._variable.get(), items[0]) optmenu.destroy() # specifying a callback success = [] def cb_test(item): self.assertEqual(item, items[1]) success.append(True) optmenu = ttk.OptionMenu(self.root, self.textvar, 'a', command=cb_test, *items) optmenu['menu'].invoke(1) if not success: self.fail("Menu callback not invoked") optmenu.destroy() def test_unique_radiobuttons(self): # check that radiobuttons are unique across instances (bpo25684) items = ('a', 'b', 'c') default = 'a' optmenu = ttk.OptionMenu(self.root, self.textvar, default, *items) textvar2 = tkinter.StringVar(self.root) optmenu2 = ttk.OptionMenu(self.root, textvar2, default, *items) optmenu.pack() optmenu.wait_visibility() optmenu2.pack() optmenu2.wait_visibility() optmenu['menu'].invoke(1) optmenu2['menu'].invoke(2) optmenu_stringvar_name = optmenu['menu'].entrycget(0, 'variable') optmenu2_stringvar_name = optmenu2['menu'].entrycget(0, 'variable') self.assertNotEqual(optmenu_stringvar_name, optmenu2_stringvar_name) self.assertEqual(self.root.tk.globalgetvar(optmenu_stringvar_name), items[1]) self.assertEqual(self.root.tk.globalgetvar(optmenu2_stringvar_name), items[2]) optmenu.destroy() optmenu2.destroy() tests_gui = (LabeledScaleTest, OptionMenuTest) if __name__ == "__main__": run_unittest(*tests_gui) test/test_ttk/test_extensions.pyc000064400000023675151703463030013356 0ustar00� zfc@s�ddlZddlZddlZddlZddlmZmZmZddl m Z mZed�de ejfd��YZ de ejfd��YZe efZed kr�ee�ndS( i����N(trequirestrun_unittestt swap_attr(tAbstractTkTesttdestroy_default_roottguitLabeledScaleTestcBsGeZd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs$|jj�tt|�j�dS(N(troottupdate_idletaskstsuperRttearDown(tself((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR s cCsltj|j�}|jj}|j�|jtj|j j |�tj|j�}|j}tj|jd|�}|j�|jr�|j |j j |�|j��n(|j t|j j |��|j��~|jtj|j j |�tj|j�}tj|jd|�}|j�tj|jd|�ttd�rh|jtjtj�ndS(Ntvariablet last_type(tttktLabeledScaleRt _variablet_nametdestroytassertRaisesttkintertTclErrorttktglobalgetvart DoubleVartwantobjectstassertEqualtgettfloattIntVarthasattrtsystassertNotEqualR (Rtxtvartmyvartname((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_widget_destroys& %( cCs�ttdd���ttdt��izYtj�}|jtj�|j|j tj�|j|j tjj �|j�Wdt�XWdQXWdQXdS(Nt _default_roott_support_default_root( RRtNonetTrueRRtassertIsNotNoneR&RtmasterRRR(RR!((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_initialization_no_master2scs�tj�j�}tj|�}�j|j|�|j�ddddtj dtj dff}�j r}|d7}nxK|D]C}tj�jd|d�}�j|j|d�|j�q�Wtj�jdd �}�jt |jj�|j�tj�jdd�}�jt |jj�|j�tj�jd d�}tj�jd|�}�j|jd�|j�tj�jd|dd �}�j|jd ��j|jj|j�|j��fd�}tj�jdd�}||jd|jd�|j�tj�jdd�}||jd|jd�|j�tj�jdd�}||jd|jd�|j�tj�j�}||jd|jd�|j��jtjtj|dd�dS(Nt0ii i����ig@itfrom_s2.5tvalueiRg�?cs8�j|j�d|��j|j�d|�dS(Ntsidetanchor(Rt pack_infot place_info(tscalet scale_postlabelt label_pos(R(s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pytcheck_positionsastcompoundttoptbottomtntstunknowntatb(R-i(ii(i i (i����i����(g@i((g@i(RtFrameRRRRR+RRtmaxintRR/Rt ValueErrorRRR(RRR4R6R(RR+R!tpassed_expectedtpairR#R8((Rs</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_initialization?sP cCs^tj|jdddd�}|j�|j�|j�|jj�}|jj �d}|j |t|d��|jjdddd�|j�|jj �d}|j ||�|jj�}|j |jd|jr�dnd �|j |t|d��|jjdddd�|j ||�|j |t|d��|j�dS( NR.ittoi R!i����ittextR-(RRRtpacktwait_visibilitytupdateR6R3R4tcoordsRtintt configureR RR(Rtlscaletlinfo_1tprev_xcoordtcurr_xcoordtlinfo_2((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_horizontal_rangevs$ &cCsvtj|j�}|j�|j�|j�|jj�d}|jd}||_|j�|j |j d|jr�|n t|��|j |jj�d|�|j |jj�dt|j j�d��|jr�d�}nt}||jd�d|_|j�|j ||j d�|�|j |jj�dt|j j�d��|j�dS(NiiRHR!cSs|S(N((R!((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt<lambda>�tRG(RRRRIRJRKR4RLR/RR6Rtstrt assertGreaterRMR3R(RR!RRtnewvaltconv((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_variable_change�s, cCs�tj|j�}|jdtdd�|j�|j�|jj�|jj �}}|d|d}}d|_ |j�|jjd||f�|jt |jj�d�|jj�d�|jjd||f�|j�dS( Ntexpandtfilltbothiis%dx%dR!i(RRRRIR)RJRKR+twinfo_widthtwinfo_heightR/twm_geometryRRMR6R3R4RLR(RR!twidththeightt width_newt height_new((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_resize�s ( t__name__t __module__R R%R,RFRTR[Rf(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR s " 7 tOptionMenuTestcBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(R RitsetUpRt StringVarRttextvar(R((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRj�scCs|`tt|�j�dS(N(RlR RiR (R((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR �scCs�tj|j�}tj|j|�}|j}|j�|j�|j|j j |�|j��~|jtj |j j |�dS(N(RRkRRt OptionMenuRRRRRRRRR(RR"toptmenuR$((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR%�s "cCs�|jtjtj|j|jdd�tj|j|jddd�}|j|jj �d�|j |d�|j |d�|j�dS(NtinvalidtthingR@R?tmenuttextvariable(RRRRRmRRlRRRt assertTrueR(RRn((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRF�s!c s7d �d}tj�j�j|��}t}xYtt���D]E}|dj|d�}�j|�|�||krCt }qCqCW�j |�|j�d}tj�j�j|��}d}d}xQt r&||dj |d�}}||kr Pn�j||�|d7}q�W�j|t���|j�|j�|djd��j|jj��d��jtj|djd ��j|jj��d�|j�g����fd �}tj�j�jdd|��}|djd��s)�jd�n|j�dS(NR?R@tcRqR/tdiii����cs%�j|�d��jt�dS(Ni(RtappendR)(titem(titemsRtsuccess(s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pytcb_teststcommandsMenu callback not invoked(R?R@Rt(RRmRRltFalsetrangetlent entrycgetRR)RsRR(tentryconfigureR RIRJtinvokeRRRRRtfail( RtdefaultRnt found_defaulttiR/tcurrtlastRz((RxRRys</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt test_menu�sJ cCs;d }d}tj|j|j||�}tj|j�}tj|j|||�}|j�|j�|j�|j�|djd�|djd�|dj dd�}|dj dd�}|j ||�|j|jjj |�|d�|j|jjj |�|d�|j�|j�dS( NR?R@RtRqiiiR(R?R@Rt(RRmRRlRRkRIRJR�RR RRRR(RRxR�Rnttextvar2toptmenu2toptmenu_stringvar_nametoptmenu2_stringvar_name((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_unique_radiobuttonss* (RgRhRjR R%RFR�R�(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRi�s 4t__main__(RtunittesttTkinterRRttest.test_supportRRRttest_ttk.supportRRtTestCaseRRit tests_guiRg(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt<module>s �qtest/test_ttk/test_extensions.pyo000064400000023675151703463030013372 0ustar00� zfc@s�ddlZddlZddlZddlZddlmZmZmZddl m Z mZed�de ejfd��YZ de ejfd��YZe efZed kr�ee�ndS( i����N(trequirestrun_unittestt swap_attr(tAbstractTkTesttdestroy_default_roottguitLabeledScaleTestcBsGeZd�Zd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs$|jj�tt|�j�dS(N(troottupdate_idletaskstsuperRttearDown(tself((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR s cCsltj|j�}|jj}|j�|jtj|j j |�tj|j�}|j}tj|jd|�}|j�|jr�|j |j j |�|j��n(|j t|j j |��|j��~|jtj|j j |�tj|j�}tj|jd|�}|j�tj|jd|�ttd�rh|jtjtj�ndS(Ntvariablet last_type(tttktLabeledScaleRt _variablet_nametdestroytassertRaisesttkintertTclErrorttktglobalgetvart DoubleVartwantobjectstassertEqualtgettfloattIntVarthasattrtsystassertNotEqualR (Rtxtvartmyvartname((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_widget_destroys& %( cCs�ttdd���ttdt��izYtj�}|jtj�|j|j tj�|j|j tjj �|j�Wdt�XWdQXWdQXdS(Nt _default_roott_support_default_root( RRtNonetTrueRRtassertIsNotNoneR&RtmasterRRR(RR!((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_initialization_no_master2scs�tj�j�}tj|�}�j|j|�|j�ddddtj dtj dff}�j r}|d7}nxK|D]C}tj�jd|d�}�j|j|d�|j�q�Wtj�jdd �}�jt |jj�|j�tj�jdd�}�jt |jj�|j�tj�jd d�}tj�jd|�}�j|jd�|j�tj�jd|dd �}�j|jd ��j|jj|j�|j��fd�}tj�jdd�}||jd|jd�|j�tj�jdd�}||jd|jd�|j�tj�jdd�}||jd|jd�|j�tj�j�}||jd|jd�|j��jtjtj|dd�dS(Nt0ii i����ig@itfrom_s2.5tvalueiRg�?cs8�j|j�d|��j|j�d|�dS(Ntsidetanchor(Rt pack_infot place_info(tscalet scale_postlabelt label_pos(R(s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pytcheck_positionsastcompoundttoptbottomtntstunknowntatb(R-i(ii(i i (i����i����(g@i((g@i(RtFrameRRRRR+RRtmaxintRR/Rt ValueErrorRRR(RRR4R6R(RR+R!tpassed_expectedtpairR#R8((Rs</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_initialization?sP cCs^tj|jdddd�}|j�|j�|j�|jj�}|jj �d}|j |t|d��|jjdddd�|j�|jj �d}|j ||�|jj�}|j |jd|jr�dnd �|j |t|d��|jjdddd�|j ||�|j |t|d��|j�dS( NR.ittoi R!i����ittextR-(RRRtpacktwait_visibilitytupdateR6R3R4tcoordsRtintt configureR RR(Rtlscaletlinfo_1tprev_xcoordtcurr_xcoordtlinfo_2((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_horizontal_rangevs$ &cCsvtj|j�}|j�|j�|j�|jj�d}|jd}||_|j�|j |j d|jr�|n t|��|j |jj�d|�|j |jj�dt|j j�d��|jr�d�}nt}||jd�d|_|j�|j ||j d�|�|j |jj�dt|j j�d��|j�dS(NiiRHR!cSs|S(N((R!((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt<lambda>�tRG(RRRRIRJRKR4RLR/RR6Rtstrt assertGreaterRMR3R(RR!RRtnewvaltconv((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_variable_change�s, cCs�tj|j�}|jdtdd�|j�|j�|jj�|jj �}}|d|d}}d|_ |j�|jjd||f�|jt |jj�d�|jj�d�|jjd||f�|j�dS( Ntexpandtfilltbothiis%dx%dR!i(RRRRIR)RJRKR+twinfo_widthtwinfo_heightR/twm_geometryRRMR6R3R4RLR(RR!twidththeightt width_newt height_new((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_resize�s ( t__name__t __module__R R%R,RFRTR[Rf(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR s " 7 tOptionMenuTestcBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(R RitsetUpRt StringVarRttextvar(R((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRj�scCs|`tt|�j�dS(N(RlR RiR (R((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR �scCs�tj|j�}tj|j|�}|j}|j�|j�|j|j j |�|j��~|jtj |j j |�dS(N(RRkRRt OptionMenuRRRRRRRRR(RR"toptmenuR$((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyR%�s "cCs�|jtjtj|j|jdd�tj|j|jddd�}|j|jj �d�|j |d�|j |d�|j�dS(NtinvalidtthingR@R?tmenuttextvariable(RRRRRmRRlRRRt assertTrueR(RRn((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRF�s!c s7d �d}tj�j�j|��}t}xYtt���D]E}|dj|d�}�j|�|�||krCt }qCqCW�j |�|j�d}tj�j�j|��}d}d}xQt r&||dj |d�}}||kr Pn�j||�|d7}q�W�j|t���|j�|j�|djd��j|jj��d��jtj|djd ��j|jj��d�|j�g����fd �}tj�j�jdd|��}|djd��s)�jd�n|j�dS(NR?R@tcRqR/tdiii����cs%�j|�d��jt�dS(Ni(RtappendR)(titem(titemsRtsuccess(s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pytcb_teststcommandsMenu callback not invoked(R?R@Rt(RRmRRltFalsetrangetlent entrycgetRR)RsRR(tentryconfigureR RIRJtinvokeRRRRRtfail( RtdefaultRnt found_defaulttiR/tcurrtlastRz((RxRRys</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt test_menu�sJ cCs;d }d}tj|j|j||�}tj|j�}tj|j|||�}|j�|j�|j�|j�|djd�|djd�|dj dd�}|dj dd�}|j ||�|j|jjj |�|d�|j|jjj |�|d�|j�|j�dS( NR?R@RtRqiiiR(R?R@Rt(RRmRRlRRkRIRJR�RR RRRR(RRxR�Rnttextvar2toptmenu2toptmenu_stringvar_nametoptmenu2_stringvar_name((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_unique_radiobuttonss* (RgRhRjR R%RFR�R�(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyRi�s 4t__main__(RtunittesttTkinterRRttest.test_supportRRRttest_ttk.supportRRtTestCaseRRit tests_guiRg(((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyt<module>s �qtest/test_ttk/test_functions.py000064400000041677151703463030013026 0ustar00# -*- encoding: utf-8 -*- import sys import unittest import ttk class MockTkApp: def splitlist(self, arg): if isinstance(arg, tuple): return arg return arg.split(':') def wantobjects(self): return True class MockTclObj(object): typename = 'test' def __init__(self, val): self.val = val def __str__(self): return unicode(self.val) class MockStateSpec(object): typename = 'StateSpec' def __init__(self, *args): self.val = args def __str__(self): return ' '.join(self.val) class InternalFunctionsTest(unittest.TestCase): def test_format_optdict(self): def check_against(fmt_opts, result): for i in range(0, len(fmt_opts), 2): self.assertEqual(result.pop(fmt_opts[i]), fmt_opts[i + 1]) if result: self.fail("result still got elements: %s" % result) # passing an empty dict should return an empty object (tuple here) self.assertFalse(ttk._format_optdict({})) # check list formatting check_against( ttk._format_optdict({'fg': 'blue', 'padding': [1, 2, 3, 4]}), {'-fg': 'blue', '-padding': '1 2 3 4'}) # check tuple formatting (same as list) check_against( ttk._format_optdict({'test': (1, 2, '', 0)}), {'-test': '1 2 {} 0'}) # check untouched values check_against( ttk._format_optdict({'test': {'left': 'as is'}}), {'-test': {'left': 'as is'}}) # check script formatting check_against( ttk._format_optdict( {'test': [1, -1, '', '2m', 0], 'test2': 3, 'test3': '', 'test4': 'abc def', 'test5': '"abc"', 'test6': '{}', 'test7': '} -spam {'}, script=True), {'-test': '{1 -1 {} 2m 0}', '-test2': '3', '-test3': '{}', '-test4': '{abc def}', '-test5': '{"abc"}', '-test6': r'\{\}', '-test7': r'\}\ -spam\ \{'}) opts = {u'αβγ': True, u'á': False} orig_opts = opts.copy() # check if giving unicode keys is fine check_against(ttk._format_optdict(opts), {u'-αβγ': True, u'-á': False}) # opts should remain unchanged self.assertEqual(opts, orig_opts) # passing values with spaces inside a tuple/list check_against( ttk._format_optdict( {'option': ('one two', 'three')}), {'-option': '{one two} three'}) check_against( ttk._format_optdict( {'option': ('one\ttwo', 'three')}), {'-option': '{one\ttwo} three'}) # passing empty strings inside a tuple/list check_against( ttk._format_optdict( {'option': ('', 'one')}), {'-option': '{} one'}) # passing values with braces inside a tuple/list check_against( ttk._format_optdict( {'option': ('one} {two', 'three')}), {'-option': r'one\}\ \{two three'}) # passing quoted strings inside a tuple/list check_against( ttk._format_optdict( {'option': ('"one"', 'two')}), {'-option': '{"one"} two'}) check_against( ttk._format_optdict( {'option': ('{one}', 'two')}), {'-option': r'\{one\} two'}) # ignore an option amount_opts = len(ttk._format_optdict(opts, ignore=(u'á'))) // 2 self.assertEqual(amount_opts, len(opts) - 1) # ignore non-existing options amount_opts = len(ttk._format_optdict(opts, ignore=(u'á', 'b'))) // 2 self.assertEqual(amount_opts, len(opts) - 1) # ignore every option self.assertFalse(ttk._format_optdict(opts, ignore=opts.keys())) def test_format_mapdict(self): opts = {'a': [('b', 'c', 'val'), ('d', 'otherval'), ('', 'single')]} result = ttk._format_mapdict(opts) self.assertEqual(len(result), len(opts.keys()) * 2) self.assertEqual(result, ('-a', '{b c} val d otherval {} single')) self.assertEqual(ttk._format_mapdict(opts, script=True), ('-a', '{{b c} val d otherval {} single}')) self.assertEqual(ttk._format_mapdict({2: []}), ('-2', '')) opts = {u'üñíćódè': [(u'á', u'vãl')]} result = ttk._format_mapdict(opts) self.assertEqual(result, (u'-üñíćódè', u'á vãl')) # empty states valid = {'opt': [('', u'', 'hi')]} self.assertEqual(ttk._format_mapdict(valid), ('-opt', '{ } hi')) # when passing multiple states, they all must be strings invalid = {'opt': [(1, 2, 'valid val')]} self.assertRaises(TypeError, ttk._format_mapdict, invalid) invalid = {'opt': [([1], '2', 'valid val')]} self.assertRaises(TypeError, ttk._format_mapdict, invalid) # but when passing a single state, it can be anything valid = {'opt': [[1, 'value']]} self.assertEqual(ttk._format_mapdict(valid), ('-opt', '1 value')) # special attention to single states which evalute to False for stateval in (None, 0, False, '', set()): # just some samples valid = {'opt': [(stateval, 'value')]} self.assertEqual(ttk._format_mapdict(valid), ('-opt', '{} value')) # values must be iterable opts = {'a': None} self.assertRaises(TypeError, ttk._format_mapdict, opts) # items in the value must have size >= 2 self.assertRaises(IndexError, ttk._format_mapdict, {'a': [('invalid', )]}) def test_format_elemcreate(self): self.assertTrue(ttk._format_elemcreate(None), (None, ())) ## Testing type = image # image type expects at least an image name, so this should raise # IndexError since it tries to access the index 0 of an empty tuple self.assertRaises(IndexError, ttk._format_elemcreate, 'image') # don't format returned values as a tcl script # minimum acceptable for image type self.assertEqual(ttk._format_elemcreate('image', False, 'test'), ("test ", ())) # specifying a state spec self.assertEqual(ttk._format_elemcreate('image', False, 'test', ('', 'a')), ("test {} a", ())) # state spec with multiple states self.assertEqual(ttk._format_elemcreate('image', False, 'test', ('a', 'b', 'c')), ("test {a b} c", ())) # state spec and options res = ttk._format_elemcreate('image', False, 'test', ('a', 'b'), a='x', b='y') self.assertEqual(res[0], "test a b") self.assertEqual(set(res[1]), {"-a", "x", "-b", "y"}) # format returned values as a tcl script # state spec with multiple states and an option with a multivalue self.assertEqual(ttk._format_elemcreate('image', True, 'test', ('a', 'b', 'c', 'd'), x=[2, 3]), ("{test {a b c} d}", "-x {2 3}")) ## Testing type = vsapi # vsapi type expects at least a class name and a part_id, so this # should raise a ValueError since it tries to get two elements from # an empty tuple self.assertRaises(ValueError, ttk._format_elemcreate, 'vsapi') # don't format returned values as a tcl script # minimum acceptable for vsapi self.assertEqual(ttk._format_elemcreate('vsapi', False, 'a', 'b'), ("a b ", ())) # now with a state spec with multiple states self.assertEqual(ttk._format_elemcreate('vsapi', False, 'a', 'b', ('a', 'b', 'c')), ("a b {a b} c", ())) # state spec and option self.assertEqual(ttk._format_elemcreate('vsapi', False, 'a', 'b', ('a', 'b'), opt='x'), ("a b a b", ("-opt", "x"))) # format returned values as a tcl script # state spec with a multivalue and an option self.assertEqual(ttk._format_elemcreate('vsapi', True, 'a', 'b', ('a', 'b', [1, 2]), opt='x'), ("{a b {a b} {1 2}}", "-opt x")) # Testing type = from # from type expects at least a type name self.assertRaises(IndexError, ttk._format_elemcreate, 'from') self.assertEqual(ttk._format_elemcreate('from', False, 'a'), ('a', ())) self.assertEqual(ttk._format_elemcreate('from', False, 'a', 'b'), ('a', ('b', ))) self.assertEqual(ttk._format_elemcreate('from', True, 'a', 'b'), ('{a}', 'b')) def test_format_layoutlist(self): def sample(indent=0, indent_size=2): return ttk._format_layoutlist( [('a', {'other': [1, 2, 3], 'children': [('b', {'children': [('c', {'children': [('d', {'nice': 'opt'})], 'something': (1, 2) })] })] })], indent=indent, indent_size=indent_size)[0] def sample_expected(indent=0, indent_size=2): spaces = lambda amount=0: ' ' * (amount + indent) return ( "%sa -other {1 2 3} -children {\n" "%sb -children {\n" "%sc -something {1 2} -children {\n" "%sd -nice opt\n" "%s}\n" "%s}\n" "%s}" % (spaces(), spaces(indent_size), spaces(2 * indent_size), spaces(3 * indent_size), spaces(2 * indent_size), spaces(indent_size), spaces())) # empty layout self.assertEqual(ttk._format_layoutlist([])[0], '') # smallest (after an empty one) acceptable layout smallest = ttk._format_layoutlist([('a', None)], indent=0) self.assertEqual(smallest, ttk._format_layoutlist([('a', '')], indent=0)) self.assertEqual(smallest[0], 'a') # testing indentation levels self.assertEqual(sample(), sample_expected()) for i in range(4): self.assertEqual(sample(i), sample_expected(i)) self.assertEqual(sample(i, i), sample_expected(i, i)) # invalid layout format, different kind of exceptions will be # raised # plain wrong format self.assertRaises(ValueError, ttk._format_layoutlist, ['bad', 'format']) self.assertRaises(TypeError, ttk._format_layoutlist, None) # _format_layoutlist always expects the second item (in every item) # to act like a dict (except when the value evalutes to False). self.assertRaises(AttributeError, ttk._format_layoutlist, [('a', 'b')]) # bad children formatting self.assertRaises(ValueError, ttk._format_layoutlist, [('name', {'children': {'a': None}})]) def test_script_from_settings(self): # empty options self.assertFalse(ttk._script_from_settings({'name': {'configure': None, 'map': None, 'element create': None}})) # empty layout self.assertEqual( ttk._script_from_settings({'name': {'layout': None}}), "ttk::style layout name {\nnull\n}") configdict = {u'αβγ': True, u'á': False} self.assertTrue( ttk._script_from_settings({'name': {'configure': configdict}})) mapdict = {u'üñíćódè': [(u'á', u'vãl')]} self.assertTrue( ttk._script_from_settings({'name': {'map': mapdict}})) # invalid image element self.assertRaises(IndexError, ttk._script_from_settings, {'name': {'element create': ['image']}}) # minimal valid image self.assertTrue(ttk._script_from_settings({'name': {'element create': ['image', 'name']}})) image = {'thing': {'element create': ['image', 'name', ('state1', 'state2', 'val')]}} self.assertEqual(ttk._script_from_settings(image), "ttk::style element create thing image {name {state1 state2} val} ") image['thing']['element create'].append({'opt': 30}) self.assertEqual(ttk._script_from_settings(image), "ttk::style element create thing image {name {state1 state2} val} " "-opt 30") image['thing']['element create'][-1]['opt'] = [MockTclObj(3), MockTclObj('2m')] self.assertEqual(ttk._script_from_settings(image), "ttk::style element create thing image {name {state1 state2} val} " "-opt {3 2m}") def test_tclobj_to_py(self): self.assertEqual( ttk._tclobj_to_py((MockStateSpec('a', 'b'), 'val')), [('a', 'b', 'val')]) self.assertEqual( ttk._tclobj_to_py([MockTclObj('1'), 2, MockTclObj('3m')]), [1, 2, '3m']) def test_list_from_statespec(self): def test_it(sspec, value, res_value, states): self.assertEqual(ttk._list_from_statespec( (sspec, value)), [states + (res_value, )]) states_even = tuple('state%d' % i for i in range(6)) statespec = MockStateSpec(*states_even) test_it(statespec, 'val', 'val', states_even) test_it(statespec, MockTclObj('val'), 'val', states_even) states_odd = tuple('state%d' % i for i in range(5)) statespec = MockStateSpec(*states_odd) test_it(statespec, 'val', 'val', states_odd) test_it(('a', 'b', 'c'), MockTclObj('val'), 'val', ('a', 'b', 'c')) def test_list_from_layouttuple(self): tk = MockTkApp() # empty layout tuple self.assertFalse(ttk._list_from_layouttuple(tk, ())) # shortest layout tuple self.assertEqual(ttk._list_from_layouttuple(tk, ('name', )), [('name', {})]) # not so interesting ltuple sample_ltuple = ('name', '-option', 'value') self.assertEqual(ttk._list_from_layouttuple(tk, sample_ltuple), [('name', {'option': 'value'})]) # empty children self.assertEqual(ttk._list_from_layouttuple(tk, ('something', '-children', ())), [('something', {'children': []})] ) # more interesting ltuple ltuple = ( 'name', '-option', 'niceone', '-children', ( ('otherone', '-children', ( ('child', )), '-otheropt', 'othervalue' ) ) ) self.assertEqual(ttk._list_from_layouttuple(tk, ltuple), [('name', {'option': 'niceone', 'children': [('otherone', {'otheropt': 'othervalue', 'children': [('child', {})] })] })] ) # bad tuples self.assertRaises(ValueError, ttk._list_from_layouttuple, tk, ('name', 'no_minus')) self.assertRaises(ValueError, ttk._list_from_layouttuple, tk, ('name', 'no_minus', 'value')) self.assertRaises(ValueError, ttk._list_from_layouttuple, tk, ('something', '-children')) # no children def test_val_or_dict(self): def func(res, opt=None, val=None): if opt is None: return res if val is None: return "test val" return (opt, val) tk = MockTkApp() tk.call = func self.assertEqual(ttk._val_or_dict(tk, {}, '-test:3'), {'test': '3'}) self.assertEqual(ttk._val_or_dict(tk, {}, ('-test', 3)), {'test': 3}) self.assertEqual(ttk._val_or_dict(tk, {'test': None}, 'x:y'), 'test val') self.assertEqual(ttk._val_or_dict(tk, {'test': 3}, 'x:y'), {'test': 3}) def test_convert_stringval(self): tests = ( (0, 0), ('09', 9), ('a', 'a'), (u'áÚ', u'áÚ'), ([], '[]'), (None, 'None') ) for orig, expected in tests: self.assertEqual(ttk._convert_stringval(orig), expected) if sys.getdefaultencoding() == 'ascii': self.assertRaises(UnicodeDecodeError, ttk._convert_stringval, 'á') class TclObjsToPyTest(unittest.TestCase): def test_unicode(self): adict = {'opt': u'välúè'} self.assertEqual(ttk.tclobjs_to_py(adict), {'opt': u'välúè'}) adict['opt'] = MockTclObj(adict['opt']) self.assertEqual(ttk.tclobjs_to_py(adict), {'opt': u'välúè'}) def test_multivalues(self): adict = {'opt': [1, 2, 3, 4]} self.assertEqual(ttk.tclobjs_to_py(adict), {'opt': [1, 2, 3, 4]}) adict['opt'] = [1, 'xm', 3] self.assertEqual(ttk.tclobjs_to_py(adict), {'opt': [1, 'xm', 3]}) adict['opt'] = (MockStateSpec('a', 'b'), u'válũè') self.assertEqual(ttk.tclobjs_to_py(adict), {'opt': [('a', 'b', u'válũè')]}) self.assertEqual(ttk.tclobjs_to_py({'x': ['y z']}), {'x': ['y z']}) def test_nosplit(self): self.assertEqual(ttk.tclobjs_to_py({'text': 'some text'}), {'text': 'some text'}) tests_nogui = (InternalFunctionsTest, TclObjsToPyTest) if __name__ == "__main__": from test.test_support import run_unittest run_unittest(*tests_nogui) test/test_ttk/test_functions.pyc000064400000037242151703463030013162 0ustar00� zfc@s�ddlZddlZddlZdfd��YZdefd��YZdefd��YZdejfd ��YZd ejfd��YZ ee fZ edkr�dd lm Z e e �ndS(i����Nt MockTkAppcBseZd�Zd�ZRS(cCs t|t�r|S|jd�S(Nt:(t isinstancettupletsplit(tselftarg((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt splitlistscCstS(N(tTrue(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytwantobjects s(t__name__t __module__RR (((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs t MockTclObjcBs eZdZd�Zd�ZRS(ttestcCs ||_dS(N(tval(RR((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt__init__scCs t|j�S(N(tunicodeR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt__str__s(R RttypenameRR(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs t MockStateSpeccBs eZdZd�Zd�ZRS(t StateSpeccGs ||_dS(N(R(Rtargs((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRscCsdj|j�S(Nt (tjoinR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR!s(R RRRR(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs tInternalFunctionsTestcBsbeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �ZRS( cs �fd�}�jtji��|tjidd6ddddgd6�idd 6d d6�|tjidBd6�idd6�|tjiidd6d6�iidd6d6�|tjiddddd gd6dd6dd6dd6dd6dd6dd6dt�id d6d!d"6dd#6d$d%6d&d'6d(d)6d*d+6�itd,6td-6}|j�}|tj|�itd.6td/6��j||�|tjidCd26�id3d46�|tjidDd26�id6d46�|tjidEd26�id8d46�|tjidFd26�id:d46�|tjidGd26�id=d46�|tjidHd26�id?d46�ttj|d@d-��d}�j|t|�d�ttj|d@dI��d}�j|t|�d��jtj|d@|j���dS(JNcsfxEtdt|�d�D]+}�j|j||�||d�qW|rb�jd|�ndS(Niiisresult still got elements: %s(trangetlentassertEqualtpoptfail(tfmt_optstresultti(R(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt check_against(s)tbluetfgiiiitpaddings-fgs1 2 3 4s-paddingtiR s1 2 {} 0s-testsas istlefti����t2mttest2ttest3sabc defttest4s"abc"ttest5s{}ttest6s } -spam {ttest7tscripts{1 -1 {} 2m 0}t3s-test2s-test3s {abc def}s-test4s{"abc"}s-test5s\{\}s-test6s \}\ -spam\ \{s-test7uαβγuáu-αβγu-ásone twotthreetoptions{one two} threes-optionsone twos{one two} threetones{} ones one} {twosone\}\ \{two threes"one"ttwos{"one"} twos{one}s\{one\} twotignoretb(iiR%i(sone twoR0(sone twoR0(R%R2(s one} {twoR0(s"one"R3(s{one}R3(uáR5( tassertFalsetttkt_format_optdictRtFalsetcopyRRtkeys(RR!toptst orig_optstamount_opts((Rs;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_optdict'sl& $ cCsid!d"d#gd6}tj|�}|jt|�t|j��d �|j|d$�|jtj|dt�d%�|jtjigd 6�d&�id'gd6}tj|�}|j|d(�id)gd6}|jtj|�d*�id+gd6}|jttj|�idgddfgd6}|jttj|�iddggd6}|jtj|�d,�xOddt dt �fD]5}i|dfgd6}|jtj|�d-�q�Widd6}|jttj|�|jttjid.gd6�dS(/NR5tcRtdtothervalR%tsingletais-as{b c} val d otherval {} singleR.s {{b c} val d otherval {} single}s-2uáuvãlu üñíćódèu-üñíćódèuá vãluthitopts-opts{ } hiis valid valt2tvalues1 valueis{} valuetinvalid(R5R@R(RARB(R%RC(s-as{b c} val d otherval {} single(s-as {{b c} val d otherval {} single}(s-2R%(uáuvãl(u-üñíćódèuá vãl(R%uRE(s-opts{ } hi(iis valid val(s-opts1 value(s-opts{} value(RI(R7t_format_mapdictRRR;RtassertRaisest TypeErrortNoneR9tsett IndexError(RR<RtvalidRItstateval((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_mapdicts4& c Cs�|jtjd�dd f�|jttjd�|jtjdtd�dd!f�|jtjdtdd"�dd#f�|jtjdtdd$�d d%f�tjdtdd&dd dd�}|j|dd �|jt|d�dd ddh�|jtjdt dd'd ddg�d(�|jt tjd�|jtjdtdd�dd)f�|jtjdtddd*�dd+f�|jtjdtddd,dd �dd-f�|jtjdt ddddddgfdd �d.�|jttjd�|jtjdtd�dd/f�|jtjdtdd�dd0f�|jtjdt dd�d1�dS(2NtimageR stest R%RDs test {} aR5R@stest {a b} ctxtyistest a bis-as-bRAiis{test {a b c} d}s-x {2 3}tvsapisa b sa b {a b} cRFsa b a bs-opts{a b {a b} {1 2}}s-opt xtfroms{a}(((R%RD((RDR5R@((RDR5(RDR5R@RA(s{test {a b c} d}s-x {2 3}((RDR5R@((RDR5(s-optRT(s{a b {a b} {1 2}}s-opt x((R5(s{a}R5(t assertTrueR7t_format_elemcreateRMRKRORR9RNRt ValueError(Rtres((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_elemcreate�s< & " cCspddd�}ddd�}|jtjg�dd�tjdgdd�}|j|tjdgdd��|j|dd�|j|�|��xRtd�D]D}|j||�||��|j|||�|||��q�W|jttjd d g�|jttjd�|jttjdg�|jttjdiidd6d 6fg�dS(NiicSsttjdidddgd6dididid d 6fgd6dd6fgd6fgd6fgd |d|�dS(NRDiiitotherR5R@RARFtnicetchildrent somethingtindenttindent_sizei(ii(R7t_format_layoutlist(RaRb((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytsample�s;cs_d�fd�}d|�||�|d|�|d|�|d|�||�|�fS(Nicsd|�S(NR((tamount(Ra(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<lambda>�R%si%sa -other {1 2 3} -children { %sb -children { %sc -something {1 2} -children { %sd -nice opt %s} %s} %s}ii((RaRbtspaces((Ras;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytsample_expected�s R%RDRaitbadtformatR5tnameR_(RDN(RDR%(RDR5( RR7RcRMRRKRZRLtAttributeError(RRdRhtsmallestR ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_layoutlist�s$ & cCs�|jtjiidd6dd6dd6d6��|jtjiidd6d6�d�itd6td6}|jtjii|d6d6��idgd 6}|jtjii|d6d6��|jt tjiidgd6d6�|jtjiiddgd6d6��iidddgd6d6}|jtj|�d�|ddj idd6�|jtj|�d�td�td�g|dddd<|jtj|�d�dS(Nt configuretmapselement createRktlayoutsttk::style layout name { null }uαβγuáuvãlu üñíćódèRStstate1tstate2RtthingsAttk::style element create thing image {name {state1 state2} val} iRFsHttk::style element create thing image {name {state1 state2} val} -opt 30iR'i����sLttk::style element create thing image {name {state1 state2} val} -opt {3 2m}(uáuvãl(RrRsR(R6R7t_script_from_settingsRMRRR9RXRKROtappendR(Rt configdicttmapdictRS((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_script_from_settingss4# cCsf|jtjtdd�df�dg�|jtjtd�dtd�g�dddg�dS( NRDR5Rt1it3mi(RDR5R(RR7t _tclobj_to_pyRR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_tclobj_to_pyGs !cs��fd�}td�td�D��}t|�}||dd|�||td�d|�td�td�D��}t|�}||dd|�|d td�dd�dS(Ncs-�jtj||f�||fg�dS(N(RR7t_list_from_statespec(tsspecRHt res_valuetstates(R(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_itQscss|]}d|VqdS(sstate%dN((t.0R ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pys <genexpr>UsiRcss|]}d|VqdS(sstate%dN((R�R ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pys <genexpr>ZsiRDR5R@(RDR5R@(RDR5R@(RRRR(RR�tstates_event statespect states_odd((Rs;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_list_from_statespecPsc Cstt�}|jtj|d��|jtj|d�difg�d}|jtj||�didd6fg�|jtj|dddf�digd6fg�ddddd ddddff}|jtj||�didd6d idd 6d ifgd6fgd6fg�|jttj|d�|jttj|d�|jttj|d�dS(NRks-optionRHR1R`s -childrenR_tniceonetotheronetchilds -otheroptt othervaluetotheropttno_minus((Rk(Rks-optionRH((R�(RkR�(RkR�RH(R`s -children(RR6R7t_list_from_layouttupleRRKRZ(Rttkt sample_ltupletltuple((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_list_from_layouttupleas. $cCs�ddd�}t�}||_|jtj|id�idd6�|jtj|id �idd6�|jtj|idd6d�d�|jtj|idd6d�idd6�dS( NcSs*|dkr|S|dkr dS||fS(Nstest val(RM(R[RFR((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytfunc�s s-test:3R/R s-testisx:ystest val(s-testi(RMRtcallRR7t_val_or_dict(RR�R�((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_val_or_dict�s cCs}d ddd gdfdf}x-|D]%\}}|jtj|�|�q%Wtj�dkry|jttjd �ndS(Nit09i RDuáÚs[]RMtasciisá(ii(R�i (RDRD(uáÚuáÚ(NRM(RMRR7t_convert_stringvaltsystgetdefaultencodingRKtUnicodeDecodeError(Rtteststorigtexpected((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_convert_stringval�s (R RR?RRR\RnRyR}R�R�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR%s X ) = 7 + . tTclObjsToPyTestcBs#eZd�Zd�Zd�ZRS(cCseidd6}|jtj|�idd6�t|d�|d<|jtj|�idd6�dS(NuvälúèRF(RR7t tclobjs_to_pyR(Rtadict((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_unicode�s cCs�iddddgd6}|jtj|�iddddgd6�dddg|d<|jtj|�idddgd6�tdd�d f|d<|jtj|�idgd6�|jtjid gd6�id gd6�dS( NiiiiRFtxmRDR5uválũèsy zRT(RDR5uválũè(RR7R�R(RR�((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_multivalues�s,)cCs+|jtjidd6�idd6�dS(Ns some textttext(RR7R�(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_nosplit�s(R RR�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR��s t__main__(trun_unittest(R�tunittestR7RtobjectRRtTestCaseRR�ttests_noguiR ttest.test_supportR�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<module>s ��test/test_ttk/test_functions.pyo000064400000037242151703463030013176 0ustar00� zfc@s�ddlZddlZddlZdfd��YZdefd��YZdefd��YZdejfd ��YZd ejfd��YZ ee fZ edkr�dd lm Z e e �ndS(i����Nt MockTkAppcBseZd�Zd�ZRS(cCs t|t�r|S|jd�S(Nt:(t isinstancettupletsplit(tselftarg((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt splitlistscCstS(N(tTrue(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytwantobjects s(t__name__t __module__RR (((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs t MockTclObjcBs eZdZd�Zd�ZRS(ttestcCs ||_dS(N(tval(RR((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt__init__scCs t|j�S(N(tunicodeR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt__str__s(R RttypenameRR(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs t MockStateSpeccBs eZdZd�Zd�ZRS(t StateSpeccGs ||_dS(N(R(Rtargs((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRscCsdj|j�S(Nt (tjoinR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR!s(R RRRR(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyRs tInternalFunctionsTestcBsbeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �ZRS( cs �fd�}�jtji��|tjidd6ddddgd6�idd 6d d6�|tjidBd6�idd6�|tjiidd6d6�iidd6d6�|tjiddddd gd6dd6dd6dd6dd6dd6dd6dt�id d6d!d"6dd#6d$d%6d&d'6d(d)6d*d+6�itd,6td-6}|j�}|tj|�itd.6td/6��j||�|tjidCd26�id3d46�|tjidDd26�id6d46�|tjidEd26�id8d46�|tjidFd26�id:d46�|tjidGd26�id=d46�|tjidHd26�id?d46�ttj|d@d-��d}�j|t|�d�ttj|d@dI��d}�j|t|�d��jtj|d@|j���dS(JNcsfxEtdt|�d�D]+}�j|j||�||d�qW|rb�jd|�ndS(Niiisresult still got elements: %s(trangetlentassertEqualtpoptfail(tfmt_optstresultti(R(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt check_against(s)tbluetfgiiiitpaddings-fgs1 2 3 4s-paddingtiR s1 2 {} 0s-testsas istlefti����t2mttest2ttest3sabc defttest4s"abc"ttest5s{}ttest6s } -spam {ttest7tscripts{1 -1 {} 2m 0}t3s-test2s-test3s {abc def}s-test4s{"abc"}s-test5s\{\}s-test6s \}\ -spam\ \{s-test7uαβγuáu-αβγu-ásone twotthreetoptions{one two} threes-optionsone twos{one two} threetones{} ones one} {twosone\}\ \{two threes"one"ttwos{"one"} twos{one}s\{one\} twotignoretb(iiR%i(sone twoR0(sone twoR0(R%R2(s one} {twoR0(s"one"R3(s{one}R3(uáR5( tassertFalsetttkt_format_optdictRtFalsetcopyRRtkeys(RR!toptst orig_optstamount_opts((Rs;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_optdict'sl& $ cCsid!d"d#gd6}tj|�}|jt|�t|j��d �|j|d$�|jtj|dt�d%�|jtjigd 6�d&�id'gd6}tj|�}|j|d(�id)gd6}|jtj|�d*�id+gd6}|jttj|�idgddfgd6}|jttj|�iddggd6}|jtj|�d,�xOddt dt �fD]5}i|dfgd6}|jtj|�d-�q�Widd6}|jttj|�|jttjid.gd6�dS(/NR5tcRtdtothervalR%tsingletais-as{b c} val d otherval {} singleR.s {{b c} val d otherval {} single}s-2uáuvãlu üñíćódèu-üñíćódèuá vãluthitopts-opts{ } hiis valid valt2tvalues1 valueis{} valuetinvalid(R5R@R(RARB(R%RC(s-as{b c} val d otherval {} single(s-as {{b c} val d otherval {} single}(s-2R%(uáuvãl(u-üñíćódèuá vãl(R%uRE(s-opts{ } hi(iis valid val(s-opts1 value(s-opts{} value(RI(R7t_format_mapdictRRR;RtassertRaisest TypeErrortNoneR9tsett IndexError(RR<RtvalidRItstateval((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_mapdicts4& c Cs�|jtjd�dd f�|jttjd�|jtjdtd�dd!f�|jtjdtdd"�dd#f�|jtjdtdd$�d d%f�tjdtdd&dd dd�}|j|dd �|jt|d�dd ddh�|jtjdt dd'd ddg�d(�|jt tjd�|jtjdtdd�dd)f�|jtjdtddd*�dd+f�|jtjdtddd,dd �dd-f�|jtjdt ddddddgfdd �d.�|jttjd�|jtjdtd�dd/f�|jtjdtdd�dd0f�|jtjdt dd�d1�dS(2NtimageR stest R%RDs test {} aR5R@stest {a b} ctxtyistest a bis-as-bRAiis{test {a b c} d}s-x {2 3}tvsapisa b sa b {a b} cRFsa b a bs-opts{a b {a b} {1 2}}s-opt xtfroms{a}(((R%RD((RDR5R@((RDR5(RDR5R@RA(s{test {a b c} d}s-x {2 3}((RDR5R@((RDR5(s-optRT(s{a b {a b} {1 2}}s-opt x((R5(s{a}R5(t assertTrueR7t_format_elemcreateRMRKRORR9RNRt ValueError(Rtres((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_elemcreate�s< & " cCspddd�}ddd�}|jtjg�dd�tjdgdd�}|j|tjdgdd��|j|dd�|j|�|��xRtd�D]D}|j||�||��|j|||�|||��q�W|jttjd d g�|jttjd�|jttjdg�|jttjdiidd6d 6fg�dS(NiicSsttjdidddgd6dididid d 6fgd6dd6fgd6fgd6fgd |d|�dS(NRDiiitotherR5R@RARFtnicetchildrent somethingtindenttindent_sizei(ii(R7t_format_layoutlist(RaRb((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytsample�s;cs_d�fd�}d|�||�|d|�|d|�|d|�||�|�fS(Nicsd|�S(NR((tamount(Ra(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<lambda>�R%si%sa -other {1 2 3} -children { %sb -children { %sc -something {1 2} -children { %sd -nice opt %s} %s} %s}ii((RaRbtspaces((Ras;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytsample_expected�s R%RDRaitbadtformatR5tnameR_(RDN(RDR%(RDR5( RR7RcRMRRKRZRLtAttributeError(RRdRhtsmallestR ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_format_layoutlist�s$ & cCs�|jtjiidd6dd6dd6d6��|jtjiidd6d6�d�itd6td6}|jtjii|d6d6��idgd 6}|jtjii|d6d6��|jt tjiidgd6d6�|jtjiiddgd6d6��iidddgd6d6}|jtj|�d�|ddj idd6�|jtj|�d�td�td�g|dddd<|jtj|�d�dS(Nt configuretmapselement createRktlayoutsttk::style layout name { null }uαβγuáuvãlu üñíćódèRStstate1tstate2RtthingsAttk::style element create thing image {name {state1 state2} val} iRFsHttk::style element create thing image {name {state1 state2} val} -opt 30iR'i����sLttk::style element create thing image {name {state1 state2} val} -opt {3 2m}(uáuvãl(RrRsR(R6R7t_script_from_settingsRMRRR9RXRKROtappendR(Rt configdicttmapdictRS((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_script_from_settingss4# cCsf|jtjtdd�df�dg�|jtjtd�dtd�g�dddg�dS( NRDR5Rt1it3mi(RDR5R(RR7t _tclobj_to_pyRR(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_tclobj_to_pyGs !cs��fd�}td�td�D��}t|�}||dd|�||td�d|�td�td�D��}t|�}||dd|�|d td�dd�dS(Ncs-�jtj||f�||fg�dS(N(RR7t_list_from_statespec(tsspecRHt res_valuetstates(R(s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_itQscss|]}d|VqdS(sstate%dN((t.0R ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pys <genexpr>UsiRcss|]}d|VqdS(sstate%dN((R�R ((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pys <genexpr>ZsiRDR5R@(RDR5R@(RDR5R@(RRRR(RR�tstates_event statespect states_odd((Rs;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_list_from_statespecPsc Cstt�}|jtj|d��|jtj|d�difg�d}|jtj||�didd6fg�|jtj|dddf�digd6fg�ddddd ddddff}|jtj||�didd6d idd 6d ifgd6fgd6fg�|jttj|d�|jttj|d�|jttj|d�dS(NRks-optionRHR1R`s -childrenR_tniceonetotheronetchilds -otheroptt othervaluetotheropttno_minus((Rk(Rks-optionRH((R�(RkR�(RkR�RH(R`s -children(RR6R7t_list_from_layouttupleRRKRZ(Rttkt sample_ltupletltuple((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_list_from_layouttupleas. $cCs�ddd�}t�}||_|jtj|id�idd6�|jtj|id �idd6�|jtj|idd6d�d�|jtj|idd6d�idd6�dS( NcSs*|dkr|S|dkr dS||fS(Nstest val(RM(R[RFR((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pytfunc�s s-test:3R/R s-testisx:ystest val(s-testi(RMRtcallRR7t_val_or_dict(RR�R�((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_val_or_dict�s cCs}d ddd gdfdf}x-|D]%\}}|jtj|�|�q%Wtj�dkry|jttjd �ndS(Nit09i RDuáÚs[]RMtasciisá(ii(R�i (RDRD(uáÚuáÚ(NRM(RMRR7t_convert_stringvaltsystgetdefaultencodingRKtUnicodeDecodeError(Rtteststorigtexpected((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_convert_stringval�s (R RR?RRR\RnRyR}R�R�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR%s X ) = 7 + . tTclObjsToPyTestcBs#eZd�Zd�Zd�ZRS(cCseidd6}|jtj|�idd6�t|d�|d<|jtj|�idd6�dS(NuvälúèRF(RR7t tclobjs_to_pyR(Rtadict((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_unicode�s cCs�iddddgd6}|jtj|�iddddgd6�dddg|d<|jtj|�idddgd6�tdd�d f|d<|jtj|�idgd6�|jtjid gd6�id gd6�dS( NiiiiRFtxmRDR5uválũèsy zRT(RDR5uválũè(RR7R�R(RR�((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_multivalues�s,)cCs+|jtjidd6�idd6�dS(Ns some textttext(RR7R�(R((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyttest_nosplit�s(R RR�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR��s t__main__(trun_unittest(R�tunittestR7RtobjectRRtTestCaseRR�ttests_noguiR ttest.test_supportR�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<module>s ��test/test_ttk/test_style.py000064400000005542151703463030012145 0ustar00import unittest import Tkinter as tkinter import ttk from test.test_support import requires, run_unittest from test_ttk.support import AbstractTkTest requires('gui') class StyleTest(AbstractTkTest, unittest.TestCase): def setUp(self): super(StyleTest, self).setUp() self.style = ttk.Style(self.root) def test_configure(self): style = self.style style.configure('TButton', background='yellow') self.assertEqual(style.configure('TButton', 'background'), 'yellow') self.assertIsInstance(style.configure('TButton'), dict) def test_map(self): style = self.style style.map('TButton', background=[('active', 'background', 'blue')]) self.assertEqual(style.map('TButton', 'background'), [('active', 'background', 'blue')] if self.wantobjects else [('active background', 'blue')]) self.assertIsInstance(style.map('TButton'), dict) def test_lookup(self): style = self.style style.configure('TButton', background='yellow') style.map('TButton', background=[('active', 'background', 'blue')]) self.assertEqual(style.lookup('TButton', 'background'), 'yellow') self.assertEqual(style.lookup('TButton', 'background', ['active', 'background']), 'blue') self.assertEqual(style.lookup('TButton', 'optionnotdefined', default='iknewit'), 'iknewit') def test_layout(self): style = self.style self.assertRaises(tkinter.TclError, style.layout, 'NotALayout') tv_style = style.layout('Treeview') # "erase" Treeview layout style.layout('Treeview', '') self.assertEqual(style.layout('Treeview'), [('null', {'sticky': 'nswe'})] ) # restore layout style.layout('Treeview', tv_style) self.assertEqual(style.layout('Treeview'), tv_style) # should return a list self.assertIsInstance(style.layout('TButton'), list) # correct layout, but "option" doesn't exist as option self.assertRaises(tkinter.TclError, style.layout, 'Treeview', [('name', {'option': 'inexistent'})]) def test_theme_use(self): self.assertRaises(tkinter.TclError, self.style.theme_use, 'nonexistingname') curr_theme = self.style.theme_use() new_theme = None for theme in self.style.theme_names(): if theme != curr_theme: new_theme = theme self.style.theme_use(theme) break else: # just one theme available, can't go on with tests return self.assertFalse(curr_theme == new_theme) self.assertFalse(new_theme != self.style.theme_use()) self.style.theme_use(curr_theme) tests_gui = (StyleTest, ) if __name__ == "__main__": run_unittest(*tests_gui) test/test_ttk/test_style.pyc000064400000006341151703463030012306 0ustar00� zfc@s�ddlZddlZddlZddlmZmZddlmZed�deej fd��YZ e fZedkr�ee�ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguit StyleTestcBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(tsuperRtsetUptttktStyletroottstyle(tself((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyRscCsU|j}|jddd�|j|jdd�d�|j|jd�t�dS(NtTButtont backgroundtyellow(R t configuretassertEqualtassertIsInstancetdict(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_configures cCsm|j}|jdddg�|j|jdd�|jrFdgndg�|j|jd�t�dS( NRR tactivetbluesactive background(RR R(RR R(sactive backgroundR(R tmapRtwantobjectsRR(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_maps cCs�|j}|jddd�|jddd g�|j|jdd�d�|j|jddddg�d�|j|jdddd�d�dS( NRR RRRtoptionnotdefinedtdefaulttiknewit(RR R(R RRRtlookup(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_lookup!s cCs�|j}|jtj|jd�|jd�}|jdd�|j|jd�didd6fg�|jd|�|j|jd�|�|j|jd�t�|jtj|jddid d 6fg�dS(Nt NotALayouttTreeviewttnulltnswetstickyRtnamet inexistenttoption(R tassertRaisesttkintertTclErrortlayoutRRtlist(RR ttv_style((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_layout-s cCs�|jtj|jjd�|jj�}d}xA|jj�D],}||krA|}|jj|�PqAqAWdS|j||k�|j||jj�k�|jj|�dS(Ntnonexistingname(R'R(R)R t theme_usetNonettheme_namestassertFalse(Rt curr_themet new_themettheme((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_theme_useDs(t__name__t __module__RRRRR-R6(((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyR s t__main__( tunittesttTkinterR(Rttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR7(((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyt<module>s P test/test_ttk/test_style.pyo000064400000006341151703463030012322 0ustar00� zfc@s�ddlZddlZddlZddlmZmZddlmZed�deej fd��YZ e fZedkr�ee�ndS(i����N(trequirestrun_unittest(tAbstractTkTesttguit StyleTestcBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs,tt|�j�tj|j�|_dS(N(tsuperRtsetUptttktStyletroottstyle(tself((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyRscCsU|j}|jddd�|j|jdd�d�|j|jd�t�dS(NtTButtont backgroundtyellow(R t configuretassertEqualtassertIsInstancetdict(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_configures cCsm|j}|jdddg�|j|jdd�|jrFdgndg�|j|jd�t�dS( NRR tactivetbluesactive background(RR R(RR R(sactive backgroundR(R tmapRtwantobjectsRR(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_maps cCs�|j}|jddd�|jddd g�|j|jdd�d�|j|jddddg�d�|j|jdddd�d�dS( NRR RRRtoptionnotdefinedtdefaulttiknewit(RR R(R RRRtlookup(RR ((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_lookup!s cCs�|j}|jtj|jd�|jd�}|jdd�|j|jd�didd6fg�|jd|�|j|jd�|�|j|jd�t�|jtj|jddid d 6fg�dS(Nt NotALayouttTreeviewttnulltnswetstickyRtnamet inexistenttoption(R tassertRaisesttkintertTclErrortlayoutRRtlist(RR ttv_style((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_layout-s cCs�|jtj|jjd�|jj�}d}xA|jj�D],}||krA|}|jj|�PqAqAWdS|j||k�|j||jj�k�|jj|�dS(Ntnonexistingname(R'R(R)R t theme_usetNonettheme_namestassertFalse(Rt curr_themet new_themettheme((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyttest_theme_useDs(t__name__t __module__RRRRR-R6(((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyR s t__main__( tunittesttTkinterR(Rttest.test_supportRRttest_ttk.supportRtTestCaseRt tests_guiR7(((s7/usr/lib64/python2.7/lib-tk/test/test_ttk/test_style.pyt<module>s P test/test_ttk/test_widgets.py000064400000166617151703463030012466 0ustar00import unittest import Tkinter as tkinter from Tkinter import TclError import ttk from test.test_support import requires, run_unittest, have_unicode, u import sys from test_functions import MockTclObj from support import (AbstractTkTest, tcl_version, get_tk_patchlevel, simulate_mouse_click) from widget_tests import (add_standard_options, noconv, noconv_meth, AbstractWidgetTest, StandardOptionsTests, IntegerSizeTests, PixelSizeTests, setUpModule) requires('gui') class StandardTtkOptionsTests(StandardOptionsTests): def test_class(self): widget = self.create() self.assertEqual(widget['class'], '') errmsg='attempt to change read-only option' if get_tk_patchlevel() < (8, 6, 0, 'beta', 3): errmsg='Attempt to change read-only option' self.checkInvalidParam(widget, 'class', 'Foo', errmsg=errmsg) widget2 = self.create(class_='Foo') self.assertEqual(widget2['class'], 'Foo') def test_padding(self): widget = self.create() self.checkParam(widget, 'padding', 0, expected=('0',)) self.checkParam(widget, 'padding', 5, expected=('5',)) self.checkParam(widget, 'padding', (5, 6), expected=('5', '6')) self.checkParam(widget, 'padding', (5, 6, 7), expected=('5', '6', '7')) self.checkParam(widget, 'padding', (5, 6, 7, 8), expected=('5', '6', '7', '8')) self.checkParam(widget, 'padding', ('5p', '6p', '7p', '8p')) self.checkParam(widget, 'padding', (), expected='') def test_style(self): widget = self.create() self.assertEqual(widget['style'], '') errmsg = 'Layout Foo not found' if hasattr(self, 'default_orient'): errmsg = ('Layout %s.Foo not found' % getattr(self, 'default_orient').title()) self.checkInvalidParam(widget, 'style', 'Foo', errmsg=errmsg) widget2 = self.create(class_='Foo') self.assertEqual(widget2['class'], 'Foo') # XXX pass class WidgetTest(AbstractTkTest, unittest.TestCase): """Tests methods available in every ttk widget.""" def setUp(self): super(WidgetTest, self).setUp() self.widget = ttk.Button(self.root, width=0, text="Text") self.widget.pack() self.widget.wait_visibility() def test_identify(self): self.widget.update_idletasks() self.assertEqual(self.widget.identify( self.widget.winfo_width() // 2, self.widget.winfo_height() // 2 ), "label") self.assertEqual(self.widget.identify(-1, -1), "") self.assertRaises(tkinter.TclError, self.widget.identify, None, 5) self.assertRaises(tkinter.TclError, self.widget.identify, 5, None) self.assertRaises(tkinter.TclError, self.widget.identify, 5, '') def test_widget_state(self): # XXX not sure about the portability of all these tests self.assertEqual(self.widget.state(), ()) self.assertEqual(self.widget.instate(['!disabled']), True) # changing from !disabled to disabled self.assertEqual(self.widget.state(['disabled']), ('!disabled', )) # no state change self.assertEqual(self.widget.state(['disabled']), ()) # change back to !disable but also active self.assertEqual(self.widget.state(['!disabled', 'active']), ('!active', 'disabled')) # no state changes, again self.assertEqual(self.widget.state(['!disabled', 'active']), ()) self.assertEqual(self.widget.state(['active', '!disabled']), ()) def test_cb(arg1, **kw): return arg1, kw self.assertEqual(self.widget.instate(['!disabled'], test_cb, "hi", **{"msg": "there"}), ('hi', {'msg': 'there'})) # attempt to set invalid statespec currstate = self.widget.state() self.assertRaises(tkinter.TclError, self.widget.instate, ['badstate']) self.assertRaises(tkinter.TclError, self.widget.instate, ['disabled', 'badstate']) # verify that widget didn't change its state self.assertEqual(currstate, self.widget.state()) # ensuring that passing None as state doesn't modify current state self.widget.state(['active', '!disabled']) self.assertEqual(self.widget.state(), ('active', )) class AbstractToplevelTest(AbstractWidgetTest, PixelSizeTests): _conv_pixels = noconv_meth @add_standard_options(StandardTtkOptionsTests) class FrameTest(AbstractToplevelTest, unittest.TestCase): OPTIONS = ( 'borderwidth', 'class', 'cursor', 'height', 'padding', 'relief', 'style', 'takefocus', 'width', ) def create(self, **kwargs): return ttk.Frame(self.root, **kwargs) @add_standard_options(StandardTtkOptionsTests) class LabelFrameTest(AbstractToplevelTest, unittest.TestCase): OPTIONS = ( 'borderwidth', 'class', 'cursor', 'height', 'labelanchor', 'labelwidget', 'padding', 'relief', 'style', 'takefocus', 'text', 'underline', 'width', ) def create(self, **kwargs): return ttk.LabelFrame(self.root, **kwargs) def test_labelanchor(self): widget = self.create() self.checkEnumParam(widget, 'labelanchor', 'e', 'en', 'es', 'n', 'ne', 'nw', 's', 'se', 'sw', 'w', 'wn', 'ws', errmsg='Bad label anchor specification {}') self.checkInvalidParam(widget, 'labelanchor', 'center') def test_labelwidget(self): widget = self.create() label = ttk.Label(self.root, text='Mupp', name='foo') self.checkParam(widget, 'labelwidget', label, expected='.foo') label.destroy() class AbstractLabelTest(AbstractWidgetTest): def checkImageParam(self, widget, name): image = tkinter.PhotoImage(master=self.root, name='image1') image2 = tkinter.PhotoImage(master=self.root, name='image2') self.checkParam(widget, name, image, expected=('image1',)) self.checkParam(widget, name, 'image1', expected=('image1',)) self.checkParam(widget, name, (image,), expected=('image1',)) self.checkParam(widget, name, (image, 'active', image2), expected=('image1', 'active', 'image2')) self.checkParam(widget, name, 'image1 active image2', expected=('image1', 'active', 'image2')) self.checkInvalidParam(widget, name, 'spam', errmsg='image "spam" doesn\'t exist') def test_compound(self): widget = self.create() self.checkEnumParam(widget, 'compound', 'none', 'text', 'image', 'center', 'top', 'bottom', 'left', 'right') def test_state(self): widget = self.create() self.checkParams(widget, 'state', 'active', 'disabled', 'normal') def test_width(self): widget = self.create() self.checkParams(widget, 'width', 402, -402, 0) @add_standard_options(StandardTtkOptionsTests) class LabelTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'anchor', 'background', 'borderwidth', 'class', 'compound', 'cursor', 'font', 'foreground', 'image', 'justify', 'padding', 'relief', 'state', 'style', 'takefocus', 'text', 'textvariable', 'underline', 'width', 'wraplength', ) _conv_pixels = noconv_meth def create(self, **kwargs): return ttk.Label(self.root, **kwargs) def test_font(self): widget = self.create() self.checkParam(widget, 'font', '-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*') @add_standard_options(StandardTtkOptionsTests) class ButtonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'class', 'command', 'compound', 'cursor', 'default', 'image', 'padding', 'state', 'style', 'takefocus', 'text', 'textvariable', 'underline', 'width', ) def create(self, **kwargs): return ttk.Button(self.root, **kwargs) def test_default(self): widget = self.create() self.checkEnumParam(widget, 'default', 'normal', 'active', 'disabled') def test_invoke(self): success = [] btn = ttk.Button(self.root, command=lambda: success.append(1)) btn.invoke() self.assertTrue(success) @add_standard_options(StandardTtkOptionsTests) class CheckbuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'class', 'command', 'compound', 'cursor', 'image', 'offvalue', 'onvalue', 'padding', 'state', 'style', 'takefocus', 'text', 'textvariable', 'underline', 'variable', 'width', ) def create(self, **kwargs): return ttk.Checkbutton(self.root, **kwargs) def test_offvalue(self): widget = self.create() self.checkParams(widget, 'offvalue', 1, 2.3, '', 'any string') def test_onvalue(self): widget = self.create() self.checkParams(widget, 'onvalue', 1, 2.3, '', 'any string') def test_invoke(self): success = [] def cb_test(): success.append(1) return "cb test called" cbtn = ttk.Checkbutton(self.root, command=cb_test) # the variable automatically created by ttk.Checkbutton is actually # undefined till we invoke the Checkbutton self.assertEqual(cbtn.state(), ('alternate', )) self.assertRaises(tkinter.TclError, cbtn.tk.globalgetvar, cbtn['variable']) res = cbtn.invoke() self.assertEqual(res, "cb test called") self.assertEqual(cbtn['onvalue'], cbtn.tk.globalgetvar(cbtn['variable'])) self.assertTrue(success) cbtn['command'] = '' res = cbtn.invoke() self.assertFalse(str(res)) self.assertLessEqual(len(success), 1) self.assertEqual(cbtn['offvalue'], cbtn.tk.globalgetvar(cbtn['variable'])) @add_standard_options(IntegerSizeTests, StandardTtkOptionsTests) class EntryTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'background', 'class', 'cursor', 'exportselection', 'font', 'foreground', 'invalidcommand', 'justify', 'show', 'state', 'style', 'takefocus', 'textvariable', 'validate', 'validatecommand', 'width', 'xscrollcommand', ) def setUp(self): super(EntryTest, self).setUp() self.entry = self.create() def create(self, **kwargs): return ttk.Entry(self.root, **kwargs) def test_invalidcommand(self): widget = self.create() self.checkCommandParam(widget, 'invalidcommand') def test_show(self): widget = self.create() self.checkParam(widget, 'show', '*') self.checkParam(widget, 'show', '') self.checkParam(widget, 'show', ' ') def test_state(self): widget = self.create() self.checkParams(widget, 'state', 'disabled', 'normal', 'readonly') def test_validate(self): widget = self.create() self.checkEnumParam(widget, 'validate', 'all', 'key', 'focus', 'focusin', 'focusout', 'none') def test_validatecommand(self): widget = self.create() self.checkCommandParam(widget, 'validatecommand') def test_bbox(self): self.assertIsBoundingBox(self.entry.bbox(0)) self.assertRaises(tkinter.TclError, self.entry.bbox, 'noindex') self.assertRaises(tkinter.TclError, self.entry.bbox, None) def test_identify(self): self.entry.pack() self.entry.wait_visibility() self.entry.update_idletasks() # bpo-27313: macOS Cocoa widget differs from X, allow either if sys.platform == 'darwin': self.assertIn(self.entry.identify(5, 5), ("textarea", "Combobox.button") ) else: self.assertEqual(self.entry.identify(5, 5), "textarea") self.assertEqual(self.entry.identify(-1, -1), "") self.assertRaises(tkinter.TclError, self.entry.identify, None, 5) self.assertRaises(tkinter.TclError, self.entry.identify, 5, None) self.assertRaises(tkinter.TclError, self.entry.identify, 5, '') def test_validation_options(self): success = [] test_invalid = lambda: success.append(True) self.entry['validate'] = 'none' self.entry['validatecommand'] = lambda: False self.entry['invalidcommand'] = test_invalid self.entry.validate() self.assertTrue(success) self.entry['invalidcommand'] = '' self.entry.validate() self.assertEqual(len(success), 1) self.entry['invalidcommand'] = test_invalid self.entry['validatecommand'] = lambda: True self.entry.validate() self.assertEqual(len(success), 1) self.entry['validatecommand'] = '' self.entry.validate() self.assertEqual(len(success), 1) self.entry['validatecommand'] = True self.assertRaises(tkinter.TclError, self.entry.validate) def test_validation(self): validation = [] def validate(to_insert): if not 'a' <= to_insert.lower() <= 'z': validation.append(False) return False validation.append(True) return True self.entry['validate'] = 'key' self.entry['validatecommand'] = self.entry.register(validate), '%S' self.entry.insert('end', 1) self.entry.insert('end', 'a') self.assertEqual(validation, [False, True]) self.assertEqual(self.entry.get(), 'a') def test_revalidation(self): def validate(content): for letter in content: if not 'a' <= letter.lower() <= 'z': return False return True self.entry['validatecommand'] = self.entry.register(validate), '%P' self.entry.insert('end', 'avocado') self.assertEqual(self.entry.validate(), True) self.assertEqual(self.entry.state(), ()) self.entry.delete(0, 'end') self.assertEqual(self.entry.get(), '') self.entry.insert('end', 'a1b') self.assertEqual(self.entry.validate(), False) self.assertEqual(self.entry.state(), ('invalid', )) self.entry.delete(1) self.assertEqual(self.entry.validate(), True) self.assertEqual(self.entry.state(), ()) @add_standard_options(IntegerSizeTests, StandardTtkOptionsTests) class ComboboxTest(EntryTest, unittest.TestCase): OPTIONS = ( 'background', 'class', 'cursor', 'exportselection', 'font', 'foreground', 'height', 'invalidcommand', 'justify', 'postcommand', 'show', 'state', 'style', 'takefocus', 'textvariable', 'validate', 'validatecommand', 'values', 'width', 'xscrollcommand', ) def setUp(self): super(ComboboxTest, self).setUp() self.combo = self.create() def create(self, **kwargs): return ttk.Combobox(self.root, **kwargs) def test_height(self): widget = self.create() self.checkParams(widget, 'height', 100, 101.2, 102.6, -100, 0, '1i') def _show_drop_down_listbox(self): width = self.combo.winfo_width() self.combo.event_generate('<ButtonPress-1>', x=width - 5, y=5) self.combo.event_generate('<ButtonRelease-1>', x=width - 5, y=5) self.combo.update_idletasks() def test_virtual_event(self): success = [] self.combo['values'] = [1] self.combo.bind('<<ComboboxSelected>>', lambda evt: success.append(True)) self.combo.pack() self.combo.wait_visibility() height = self.combo.winfo_height() self._show_drop_down_listbox() self.combo.update() self.combo.event_generate('<Return>') self.combo.update() self.assertTrue(success) def test_postcommand(self): success = [] self.combo['postcommand'] = lambda: success.append(True) self.combo.pack() self.combo.wait_visibility() self._show_drop_down_listbox() self.assertTrue(success) # testing postcommand removal self.combo['postcommand'] = '' self._show_drop_down_listbox() self.assertEqual(len(success), 1) def test_values(self): def check_get_current(getval, currval): self.assertEqual(self.combo.get(), getval) self.assertEqual(self.combo.current(), currval) self.assertEqual(self.combo['values'], () if tcl_version < (8, 5) else '') check_get_current('', -1) self.checkParam(self.combo, 'values', 'mon tue wed thur', expected=('mon', 'tue', 'wed', 'thur')) self.checkParam(self.combo, 'values', ('mon', 'tue', 'wed', 'thur')) self.checkParam(self.combo, 'values', (42, 3.14, '', 'any string')) self.checkParam(self.combo, 'values', () if tcl_version < (8, 5) else '') self.combo['values'] = ['a', 1, 'c'] self.combo.set('c') check_get_current('c', 2) self.combo.current(0) check_get_current('a', 0) self.combo.set('d') check_get_current('d', -1) # testing values with empty string self.combo.set('') self.combo['values'] = (1, 2, '', 3) check_get_current('', 2) # testing values with empty string set through configure self.combo.configure(values=[1, '', 2]) self.assertEqual(self.combo['values'], ('1', '', '2') if self.wantobjects else '1 {} 2') # testing values with spaces self.combo['values'] = ['a b', 'a\tb', 'a\nb'] self.assertEqual(self.combo['values'], ('a b', 'a\tb', 'a\nb') if self.wantobjects else '{a b} {a\tb} {a\nb}') # testing values with special characters self.combo['values'] = [r'a\tb', '"a"', '} {'] self.assertEqual(self.combo['values'], (r'a\tb', '"a"', '} {') if self.wantobjects else r'a\\tb {"a"} \}\ \{') # out of range self.assertRaises(tkinter.TclError, self.combo.current, len(self.combo['values'])) # it expects an integer (or something that can be converted to int) self.assertRaises(tkinter.TclError, self.combo.current, '') # testing creating combobox with empty string in values combo2 = ttk.Combobox(self.root, values=[1, 2, '']) self.assertEqual(combo2['values'], ('1', '2', '') if self.wantobjects else '1 2 {}') combo2.destroy() @add_standard_options(IntegerSizeTests, StandardTtkOptionsTests) class PanedWindowTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'cursor', 'height', 'orient', 'style', 'takefocus', 'width', ) def setUp(self): super(PanedWindowTest, self).setUp() self.paned = self.create() def create(self, **kwargs): return ttk.PanedWindow(self.root, **kwargs) def test_orient(self): widget = self.create() self.assertEqual(str(widget['orient']), 'vertical') errmsg='attempt to change read-only option' if get_tk_patchlevel() < (8, 6, 0, 'beta', 3): errmsg='Attempt to change read-only option' self.checkInvalidParam(widget, 'orient', 'horizontal', errmsg=errmsg) widget2 = self.create(orient='horizontal') self.assertEqual(str(widget2['orient']), 'horizontal') def test_add(self): # attempt to add a child that is not a direct child of the paned window label = ttk.Label(self.paned) child = ttk.Label(label) self.assertRaises(tkinter.TclError, self.paned.add, child) label.destroy() child.destroy() # another attempt label = ttk.Label(self.root) child = ttk.Label(label) self.assertRaises(tkinter.TclError, self.paned.add, child) child.destroy() label.destroy() good_child = ttk.Label(self.root) self.paned.add(good_child) # re-adding a child is not accepted self.assertRaises(tkinter.TclError, self.paned.add, good_child) other_child = ttk.Label(self.paned) self.paned.add(other_child) self.assertEqual(self.paned.pane(0), self.paned.pane(1)) self.assertRaises(tkinter.TclError, self.paned.pane, 2) good_child.destroy() other_child.destroy() self.assertRaises(tkinter.TclError, self.paned.pane, 0) def test_forget(self): self.assertRaises(tkinter.TclError, self.paned.forget, None) self.assertRaises(tkinter.TclError, self.paned.forget, 0) self.paned.add(ttk.Label(self.root)) self.paned.forget(0) self.assertRaises(tkinter.TclError, self.paned.forget, 0) def test_insert(self): self.assertRaises(tkinter.TclError, self.paned.insert, None, 0) self.assertRaises(tkinter.TclError, self.paned.insert, 0, None) self.assertRaises(tkinter.TclError, self.paned.insert, 0, 0) child = ttk.Label(self.root) child2 = ttk.Label(self.root) child3 = ttk.Label(self.root) self.assertRaises(tkinter.TclError, self.paned.insert, 0, child) self.paned.insert('end', child2) self.paned.insert(0, child) self.assertEqual(self.paned.panes(), (str(child), str(child2))) self.paned.insert(0, child2) self.assertEqual(self.paned.panes(), (str(child2), str(child))) self.paned.insert('end', child3) self.assertEqual(self.paned.panes(), (str(child2), str(child), str(child3))) # reinserting a child should move it to its current position panes = self.paned.panes() self.paned.insert('end', child3) self.assertEqual(panes, self.paned.panes()) # moving child3 to child2 position should result in child2 ending up # in previous child position and child ending up in previous child3 # position self.paned.insert(child2, child3) self.assertEqual(self.paned.panes(), (str(child3), str(child2), str(child))) def test_pane(self): self.assertRaises(tkinter.TclError, self.paned.pane, 0) child = ttk.Label(self.root) self.paned.add(child) self.assertIsInstance(self.paned.pane(0), dict) self.assertEqual(self.paned.pane(0, weight=None), 0 if self.wantobjects else '0') # newer form for querying a single option self.assertEqual(self.paned.pane(0, 'weight'), 0 if self.wantobjects else '0') self.assertEqual(self.paned.pane(0), self.paned.pane(str(child))) self.assertRaises(tkinter.TclError, self.paned.pane, 0, badoption='somevalue') def test_sashpos(self): self.assertRaises(tkinter.TclError, self.paned.sashpos, None) self.assertRaises(tkinter.TclError, self.paned.sashpos, '') self.assertRaises(tkinter.TclError, self.paned.sashpos, 0) child = ttk.Label(self.paned, text='a') self.paned.add(child, weight=1) self.assertRaises(tkinter.TclError, self.paned.sashpos, 0) child2 = ttk.Label(self.paned, text='b') self.paned.add(child2) self.assertRaises(tkinter.TclError, self.paned.sashpos, 1) self.paned.pack(expand=True, fill='both') self.paned.wait_visibility() curr_pos = self.paned.sashpos(0) self.paned.sashpos(0, 1000) self.assertNotEqual(curr_pos, self.paned.sashpos(0)) self.assertIsInstance(self.paned.sashpos(0), int) @add_standard_options(StandardTtkOptionsTests) class RadiobuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'class', 'command', 'compound', 'cursor', 'image', 'padding', 'state', 'style', 'takefocus', 'text', 'textvariable', 'underline', 'value', 'variable', 'width', ) def create(self, **kwargs): return ttk.Radiobutton(self.root, **kwargs) def test_value(self): widget = self.create() self.checkParams(widget, 'value', 1, 2.3, '', 'any string') def test_invoke(self): success = [] def cb_test(): success.append(1) return "cb test called" myvar = tkinter.IntVar(self.root) cbtn = ttk.Radiobutton(self.root, command=cb_test, variable=myvar, value=0) cbtn2 = ttk.Radiobutton(self.root, command=cb_test, variable=myvar, value=1) if self.wantobjects: conv = lambda x: x else: conv = int res = cbtn.invoke() self.assertEqual(res, "cb test called") self.assertEqual(conv(cbtn['value']), myvar.get()) self.assertEqual(myvar.get(), conv(cbtn.tk.globalgetvar(cbtn['variable']))) self.assertTrue(success) cbtn2['command'] = '' res = cbtn2.invoke() self.assertEqual(str(res), '') self.assertLessEqual(len(success), 1) self.assertEqual(conv(cbtn2['value']), myvar.get()) self.assertEqual(myvar.get(), conv(cbtn.tk.globalgetvar(cbtn['variable']))) self.assertEqual(str(cbtn['variable']), str(cbtn2['variable'])) class MenubuttonTest(AbstractLabelTest, unittest.TestCase): OPTIONS = ( 'class', 'compound', 'cursor', 'direction', 'image', 'menu', 'padding', 'state', 'style', 'takefocus', 'text', 'textvariable', 'underline', 'width', ) def create(self, **kwargs): return ttk.Menubutton(self.root, **kwargs) def test_direction(self): widget = self.create() self.checkEnumParam(widget, 'direction', 'above', 'below', 'left', 'right', 'flush') def test_menu(self): widget = self.create() menu = tkinter.Menu(widget, name='menu') self.checkParam(widget, 'menu', menu, conv=str) menu.destroy() @add_standard_options(StandardTtkOptionsTests) class ScaleTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'command', 'cursor', 'from', 'length', 'orient', 'style', 'takefocus', 'to', 'value', 'variable', ) _conv_pixels = noconv_meth default_orient = 'horizontal' def setUp(self): super(ScaleTest, self).setUp() self.scale = self.create() self.scale.pack() self.scale.update() def create(self, **kwargs): return ttk.Scale(self.root, **kwargs) def test_from(self): widget = self.create() self.checkFloatParam(widget, 'from', 100, 14.9, 15.1, conv=False) def test_length(self): widget = self.create() self.checkPixelsParam(widget, 'length', 130, 131.2, 135.6, '5i') def test_to(self): widget = self.create() self.checkFloatParam(widget, 'to', 300, 14.9, 15.1, -10, conv=False) def test_value(self): widget = self.create() self.checkFloatParam(widget, 'value', 300, 14.9, 15.1, -10, conv=False) def test_custom_event(self): failure = [1, 1, 1] # will need to be empty funcid = self.scale.bind('<<RangeChanged>>', lambda evt: failure.pop()) self.scale['from'] = 10 self.scale['from_'] = 10 self.scale['to'] = 3 self.assertFalse(failure) failure = [1, 1, 1] self.scale.configure(from_=2, to=5) self.scale.configure(from_=0, to=-2) self.scale.configure(to=10) self.assertFalse(failure) def test_get(self): if self.wantobjects: conv = lambda x: x else: conv = float scale_width = self.scale.winfo_width() self.assertEqual(self.scale.get(scale_width, 0), self.scale['to']) self.assertEqual(conv(self.scale.get(0, 0)), conv(self.scale['from'])) self.assertEqual(self.scale.get(), self.scale['value']) self.scale['value'] = 30 self.assertEqual(self.scale.get(), self.scale['value']) self.assertRaises(tkinter.TclError, self.scale.get, '', 0) self.assertRaises(tkinter.TclError, self.scale.get, 0, '') def test_set(self): if self.wantobjects: conv = lambda x: x else: conv = float # set restricts the max/min values according to the current range max = conv(self.scale['to']) new_max = max + 10 self.scale.set(new_max) self.assertEqual(conv(self.scale.get()), max) min = conv(self.scale['from']) self.scale.set(min - 1) self.assertEqual(conv(self.scale.get()), min) # changing directly the variable doesn't impose this limitation tho var = tkinter.DoubleVar(self.root) self.scale['variable'] = var var.set(max + 5) self.assertEqual(conv(self.scale.get()), var.get()) self.assertEqual(conv(self.scale.get()), max + 5) del var # the same happens with the value option self.scale['value'] = max + 10 self.assertEqual(conv(self.scale.get()), max + 10) self.assertEqual(conv(self.scale.get()), conv(self.scale['value'])) # nevertheless, note that the max/min values we can get specifying # x, y coords are the ones according to the current range self.assertEqual(conv(self.scale.get(0, 0)), min) self.assertEqual(conv(self.scale.get(self.scale.winfo_width(), 0)), max) self.assertRaises(tkinter.TclError, self.scale.set, None) @add_standard_options(StandardTtkOptionsTests) class ProgressbarTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'cursor', 'orient', 'length', 'mode', 'maximum', 'phase', 'style', 'takefocus', 'value', 'variable', ) _conv_pixels = noconv_meth default_orient = 'horizontal' def create(self, **kwargs): return ttk.Progressbar(self.root, **kwargs) def test_length(self): widget = self.create() self.checkPixelsParam(widget, 'length', 100.1, 56.7, '2i') def test_maximum(self): widget = self.create() self.checkFloatParam(widget, 'maximum', 150.2, 77.7, 0, -10, conv=False) def test_mode(self): widget = self.create() self.checkEnumParam(widget, 'mode', 'determinate', 'indeterminate') def test_phase(self): # XXX pass def test_value(self): widget = self.create() self.checkFloatParam(widget, 'value', 150.2, 77.7, 0, -10, conv=False) @unittest.skipIf(sys.platform == 'darwin', 'ttk.Scrollbar is special on MacOSX') @add_standard_options(StandardTtkOptionsTests) class ScrollbarTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'command', 'cursor', 'orient', 'style', 'takefocus', ) default_orient = 'vertical' def create(self, **kwargs): return ttk.Scrollbar(self.root, **kwargs) @add_standard_options(IntegerSizeTests, StandardTtkOptionsTests) class NotebookTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'cursor', 'height', 'padding', 'style', 'takefocus', 'width', ) def setUp(self): super(NotebookTest, self).setUp() self.nb = self.create(padding=0) self.child1 = ttk.Label(self.root) self.child2 = ttk.Label(self.root) self.nb.add(self.child1, text='a') self.nb.add(self.child2, text='b') def create(self, **kwargs): return ttk.Notebook(self.root, **kwargs) def test_tab_identifiers(self): self.nb.forget(0) self.nb.hide(self.child2) self.assertRaises(tkinter.TclError, self.nb.tab, self.child1) self.assertEqual(self.nb.index('end'), 1) self.nb.add(self.child2) self.assertEqual(self.nb.index('end'), 1) self.nb.select(self.child2) self.assertTrue(self.nb.tab('current')) self.nb.add(self.child1, text='a') self.nb.pack() self.nb.wait_visibility() if sys.platform == 'darwin': tb_idx = "@20,5" else: tb_idx = "@5,5" self.assertEqual(self.nb.tab(tb_idx), self.nb.tab('current')) for i in range(5, 100, 5): try: if self.nb.tab('@%d, 5' % i, text=None) == 'a': break except tkinter.TclError: pass else: self.fail("Tab with text 'a' not found") def test_add_and_hidden(self): self.assertRaises(tkinter.TclError, self.nb.hide, -1) self.assertRaises(tkinter.TclError, self.nb.hide, 'hi') self.assertRaises(tkinter.TclError, self.nb.hide, None) self.assertRaises(tkinter.TclError, self.nb.add, None) self.assertRaises(tkinter.TclError, self.nb.add, ttk.Label(self.root), unknown='option') tabs = self.nb.tabs() self.nb.hide(self.child1) self.nb.add(self.child1) self.assertEqual(self.nb.tabs(), tabs) child = ttk.Label(self.root) self.nb.add(child, text='c') tabs = self.nb.tabs() curr = self.nb.index('current') # verify that the tab gets readded at its previous position child2_index = self.nb.index(self.child2) self.nb.hide(self.child2) self.nb.add(self.child2) self.assertEqual(self.nb.tabs(), tabs) self.assertEqual(self.nb.index(self.child2), child2_index) self.assertEqual(str(self.child2), self.nb.tabs()[child2_index]) # but the tab next to it (not hidden) is the one selected now self.assertEqual(self.nb.index('current'), curr + 1) def test_forget(self): self.assertRaises(tkinter.TclError, self.nb.forget, -1) self.assertRaises(tkinter.TclError, self.nb.forget, 'hi') self.assertRaises(tkinter.TclError, self.nb.forget, None) tabs = self.nb.tabs() child1_index = self.nb.index(self.child1) self.nb.forget(self.child1) self.assertNotIn(str(self.child1), self.nb.tabs()) self.assertEqual(len(tabs) - 1, len(self.nb.tabs())) self.nb.add(self.child1) self.assertEqual(self.nb.index(self.child1), 1) self.assertNotEqual(child1_index, self.nb.index(self.child1)) def test_index(self): self.assertRaises(tkinter.TclError, self.nb.index, -1) self.assertRaises(tkinter.TclError, self.nb.index, None) self.assertIsInstance(self.nb.index('end'), int) self.assertEqual(self.nb.index(self.child1), 0) self.assertEqual(self.nb.index(self.child2), 1) self.assertEqual(self.nb.index('end'), 2) def test_insert(self): # moving tabs tabs = self.nb.tabs() self.nb.insert(1, tabs[0]) self.assertEqual(self.nb.tabs(), (tabs[1], tabs[0])) self.nb.insert(self.child1, self.child2) self.assertEqual(self.nb.tabs(), tabs) self.nb.insert('end', self.child1) self.assertEqual(self.nb.tabs(), (tabs[1], tabs[0])) self.nb.insert('end', 0) self.assertEqual(self.nb.tabs(), tabs) # bad moves self.assertRaises(tkinter.TclError, self.nb.insert, 2, tabs[0]) self.assertRaises(tkinter.TclError, self.nb.insert, -1, tabs[0]) # new tab child3 = ttk.Label(self.root) self.nb.insert(1, child3) self.assertEqual(self.nb.tabs(), (tabs[0], str(child3), tabs[1])) self.nb.forget(child3) self.assertEqual(self.nb.tabs(), tabs) self.nb.insert(self.child1, child3) self.assertEqual(self.nb.tabs(), (str(child3), ) + tabs) self.nb.forget(child3) self.assertRaises(tkinter.TclError, self.nb.insert, 2, child3) self.assertRaises(tkinter.TclError, self.nb.insert, -1, child3) # bad inserts self.assertRaises(tkinter.TclError, self.nb.insert, 'end', None) self.assertRaises(tkinter.TclError, self.nb.insert, None, 0) self.assertRaises(tkinter.TclError, self.nb.insert, None, None) def test_select(self): self.nb.pack() self.nb.wait_visibility() success = [] tab_changed = [] self.child1.bind('<Unmap>', lambda evt: success.append(True)) self.nb.bind('<<NotebookTabChanged>>', lambda evt: tab_changed.append(True)) self.assertEqual(self.nb.select(), str(self.child1)) self.nb.select(self.child2) self.assertTrue(success) self.assertEqual(self.nb.select(), str(self.child2)) self.nb.update() self.assertTrue(tab_changed) def test_tab(self): self.assertRaises(tkinter.TclError, self.nb.tab, -1) self.assertRaises(tkinter.TclError, self.nb.tab, 'notab') self.assertRaises(tkinter.TclError, self.nb.tab, None) self.assertIsInstance(self.nb.tab(self.child1), dict) self.assertEqual(self.nb.tab(self.child1, text=None), 'a') # newer form for querying a single option self.assertEqual(self.nb.tab(self.child1, 'text'), 'a') self.nb.tab(self.child1, text='abc') self.assertEqual(self.nb.tab(self.child1, text=None), 'abc') self.assertEqual(self.nb.tab(self.child1, 'text'), 'abc') def test_tabs(self): self.assertEqual(len(self.nb.tabs()), 2) self.nb.forget(self.child1) self.nb.forget(self.child2) self.assertEqual(self.nb.tabs(), ()) def test_traversal(self): self.nb.pack() self.nb.wait_visibility() self.nb.select(0) simulate_mouse_click(self.nb, 5, 5) self.nb.focus_force() self.nb.event_generate('<Control-Tab>') self.assertEqual(self.nb.select(), str(self.child2)) self.nb.focus_force() self.nb.event_generate('<Shift-Control-Tab>') self.assertEqual(self.nb.select(), str(self.child1)) self.nb.focus_force() self.nb.event_generate('<Shift-Control-Tab>') self.assertEqual(self.nb.select(), str(self.child2)) self.nb.tab(self.child1, text='a', underline=0) self.nb.enable_traversal() self.nb.focus_force() simulate_mouse_click(self.nb, 5, 5) if sys.platform == 'darwin': self.nb.event_generate('<Option-a>') else: self.nb.event_generate('<Alt-a>') self.assertEqual(self.nb.select(), str(self.child1)) @add_standard_options(StandardTtkOptionsTests) class TreeviewTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'columns', 'cursor', 'displaycolumns', 'height', 'padding', 'selectmode', 'show', 'style', 'takefocus', 'xscrollcommand', 'yscrollcommand', ) def setUp(self): super(TreeviewTest, self).setUp() self.tv = self.create(padding=0) def create(self, **kwargs): return ttk.Treeview(self.root, **kwargs) def test_columns(self): widget = self.create() self.checkParam(widget, 'columns', 'a b c', expected=('a', 'b', 'c')) self.checkParam(widget, 'columns', ('a', 'b', 'c')) self.checkParam(widget, 'columns', () if tcl_version < (8, 5) else '') def test_displaycolumns(self): widget = self.create() widget['columns'] = ('a', 'b', 'c') self.checkParam(widget, 'displaycolumns', 'b a c', expected=('b', 'a', 'c')) self.checkParam(widget, 'displaycolumns', ('b', 'a', 'c')) self.checkParam(widget, 'displaycolumns', '#all', expected=('#all',)) self.checkParam(widget, 'displaycolumns', (2, 1, 0)) self.checkInvalidParam(widget, 'displaycolumns', ('a', 'b', 'd'), errmsg='Invalid column index d') self.checkInvalidParam(widget, 'displaycolumns', (1, 2, 3), errmsg='Column index 3 out of bounds') self.checkInvalidParam(widget, 'displaycolumns', (1, -2), errmsg='Column index -2 out of bounds') def test_height(self): widget = self.create() self.checkPixelsParam(widget, 'height', 100, -100, 0, '3c', conv=False) self.checkPixelsParam(widget, 'height', 101.2, 102.6, conv=noconv) def test_selectmode(self): widget = self.create() self.checkEnumParam(widget, 'selectmode', 'none', 'browse', 'extended') def test_show(self): widget = self.create() self.checkParam(widget, 'show', 'tree headings', expected=('tree', 'headings')) self.checkParam(widget, 'show', ('tree', 'headings')) self.checkParam(widget, 'show', ('headings', 'tree')) self.checkParam(widget, 'show', 'tree', expected=('tree',)) self.checkParam(widget, 'show', 'headings', expected=('headings',)) def test_bbox(self): self.tv.pack() self.assertEqual(self.tv.bbox(''), '') self.tv.wait_visibility() self.tv.update() item_id = self.tv.insert('', 'end') children = self.tv.get_children() self.assertTrue(children) bbox = self.tv.bbox(children[0]) self.assertIsBoundingBox(bbox) # compare width in bboxes self.tv['columns'] = ['test'] self.tv.column('test', width=50) bbox_column0 = self.tv.bbox(children[0], 0) root_width = self.tv.column('#0', width=None) if not self.wantobjects: root_width = int(root_width) self.assertEqual(bbox_column0[0], bbox[0] + root_width) # verify that bbox of a closed item is the empty string child1 = self.tv.insert(item_id, 'end') self.assertEqual(self.tv.bbox(child1), '') def test_children(self): # no children yet, should get an empty tuple self.assertEqual(self.tv.get_children(), ()) item_id = self.tv.insert('', 'end') self.assertIsInstance(self.tv.get_children(), tuple) self.assertEqual(self.tv.get_children()[0], item_id) # add item_id and child3 as children of child2 child2 = self.tv.insert('', 'end') child3 = self.tv.insert('', 'end') self.tv.set_children(child2, item_id, child3) self.assertEqual(self.tv.get_children(child2), (item_id, child3)) # child3 has child2 as parent, thus trying to set child2 as a children # of child3 should result in an error self.assertRaises(tkinter.TclError, self.tv.set_children, child3, child2) # remove child2 children self.tv.set_children(child2) self.assertEqual(self.tv.get_children(child2), ()) # remove root's children self.tv.set_children('') self.assertEqual(self.tv.get_children(), ()) def test_column(self): # return a dict with all options/values self.assertIsInstance(self.tv.column('#0'), dict) # return a single value of the given option if self.wantobjects: self.assertIsInstance(self.tv.column('#0', width=None), int) # set a new value for an option self.tv.column('#0', width=10) # testing new way to get option value self.assertEqual(self.tv.column('#0', 'width'), 10 if self.wantobjects else '10') self.assertEqual(self.tv.column('#0', width=None), 10 if self.wantobjects else '10') # check read-only option self.assertRaises(tkinter.TclError, self.tv.column, '#0', id='X') self.assertRaises(tkinter.TclError, self.tv.column, 'invalid') invalid_kws = [ {'unknown_option': 'some value'}, {'stretch': 'wrong'}, {'anchor': 'wrong'}, {'width': 'wrong'}, {'minwidth': 'wrong'} ] for kw in invalid_kws: self.assertRaises(tkinter.TclError, self.tv.column, '#0', **kw) def test_delete(self): self.assertRaises(tkinter.TclError, self.tv.delete, '#0') item_id = self.tv.insert('', 'end') item2 = self.tv.insert(item_id, 'end') self.assertEqual(self.tv.get_children(), (item_id, )) self.assertEqual(self.tv.get_children(item_id), (item2, )) self.tv.delete(item_id) self.assertFalse(self.tv.get_children()) # reattach should fail self.assertRaises(tkinter.TclError, self.tv.reattach, item_id, '', 'end') # test multiple item delete item1 = self.tv.insert('', 'end') item2 = self.tv.insert('', 'end') self.assertEqual(self.tv.get_children(), (item1, item2)) self.tv.delete(item1, item2) self.assertFalse(self.tv.get_children()) def test_detach_reattach(self): item_id = self.tv.insert('', 'end') item2 = self.tv.insert(item_id, 'end') # calling detach without items is valid, although it does nothing prev = self.tv.get_children() self.tv.detach() # this should do nothing self.assertEqual(prev, self.tv.get_children()) self.assertEqual(self.tv.get_children(), (item_id, )) self.assertEqual(self.tv.get_children(item_id), (item2, )) # detach item with children self.tv.detach(item_id) self.assertFalse(self.tv.get_children()) # reattach item with children self.tv.reattach(item_id, '', 'end') self.assertEqual(self.tv.get_children(), (item_id, )) self.assertEqual(self.tv.get_children(item_id), (item2, )) # move a children to the root self.tv.move(item2, '', 'end') self.assertEqual(self.tv.get_children(), (item_id, item2)) self.assertEqual(self.tv.get_children(item_id), ()) # bad values self.assertRaises(tkinter.TclError, self.tv.reattach, 'nonexistent', '', 'end') self.assertRaises(tkinter.TclError, self.tv.detach, 'nonexistent') self.assertRaises(tkinter.TclError, self.tv.reattach, item2, 'otherparent', 'end') self.assertRaises(tkinter.TclError, self.tv.reattach, item2, '', 'invalid') # multiple detach self.tv.detach(item_id, item2) self.assertEqual(self.tv.get_children(), ()) self.assertEqual(self.tv.get_children(item_id), ()) def test_exists(self): self.assertEqual(self.tv.exists('something'), False) self.assertEqual(self.tv.exists(''), True) self.assertEqual(self.tv.exists({}), False) # the following will make a tk.call equivalent to # tk.call(treeview, "exists") which should result in an error # in the tcl interpreter since tk requires an item. self.assertRaises(tkinter.TclError, self.tv.exists, None) def test_focus(self): # nothing is focused right now self.assertEqual(self.tv.focus(), '') item1 = self.tv.insert('', 'end') self.tv.focus(item1) self.assertEqual(self.tv.focus(), item1) self.tv.delete(item1) self.assertEqual(self.tv.focus(), '') # try focusing inexistent item self.assertRaises(tkinter.TclError, self.tv.focus, 'hi') def test_heading(self): # check a dict is returned self.assertIsInstance(self.tv.heading('#0'), dict) # check a value is returned self.tv.heading('#0', text='hi') self.assertEqual(self.tv.heading('#0', 'text'), 'hi') self.assertEqual(self.tv.heading('#0', text=None), 'hi') # invalid option self.assertRaises(tkinter.TclError, self.tv.heading, '#0', background=None) # invalid value self.assertRaises(tkinter.TclError, self.tv.heading, '#0', anchor=1) def test_heading_callback(self): def simulate_heading_click(x, y): simulate_mouse_click(self.tv, x, y) self.tv.update() success = [] # no success for now self.tv.pack() self.tv.wait_visibility() self.tv.heading('#0', command=lambda: success.append(True)) self.tv.column('#0', width=100) self.tv.update() # assuming that the coords (5, 5) fall into heading #0 simulate_heading_click(5, 5) if not success: self.fail("The command associated to the treeview heading wasn't " "invoked.") success = [] commands = self.tv.master._tclCommands self.tv.heading('#0', command=str(self.tv.heading('#0', command=None))) self.assertEqual(commands, self.tv.master._tclCommands) simulate_heading_click(5, 5) if not success: self.fail("The command associated to the treeview heading wasn't " "invoked.") # XXX The following raises an error in a tcl interpreter, but not in # Python #self.tv.heading('#0', command='I dont exist') #simulate_heading_click(5, 5) def test_index(self): # item 'what' doesn't exist self.assertRaises(tkinter.TclError, self.tv.index, 'what') self.assertEqual(self.tv.index(''), 0) item1 = self.tv.insert('', 'end') item2 = self.tv.insert('', 'end') c1 = self.tv.insert(item1, 'end') c2 = self.tv.insert(item1, 'end') self.assertEqual(self.tv.index(item1), 0) self.assertEqual(self.tv.index(c1), 0) self.assertEqual(self.tv.index(c2), 1) self.assertEqual(self.tv.index(item2), 1) self.tv.move(item2, '', 0) self.assertEqual(self.tv.index(item2), 0) self.assertEqual(self.tv.index(item1), 1) # check that index still works even after its parent and siblings # have been detached self.tv.detach(item1) self.assertEqual(self.tv.index(c2), 1) self.tv.detach(c1) self.assertEqual(self.tv.index(c2), 0) # but it fails after item has been deleted self.tv.delete(item1) self.assertRaises(tkinter.TclError, self.tv.index, c2) def test_insert_item(self): # parent 'none' doesn't exist self.assertRaises(tkinter.TclError, self.tv.insert, 'none', 'end') # open values self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', open='') self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', open='please') self.assertFalse(self.tv.delete(self.tv.insert('', 'end', open=True))) self.assertFalse(self.tv.delete(self.tv.insert('', 'end', open=False))) # invalid index self.assertRaises(tkinter.TclError, self.tv.insert, '', 'middle') # trying to duplicate item id is invalid itemid = self.tv.insert('', 'end', 'first-item') self.assertEqual(itemid, 'first-item') self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', 'first-item') self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', MockTclObj('first-item')) # unicode values value = u'\xe1ba' item = self.tv.insert('', 'end', values=(value, )) self.assertEqual(self.tv.item(item, 'values'), (value,) if self.wantobjects else value) self.assertEqual(self.tv.item(item, values=None), (value,) if self.wantobjects else value) self.tv.item(item, values=self.root.splitlist(self.tv.item(item, values=None))) self.assertEqual(self.tv.item(item, values=None), (value,) if self.wantobjects else value) self.assertIsInstance(self.tv.item(item), dict) # erase item values self.tv.item(item, values='') self.assertFalse(self.tv.item(item, values=None)) # item tags item = self.tv.insert('', 'end', tags=[1, 2, value]) self.assertEqual(self.tv.item(item, tags=None), ('1', '2', value) if self.wantobjects else '1 2 %s' % value) self.tv.item(item, tags=[]) self.assertFalse(self.tv.item(item, tags=None)) self.tv.item(item, tags=(1, 2)) self.assertEqual(self.tv.item(item, tags=None), ('1', '2') if self.wantobjects else '1 2') # values with spaces item = self.tv.insert('', 'end', values=('a b c', '%s %s' % (value, value))) self.assertEqual(self.tv.item(item, values=None), ('a b c', '%s %s' % (value, value)) if self.wantobjects else '{a b c} {%s %s}' % (value, value)) # text self.assertEqual(self.tv.item( self.tv.insert('', 'end', text="Label here"), text=None), "Label here") self.assertEqual(self.tv.item( self.tv.insert('', 'end', text=value), text=None), value) # test for values which are not None itemid = self.tv.insert('', 'end', 0) self.assertEqual(itemid, '0') itemid = self.tv.insert('', 'end', 0.0) self.assertEqual(itemid, '0.0') # this is because False resolves to 0 and element with 0 iid is already present self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', False) self.assertRaises(tkinter.TclError, self.tv.insert, '', 'end', '') def test_selection(self): # item 'none' doesn't exist self.assertRaises(tkinter.TclError, self.tv.selection_set, 'none') self.assertRaises(tkinter.TclError, self.tv.selection_add, 'none') self.assertRaises(tkinter.TclError, self.tv.selection_remove, 'none') self.assertRaises(tkinter.TclError, self.tv.selection_toggle, 'none') item1 = self.tv.insert('', 'end') item2 = self.tv.insert('', 'end') c1 = self.tv.insert(item1, 'end') c2 = self.tv.insert(item1, 'end') c3 = self.tv.insert(item1, 'end') self.assertEqual(self.tv.selection(), ()) self.tv.selection_set((c1, item2)) self.assertEqual(self.tv.selection(), (c1, item2)) self.tv.selection_set(c2) self.assertEqual(self.tv.selection(), (c2,)) self.tv.selection_add((c1, item2)) self.assertEqual(self.tv.selection(), (c1, c2, item2)) self.tv.selection_add(item1) self.assertEqual(self.tv.selection(), (item1, c1, c2, item2)) self.tv.selection_remove((item1, c3)) self.assertEqual(self.tv.selection(), (c1, c2, item2)) self.tv.selection_remove(c2) self.assertEqual(self.tv.selection(), (c1, item2)) self.tv.selection_toggle((c1, c3)) self.assertEqual(self.tv.selection(), (c3, item2)) self.tv.selection_toggle(item2) self.assertEqual(self.tv.selection(), (c3,)) self.tv.insert('', 'end', id='with spaces') self.tv.selection_set('with spaces') self.assertEqual(self.tv.selection(), ('with spaces',)) self.tv.insert('', 'end', id='{brace') self.tv.selection_set('{brace') self.assertEqual(self.tv.selection(), ('{brace',)) if have_unicode: self.tv.insert('', 'end', id=u(r'unicode\u20ac')) self.tv.selection_set(u(r'unicode\u20ac')) self.assertEqual(self.tv.selection(), (u(r'unicode\u20ac'),)) self.tv.insert('', 'end', id='bytes\xe2\x82\xac') self.tv.selection_set('bytes\xe2\x82\xac') self.assertEqual(self.tv.selection(), (u(r'bytes\u20ac') if have_unicode else 'bytes\xe2\x82\xac',)) def test_set(self): self.tv['columns'] = ['A', 'B'] item = self.tv.insert('', 'end', values=['a', 'b']) self.assertEqual(self.tv.set(item), {'A': 'a', 'B': 'b'}) self.tv.set(item, 'B', 'a') self.assertEqual(self.tv.item(item, values=None), ('a', 'a') if self.wantobjects else 'a a') self.tv['columns'] = ['B'] self.assertEqual(self.tv.set(item), {'B': 'a'}) self.tv.set(item, 'B', 'b') self.assertEqual(self.tv.set(item, column='B'), 'b') self.assertEqual(self.tv.item(item, values=None), ('b', 'a') if self.wantobjects else 'b a') self.tv.set(item, 'B', 123) self.assertEqual(self.tv.set(item, 'B'), 123 if self.wantobjects else '123') self.assertEqual(self.tv.item(item, values=None), (123, 'a') if self.wantobjects else '123 a') self.assertEqual(self.tv.set(item), {'B': 123} if self.wantobjects else {'B': '123'}) # inexistent column self.assertRaises(tkinter.TclError, self.tv.set, item, 'A') self.assertRaises(tkinter.TclError, self.tv.set, item, 'A', 'b') # inexistent item self.assertRaises(tkinter.TclError, self.tv.set, 'notme') def test_tag_bind(self): events = [] item1 = self.tv.insert('', 'end', tags=['call']) item2 = self.tv.insert('', 'end', tags=['call']) self.tv.tag_bind('call', '<ButtonPress-1>', lambda evt: events.append(1)) self.tv.tag_bind('call', '<ButtonRelease-1>', lambda evt: events.append(2)) self.tv.pack() self.tv.wait_visibility() self.tv.update() pos_y = set() found = set() for i in range(0, 100, 10): if len(found) == 2: # item1 and item2 already found break item_id = self.tv.identify_row(i) if item_id and item_id not in found: pos_y.add(i) found.add(item_id) self.assertEqual(len(pos_y), 2) # item1 and item2 y pos for y in pos_y: simulate_mouse_click(self.tv, 0, y) # by now there should be 4 things in the events list, since each # item had a bind for two events that were simulated above self.assertEqual(len(events), 4) for evt in zip(events[::2], events[1::2]): self.assertEqual(evt, (1, 2)) def test_tag_configure(self): # Just testing parameter passing for now self.assertRaises(TypeError, self.tv.tag_configure) self.assertRaises(tkinter.TclError, self.tv.tag_configure, 'test', sky='blue') self.tv.tag_configure('test', foreground='blue') self.assertEqual(str(self.tv.tag_configure('test', 'foreground')), 'blue') self.assertEqual(str(self.tv.tag_configure('test', foreground=None)), 'blue') self.assertIsInstance(self.tv.tag_configure('test'), dict) def test_tag_has(self): item1 = self.tv.insert('', 'end', text='Item 1', tags=['tag1']) item2 = self.tv.insert('', 'end', text='Item 2', tags=['tag2']) self.assertRaises(TypeError, self.tv.tag_has) self.assertRaises(TclError, self.tv.tag_has, 'tag1', 'non-existing') self.assertTrue(self.tv.tag_has('tag1', item1)) self.assertFalse(self.tv.tag_has('tag1', item2)) self.assertFalse(self.tv.tag_has('tag2', item1)) self.assertTrue(self.tv.tag_has('tag2', item2)) self.assertFalse(self.tv.tag_has('tag3', item1)) self.assertFalse(self.tv.tag_has('tag3', item2)) self.assertEqual(self.tv.tag_has('tag1'), (item1,)) self.assertEqual(self.tv.tag_has('tag2'), (item2,)) self.assertEqual(self.tv.tag_has('tag3'), ()) @add_standard_options(StandardTtkOptionsTests) class SeparatorTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'cursor', 'orient', 'style', 'takefocus', # 'state'? ) default_orient = 'horizontal' def create(self, **kwargs): return ttk.Separator(self.root, **kwargs) @add_standard_options(StandardTtkOptionsTests) class SizegripTest(AbstractWidgetTest, unittest.TestCase): OPTIONS = ( 'class', 'cursor', 'style', 'takefocus', # 'state'? ) def create(self, **kwargs): return ttk.Sizegrip(self.root, **kwargs) tests_gui = ( ButtonTest, CheckbuttonTest, ComboboxTest, EntryTest, FrameTest, LabelFrameTest, LabelTest, MenubuttonTest, NotebookTest, PanedWindowTest, ProgressbarTest, RadiobuttonTest, ScaleTest, ScrollbarTest, SeparatorTest, SizegripTest, TreeviewTest, WidgetTest, ) if __name__ == "__main__": run_unittest(*tests_gui) test/test_ttk/test_widgets.pyc000064400000170617151703463030012624 0ustar00� zfc@sUddlZddlZddlmZddlZddlmZmZmZm Z ddl Z ddlmZddl mZmZmZmZddlmZmZmZmZmZmZmZmZed�defd ��YZd eejfd��YZdeefd ��YZee�deejfd��Y�Zee�deejfd��Y�Z defd��YZ!ee�de!ejfd��Y�Z"ee�de!ejfd��Y�Z#ee�de!ejfd��Y�Z$eee�deejfd��Y�Z%eee�de%ejfd��Y�Z&eee�deejfd��Y�Z'ee�d e!ejfd!��Y�Z(d"e!ejfd#��YZ)ee�d$eejfd%��Y�Z*ee�d&eejfd'��Y�Z+ej,e j-d(kd)�ee�d*eejfd+��Y��Z.eee�d,eejfd-��Y�Z/ee�d.eejfd/��Y�Z0ee�d0eejfd1��Y�Z1ee�d2eejfd3��Y�Z2e#e$e&e%ee e"e)e/e'e+e(e*e.e1e2e0efZ3e4d4krQee3�ndS(5i����N(tTclError(trequirestrun_unittestthave_unicodetu(t MockTclObj(tAbstractTkTestttcl_versiontget_tk_patchleveltsimulate_mouse_click(tadd_standard_optionstnoconvtnoconv_methtAbstractWidgetTesttStandardOptionsTeststIntegerSizeTeststPixelSizeTeststsetUpModuletguitStandardTtkOptionsTestscBs#eZd�Zd�Zd�ZRS(cCs�|j�}|j|dd�d}t�d kr>d }n|j|dd d|�|jdd �}|j|dd �dS(Ntclassts"attempt to change read-only optioniiitbetais"Attempt to change read-only optiontFooterrmsgtclass_(iiiRi(tcreatetassertEqualRtcheckInvalidParam(tselftwidgetRtwidget2((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_classs c Cs�|j�}|j|dddd�|j|dddd�|j|dddd�|j|dddd�|j|dddd�|j|dd�|j|dddd�dS(Ntpaddingitexpectedt0it5it6it7it8t5pt6pt7pt8pR(R#(R$(ii(R$R%(iii(R$R%R&(iiii(R$R%R&R'(R(R)R*R+((Rt checkParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_paddingscCs�|j�}|j|dd�d}t|d�rQdt|d�j�}n|j|ddd|�|jdd�}|j|d d�dS( NtstyleRsLayout Foo not foundtdefault_orientsLayout %s.Foo not foundRRRR(RRthasattrtgetattrttitleR(RRRR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_style+s(t__name__t __module__R R-R3(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRs t WidgetTestcBs)eZdZd�Zd�Zd�ZRS(s,Tests methods available in every ttk widget.cCsRtt|�j�tj|jdddd�|_|jj�|jj�dS(NtwidthittexttText( tsuperR6tsetUptttktButtontrootRtpacktwait_visibility(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;=s! cCs�|jj�|j|jj|jj�d|jj�d�d�|j|jjdd�d�|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�dS(Nitlabeli����Ri( Rtupdate_idletasksRtidentifytwinfo_widthtwinfo_heighttassertRaisesttkinterRtNone(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_identifyDs cCs�|j|jj�d �|j|jjdg�t�|j|jjdg�d�|j|jjdg�d�|j|jjddg�d �|j|jjddg�d�|j|jjddg�d�d�}|j|jjdg|didd6�didd6f�|jj�}|jtj|jjd g�|jtj|jjdd g�|j||jj��|jjddg�|j|jj�d�dS(Ns !disabledtdisabledtactives!activec[s ||fS(N((targ1tkw((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_cbasthittheretmsgtbadstate((s !disabled((s!activeRJ(((RK(RRtstatetinstatetTrueRFRGR(RRNt currstate((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_widget_stateQs("" (R4R5t__doc__R;RIRW(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR6:s tAbstractToplevelTestcBseZeZRS((R4R5Rt_conv_pixels(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRYust FrameTestc BseZd Zd �ZRS(tborderwidthRtcursortheightR!treliefR.t takefocusR7cKstj|j|�S(N(R<tFrameR>(Rtkwargs((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s( R\RR]R^R!R_R.R`R7(R4R5tOPTIONSR(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR[ystLabelFrameTestc Bs)eZdZd �Zd�Zd�ZRS(R\RR]R^tlabelanchortlabelwidgetR!R_R.R`R8t underlineR7cKstj|j|�S(N(R<t LabelFrameR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs]|j�}|j|ddddddddd d ddd dd�|j|dd�dS(NRetetentestntnetnwtstsetswtwtwntwsRs!Bad label anchor specification {}tcenter(RtcheckEnumParamR(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_labelanchor�s 'cCsQ|j�}tj|jdddd�}|j|d|dd�|j�dS(NR8tMupptnametfooRfR"s.foo(RR<tLabelR>R,tdestroy(RRRA((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_labelwidget�s( R\RR]R^ReRfR!R_R.R`R8RgR7(R4R5RcRRwR}(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRd�s tAbstractLabelTestcBs,eZd�Zd�Zd�Zd�ZRS(cCs�tjd|jdd�}tjd|jdd�}|j|||dd�|j||ddd�|j|||fdd �|j|||d|fdd�|j||ddd�|j||dd d �dS(NtmasterRytimage1timage2R"RKsimage1 active image2tspamRsimage "spam" doesn't exist(R�(R�(R�(R�RKR�(R�RKR�(RGt PhotoImageR>R,R(RRRytimageR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcheckImageParam�scCs8|j�}|j|ddddddddd � dS( NtcompoundtnoneR8R�Ruttoptbottomtlefttright(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_compound�scCs)|j�}|j|dddd�dS(NRSRKRJtnormal(RtcheckParams(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_state�scCs)|j�}|j|dddd�dS(NR7i�in���i(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_width�s(R4R5R�R�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR~�s t LabelTestcBs&eZdZeZd�Zd�ZRS(tanchort backgroundR\RR�R]tfontt foregroundR�tjustifyR!R_RSR.R`R8ttextvariableRgR7t wraplengthcKstj|j|�S(N(R<R{R>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs#|j�}|j|dd�dS(NR�s3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*(RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_font�s(R�R�R\RR�R]R�R�R�R�R!R_RSR.R`R8R�RgR7R�(R4R5RcRRZRR�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s t ButtonTestcBs)eZdZd�Zd�Zd�ZRS(RtcommandR�R]tdefaultR�R!RSR.R`R8R�RgR7cKstj|j|�S(N(R<R=R>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR�R�RKRJ(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_default�scsBg�tj|jd�fd��}|j�|j��dS(NR�cs �jd�S(Ni(tappend((tsuccess(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt<lambda>�R(R<R=R>tinvoket assertTrue(Rtbtn((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_invoke�s! (RR�R�R]R�R�R!RSR.R`R8R�RgR7(R4R5RcRR�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s tCheckbuttonTestcBs2eZdZd�Zd�Zd�Zd�ZRS(RR�R�R]R�toffvaluetonvalueR!RSR.R`R8R�RgtvariableR7cKstj|j|�S(N(R<tCheckbuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_offvalue�scCs,|j�}|j|ddddd�dS(NR�igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_onvalue�scsg��fd�}tj|jd|�}|j|j�d �|jtj|jj |d�|j �}|j|d�|j|d|jj |d��|j��d|d<|j �}|jt |��|jt��d�|j|d |jj |d��dS(Ncs�jd�dS(Niscb test called(R�((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcb_tests R�t alternateR�scb test calledR�RiR�(R�(R<R�R>RRSRFRGRttktglobalgetvarR�R�tassertFalsetstrtassertLessEqualtlen(RR�tcbtntres((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s" (RR�R�R]R�R�R�R!RSR.R`R8R�RgR�R7(R4R5RcRR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s t EntryTestcBszeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z d�ZRS(R�RR]texportselectionR�R�tinvalidcommandR�tshowRSR.R`R�tvalidatetvalidatecommandR7txscrollcommandcCs&tt|�j�|j�|_dS(N(R:R�R;Rtentry(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;#scKstj|j|�S(N(R<tEntryR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR'scCs |j�}|j|d�dS(NR�(RtcheckCommandParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_invalidcommand*scCsI|j�}|j|dd�|j|dd�|j|dd�dS(NR�t*Rt (RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_show.scCs)|j�}|j|dddd�dS(NRSRJR�treadonly(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�4sc Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusoutR�(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_validate9scCs |j�}|j|d�dS(NR�(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validatecommand>scCsU|j|jjd��|jtj|jjd�|jtj|jjd�dS(Nitnoindex(tassertIsBoundingBoxR�tbboxRFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_bboxCscCs�|jj�|jj�|jj�tjdkrX|j|jjdd�d�n|j|jjdd�d�|j|jjdd�d�|j t j|jjdd�|j t j|jjdd�|j t j|jjdd�dS(NtdarwinittextareasCombobox.buttoni����R(R�sCombobox.button( R�R?R@RBtsystplatformtassertInRCRRFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRIIs cs#g��fd�}d|jd<d�|jd<||jd<|jj�|j��d|jd<|jj�|jt��d�||jd<d �|jd<|jj�|jt��d�d|jd<|jj�|jt��d�t|jd<|jtj|jj�dS( Ncs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�]RR�R�cSstS(N(tFalse(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�`RR�R�RicSstS(N(RU(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�kR( R�R�R�RR�RURFRGR(Rttest_invalid((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validation_options[s& cs�g��fd�}d|jd<|jj|�df|jd<|jjdd�|jjdd�|j�ttg�|j|jj�d�dS( NcsDd|j�kodkns3�jt�tS�jt�tS(Ntatz(tlowerR�R�RU(t to_insert(t validation(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�ys " R�R�s%SR�tendiR�(R�tregistertinsertRR�RUtget(RR�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validationws cCs$d�}|jj|�df|jd<|jjdd�|j|jj�t�|j|jj�d�|jjdd�|j|jj�d�|jjdd�|j|jj�t �|j|jj�d�|jjd �|j|jj�t�|j|jj�d �dS(NcSs;x4|D],}d|j�ko*dknstSqWtS(NR�R�(R�R�RU(tcontenttletter((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s "s%PR�R�tavocadoiRta1btinvalidi((R�(( R�R�R�RR�RURStdeleteR�R�(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_revalidation�s (R�RR]R�R�R�R�R�R�RSR.R`R�R�R�R7R�(R4R5RcR;RR�R�R�R�R�R�RIR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s" tComboboxTestcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(R�RR]R�R�R�R^R�R�tpostcommandR�RSR.R`R�R�R�tvaluesR7R�cCs&tt|�j�|j�|_dS(N(R:R�R;Rtcombo(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�scKstj|j|�S(N(R<tComboboxR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�sc Cs2|j�}|j|ddddddd�dS(NR^idg�����LY@gfffff�Y@i����it1i(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_height�scCs`|jj�}|jjdd|ddd�|jjdd|ddd�|jj�dS(Ns<ButtonPress-1>txitys<ButtonRelease-1>(R�RDtevent_generateRB(RR7((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt_show_drop_down_listbox�s cs�g�dg|jd<|jjd�fd��|jj�|jj�|jj�}|j�|jj�|jjd�|jj�|j��dS(NiR�s<<ComboboxSelected>>cs �jt�S(N(R�RU(tevt(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��Rs<Return>( R�tbindR?R@RER�tupdateR�R�(RR^((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_virtual_event�s cs~g��fd�|jd<|jj�|jj�|j�|j��d|jd<|j�|jt��d�dS(Ncs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��RR�Ri(R�R?R@R�R�RR�(R((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_postcommand�s c s��fd�}�j�jdtd#kr1d$nd�|dd��j�jdddd%��j�jdd&��j�jdd'��j�jdtd(kr�d)nd�dddg�jd<�jjd�|dd��jjd�|dd��jjd�|dd��jjd�d*�jd<|dd��jjddddg��j�jd�jr�d+nd�dddg�jd<�j�jd�jr�d,nd�ddd g�jd<�j�jd�jr�d-nd!��jt j �jjt�jd���jt j �jjd�tj �jddddg�}�j|d�jr�d.nd"�|j�dS(/Ncs6�j�jj�|��j�jj�|�dS(N(RR�R�tcurrent(tgetvaltcurrval(R(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcheck_get_current�sR�iiRi����smon tue wed thurR"tmonttuetwedtthuri*g��Q� @s any stringR�itciitdit1t2s1 {} 2sa bsa bsa bs{a b} {a b} {a b}sa\tbs"a"s} {sa\\tb {"a"} \}\ \{s1 2 {}(ii((R�R�R�R(R�R�R�R(i*g��Q� @Rs any string(ii((iiRi(RRR(sa bsa bsa b(sa\tbs"a"s} {(RRR(RR�RR,tsetR�t configuretwantobjectsRFRGRR�R<R�R>R|(RR�tcombo2((Rs9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_values�sL ( ! (R�RR]R�R�R�R^R�R�R�R�RSR.R`R�R�R�R�R7R�( R4R5RcR;RR�R�R�R�R (((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s tPanedWindowTestcBsVeZdZd�Zd�Zd �Zd �Zd�Zd�Zd �Z d�Z RS(RR]R^torientR.R`R7cCs&tt|�j�|j�|_dS(N(R:R R;Rtpaned(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;&scKstj|j|�S(N(R<tPanedWindowR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR*scCs�|j�}|jt|d�d�d}t�dkrDd }n|j|dd d|�|jdd �}|jt|d�d �dS( NRtverticals"attempt to change read-only optioniiiRis"Attempt to change read-only optiont horizontalR(iiiRi(RRR�RR(RRRR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_orient-s cCsztj|j�}tj|�}|jtj|jj|�|j�|j�tj|j�}tj|�}|jtj|jj|�|j�|j�tj|j�}|jj|�|jtj|jj|�tj|j�}|jj|�|j |jj d�|jj d��|jtj|jj d�|j�|j�|jtj|jj d�dS(Niii(R<R{RRFRGRtaddR|R>Rtpane(RRAtchildt good_childtother_child((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_add8s( ( cCs�|jtj|jjd�|jtj|jjd�|jjtj|j ��|jjd�|jtj|jjd�dS(Ni( RFRGRRtforgetRHRR<R{R>(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_forgetTs cCs|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�tj|j�}tj|j�}tj|j�}|jtj|jjd|�|jjd|�|jjd|�|j |jj �t|�t|�f�|jjd|�|j |jj �t|�t|�f�|jjd|�|j |jj �t|�t|�t|�f�|jj �}|jjd|�|j ||jj ��|jj||�|j |jj �t|�t|�t|�f�dS(NiR�(RFRGRRR�RHR<R{R>RtpanesR�(RRtchild2tchild3R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_insert]s*++"cCs |jtj|jjd�tj|j�}|jj|�|j |jjd�t �|j|jjddd�|j r�dnd�|j|jjdd�|j r�dnd�|j|jjd�|jjt|���|jtj|jjddd�dS(NitweightR#t badoptiont somevalue(RFRGRRRR<R{R>RtassertIsInstancetdictRRHRR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_pane�s.cCsi|jtj|jjd�|jtj|jjd�|jtj|jjd�tj|jdd�}|jj|dd�|jtj|jjd�tj|jdd�}|jj|�|jtj|jjd�|jj dt d d �|jj�|jjd�}|jjdd�|j||jjd��|j |jjd�t�dS(NRiR8R�Ritbtexpandtfilltbothi�(RFRGRRtsashposRHR<R{RR?RUR@tassertNotEqualR tint(RRRtcurr_pos((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_sashpos�s (RR]R^RR.R`R7(R4R5RcR;RRRRRR"R+(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR s # tRadiobuttonTestcBs)eZdZd�Zd�Zd�ZRS(RR�R�R]R�R!RSR.R`R8R�RgtvalueR�R7cKstj|j|�S(N(R<tRadiobuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR-igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_value�scs�g��fd�}tj|j�}tj|jd|d|dd�}tj|jd|d|dd�}|jr�d�}nt}|j�}|j|d�|j||d�|j ��|j|j �||j j|d���|j��d |d<|j�}|jt |�d �|jt��d�|j||d�|j ��|j|j �||j j|d���|jt |d�t |d��dS( Ncs�jd�dS(Niscb test called(R�((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s R�R�R-iicSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��Rscb test calledR(RGtIntVarR>R<R.RR)R�RR�R�R�R�R�R�R�(RR�tmyvarR�tcbtn2tconvR�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s0 (RR�R�R]R�R!RSR.R`R8R�RgR-R�R7(R4R5RcRR/R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR,�s tMenubuttonTestcBs)eZdZd�Zd�Zd�ZRS(RR�R]t directionR�tmenuR!RSR.R`R8R�RgR7cKstj|j|�S(N(R<t MenubuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR5tabovetbelowR�R�tflush(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_direction�scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRyR6R3(RRGtMenuR,R�R|(RRR6((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_menu�s(RR�R]R5R�R6R!RSR.R`R8R�RgR7(R4R5RcRR;R=(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR4�s t ScaleTestcBskeZdZeZdZd�Zd �Zd�Zd�Z d�Z d�Zd�Zd�Z d�ZRS(RR�R]tfromtlengthRR.R`ttoR-R�RcCs@tt|�j�|j�|_|jj�|jj�dS(N(R:R>R;RtscaleR?R�(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�s cKstj|j|�S(N(R<tScaleR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRscCs/|j�}|j|dddddt�dS(NR?idg������-@g333333.@R3(RtcheckFloatParamR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_fromscCs,|j�}|j|ddddd�dS(NR@i�gffffff`@g33333�`@t5i(RtcheckPixelsParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_lengthsc Cs2|j�}|j|ddddddt�dS(NRAi,g������-@g333333.@i����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tosc Cs2|j�}|j|ddddddt�dS(NR-i,g������-@g333333.@i����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR/scs�dddg�|jjd�fd��}d|jd<d|jd<d|jd<|j��dddg�|jjdd dd �|jjdddd�|jjdd�|j��dS( Nis<<RangeChanged>>cs �j�S(N(tpop(R�(tfailure(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�Ri R?tfrom_iRAiiii����(RBR�R�R(Rtfuncid((RKs9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_custom_events cCs|jrd�}nt}|jj�}|j|jj|d�|jd�|j||jjdd��||jd��|j|jj�|jd�d|jd<|j|jj�|jd�|jtj|jjdd�|jtj|jjdd�dS(NcSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�(RiRAR?R-iR( RtfloatRBRDRR�RFRGR(RR3tscale_width((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_get&s &2 cCs�|jrd�}nt}||jd�}|d}|jj|�|j||jj��|�||jd�}|jj|d�|j||jj��|�tj|j�}||jd<|j|d�|j||jj��|j��|j||jj��|d�~|d|jd<|j||jj��|d�|j||jj��||jd��|j||jjd d ��|�|j||jj|jj �d ��|�|j tj|jjd�dS( NcSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�:RRAi R?iR�iR-i( RRORBRRR�RGt DoubleVarR>RDRFRRH(RR3tmaxtnew_maxtmintvar((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_set8s, %##,%.(RR�R]R?R@RR.R`RAR-R�(R4R5RcRRZR/R;RRERHRIR/RNRQRW(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR>�s tProgressbarTestcBsPeZdZeZdZd�Zd �Zd�Zd�Z d�Z d�ZRS(RR]RR@tmodetmaximumtphaseR.R`R-R�RcKstj|j|�S(N(R<tProgressbarR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRfscCs)|j�}|j|dddd�dS(NR@gfffffY@g�����YL@t2i(RRG(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRHisc Cs2|j�}|j|ddddddt�dS(NRZgfffff�b@g�����lS@ii����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_maximummscCs&|j�}|j|ddd�dS(NRYtdeterminatet indeterminate(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_modeqscCsdS(N((R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_phaseusc Cs2|j�}|j|ddddddt�dS(NR-gfffff�b@g�����lS@ii����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR/ys(RR]RR@RYRZR[R.R`R-R�(R4R5RcRRZR/RRHR^RaRbR/(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRX\s R�s"ttk.Scrollbar is special on MacOSXt ScrollbarTestcBseZdZdZd�ZRS( RR�R]RR.R`RcKstj|j|�S(N(R<t ScrollbarR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s(RR�R]RR.R`(R4R5RcR/R(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRcstNotebookTestcBsqeZdZd�Zd�Zd �Zd �Zd�Zd�Zd �Z d�Z d�Zd�Zd�Z RS(RR]R^R!R.R`R7cCs�tt|�j�|jdd�|_tj|j�|_tj|j�|_ |jj |jdd�|jj |j dd�dS(NR!iR8R�R#(R:ReR;RtnbR<R{R>tchild1RR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�scKstj|j|�S(N(R<tNotebookR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs�|jjd�|jj|j�|jtj|jj|j�|j |jj d�d�|jj|j�|j |jj d�d�|jj|j�|j |jjd��|jj|jdd�|jj�|jj�tjdkrd}nd }|j |jj|�|jjd��xhtd dd �D]G}y*|jjd|dd�dkrtPnWqEtjk r�qEXqEW|jd �dS(NiR�iR�R8R�R�s@20,5s@5,5iids@%d, 5sTab with text 'a' not found(RfRthideRRFRGRttabRgRtindexRtselectR�R?R@R�R�trangeRHtfail(Rttb_idxti((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tab_identifiers�s, ("cCs�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjtj|j �dd�|jj �}|jj|j�|jj|j�|j|jj �|�tj|j �}|jj|dd�|jj �}|jj d�}|jj |j�}|jj|j�|jj|j�|j|jj �|�|j|jj |j�|�|jt|j�|jj �|�|j|jj d�|d�dS( Ni����ROtunknowntoptionR8RR�i(RFRGRRfRiRHRR<R{R>ttabsRgRRkRR�(RRtRtcurrtchild2_index((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_add_and_hidden�s*'&cCs+|jtj|jjd�|jtj|jjd�|jtj|jjd�|jj�}|jj|j�}|jj|j�|j t |j�|jj��|jt|�dt|jj���|jj |j�|j|jj|j�d�|j||jj|j��dS(Ni����ROi(RFRGRRfRRHRtRkRgtassertNotInR�RR�RR((RRttchild1_index((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s")cCs�|jtj|jjd�|jtj|jjd�|j|jjd�t�|j|jj|j �d�|j|jj|j �d�|j|jjd�d�dS(Ni����R�iii(RFRGRRfRkRHR R)RRgR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_index�scCs�|jj�}|jjd|d�|j|jj�|d|df�|jj|j|j�|j|jj�|�|jjd|j�|j|jj�|d|df�|jjdd�|j|jj�|�|jtj|jjd|d�|jtj|jjd|d�t j |j�}|jjd|�|j|jj�|dt|�|df�|jj |�|j|jj�|�|jj|j|�|j|jj�t|�f|�|jj |�|jtj|jjd|�|jtj|jjd|�|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�dS(NiiR�ii����(RfRtR�RRgRRFRGRR<R{R>R�RRH(RRtR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s0''##0&cs�|jj�|jj�g�g�|jjd�fd��|jjd�fd��|j|jj�t|j��|jj|j�|j ��|j|jj�t|j��|jj �|j ��dS(Ns<Unmap>cs �jt�S(N(R�RU(R�(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�Rs<<NotebookTabChanged>>cs �jt�S(N(R�RU(R�(ttab_changed(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�R(RfR?R@RgR�RRlR�RR�R�(R((R�R{s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selects " " cCs|jtj|jjd�|jtj|jjd�|jtj|jjd�|j|jj|j�t�|j |jj|jdd�d�|j |jj|jd�d�|jj|jdd�|j |jj|jdd�d�|j |jj|jd�d�dS(Ni����tnotabR8R�tabc( RFRGRRfRjRHR RgR!R(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tab(s%"%cCsb|jt|jj��d�|jj|j�|jj|j�|j|jj�d�dS(Ni((RR�RfRtRRgR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_tabs6scCs�|jj�|jj�|jjd�t|jdd�|jj�|jjd�|j|jj�t|j ��|jj�|jjd�|j|jj�t|j ��|jj�|jjd�|j|jj�t|j ��|jj|j dddd�|jj�|jj�t|jdd�t jdkrh|jjd �n|jjd �|j|jj�t|j ��dS(Niis <Control-Tab>s<Shift-Control-Tab>R8R�RgR�s <Option-a>s<Alt-a>(RfR?R@RlR tfocus_forceR�RR�RRgRjtenable_traversalR�R�(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_traversal?s* " " " (RR]R^R!R.R`R7(R4R5RcR;RRqRwRRzRR|RR�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRe�s ! tTreeviewTestcBs�eZd#Zd�Zd �Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd �Zd!�Zd"�ZRS($RtcolumnsR]tdisplaycolumnsR^R!t selectmodeR�R.R`R�tyscrollcommandcCs,tt|�j�|jdd�|_dS(NR!i(R:R�R;Rttv(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;cscKstj|j|�S(N(R<tTreeviewR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRgscCsa|j�}|j|dddd �|j|dd�|j|dtdkrVd nd �dS(NR�sa b cR"R�R#RiiR(R�R#R(R�R#R(ii((RR,R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_columnsjs cCs�|j�}d|d<|j|dddd�|j|dd�|j|dddd�|j|dd�|j|ddd d�|j|ddd d�|j|ddd d�dS(NR�R#RR�R�sb a cR"s#alliiiRRsInvalid column index disColumn index 3 out of boundsi����sColumn index -2 out of bounds(R�R#R(R#R�R(R#R�R(s#all(iii(R�R#R(iii(ii����(RR,R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_displaycolumnsqs c CsN|j�}|j|ddddddt�|j|ddddt�dS( NR^idi����it3cR3g�����LY@gfffff�Y@(RRGR�R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s"cCs)|j�}|j|dddd�dS(NR�R�tbrowsetextended(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selectmode�scCs�|j�}|j|dddd�|j|dd�|j|dd�|j|dddd �|j|dddd �dS(NR�s tree headingsR"ttreetheadings(R�R�(R�R�(R�R�(R�(R�(RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��scCsW|jj�|j|jjd�d�|jj�|jj�|jjdd�}|jj�}|j|�|jj|d�}|j |�dg|jd<|jj ddd�|jj|dd�}|jj ddd�}|jst |�}n|j|d|d|�|jj|d�}|j|jj|�d�dS( NRR�ittestR�R7i2s#0(R�R?RR�R@R�R�tget_childrenR�R�tcolumnRHRR)(Rtitem_idtchildrenR�tbbox_column0t root_widthRg((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s$ cCs>|j|jj�d�|jjdd�}|j|jj�t�|j|jj�d|�|jjdd�}|jjdd�}|jj|||�|j|jj|�||f�|jtj |jj||�|jj|�|j|jj|�d�|jjd�|j|jj�d�dS(NRR�i(((( RR�R�R�R ttupletset_childrenRFRGR(RR�RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_children�s"cCsi|j|jjd�t�|jrJ|j|jjddd�t�n|jjddd�|j|jjdd�|jr�dnd�|j|jjddd�|jr�dnd�|jt j |jjddd�|jt j |jjd�idd 6id d6id d6id d6id d 6g}x-|D]%}|jt j |jjd|�q<WdS(Ns#0R7i t10tidtXR�s some valuetunknown_optiontwrongtstretchR�tminwidth(R R�R�R!RRHR)RRFRGR(Rtinvalid_kwsRM((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_column�s %"$ cCs?|jtj|jjd�|jjdd�}|jj|d�}|j|jj�|f�|j|jj|�|f�|jj|�|j|jj��|jtj|jj |dd�|jjdd�}|jjdd�}|j|jj�||f�|jj||�|j|jj��dS(Ns#0RR�( RFRGRR�R�R�RR�R�treattach(RR�titem2titem1((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_delete�scCs0|jjdd�}|jj|d�}|jj�}|jj�|j||jj��|j|jj�|f�|j|jj|�|f�|jj|�|j|jj��|jj|dd�|j|jj�|f�|j|jj|�|f�|jj|dd�|j|jj�||f�|j|jj|�d�|jt j |jjddd�|jt j |jjd�|jt j |jj|dd�|jt j |jj|dd�|jj||�|j|jj�d�|j|jj|�d�dS( NRR�tnonexistenttotherparentR�((((R�R�R�tdetachRR�R�tmoveRFRGR(RR�R�tprev((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_detach_reattach�s4 cCst|j|jjd�t�|j|jjd�t�|j|jji�t�|jtj|jjd�dS(Nt somethingR( RR�texistsR�RURFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_exists'scCs�|j|jj�d�|jjdd�}|jj|�|j|jj�|�|jj|�|j|jj�d�|jtj|jjd�dS(NRR�RO(RR�R�R�R�RFRGR(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_focus2scCs�|j|jjd�t�|jjddd�|j|jjdd�d�|j|jjddd�d�|jtj|jjddd�|jtj|jjddd�dS(Ns#0R8ROR�R�i( R R�theadingR!RRHRFRGR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_headingAs"cs�fd�}g��jj��jj��jjdd�fd���jjddd��jj�|dd��s��jd�ng��jjj}�jjddt �jjddd����j|�jjj�|dd��s�jd�ndS( Ncs$t�j||��jj�dS(N(R R�R�(R�R�(R(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytsimulate_heading_clickRss#0R�cs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�ZRR7idis>The command associated to the treeview heading wasn't invoked.(R�R?R@R�R�R�RnRt_tclCommandsR�RHR(RR�tcommands((RR�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_heading_callbackQs" . cCs�|jtj|jjd�|j|jjd�d�|jjdd�}|jjdd�}|jj|d�}|jj|d�}|j|jj|�d�|j|jj|�d�|j|jj|�d�|j|jj|�d�|jj|dd�|j|jj|�d�|j|jj|�d�|jj|�|j|jj|�d�|jj|�|j|jj|�d�|jj |�|jtj|jj|�dS(NtwhatRiR�i( RFRGRR�RkRR�R�R�R�(RR�R�tc1tc2((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRzss&cCs�|jtj|jjdd�|jtj|jjdddd�|jtj|jjdddd�|j|jj|jjdddt���|j|jj|jjdddt���|jtj|jjdd�|jjddd�}|j |d�|jtj|jjddd�|jtj|jjddt d��d}|jjddd |f�}|j |jj|d �|jr�|fn|�|j |jj|d d�|jr�|fn|�|jj|d |jj|jj|d d���|j |jj|d d�|jr@|fn|�|j|jj|�t�|jj|d d�|j|jj|d d��|jjddd dd|g�}|j |jj|d d�|jr�d d|fnd|�|jj|d g�|j|jj|d d��|jj|d d�|j |jj|d d�|jrodnd�|jjddd dd||ff�}|j |jj|d d�|jr�dd||ffn d||f�|j |jj|jjdddd�dd�d�|j |jj|jjddd|�dd�|�|jjddd�}|j |d�|jjddd�}|j |d�|jtj|jjddt�|jtj|jjddd�dS(NR�R�Rtopentpleasetmiddles first-itemuábaR�ttagsiiRRs1 2 %ss1 2sa b cs%s %ss{a b c} {%s %s}R8s Label hereiR#gs0.0(ii(RR(RFRGRR�R�R�R�RUR�RRtitemRRHR>t splitlistR R!(RtitemidR-R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_insert_item�sh.. 4$!!"cCs�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jjdd�}|jjdd�}|jj|d�}|jj|d�}|jj|d�}|j |jj �d �|jj||f�|j |jj �||f�|jj|�|j |jj �|f�|jj||f�|j |jj �|||f�|jj|�|j |jj �||||f�|jj||f�|j |jj �|||f�|jj|�|j |jj �||f�|jj||f�|j |jj �||f�|jj|�|j |jj �|f�|jjdddd�|jjd�|j |jj �d�|jjdddd�|jjd�|j |jj �d�trl|jjdddtd��|jjtd��|j |jj �td�f�n|jjdddd�|jjd�|j |jj �tr�td �ndf�dS( NR�RR�R�swith spacess{braces unicode\u20acsbytes€sbytes\u20ac((swith spaces(s{brace( RFRGRR�t selection_sett selection_addtselection_removetselection_toggleR�Rt selectionRR(RR�R�R�R�tc3((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selection�sR"%"%cCsPddg|jd<|jjdddddg�}|j|jj|�idd6dd6�|jj|dd�|j|jj|dd�|jr�dnd �dg|jd<|j|jj|�idd6�|jj|dd�|j|jj|d d�d�|j|jj|dd�|jr:dnd�|jj|dd�|j|jj|d�|jr~dnd �|j|jj|dd�|jr�dnd�|j|jj|�|jr�idd6n id d6�|jtj |jj|d�|jtj |jj|dd�|jtj |jjd�dS(NtAtBR�RR�R�R�R#sa aR�sb ai{t123s123 atnotme(R�R�(R#R�(i{R�( R�R�RRR�RHRRFRGR(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRWs,!*#"$"c s�g�|jjddddg�}|jjddddg�}|jjdd�fd��|jjdd�fd��|jj�|jj�|jj�t�}t�}xqtd d d�D]]}t|�dkr�Pn|jj |�}|r�||kr�|j |�|j |�q�q�W|jt|�d�x!|D]}t|jd |�qJW|jt��d �xAt �ddd��ddd��D]}|j|d�q�WdS(NRR�R�tcalls<ButtonPress-1>cs �jd�S(Ni(R�(R�(tevents(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�;Rs<ButtonRelease-1>cs �jd�S(Ni(R�(R�(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�=Riidi iii(ii(R�R�ttag_bindR?R@R�RRmR�tidentify_rowRRR tzip( RR�R�tpos_ytfoundRpR�R�R�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_tag_bind6s2 0cCs�|jt|jj�|jtj|jjddd�|jjddd�|jt|jjdd��d�|jt|jjddd��d�|j |jjd�t �dS(NR�tskytblueR�(RFt TypeErrorR�t tag_configureRGRRR�RHR R!(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tag_configureXs !cCs�|jjddddddg�}|jjddddddg�}|jt|jj�|jt|jjdd �|j|jjd|��|j|jjd|��|j|jjd|��|j|jjd|��|j|jjd |��|j|jjd |��|j|jjd�|f�|j|jjd�|f�|j|jjd �d�dS(NRR�R8sItem 1R�ttag1sItem 2ttag2snon-existingttag3(( R�R�RFR�ttag_hasRR�R�R(RR�R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tag_hasds$$(RR�R]R�R^R!R�R�R.R`R�R�(R4R5RcR;RR�R�R�R�R�R�R�R�R�R�R�R�R�R�RzR�R�RWR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�[s4 * " M 6 ! " t SeparatorTestcBseZdZdZd�ZRS(RR]RR.R`RcKstj|j|�S(N(R<t SeparatorR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR|s(RR]RR.R`(R4R5RcR/R(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�tstSizegripTestcBseZdZd�ZRS(RR]R.R`cKstj|j|�S(N(R<tSizegripR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s(RR]R.R`(R4R5RcR(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��st__main__(5tunittesttTkinterRGRR<ttest.test_supportRRRRR�ttest_functionsRtsupportRRRR twidget_testsR RRR RRRRRtTestCaseR6RYR[RdR~R�R�R�R�R�R R,R4R>RXtskipIfR�RcReR�R�R�t tests_guiR4(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt<module>sr"": ';0�|�3j" ��� test/test_ttk/test_widgets.pyo000064400000170617151703463030012640 0ustar00� zfc@sUddlZddlZddlmZddlZddlmZmZmZm Z ddl Z ddlmZddl mZmZmZmZddlmZmZmZmZmZmZmZmZed�defd ��YZd eejfd��YZdeefd ��YZee�deejfd��Y�Zee�deejfd��Y�Z defd��YZ!ee�de!ejfd��Y�Z"ee�de!ejfd��Y�Z#ee�de!ejfd��Y�Z$eee�deejfd��Y�Z%eee�de%ejfd��Y�Z&eee�deejfd��Y�Z'ee�d e!ejfd!��Y�Z(d"e!ejfd#��YZ)ee�d$eejfd%��Y�Z*ee�d&eejfd'��Y�Z+ej,e j-d(kd)�ee�d*eejfd+��Y��Z.eee�d,eejfd-��Y�Z/ee�d.eejfd/��Y�Z0ee�d0eejfd1��Y�Z1ee�d2eejfd3��Y�Z2e#e$e&e%ee e"e)e/e'e+e(e*e.e1e2e0efZ3e4d4krQee3�ndS(5i����N(tTclError(trequirestrun_unittestthave_unicodetu(t MockTclObj(tAbstractTkTestttcl_versiontget_tk_patchleveltsimulate_mouse_click(tadd_standard_optionstnoconvtnoconv_methtAbstractWidgetTesttStandardOptionsTeststIntegerSizeTeststPixelSizeTeststsetUpModuletguitStandardTtkOptionsTestscBs#eZd�Zd�Zd�ZRS(cCs�|j�}|j|dd�d}t�d kr>d }n|j|dd d|�|jdd �}|j|dd �dS(Ntclassts"attempt to change read-only optioniiitbetais"Attempt to change read-only optiontFooterrmsgtclass_(iiiRi(tcreatetassertEqualRtcheckInvalidParam(tselftwidgetRtwidget2((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_classs c Cs�|j�}|j|dddd�|j|dddd�|j|dddd�|j|dddd�|j|dddd�|j|dd�|j|dddd�dS(Ntpaddingitexpectedt0it5it6it7it8t5pt6pt7pt8pR(R#(R$(ii(R$R%(iii(R$R%R&(iiii(R$R%R&R'(R(R)R*R+((Rt checkParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_paddingscCs�|j�}|j|dd�d}t|d�rQdt|d�j�}n|j|ddd|�|jdd�}|j|d d�dS( NtstyleRsLayout Foo not foundtdefault_orientsLayout %s.Foo not foundRRRR(RRthasattrtgetattrttitleR(RRRR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_style+s(t__name__t __module__R R-R3(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRs t WidgetTestcBs)eZdZd�Zd�Zd�ZRS(s,Tests methods available in every ttk widget.cCsRtt|�j�tj|jdddd�|_|jj�|jj�dS(NtwidthittexttText( tsuperR6tsetUptttktButtontrootRtpacktwait_visibility(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;=s! cCs�|jj�|j|jj|jj�d|jj�d�d�|j|jjdd�d�|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�dS(Nitlabeli����Ri( Rtupdate_idletasksRtidentifytwinfo_widthtwinfo_heighttassertRaisesttkinterRtNone(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_identifyDs cCs�|j|jj�d �|j|jjdg�t�|j|jjdg�d�|j|jjdg�d�|j|jjddg�d �|j|jjddg�d�|j|jjddg�d�d�}|j|jjdg|didd6�didd6f�|jj�}|jtj|jjd g�|jtj|jjdd g�|j||jj��|jjddg�|j|jj�d�dS(Ns !disabledtdisabledtactives!activec[s ||fS(N((targ1tkw((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_cbasthittheretmsgtbadstate((s !disabled((s!activeRJ(((RK(RRtstatetinstatetTrueRFRGR(RRNt currstate((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_widget_stateQs("" (R4R5t__doc__R;RIRW(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR6:s tAbstractToplevelTestcBseZeZRS((R4R5Rt_conv_pixels(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRYust FrameTestc BseZd Zd �ZRS(tborderwidthRtcursortheightR!treliefR.t takefocusR7cKstj|j|�S(N(R<tFrameR>(Rtkwargs((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s( R\RR]R^R!R_R.R`R7(R4R5tOPTIONSR(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR[ystLabelFrameTestc Bs)eZdZd �Zd�Zd�ZRS(R\RR]R^tlabelanchortlabelwidgetR!R_R.R`R8t underlineR7cKstj|j|�S(N(R<t LabelFrameR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs]|j�}|j|ddddddddd d ddd dd�|j|dd�dS(NRetetentestntnetnwtstsetswtwtwntwsRs!Bad label anchor specification {}tcenter(RtcheckEnumParamR(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_labelanchor�s 'cCsQ|j�}tj|jdddd�}|j|d|dd�|j�dS(NR8tMupptnametfooRfR"s.foo(RR<tLabelR>R,tdestroy(RRRA((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_labelwidget�s( R\RR]R^ReRfR!R_R.R`R8RgR7(R4R5RcRRwR}(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRd�s tAbstractLabelTestcBs,eZd�Zd�Zd�Zd�ZRS(cCs�tjd|jdd�}tjd|jdd�}|j|||dd�|j||ddd�|j|||fdd �|j|||d|fdd�|j||ddd�|j||dd d �dS(NtmasterRytimage1timage2R"RKsimage1 active image2tspamRsimage "spam" doesn't exist(R�(R�(R�(R�RKR�(R�RKR�(RGt PhotoImageR>R,R(RRRytimageR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcheckImageParam�scCs8|j�}|j|ddddddddd � dS( NtcompoundtnoneR8R�Ruttoptbottomtlefttright(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_compound�scCs)|j�}|j|dddd�dS(NRSRKRJtnormal(RtcheckParams(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_state�scCs)|j�}|j|dddd�dS(NR7i�in���i(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_width�s(R4R5R�R�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR~�s t LabelTestcBs&eZdZeZd�Zd�ZRS(tanchort backgroundR\RR�R]tfontt foregroundR�tjustifyR!R_RSR.R`R8ttextvariableRgR7t wraplengthcKstj|j|�S(N(R<R{R>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs#|j�}|j|dd�dS(NR�s3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*(RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_font�s(R�R�R\RR�R]R�R�R�R�R!R_RSR.R`R8R�RgR7R�(R4R5RcRRZRR�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s t ButtonTestcBs)eZdZd�Zd�Zd�ZRS(RtcommandR�R]tdefaultR�R!RSR.R`R8R�RgR7cKstj|j|�S(N(R<R=R>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs)|j�}|j|dddd�dS(NR�R�RKRJ(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_default�scsBg�tj|jd�fd��}|j�|j��dS(NR�cs �jd�S(Ni(tappend((tsuccess(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt<lambda>�R(R<R=R>tinvoket assertTrue(Rtbtn((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_invoke�s! (RR�R�R]R�R�R!RSR.R`R8R�RgR7(R4R5RcRR�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s tCheckbuttonTestcBs2eZdZd�Zd�Zd�Zd�ZRS(RR�R�R]R�toffvaluetonvalueR!RSR.R`R8R�RgtvariableR7cKstj|j|�S(N(R<tCheckbuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR�igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_offvalue�scCs,|j�}|j|ddddd�dS(NR�igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_onvalue�scsg��fd�}tj|jd|�}|j|j�d �|jtj|jj |d�|j �}|j|d�|j|d|jj |d��|j��d|d<|j �}|jt |��|jt��d�|j|d |jj |d��dS(Ncs�jd�dS(Niscb test called(R�((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcb_tests R�t alternateR�scb test calledR�RiR�(R�(R<R�R>RRSRFRGRttktglobalgetvarR�R�tassertFalsetstrtassertLessEqualtlen(RR�tcbtntres((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s" (RR�R�R]R�R�R�R!RSR.R`R8R�RgR�R7(R4R5RcRR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s t EntryTestcBszeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z d�ZRS(R�RR]texportselectionR�R�tinvalidcommandR�tshowRSR.R`R�tvalidatetvalidatecommandR7txscrollcommandcCs&tt|�j�|j�|_dS(N(R:R�R;Rtentry(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;#scKstj|j|�S(N(R<tEntryR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR'scCs |j�}|j|d�dS(NR�(RtcheckCommandParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_invalidcommand*scCsI|j�}|j|dd�|j|dd�|j|dd�dS(NR�t*Rt (RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_show.scCs)|j�}|j|dddd�dS(NRSRJR�treadonly(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�4sc Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusoutR�(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_validate9scCs |j�}|j|d�dS(NR�(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validatecommand>scCsU|j|jjd��|jtj|jjd�|jtj|jjd�dS(Nitnoindex(tassertIsBoundingBoxR�tbboxRFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_bboxCscCs�|jj�|jj�|jj�tjdkrX|j|jjdd�d�n|j|jjdd�d�|j|jjdd�d�|j t j|jjdd�|j t j|jjdd�|j t j|jjdd�dS(NtdarwinittextareasCombobox.buttoni����R(R�sCombobox.button( R�R?R@RBtsystplatformtassertInRCRRFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRIIs cs#g��fd�}d|jd<d�|jd<||jd<|jj�|j��d|jd<|jj�|jt��d�||jd<d �|jd<|jj�|jt��d�d|jd<|jj�|jt��d�t|jd<|jtj|jj�dS( Ncs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�]RR�R�cSstS(N(tFalse(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�`RR�R�RicSstS(N(RU(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�kR( R�R�R�RR�RURFRGR(Rttest_invalid((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validation_options[s& cs�g��fd�}d|jd<|jj|�df|jd<|jjdd�|jjdd�|j�ttg�|j|jj�d�dS( NcsDd|j�kodkns3�jt�tS�jt�tS(Ntatz(tlowerR�R�RU(t to_insert(t validation(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�ys " R�R�s%SR�tendiR�(R�tregistertinsertRR�RUtget(RR�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validationws cCs$d�}|jj|�df|jd<|jjdd�|j|jj�t�|j|jj�d�|jjdd�|j|jj�d�|jjdd�|j|jj�t �|j|jj�d�|jjd �|j|jj�t�|j|jj�d �dS(NcSs;x4|D],}d|j�ko*dknstSqWtS(NR�R�(R�R�RU(tcontenttletter((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s "s%PR�R�tavocadoiRta1btinvalidi((R�(( R�R�R�RR�RURStdeleteR�R�(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_revalidation�s (R�RR]R�R�R�R�R�R�RSR.R`R�R�R�R7R�(R4R5RcR;RR�R�R�R�R�R�RIR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s" tComboboxTestcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(R�RR]R�R�R�R^R�R�tpostcommandR�RSR.R`R�R�R�tvaluesR7R�cCs&tt|�j�|j�|_dS(N(R:R�R;Rtcombo(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�scKstj|j|�S(N(R<tComboboxR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�sc Cs2|j�}|j|ddddddd�dS(NR^idg�����LY@gfffff�Y@i����it1i(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_height�scCs`|jj�}|jjdd|ddd�|jjdd|ddd�|jj�dS(Ns<ButtonPress-1>txitys<ButtonRelease-1>(R�RDtevent_generateRB(RR7((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt_show_drop_down_listbox�s cs�g�dg|jd<|jjd�fd��|jj�|jj�|jj�}|j�|jj�|jjd�|jj�|j��dS(NiR�s<<ComboboxSelected>>cs �jt�S(N(R�RU(tevt(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��Rs<Return>( R�tbindR?R@RER�tupdateR�R�(RR^((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_virtual_event�s cs~g��fd�|jd<|jj�|jj�|j�|j��d|jd<|j�|jt��d�dS(Ncs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��RR�Ri(R�R?R@R�R�RR�(R((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_postcommand�s c s��fd�}�j�jdtd#kr1d$nd�|dd��j�jdddd%��j�jdd&��j�jdd'��j�jdtd(kr�d)nd�dddg�jd<�jjd�|dd��jjd�|dd��jjd�|dd��jjd�d*�jd<|dd��jjddddg��j�jd�jr�d+nd�dddg�jd<�j�jd�jr�d,nd�ddd g�jd<�j�jd�jr�d-nd!��jt j �jjt�jd���jt j �jjd�tj �jddddg�}�j|d�jr�d.nd"�|j�dS(/Ncs6�j�jj�|��j�jj�|�dS(N(RR�R�tcurrent(tgetvaltcurrval(R(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytcheck_get_current�sR�iiRi����smon tue wed thurR"tmonttuetwedtthuri*g��Q� @s any stringR�itciitdit1t2s1 {} 2sa bsa bsa bs{a b} {a b} {a b}sa\tbs"a"s} {sa\\tb {"a"} \}\ \{s1 2 {}(ii((R�R�R�R(R�R�R�R(i*g��Q� @Rs any string(ii((iiRi(RRR(sa bsa bsa b(sa\tbs"a"s} {(RRR(RR�RR,tsetR�t configuretwantobjectsRFRGRR�R<R�R>R|(RR�tcombo2((Rs9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_values�sL ( ! (R�RR]R�R�R�R^R�R�R�R�RSR.R`R�R�R�R�R7R�( R4R5RcR;RR�R�R�R�R (((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s tPanedWindowTestcBsVeZdZd�Zd�Zd �Zd �Zd�Zd�Zd �Z d�Z RS(RR]R^torientR.R`R7cCs&tt|�j�|j�|_dS(N(R:R R;Rtpaned(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;&scKstj|j|�S(N(R<tPanedWindowR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR*scCs�|j�}|jt|d�d�d}t�dkrDd }n|j|dd d|�|jdd �}|jt|d�d �dS( NRtverticals"attempt to change read-only optioniiiRis"Attempt to change read-only optiont horizontalR(iiiRi(RRR�RR(RRRR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_orient-s cCsztj|j�}tj|�}|jtj|jj|�|j�|j�tj|j�}tj|�}|jtj|jj|�|j�|j�tj|j�}|jj|�|jtj|jj|�tj|j�}|jj|�|j |jj d�|jj d��|jtj|jj d�|j�|j�|jtj|jj d�dS(Niii(R<R{RRFRGRtaddR|R>Rtpane(RRAtchildt good_childtother_child((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_add8s( ( cCs�|jtj|jjd�|jtj|jjd�|jjtj|j ��|jjd�|jtj|jjd�dS(Ni( RFRGRRtforgetRHRR<R{R>(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_forgetTs cCs|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�tj|j�}tj|j�}tj|j�}|jtj|jjd|�|jjd|�|jjd|�|j |jj �t|�t|�f�|jjd|�|j |jj �t|�t|�f�|jjd|�|j |jj �t|�t|�t|�f�|jj �}|jjd|�|j ||jj ��|jj||�|j |jj �t|�t|�t|�f�dS(NiR�(RFRGRRR�RHR<R{R>RtpanesR�(RRtchild2tchild3R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_insert]s*++"cCs |jtj|jjd�tj|j�}|jj|�|j |jjd�t �|j|jjddd�|j r�dnd�|j|jjdd�|j r�dnd�|j|jjd�|jjt|���|jtj|jjddd�dS(NitweightR#t badoptiont somevalue(RFRGRRRR<R{R>RtassertIsInstancetdictRRHRR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_pane�s.cCsi|jtj|jjd�|jtj|jjd�|jtj|jjd�tj|jdd�}|jj|dd�|jtj|jjd�tj|jdd�}|jj|�|jtj|jjd�|jj dt d d �|jj�|jjd�}|jjdd�|j||jjd��|j |jjd�t�dS(NRiR8R�Ritbtexpandtfilltbothi�(RFRGRRtsashposRHR<R{RR?RUR@tassertNotEqualR tint(RRRtcurr_pos((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_sashpos�s (RR]R^RR.R`R7(R4R5RcR;RRRRRR"R+(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR s # tRadiobuttonTestcBs)eZdZd�Zd�Zd�ZRS(RR�R�R]R�R!RSR.R`R8R�RgtvalueR�R7cKstj|j|�S(N(R<tRadiobuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs,|j�}|j|ddddd�dS(NR-igffffff@Rs any string(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_value�scs�g��fd�}tj|j�}tj|jd|d|dd�}tj|jd|d|dd�}|jr�d�}nt}|j�}|j|d�|j||d�|j ��|j|j �||j j|d���|j��d |d<|j�}|jt |�d �|jt��d�|j||d�|j ��|j|j �||j j|d���|jt |d�t |d��dS( Ncs�jd�dS(Niscb test called(R�((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s R�R�R-iicSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��Rscb test calledR(RGtIntVarR>R<R.RR)R�RR�R�R�R�R�R�R�(RR�tmyvarR�tcbtn2tconvR�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s0 (RR�R�R]R�R!RSR.R`R8R�RgR-R�R7(R4R5RcRR/R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR,�s tMenubuttonTestcBs)eZdZd�Zd�Zd�ZRS(RR�R]t directionR�tmenuR!RSR.R`R8R�RgR7cKstj|j|�S(N(R<t MenubuttonR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs/|j�}|j|dddddd�dS(NR5tabovetbelowR�R�tflush(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_direction�scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRyR6R3(RRGtMenuR,R�R|(RRR6((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_menu�s(RR�R]R5R�R6R!RSR.R`R8R�RgR7(R4R5RcRR;R=(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR4�s t ScaleTestcBskeZdZeZdZd�Zd �Zd�Zd�Z d�Z d�Zd�Zd�Z d�ZRS(RR�R]tfromtlengthRR.R`ttoR-R�RcCs@tt|�j�|j�|_|jj�|jj�dS(N(R:R>R;RtscaleR?R�(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�s cKstj|j|�S(N(R<tScaleR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRscCs/|j�}|j|dddddt�dS(NR?idg������-@g333333.@R3(RtcheckFloatParamR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_fromscCs,|j�}|j|ddddd�dS(NR@i�gffffff`@g33333�`@t5i(RtcheckPixelsParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_lengthsc Cs2|j�}|j|ddddddt�dS(NRAi,g������-@g333333.@i����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tosc Cs2|j�}|j|ddddddt�dS(NR-i,g������-@g333333.@i����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR/scs�dddg�|jjd�fd��}d|jd<d|jd<d|jd<|j��dddg�|jjdd dd �|jjdddd�|jjdd�|j��dS( Nis<<RangeChanged>>cs �j�S(N(tpop(R�(tfailure(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�Ri R?tfrom_iRAiiii����(RBR�R�R(Rtfuncid((RKs9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_custom_events cCs|jrd�}nt}|jj�}|j|jj|d�|jd�|j||jjdd��||jd��|j|jj�|jd�d|jd<|j|jj�|jd�|jtj|jjdd�|jtj|jjdd�dS(NcSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�(RiRAR?R-iR( RtfloatRBRDRR�RFRGR(RR3tscale_width((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_get&s &2 cCs�|jrd�}nt}||jd�}|d}|jj|�|j||jj��|�||jd�}|jj|d�|j||jj��|�tj|j�}||jd<|j|d�|j||jj��|j��|j||jj��|d�~|d|jd<|j||jj��|d�|j||jj��||jd��|j||jjd d ��|�|j||jj|jj �d ��|�|j tj|jjd�dS( NcSs|S(N((R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�:RRAi R?iR�iR-i( RRORBRRR�RGt DoubleVarR>RDRFRRH(RR3tmaxtnew_maxtmintvar((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_set8s, %##,%.(RR�R]R?R@RR.R`RAR-R�(R4R5RcRRZR/R;RRERHRIR/RNRQRW(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR>�s tProgressbarTestcBsPeZdZeZdZd�Zd �Zd�Zd�Z d�Z d�ZRS(RR]RR@tmodetmaximumtphaseR.R`R-R�RcKstj|j|�S(N(R<tProgressbarR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRfscCs)|j�}|j|dddd�dS(NR@gfffffY@g�����YL@t2i(RRG(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRHisc Cs2|j�}|j|ddddddt�dS(NRZgfffff�b@g�����lS@ii����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_maximummscCs&|j�}|j|ddd�dS(NRYtdeterminatet indeterminate(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_modeqscCsdS(N((R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_phaseusc Cs2|j�}|j|ddddddt�dS(NR-gfffff�b@g�����lS@ii����R3(RRDR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR/ys(RR]RR@RYRZR[R.R`R-R�(R4R5RcRRZR/RRHR^RaRbR/(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRX\s R�s"ttk.Scrollbar is special on MacOSXt ScrollbarTestcBseZdZdZd�ZRS( RR�R]RR.R`RcKstj|j|�S(N(R<t ScrollbarR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s(RR�R]RR.R`(R4R5RcR/R(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRcstNotebookTestcBsqeZdZd�Zd�Zd �Zd �Zd�Zd�Zd �Z d�Z d�Zd�Zd�Z RS(RR]R^R!R.R`R7cCs�tt|�j�|jdd�|_tj|j�|_tj|j�|_ |jj |jdd�|jj |j dd�dS(NR!iR8R�R#(R:ReR;RtnbR<R{R>tchild1RR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;�scKstj|j|�S(N(R<tNotebookR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�scCs�|jjd�|jj|j�|jtj|jj|j�|j |jj d�d�|jj|j�|j |jj d�d�|jj|j�|j |jjd��|jj|jdd�|jj�|jj�tjdkrd}nd }|j |jj|�|jjd��xhtd dd �D]G}y*|jjd|dd�dkrtPnWqEtjk r�qEXqEW|jd �dS(NiR�iR�R8R�R�s@20,5s@5,5iids@%d, 5sTab with text 'a' not found(RfRthideRRFRGRttabRgRtindexRtselectR�R?R@R�R�trangeRHtfail(Rttb_idxti((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tab_identifiers�s, ("cCs�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjtj|j �dd�|jj �}|jj|j�|jj|j�|j|jj �|�tj|j �}|jj|dd�|jj �}|jj d�}|jj |j�}|jj|j�|jj|j�|j|jj �|�|j|jj |j�|�|jt|j�|jj �|�|j|jj d�|d�dS( Ni����ROtunknowntoptionR8RR�i(RFRGRRfRiRHRR<R{R>ttabsRgRRkRR�(RRtRtcurrtchild2_index((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_add_and_hidden�s*'&cCs+|jtj|jjd�|jtj|jjd�|jtj|jjd�|jj�}|jj|j�}|jj|j�|j t |j�|jj��|jt|�dt|jj���|jj |j�|j|jj|j�d�|j||jj|j��dS(Ni����ROi(RFRGRRfRRHRtRkRgtassertNotInR�RR�RR((RRttchild1_index((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s")cCs�|jtj|jjd�|jtj|jjd�|j|jjd�t�|j|jj|j �d�|j|jj|j �d�|j|jjd�d�dS(Ni����R�iii(RFRGRRfRkRHR R)RRgR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_index�scCs�|jj�}|jjd|d�|j|jj�|d|df�|jj|j|j�|j|jj�|�|jjd|j�|j|jj�|d|df�|jjdd�|j|jj�|�|jtj|jjd|d�|jtj|jjd|d�t j |j�}|jjd|�|j|jj�|dt|�|df�|jj |�|j|jj�|�|jj|j|�|j|jj�t|�f|�|jj |�|jtj|jjd|�|jtj|jjd|�|jtj|jjdd�|jtj|jjdd�|jtj|jjdd�dS(NiiR�ii����(RfRtR�RRgRRFRGRR<R{R>R�RRH(RRtR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s0''##0&cs�|jj�|jj�g�g�|jjd�fd��|jjd�fd��|j|jj�t|j��|jj|j�|j ��|j|jj�t|j��|jj �|j ��dS(Ns<Unmap>cs �jt�S(N(R�RU(R�(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�Rs<<NotebookTabChanged>>cs �jt�S(N(R�RU(R�(ttab_changed(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�R(RfR?R@RgR�RRlR�RR�R�(R((R�R{s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selects " " cCs|jtj|jjd�|jtj|jjd�|jtj|jjd�|j|jj|j�t�|j |jj|jdd�d�|j |jj|jd�d�|jj|jdd�|j |jj|jdd�d�|j |jj|jd�d�dS(Ni����tnotabR8R�tabc( RFRGRRfRjRHR RgR!R(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tab(s%"%cCsb|jt|jj��d�|jj|j�|jj|j�|j|jj�d�dS(Ni((RR�RfRtRRgR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_tabs6scCs�|jj�|jj�|jjd�t|jdd�|jj�|jjd�|j|jj�t|j ��|jj�|jjd�|j|jj�t|j ��|jj�|jjd�|j|jj�t|j ��|jj|j dddd�|jj�|jj�t|jdd�t jdkrh|jjd �n|jjd �|j|jj�t|j ��dS(Niis <Control-Tab>s<Shift-Control-Tab>R8R�RgR�s <Option-a>s<Alt-a>(RfR?R@RlR tfocus_forceR�RR�RRgRjtenable_traversalR�R�(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_traversal?s* " " " (RR]R^R!R.R`R7(R4R5RcR;RRqRwRRzRR|RR�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRe�s ! tTreeviewTestcBs�eZd#Zd�Zd �Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd�Zd�Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd �Zd!�Zd"�ZRS($RtcolumnsR]tdisplaycolumnsR^R!t selectmodeR�R.R`R�tyscrollcommandcCs,tt|�j�|jdd�|_dS(NR!i(R:R�R;Rttv(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR;cscKstj|j|�S(N(R<tTreeviewR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRgscCsa|j�}|j|dddd �|j|dd�|j|dtdkrVd nd �dS(NR�sa b cR"R�R#RiiR(R�R#R(R�R#R(ii((RR,R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_columnsjs cCs�|j�}d|d<|j|dddd�|j|dd�|j|dddd�|j|dd�|j|ddd d�|j|ddd d�|j|ddd d�dS(NR�R#RR�R�sb a cR"s#alliiiRRsInvalid column index disColumn index 3 out of boundsi����sColumn index -2 out of bounds(R�R#R(R#R�R(R#R�R(s#all(iii(R�R#R(iii(ii����(RR,R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_displaycolumnsqs c CsN|j�}|j|ddddddt�|j|ddddt�dS( NR^idi����it3cR3g�����LY@gfffff�Y@(RRGR�R(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s"cCs)|j�}|j|dddd�dS(NR�R�tbrowsetextended(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selectmode�scCs�|j�}|j|dddd�|j|dd�|j|dd�|j|dddd �|j|dddd �dS(NR�s tree headingsR"ttreetheadings(R�R�(R�R�(R�R�(R�(R�(RR,(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��scCsW|jj�|j|jjd�d�|jj�|jj�|jjdd�}|jj�}|j|�|jj|d�}|j |�dg|jd<|jj ddd�|jj|dd�}|jj ddd�}|jst |�}n|j|d|d|�|jj|d�}|j|jj|�d�dS( NRR�ittestR�R7i2s#0(R�R?RR�R@R�R�tget_childrenR�R�tcolumnRHRR)(Rtitem_idtchildrenR�tbbox_column0t root_widthRg((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��s$ cCs>|j|jj�d�|jjdd�}|j|jj�t�|j|jj�d|�|jjdd�}|jjdd�}|jj|||�|j|jj|�||f�|jtj |jj||�|jj|�|j|jj|�d�|jjd�|j|jj�d�dS(NRR�i(((( RR�R�R�R ttupletset_childrenRFRGR(RR�RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_children�s"cCsi|j|jjd�t�|jrJ|j|jjddd�t�n|jjddd�|j|jjdd�|jr�dnd�|j|jjddd�|jr�dnd�|jt j |jjddd�|jt j |jjd�idd 6id d6id d6id d6id d 6g}x-|D]%}|jt j |jjd|�q<WdS(Ns#0R7i t10tidtXR�s some valuetunknown_optiontwrongtstretchR�tminwidth(R R�R�R!RRHR)RRFRGR(Rtinvalid_kwsRM((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_column�s %"$ cCs?|jtj|jjd�|jjdd�}|jj|d�}|j|jj�|f�|j|jj|�|f�|jj|�|j|jj��|jtj|jj |dd�|jjdd�}|jjdd�}|j|jj�||f�|jj||�|j|jj��dS(Ns#0RR�( RFRGRR�R�R�RR�R�treattach(RR�titem2titem1((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_delete�scCs0|jjdd�}|jj|d�}|jj�}|jj�|j||jj��|j|jj�|f�|j|jj|�|f�|jj|�|j|jj��|jj|dd�|j|jj�|f�|j|jj|�|f�|jj|dd�|j|jj�||f�|j|jj|�d�|jt j |jjddd�|jt j |jjd�|jt j |jj|dd�|jt j |jj|dd�|jj||�|j|jj�d�|j|jj|�d�dS( NRR�tnonexistenttotherparentR�((((R�R�R�tdetachRR�R�tmoveRFRGR(RR�R�tprev((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_detach_reattach�s4 cCst|j|jjd�t�|j|jjd�t�|j|jji�t�|jtj|jjd�dS(Nt somethingR( RR�texistsR�RURFRGRRH(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_exists'scCs�|j|jj�d�|jjdd�}|jj|�|j|jj�|�|jj|�|j|jj�d�|jtj|jjd�dS(NRR�RO(RR�R�R�R�RFRGR(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_focus2scCs�|j|jjd�t�|jjddd�|j|jjdd�d�|j|jjddd�d�|jtj|jjddd�|jtj|jjddd�dS(Ns#0R8ROR�R�i( R R�theadingR!RRHRFRGR(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_headingAs"cs�fd�}g��jj��jj��jjdd�fd���jjddd��jj�|dd��s��jd�ng��jjj}�jjddt �jjddd����j|�jjj�|dd��s�jd�ndS( Ncs$t�j||��jj�dS(N(R R�R�(R�R�(R(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pytsimulate_heading_clickRss#0R�cs �jt�S(N(R�RU((R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�ZRR7idis>The command associated to the treeview heading wasn't invoked.(R�R?R@R�R�R�RnRt_tclCommandsR�RHR(RR�tcommands((RR�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_heading_callbackQs" . cCs�|jtj|jjd�|j|jjd�d�|jjdd�}|jjdd�}|jj|d�}|jj|d�}|j|jj|�d�|j|jj|�d�|j|jj|�d�|j|jj|�d�|jj|dd�|j|jj|�d�|j|jj|�d�|jj|�|j|jj|�d�|jj|�|j|jj|�d�|jj |�|jtj|jj|�dS(NtwhatRiR�i( RFRGRR�RkRR�R�R�R�(RR�R�tc1tc2((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRzss&cCs�|jtj|jjdd�|jtj|jjdddd�|jtj|jjdddd�|j|jj|jjdddt���|j|jj|jjdddt���|jtj|jjdd�|jjddd�}|j |d�|jtj|jjddd�|jtj|jjddt d��d}|jjddd |f�}|j |jj|d �|jr�|fn|�|j |jj|d d�|jr�|fn|�|jj|d |jj|jj|d d���|j |jj|d d�|jr@|fn|�|j|jj|�t�|jj|d d�|j|jj|d d��|jjddd dd|g�}|j |jj|d d�|jr�d d|fnd|�|jj|d g�|j|jj|d d��|jj|d d�|j |jj|d d�|jrodnd�|jjddd dd||ff�}|j |jj|d d�|jr�dd||ffn d||f�|j |jj|jjdddd�dd�d�|j |jj|jjddd|�dd�|�|jjddd�}|j |d�|jjddd�}|j |d�|jtj|jjddt�|jtj|jjddd�dS(NR�R�Rtopentpleasetmiddles first-itemuábaR�ttagsiiRRs1 2 %ss1 2sa b cs%s %ss{a b c} {%s %s}R8s Label hereiR#gs0.0(ii(RR(RFRGRR�R�R�R�RUR�RRtitemRRHR>t splitlistR R!(RtitemidR-R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_insert_item�sh.. 4$!!"cCs�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jtj|jjd�|jjdd�}|jjdd�}|jj|d�}|jj|d�}|jj|d�}|j |jj �d �|jj||f�|j |jj �||f�|jj|�|j |jj �|f�|jj||f�|j |jj �|||f�|jj|�|j |jj �||||f�|jj||f�|j |jj �|||f�|jj|�|j |jj �||f�|jj||f�|j |jj �||f�|jj|�|j |jj �|f�|jjdddd�|jjd�|j |jj �d�|jjdddd�|jjd�|j |jj �d�trl|jjdddtd��|jjtd��|j |jj �td�f�n|jjdddd�|jjd�|j |jj �tr�td �ndf�dS( NR�RR�R�swith spacess{braces unicode\u20acsbytes€sbytes\u20ac((swith spaces(s{brace( RFRGRR�t selection_sett selection_addtselection_removetselection_toggleR�Rt selectionRR(RR�R�R�R�tc3((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_selection�sR"%"%cCsPddg|jd<|jjdddddg�}|j|jj|�idd6dd6�|jj|dd�|j|jj|dd�|jr�dnd �dg|jd<|j|jj|�idd6�|jj|dd�|j|jj|d d�d�|j|jj|dd�|jr:dnd�|jj|dd�|j|jj|d�|jr~dnd �|j|jj|dd�|jr�dnd�|j|jj|�|jr�idd6n id d6�|jtj |jj|d�|jtj |jj|dd�|jtj |jjd�dS(NtAtBR�RR�R�R�R#sa aR�sb ai{t123s123 atnotme(R�R�(R#R�(i{R�( R�R�RRR�RHRRFRGR(RR�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyRWs,!*#"$"c s�g�|jjddddg�}|jjddddg�}|jjdd�fd��|jjdd�fd��|jj�|jj�|jj�t�}t�}xqtd d d�D]]}t|�dkr�Pn|jj |�}|r�||kr�|j |�|j |�q�q�W|jt|�d�x!|D]}t|jd |�qJW|jt��d �xAt �ddd��ddd��D]}|j|d�q�WdS(NRR�R�tcalls<ButtonPress-1>cs �jd�S(Ni(R�(R�(tevents(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�;Rs<ButtonRelease-1>cs �jd�S(Ni(R�(R�(R�(s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�=Riidi iii(ii(R�R�ttag_bindR?R@R�RRmR�tidentify_rowRRR tzip( RR�R�tpos_ytfoundRpR�R�R�((R�s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt test_tag_bind6s2 0cCs�|jt|jj�|jtj|jjddd�|jjddd�|jt|jjdd��d�|jt|jjddd��d�|j |jjd�t �dS(NR�tskytblueR�(RFt TypeErrorR�t tag_configureRGRRR�RHR R!(R((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tag_configureXs !cCs�|jjddddddg�}|jjddddddg�}|jt|jj�|jt|jjdd �|j|jjd|��|j|jjd|��|j|jjd|��|j|jjd|��|j|jjd |��|j|jjd |��|j|jjd�|f�|j|jjd�|f�|j|jjd �d�dS(NRR�R8sItem 1R�ttag1sItem 2ttag2snon-existingttag3(( R�R�RFR�ttag_hasRR�R�R(RR�R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_tag_hasds$$(RR�R]R�R^R!R�R�R.R`R�R�(R4R5RcR;RR�R�R�R�R�R�R�R�R�R�R�R�R�R�RzR�R�RWR�R�R�(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�[s4 * " M 6 ! " t SeparatorTestcBseZdZdZd�ZRS(RR]RR.R`RcKstj|j|�S(N(R<t SeparatorR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR|s(RR]RR.R`(R4R5RcR/R(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�tstSizegripTestcBseZdZd�ZRS(RR]R.R`cKstj|j|�S(N(R<tSizegripR>(RRb((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�s(RR]R.R`(R4R5RcR(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR��st__main__(5tunittesttTkinterRGRR<ttest.test_supportRRRRR�ttest_functionsRtsupportRRRR twidget_testsR RRR RRRRRtTestCaseR6RYR[RdR~R�R�R�R�R�R R,R4R>RXtskipIfR�RcReR�R�R�t tests_guiR4(((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt<module>sr"": ';0�|�3j" ��� test/README000064400000001066151703463030006410 0ustar00Writing new tests ================= Precaution ---------- New tests should always use only one Tk window at once, like all the current tests do. This means that you have to destroy the current window before creating another one, and clean up after the test. The motivation behind this is that some tests may depend on having its window focused while it is running to work properly, and it may be hard to force focus on your window across platforms (right now only test_traversal at test_ttk.test_widgets.NotebookTest depends on this). test/runtktests.py000064400000004305151703463030010327 0ustar00""" Use this module to get and run all tk tests. Tkinter tests should live in a package inside the directory where this file lives, like test_tkinter. Extensions also should live in packages following the same rule as above. """ import os import sys import unittest import importlib import test.test_support this_dir_path = os.path.abspath(os.path.dirname(__file__)) def is_package(path): for name in os.listdir(path): if name in ('__init__.py', '__init__.pyc', '__init.pyo'): return True return False def get_tests_modules(basepath=this_dir_path, gui=True, packages=None): """This will import and yield modules whose names start with test_ and are inside packages found in the path starting at basepath. If packages is specified it should contain package names that want their tests collected. """ py_ext = '.py' for dirpath, dirnames, filenames in os.walk(basepath): for dirname in list(dirnames): if dirname[0] == '.': dirnames.remove(dirname) if is_package(dirpath) and filenames: pkg_name = dirpath[len(basepath) + len(os.sep):].replace('/', '.') if packages and pkg_name not in packages: continue filenames = filter( lambda x: x.startswith('test_') and x.endswith(py_ext), filenames) for name in filenames: try: yield importlib.import_module( ".%s" % name[:-len(py_ext)], pkg_name) except test.test_support.ResourceDenied: if gui: raise def get_tests(text=True, gui=True, packages=None): """Yield all the tests in the modules found by get_tests_modules. If nogui is True, only tests that do not require a GUI will be returned.""" attrs = [] if text: attrs.append('tests_nogui') if gui: attrs.append('tests_gui') for module in get_tests_modules(gui=gui, packages=packages): for attr in attrs: for test in getattr(module, attr, ()): yield test if __name__ == "__main__": test.test_support.run_unittest(*get_tests()) test/runtktests.pyc000064400000005453151703463030010477 0ustar00� zfc@s�dZddlZddlZddlZddlZddlZejjejj e ��Zd�Zee dd�Ze e dd�Zedkr�ejje��ndS(s� Use this module to get and run all tk tests. Tkinter tests should live in a package inside the directory where this file lives, like test_tkinter. Extensions also should live in packages following the same rule as above. i����NcCs.x'tj|�D]}|dkrtSqWtS(Ns__init__.pys__init__.pycs __init.pyo(s__init__.pys__init__.pycs __init.pyo(tostlistdirtTruetFalse(tpathtname((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt is_packagesc #s-d�x tj|�D]\}}}x4t|�D]&}|ddkr2|j|�q2q2Wt|�r|r|t|�ttj�jdd�}|r�||kr�qnt�fd�|�}x[|D]P}y$t j d|t�� |�VWq�tjj k r|r�qq�Xq�WqqWdS(s�This will import and yield modules whose names start with test_ and are inside packages found in the path starting at basepath. If packages is specified it should contain package names that want their tests collected. s.pyit.t/cs|jd�o|j��S(Nttest_(t startswithtendswith(tx(tpy_ext(s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<lambda>+ts.%sN(RtwalktlisttremoveRtlentseptreplacetfiltert importlibt import_modulettestttest_supporttResourceDenied( tbasepathtguitpackagestdirpathtdirnamest filenamestdirnametpkg_nameR((R s./usr/lib64/python2.7/lib-tk/test/runtktests.pytget_tests_moduless&) ccs�g}|r|jd�n|r2|jd�nxPtd|d|�D]9}x0|D](}xt||d�D]}|VqnWqUWqHWdS(s�Yield all the tests in the modules found by get_tests_modules. If nogui is True, only tests that do not require a GUI will be returned.ttests_noguit tests_guiRRN((tappendR$tgetattr(ttextRRtattrstmoduletattrR((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt get_tests6s t__main__(t__doc__RtsystunittestRttest.test_supportRRtabspathR"t__file__t this_dir_pathRRtNoneR$R-t__name__Rtrun_unittest(((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<module>s test/runtktests.pyo000064400000005453151703463030010513 0ustar00� zfc@s�dZddlZddlZddlZddlZddlZejjejj e ��Zd�Zee dd�Ze e dd�Zedkr�ejje��ndS(s� Use this module to get and run all tk tests. Tkinter tests should live in a package inside the directory where this file lives, like test_tkinter. Extensions also should live in packages following the same rule as above. i����NcCs.x'tj|�D]}|dkrtSqWtS(Ns__init__.pys__init__.pycs __init.pyo(s__init__.pys__init__.pycs __init.pyo(tostlistdirtTruetFalse(tpathtname((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt is_packagesc #s-d�x tj|�D]\}}}x4t|�D]&}|ddkr2|j|�q2q2Wt|�r|r|t|�ttj�jdd�}|r�||kr�qnt�fd�|�}x[|D]P}y$t j d|t�� |�VWq�tjj k r|r�qq�Xq�WqqWdS(s�This will import and yield modules whose names start with test_ and are inside packages found in the path starting at basepath. If packages is specified it should contain package names that want their tests collected. s.pyit.t/cs|jd�o|j��S(Nttest_(t startswithtendswith(tx(tpy_ext(s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<lambda>+ts.%sN(RtwalktlisttremoveRtlentseptreplacetfiltert importlibt import_modulettestttest_supporttResourceDenied( tbasepathtguitpackagestdirpathtdirnamest filenamestdirnametpkg_nameR((R s./usr/lib64/python2.7/lib-tk/test/runtktests.pytget_tests_moduless&) ccs�g}|r|jd�n|r2|jd�nxPtd|d|�D]9}x0|D](}xt||d�D]}|VqnWqUWqHWdS(s�Yield all the tests in the modules found by get_tests_modules. If nogui is True, only tests that do not require a GUI will be returned.ttests_noguit tests_guiRRN((tappendR$tgetattr(ttextRRtattrstmoduletattrR((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt get_tests6s t__main__(t__doc__RtsystunittestRttest.test_supportRRtabspathR"t__file__t this_dir_pathRRtNoneR$R-t__name__Rtrun_unittest(((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<module>s test/widget_tests.py000064400000050155151703463030010612 0ustar00# Common tests for test_tkinter/test_widgets.py and test_ttk/test_widgets.py import unittest import sys import Tkinter as tkinter from ttk import Scale from test_ttk.support import (AbstractTkTest, tcl_version, requires_tcl, get_tk_patchlevel, pixels_conv, tcl_obj_eq) import test.test_support noconv = noconv_meth = False if get_tk_patchlevel() < (8, 5, 11): noconv = str noconv_meth = noconv and staticmethod(noconv) def int_round(x): return int(round(x)) pixels_round = int_round if get_tk_patchlevel()[:3] == (8, 5, 11): # Issue #19085: Workaround a bug in Tk # http://core.tcl.tk/tk/info/3497848 pixels_round = int _sentinel = object() class AbstractWidgetTest(AbstractTkTest): _conv_pixels = staticmethod(pixels_round) _conv_pad_pixels = None _stringify = False @property def scaling(self): try: return self._scaling except AttributeError: self._scaling = float(self.root.call('tk', 'scaling')) return self._scaling def _str(self, value): if not self._stringify and self.wantobjects and tcl_version >= (8, 6): return value if isinstance(value, tuple): return ' '.join(map(self._str, value)) return str(value) def assertEqual2(self, actual, expected, msg=None, eq=object.__eq__): if eq(actual, expected): return self.assertEqual(actual, expected, msg) def checkParam(self, widget, name, value, expected=_sentinel, conv=False, eq=None): widget[name] = value if expected is _sentinel: expected = value if conv: expected = conv(expected) if self._stringify or not self.wantobjects: if isinstance(expected, tuple): expected = tkinter._join(expected) else: expected = str(expected) if eq is None: eq = tcl_obj_eq self.assertEqual2(widget[name], expected, eq=eq) self.assertEqual2(widget.cget(name), expected, eq=eq) # XXX if not isinstance(widget, Scale): t = widget.configure(name) self.assertEqual(len(t), 5) self.assertEqual2(t[4], expected, eq=eq) def checkInvalidParam(self, widget, name, value, errmsg=None, keep_orig=True): orig = widget[name] if errmsg is not None: errmsg = errmsg.format(value) with self.assertRaises(tkinter.TclError) as cm: widget[name] = value if errmsg is not None: self.assertEqual(str(cm.exception), errmsg) if keep_orig: self.assertEqual(widget[name], orig) else: widget[name] = orig with self.assertRaises(tkinter.TclError) as cm: widget.configure({name: value}) if errmsg is not None: self.assertEqual(str(cm.exception), errmsg) if keep_orig: self.assertEqual(widget[name], orig) else: widget[name] = orig def checkParams(self, widget, name, *values, **kwargs): for value in values: self.checkParam(widget, name, value, **kwargs) def checkIntegerParam(self, widget, name, *values, **kwargs): self.checkParams(widget, name, *values, **kwargs) self.checkInvalidParam(widget, name, '', errmsg='expected integer but got ""') self.checkInvalidParam(widget, name, '10p', errmsg='expected integer but got "10p"') self.checkInvalidParam(widget, name, 3.2, errmsg='expected integer but got "3.2"') def checkFloatParam(self, widget, name, *values, **kwargs): if 'conv' in kwargs: conv = kwargs.pop('conv') else: conv = float for value in values: self.checkParam(widget, name, value, conv=conv, **kwargs) self.checkInvalidParam(widget, name, '', errmsg='expected floating-point number but got ""') self.checkInvalidParam(widget, name, 'spam', errmsg='expected floating-point number but got "spam"') def checkBooleanParam(self, widget, name): for value in (False, 0, 'false', 'no', 'off'): self.checkParam(widget, name, value, expected=0) for value in (True, 1, 'true', 'yes', 'on'): self.checkParam(widget, name, value, expected=1) self.checkInvalidParam(widget, name, '', errmsg='expected boolean value but got ""') self.checkInvalidParam(widget, name, 'spam', errmsg='expected boolean value but got "spam"') def checkColorParam(self, widget, name, allow_empty=None, **kwargs): self.checkParams(widget, name, '#ff0000', '#00ff00', '#0000ff', '#123456', 'red', 'green', 'blue', 'white', 'black', 'grey', **kwargs) self.checkInvalidParam(widget, name, 'spam', errmsg='unknown color name "spam"') def checkCursorParam(self, widget, name, **kwargs): self.checkParams(widget, name, 'arrow', 'watch', 'cross', '',**kwargs) if tcl_version >= (8, 5): self.checkParam(widget, name, 'none') self.checkInvalidParam(widget, name, 'spam', errmsg='bad cursor spec "spam"') def checkCommandParam(self, widget, name): def command(*args): pass widget[name] = command self.assertTrue(widget[name]) self.checkParams(widget, name, '') def checkEnumParam(self, widget, name, *values, **kwargs): if 'errmsg' in kwargs: errmsg = kwargs.pop('errmsg') else: errmsg = None self.checkParams(widget, name, *values, **kwargs) if errmsg is None: errmsg2 = ' %s "{}": must be %s%s or %s' % ( name, ', '.join(values[:-1]), ',' if len(values) > 2 else '', values[-1]) self.checkInvalidParam(widget, name, '', errmsg='ambiguous' + errmsg2) errmsg = 'bad' + errmsg2 self.checkInvalidParam(widget, name, 'spam', errmsg=errmsg) def checkPixelsParam(self, widget, name, *values, **kwargs): if 'conv' in kwargs: conv = kwargs.pop('conv') else: conv = None if conv is None: conv = self._conv_pixels if 'keep_orig' in kwargs: keep_orig = kwargs.pop('keep_orig') else: keep_orig = True for value in values: expected = _sentinel conv1 = conv if isinstance(value, str): if conv1 and conv1 is not str: expected = pixels_conv(value) * self.scaling conv1 = int_round self.checkParam(widget, name, value, expected=expected, conv=conv1, **kwargs) self.checkInvalidParam(widget, name, '6x', errmsg='bad screen distance "6x"', keep_orig=keep_orig) self.checkInvalidParam(widget, name, 'spam', errmsg='bad screen distance "spam"', keep_orig=keep_orig) def checkReliefParam(self, widget, name): self.checkParams(widget, name, 'flat', 'groove', 'raised', 'ridge', 'solid', 'sunken') errmsg='bad relief "spam": must be '\ 'flat, groove, raised, ridge, solid, or sunken' if tcl_version < (8, 6): errmsg = None self.checkInvalidParam(widget, name, 'spam', errmsg=errmsg) def checkImageParam(self, widget, name): image = tkinter.PhotoImage(master=self.root, name='image1') self.checkParam(widget, name, image, conv=str) self.checkInvalidParam(widget, name, 'spam', errmsg='image "spam" doesn\'t exist') widget[name] = '' def checkVariableParam(self, widget, name, var): self.checkParam(widget, name, var, conv=str) def assertIsBoundingBox(self, bbox): self.assertIsNotNone(bbox) self.assertIsInstance(bbox, tuple) if len(bbox) != 4: self.fail('Invalid bounding box: %r' % (bbox,)) for item in bbox: if not isinstance(item, int): self.fail('Invalid bounding box: %r' % (bbox,)) break def test_keys(self): widget = self.create() keys = widget.keys() # XXX if not isinstance(widget, Scale): self.assertEqual(sorted(keys), sorted(widget.configure())) for k in keys: widget[k] # Test if OPTIONS contains all keys if test.test_support.verbose: aliases = { 'bd': 'borderwidth', 'bg': 'background', 'fg': 'foreground', 'invcmd': 'invalidcommand', 'vcmd': 'validatecommand', } keys = set(keys) expected = set(self.OPTIONS) for k in sorted(keys - expected): if not (k in aliases and aliases[k] in keys and aliases[k] in expected): print('%s.OPTIONS doesn\'t contain "%s"' % (self.__class__.__name__, k)) class StandardOptionsTests(object): STANDARD_OPTIONS = ( 'activebackground', 'activeborderwidth', 'activeforeground', 'anchor', 'background', 'bitmap', 'borderwidth', 'compound', 'cursor', 'disabledforeground', 'exportselection', 'font', 'foreground', 'highlightbackground', 'highlightcolor', 'highlightthickness', 'image', 'insertbackground', 'insertborderwidth', 'insertofftime', 'insertontime', 'insertwidth', 'jump', 'justify', 'orient', 'padx', 'pady', 'relief', 'repeatdelay', 'repeatinterval', 'selectbackground', 'selectborderwidth', 'selectforeground', 'setgrid', 'takefocus', 'text', 'textvariable', 'troughcolor', 'underline', 'wraplength', 'xscrollcommand', 'yscrollcommand', ) def test_activebackground(self): widget = self.create() self.checkColorParam(widget, 'activebackground') def test_activeborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'activeborderwidth', 0, 1.3, 2.9, 6, -2, '10p') def test_activeforeground(self): widget = self.create() self.checkColorParam(widget, 'activeforeground') def test_anchor(self): widget = self.create() self.checkEnumParam(widget, 'anchor', 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw', 'center') def test_background(self): widget = self.create() self.checkColorParam(widget, 'background') if 'bg' in self.OPTIONS: self.checkColorParam(widget, 'bg') def test_bitmap(self): widget = self.create() self.checkParam(widget, 'bitmap', 'questhead') self.checkParam(widget, 'bitmap', 'gray50') filename = test.test_support.findfile('python.xbm', subdir='imghdrdata') self.checkParam(widget, 'bitmap', '@' + filename) # Cocoa Tk widgets don't detect invalid -bitmap values # See https://core.tcl.tk/tk/info/31cd33dbf0 if not ('aqua' in self.root.tk.call('tk', 'windowingsystem') and 'AppKit' in self.root.winfo_server()): self.checkInvalidParam(widget, 'bitmap', 'spam', errmsg='bitmap "spam" not defined') def test_borderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'borderwidth', 0, 1.3, 2.6, 6, -2, '10p') if 'bd' in self.OPTIONS: self.checkPixelsParam(widget, 'bd', 0, 1.3, 2.6, 6, -2, '10p') def test_compound(self): widget = self.create() self.checkEnumParam(widget, 'compound', 'bottom', 'center', 'left', 'none', 'right', 'top') def test_cursor(self): widget = self.create() self.checkCursorParam(widget, 'cursor') def test_disabledforeground(self): widget = self.create() self.checkColorParam(widget, 'disabledforeground') def test_exportselection(self): widget = self.create() self.checkBooleanParam(widget, 'exportselection') def test_font(self): widget = self.create() self.checkParam(widget, 'font', '-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*') self.checkInvalidParam(widget, 'font', '', errmsg='font "" doesn\'t exist') def test_foreground(self): widget = self.create() self.checkColorParam(widget, 'foreground') if 'fg' in self.OPTIONS: self.checkColorParam(widget, 'fg') def test_highlightbackground(self): widget = self.create() self.checkColorParam(widget, 'highlightbackground') def test_highlightcolor(self): widget = self.create() self.checkColorParam(widget, 'highlightcolor') def test_highlightthickness(self): widget = self.create() self.checkPixelsParam(widget, 'highlightthickness', 0, 1.3, 2.6, 6, '10p') self.checkParam(widget, 'highlightthickness', -2, expected=0, conv=self._conv_pixels) @unittest.skipIf(sys.platform == 'darwin', 'crashes with Cocoa Tk (issue19733)') def test_image(self): widget = self.create() self.checkImageParam(widget, 'image') def test_insertbackground(self): widget = self.create() self.checkColorParam(widget, 'insertbackground') def test_insertborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'insertborderwidth', 0, 1.3, 2.6, 6, -2, '10p') def test_insertofftime(self): widget = self.create() self.checkIntegerParam(widget, 'insertofftime', 100) def test_insertontime(self): widget = self.create() self.checkIntegerParam(widget, 'insertontime', 100) def test_insertwidth(self): widget = self.create() self.checkPixelsParam(widget, 'insertwidth', 1.3, 2.6, -2, '10p') def test_jump(self): widget = self.create() self.checkBooleanParam(widget, 'jump') def test_justify(self): widget = self.create() self.checkEnumParam(widget, 'justify', 'left', 'right', 'center', errmsg='bad justification "{}": must be ' 'left, right, or center') self.checkInvalidParam(widget, 'justify', '', errmsg='ambiguous justification "": must be ' 'left, right, or center') def test_orient(self): widget = self.create() self.assertEqual(str(widget['orient']), self.default_orient) self.checkEnumParam(widget, 'orient', 'horizontal', 'vertical') def test_padx(self): widget = self.create() self.checkPixelsParam(widget, 'padx', 3, 4.4, 5.6, -2, '12m', conv=self._conv_pad_pixels) def test_pady(self): widget = self.create() self.checkPixelsParam(widget, 'pady', 3, 4.4, 5.6, -2, '12m', conv=self._conv_pad_pixels) def test_relief(self): widget = self.create() self.checkReliefParam(widget, 'relief') def test_repeatdelay(self): widget = self.create() self.checkIntegerParam(widget, 'repeatdelay', -500, 500) def test_repeatinterval(self): widget = self.create() self.checkIntegerParam(widget, 'repeatinterval', -500, 500) def test_selectbackground(self): widget = self.create() self.checkColorParam(widget, 'selectbackground') def test_selectborderwidth(self): widget = self.create() self.checkPixelsParam(widget, 'selectborderwidth', 1.3, 2.6, -2, '10p') def test_selectforeground(self): widget = self.create() self.checkColorParam(widget, 'selectforeground') def test_setgrid(self): widget = self.create() self.checkBooleanParam(widget, 'setgrid') def test_state(self): widget = self.create() self.checkEnumParam(widget, 'state', 'active', 'disabled', 'normal') def test_takefocus(self): widget = self.create() self.checkParams(widget, 'takefocus', '0', '1', '') def test_text(self): widget = self.create() self.checkParams(widget, 'text', '', 'any string') def test_textvariable(self): widget = self.create() var = tkinter.StringVar(self.root) self.checkVariableParam(widget, 'textvariable', var) def test_troughcolor(self): widget = self.create() self.checkColorParam(widget, 'troughcolor') def test_underline(self): widget = self.create() self.checkIntegerParam(widget, 'underline', 0, 1, 10) def test_wraplength(self): widget = self.create() self.checkPixelsParam(widget, 'wraplength', 100) def test_xscrollcommand(self): widget = self.create() self.checkCommandParam(widget, 'xscrollcommand') def test_yscrollcommand(self): widget = self.create() self.checkCommandParam(widget, 'yscrollcommand') # non-standard but common options def test_command(self): widget = self.create() self.checkCommandParam(widget, 'command') def test_indicatoron(self): widget = self.create() self.checkBooleanParam(widget, 'indicatoron') def test_offrelief(self): widget = self.create() self.checkReliefParam(widget, 'offrelief') def test_overrelief(self): widget = self.create() self.checkReliefParam(widget, 'overrelief') def test_selectcolor(self): widget = self.create() self.checkColorParam(widget, 'selectcolor') def test_selectimage(self): widget = self.create() self.checkImageParam(widget, 'selectimage') @requires_tcl(8, 5) def test_tristateimage(self): widget = self.create() self.checkImageParam(widget, 'tristateimage') @requires_tcl(8, 5) def test_tristatevalue(self): widget = self.create() self.checkParam(widget, 'tristatevalue', 'unknowable') def test_variable(self): widget = self.create() var = tkinter.DoubleVar(self.root) self.checkVariableParam(widget, 'variable', var) class IntegerSizeTests(object): def test_height(self): widget = self.create() self.checkIntegerParam(widget, 'height', 100, -100, 0) def test_width(self): widget = self.create() self.checkIntegerParam(widget, 'width', 402, -402, 0) class PixelSizeTests(object): def test_height(self): widget = self.create() self.checkPixelsParam(widget, 'height', 100, 101.2, 102.6, -100, 0, '3c') def test_width(self): widget = self.create() self.checkPixelsParam(widget, 'width', 402, 403.4, 404.6, -402, 0, '5i') def add_standard_options(*source_classes): # This decorator adds test_xxx methods from source classes for every xxx # option in the OPTIONS class attribute if they are not defined explicitly. def decorator(cls): for option in cls.OPTIONS: methodname = 'test_' + option if not hasattr(cls, methodname): for source_class in source_classes: if hasattr(source_class, methodname): setattr(cls, methodname, getattr(source_class, methodname).im_func) break else: def test(self, option=option): widget = self.create() widget[option] raise AssertionError('Option "%s" is not tested in %s' % (option, cls.__name__)) test.__name__ = methodname setattr(cls, methodname, test) return cls return decorator def setUpModule(): if test.test_support.verbose: tcl = tkinter.Tcl() print 'patchlevel =', tcl.call('info', 'patchlevel') test/widget_tests.pyc000064400000063575151703463030010767 0ustar00� zfc@sVddlZddlZddlZddlmZddlmZmZm Z m Z mZmZddl ZeZZe �dddfkr�eZneo�ee�Zd�ZeZe �d dddfkr�eZne�Zd efd ��YZdefd��YZd efd��YZdefd��YZd�Zd�ZdS(i����N(tScale(tAbstractTkTestttcl_versiontrequires_tcltget_tk_patchleveltpixels_convt tcl_obj_eqiiicCstt|��S(N(tinttround(tx((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt int_roundsitAbstractWidgetTestcBs�eZee�ZdZeZe d��Z d�Zdej d�Zeedd�Zded�Zd�Zd�Zd�Zd�Zdd �Zd �Zd�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Z RS(cCsEy|jSWn3tk r@t|jjdd��|_|jSXdS(Nttktscaling(t_scalingtAttributeErrortfloattroottcall(tself((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR "s cCsU|jr#|jr#tdkr#|St|t�rKdjt|j|��St|�S(Niit (ii( t _stringifytwantobjectsRt isinstancettupletjointmapt_strtstr(Rtvalue((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR*s cCs*|||�rdS|j|||�dS(N(tassertEqual(Rtactualtexpectedtmsgteq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytassertEqual21scCs|||<|tkr|}n|r4||�}n|jsG|jrwt|t�rhtj|�}qwt|�}n|dkr�t }n|j |||d|�|j |j|�|d|�t|t�s|j |�}|jt|�d�|j |d|d|�ndS(NR"ii(t _sentinelRRRRttkintert_joinRtNoneRR#tcgetRt configureRtlen(RtwidgettnameRR tconvR"tt((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt checkParam6s" c Cs||}|dk r(|j|�}n|jtj��}|||<WdQX|dk ru|jt|j�|�n|r�|j|||�n |||<|jtj��}|ji||6�WdQX|dk r�|jt|j�|�n|r|j|||�n |||<dS(N( R'tformattassertRaisesR%tTclErrorRRt exceptionR)(RR+R,Rterrmsgt keep_origtorigtcm((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckInvalidParamLs" cOs+x$|D]}|j||||�qWdS(N(R/(RR+R,tvaluestkwargsR((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckParamsbs cOse|j||||�|j||ddd�|j||ddd�|j||ddd�dS(NtR4sexpected integer but got ""t10psexpected integer but got "10p"g������ @sexpected integer but got "3.2"(R;R8(RR+R,R9R:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckIntegerParamfscOs�d|kr|jd�}nt}x*|D]"}|j|||d||�q+W|j||ddd�|j||ddd�dS(NR-R<R4s)expected floating-point number but got ""tspams-expected floating-point number but got "spam"(tpopRR/R8(RR+R,R9R:R-R((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckFloatParamos cCs�x6tddddfD]}|j|||dd�qWx6tdddd fD]}|j|||dd�qOW|j||d dd�|j||d dd�dS(NitfalsetnotoffR ittruetyestonR<R4s!expected boolean value but got ""R?s%expected boolean value but got "spam"(tFalseR/tTrueR8(RR+R,R((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckBooleanParam{scKsN|j||ddddddddd d |�|j||ddd �dS(Ns#ff0000s#00ff00s#0000ffs#123456tredtgreentbluetwhitetblacktgreyR?R4sunknown color name "spam"(R;R8(RR+R,tallow_emptyR:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckColorParam�scKs^|j||dddd|�tdkrA|j||d�n|j||dd d �dS(NtarrowtwatchtcrossR<iitnoneR?R4sbad cursor spec "spam"(ii(R;RR/R8(RR+R,R:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckCursorParam�s cCs;d�}|||<|j||�|j||d�dS(NcWsdS(N((targs((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcommand�sR<(t assertTrueR;(RR+R,RY((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckCommandParam�s cOs�d|kr|jd�}nd}|j||||�|dkr�d|dj|d �t|�dkrtdnd|df}|j||ddd|�d |}n|j||d d|�dS(NR4s %s "{}": must be %s%s or %ss, i����it,R<t ambiguoustbadR?(R@R'R;RR*R8(RR+R,R9R:R4terrmsg2((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckEnumParam�s c Os!d|kr|jd�}nd}|dkr<|j}nd|krZ|jd�}nt}x||D]t}t}|} t|t�r�| r�| tk r�t|�|j}t } q�n|j |||d|d| |�qgW|j||dddd|�|j||dddd|�dS( NR-R5R t6xR4sbad screen distance "6x"R?sbad screen distance "spam"(R@R't_conv_pixelsRIR$RRRR R R/R8( RR+R,R9R:R-R5RR tconv1((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckPixelsParam�s* c CsZ|j||dddddd�d}tdkr=d}n|j||d d|�dS( NtflattgroovetraisedtridgetsolidtsunkensHbad relief "spam": must be flat, groove, raised, ridge, solid, or sunkeniiR?R4(ii(R;RR'R8(RR+R,R4((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckReliefParam�s cCs[tjd|jdd�}|j|||dt�|j||ddd�d||<dS( NtmasterR,timage1R-R?R4simage "spam" doesn't existR<(R%t PhotoImageRR/RR8(RR+R,timage((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckImageParam�s cCs|j|||dt�dS(NR-(R/R(RR+R,tvar((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckVariableParam�scCs�|j|�|j|t�t|�dkrF|jd|f�nx5|D]-}t|t�sM|jd|f�PqMqMWdS(NisInvalid bounding box: %r(tassertIsNotNonetassertIsInstanceRR*tfailRR(Rtbboxtitem((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytassertIsBoundingBox�s cCs|j�}|j�}t|t�sL|jt|�t|j���nx|D]}||qSWtjj ridd6dd6dd6dd6d d 6}t |�}t |j�}x_t||�D]J}||ko�|||ko�|||ks�d|jj |fGHq�q�WndS(Ntborderwidthtbdt backgroundtbgt foregroundtfgtinvalidcommandtinvcmdtvalidatecommandtvcmds%s.OPTIONS doesn't contain "%s"(tcreatetkeysRRRtsortedR)ttestttest_supporttverbosetsettOPTIONSt __class__t__name__(RR+R�tktaliasesR ((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_keys�s*% N(!R�t __module__tstaticmethodtpixels_roundRbR't_conv_pad_pixelsRHRtpropertyR Rtobjectt__eq__R#R$R/RIR8R;R>RARJRRRWR[R`RdRkRpRrRxR�(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyRs0 tStandardOptionsTestsc*BseZdbZd*�Zd+�Zd,�Zd-�Zd.�Zd/�Zd0�Z d1�Z d2�Zd3�Zd4�Z d5�Zd6�Zd7�Zd8�Zd9�Zejejd:kd;�d<��Zd=�Zd>�Zd?�Zd@�ZdA�ZdB�ZdC�ZdD�ZdE�Z dF�Z!dG�Z"dH�Z#dI�Z$dJ�Z%dK�Z&dL�Z'dM�Z(dN�Z)dO�Z*dP�Z+dQ�Z,dR�Z-dS�Z.dT�Z/dU�Z0dV�Z1dW�Z2dX�Z3dY�Z4dZ�Z5d[�Z6d\�Z7e8d]d^�d_��Z9e8d]d^�d`��Z:da�Z;RS(ctactivebackgroundtactiveborderwidthtactiveforegroundtanchorR{tbitmapRytcompoundtcursortdisabledforegroundtexportselectiontfontR}thighlightbackgroundthighlightcolorthighlightthicknessRotinsertbackgroundtinsertborderwidtht insertofftimetinsertontimetinsertwidthtjumptjustifytorienttpadxtpadytrelieftrepeatdelaytrepeatintervaltselectbackgroundtselectborderwidthtselectforegroundtsetgridt takefocusttextttextvariablettroughcolort underlinet wraplengthtxscrollcommandtyscrollcommandcCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activebackground sc Cs2|j�}|j|ddddddd�dS(NR�ig�������?g333333@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeborderwidthscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeforegroundscCs;|j�}|j|ddddddddd d �dS(NR�tntnetetsetstswtwtnwtcenter(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_anchorscCsB|j�}|j|d�d|jkr>|j|d�ndS(NR{R|(R�RRR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_backgroundscCs�|j�}|j|dd�|j|dd�tjjddd�}|j|dd|�d|jjjd d �ko�d|jj�ks�|j |ddd d�ndS(NR�t questheadtgray50s python.xbmtsubdirt imghdrdatat@taquaRtwindowingsystemtAppKitR?R4sbitmap "spam" not defined( R�R/R�R�tfindfileRRRtwinfo_serverR8(RR+tfilename((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_bitmap%sc Csf|j�}|j|ddddddd�d|jkrb|j|ddddddd�ndS( NRyig�������?g������@ii����R=Rz(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_borderwidth2s c Cs2|j�}|j|ddddddd�dS(NR�tbottomR�tleftRVtrightttop(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_compound9scCs |j�}|j|d�dS(NR�(R�RW(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_cursor>scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_disabledforegroundBscCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_exportselectionFscCs<|j�}|j|dd�|j|dddd�dS(NR�s3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*R<R4sfont "" doesn't exist(R�R/R8(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_fontJs cCsB|j�}|j|d�d|jkr>|j|d�ndS(NR}R~(R�RRR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_foregroundQscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightbackgroundWscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightcolor[scCsQ|j�}|j|dddddd�|j|ddddd |j�dS( NR�ig�������?g������@iR=i����R R-(R�RdR/Rb(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightthickness_s tdarwins"crashes with Cocoa Tk (issue19733)cCs |j�}|j|d�dS(NRo(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_imagefscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertbackgroundlsc Cs2|j�}|j|ddddddd�dS(NR�ig�������?g������@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertborderwidthpscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertofftimeuscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertontimeyscCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertwidth}scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_jump�scCsH|j�}|j|dddddd�|j|dddd�dS( NR�R�R�R�R4s6bad justification "{}": must be left, right, or centerR<s:ambiguous justification "": must be left, right, or center(R�R`R8(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_justify�s cCsC|j�}|jt|d�|j�|j|ddd�dS(NR�t horizontaltvertical(R�RRtdefault_orientR`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_orient�sc Cs8|j�}|j|ddddddd|j�dS(NR�ig������@gffffff@i����t12mR-(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_padx�sc Cs8|j�}|j|ddddddd|j�dS(NR�ig������@gffffff@i����R�R-(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_pady�scCs |j�}|j|d�dS(NR�(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_relief�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatdelay�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatinterval�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectbackground�scCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectborderwidth�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectforeground�scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_setgrid�scCs)|j�}|j|dddd�dS(Ntstatetactivetdisabledtnormal(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_state�scCs)|j�}|j|dddd�dS(NR�t0t1R<(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_takefocus�scCs&|j�}|j|ddd�dS(NR�R<s any string(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_text�scCs5|j�}tj|j�}|j|d|�dS(NR�(R�R%t StringVarRRr(RR+Rq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_textvariable�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_troughcolor�scCs)|j�}|j|dddd�dS(NR�iii (R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_underline�scCs#|j�}|j|dd�dS(NR�id(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_wraplength�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_xscrollcommand�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_yscrollcommand�scCs |j�}|j|d�dS(NRY(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_command�scCs |j�}|j|d�dS(Ntindicatoron(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_indicatoron�scCs |j�}|j|d�dS(Nt offrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_offrelief�scCs |j�}|j|d�dS(Nt overrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_overrelief�scCs |j�}|j|d�dS(Ntselectcolor(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectcolor�scCs |j�}|j|d�dS(Ntselectimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectimage�siicCs |j�}|j|d�dS(Nt tristateimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristateimage�scCs#|j�}|j|dd�dS(Nt tristatevaluet unknowable(R�R/(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristatevalue�scCs5|j�}tj|j�}|j|d|�dS(Ntvariable(R�R%t DoubleVarRRr(RR+Rq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_variables(*R�R�R�R�R{R�RyR�R�R�R�R�R}R�R�R�RoR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(<R�R�tSTANDARD_OPTIONSR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tunittesttskipIftsystplatformR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RRRRRR R RRR RRRRRRRRR(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR��s� tIntegerSizeTestscBseZd�Zd�ZRS(cCs)|j�}|j|dddd�dS(Ntheightidi����i(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_height scCs)|j�}|j|dddd�dS(Ntwidthi�in���i(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_width s(R�R�R'R)(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR%s tPixelSizeTestscBseZd�Zd�ZRS(c Cs2|j�}|j|ddddddd�dS(NR&idg�����LY@gfffff�Y@i����it3c(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR'sc Cs2|j�}|j|ddddddd�dS(NR(i�gfffff6y@g�����Iy@in���it5i(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR)s(R�R�R'R)(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR*s cs�fd�}|S(Ncs�x��jD]�}d|}t�|�s xk�D]5}t||�r0t�|t||�j�Pq0q0W|�fd�}||_t�||�q q W�S(Nttest_cs1|j�}||td|�jf��dS(NsOption "%s" is not tested in %s(R�tAssertionErrorR�(RtoptionR+(tcls(s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR�)s(R�thasattrtsetattrtgetattrtim_funcR�(R0R/t methodnametsource_classR�(tsource_classes(R0s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt decorators ((R7R8((R7s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytadd_standard_optionsscCs4tjjr0tj�}dG|jdd�GHndS(Nspatchlevel =tinfot patchlevel(R�R�R�R%tTclR(ttcl((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytsetUpModule3s(R!R#tTkinterR%tttkRttest_ttk.supportRRRRRRttest.test_supportR�RHtnoconvtnoconv_methRR�R R�RR�R$RR�R%R*R9R>(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt<module>s*. �� test/widget_tests.pyo000064400000063575151703463030011003 0ustar00� zfc@sVddlZddlZddlZddlmZddlmZmZm Z m Z mZmZddl ZeZZe �dddfkr�eZneo�ee�Zd�ZeZe �d dddfkr�eZne�Zd efd ��YZdefd��YZd efd��YZdefd��YZd�Zd�ZdS(i����N(tScale(tAbstractTkTestttcl_versiontrequires_tcltget_tk_patchleveltpixels_convt tcl_obj_eqiiicCstt|��S(N(tinttround(tx((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt int_roundsitAbstractWidgetTestcBs�eZee�ZdZeZe d��Z d�Zdej d�Zeedd�Zded�Zd�Zd�Zd�Zd�Zdd �Zd �Zd�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Z RS(cCsEy|jSWn3tk r@t|jjdd��|_|jSXdS(Nttktscaling(t_scalingtAttributeErrortfloattroottcall(tself((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR "s cCsU|jr#|jr#tdkr#|St|t�rKdjt|j|��St|�S(Niit (ii( t _stringifytwantobjectsRt isinstancettupletjointmapt_strtstr(Rtvalue((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR*s cCs*|||�rdS|j|||�dS(N(tassertEqual(Rtactualtexpectedtmsgteq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytassertEqual21scCs|||<|tkr|}n|r4||�}n|jsG|jrwt|t�rhtj|�}qwt|�}n|dkr�t }n|j |||d|�|j |j|�|d|�t|t�s|j |�}|jt|�d�|j |d|d|�ndS(NR"ii(t _sentinelRRRRttkintert_joinRtNoneRR#tcgetRt configureRtlen(RtwidgettnameRR tconvR"tt((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt checkParam6s" c Cs||}|dk r(|j|�}n|jtj��}|||<WdQX|dk ru|jt|j�|�n|r�|j|||�n |||<|jtj��}|ji||6�WdQX|dk r�|jt|j�|�n|r|j|||�n |||<dS(N( R'tformattassertRaisesR%tTclErrorRRt exceptionR)(RR+R,Rterrmsgt keep_origtorigtcm((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckInvalidParamLs" cOs+x$|D]}|j||||�qWdS(N(R/(RR+R,tvaluestkwargsR((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckParamsbs cOse|j||||�|j||ddd�|j||ddd�|j||ddd�dS(NtR4sexpected integer but got ""t10psexpected integer but got "10p"g������ @sexpected integer but got "3.2"(R;R8(RR+R,R9R:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckIntegerParamfscOs�d|kr|jd�}nt}x*|D]"}|j|||d||�q+W|j||ddd�|j||ddd�dS(NR-R<R4s)expected floating-point number but got ""tspams-expected floating-point number but got "spam"(tpopRR/R8(RR+R,R9R:R-R((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckFloatParamos cCs�x6tddddfD]}|j|||dd�qWx6tdddd fD]}|j|||dd�qOW|j||d dd�|j||d dd�dS(NitfalsetnotoffR ittruetyestonR<R4s!expected boolean value but got ""R?s%expected boolean value but got "spam"(tFalseR/tTrueR8(RR+R,R((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckBooleanParam{scKsN|j||ddddddddd d |�|j||ddd �dS(Ns#ff0000s#00ff00s#0000ffs#123456tredtgreentbluetwhitetblacktgreyR?R4sunknown color name "spam"(R;R8(RR+R,tallow_emptyR:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckColorParam�scKs^|j||dddd|�tdkrA|j||d�n|j||dd d �dS(NtarrowtwatchtcrossR<iitnoneR?R4sbad cursor spec "spam"(ii(R;RR/R8(RR+R,R:((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckCursorParam�s cCs;d�}|||<|j||�|j||d�dS(NcWsdS(N((targs((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcommand�sR<(t assertTrueR;(RR+R,RY((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckCommandParam�s cOs�d|kr|jd�}nd}|j||||�|dkr�d|dj|d �t|�dkrtdnd|df}|j||ddd|�d |}n|j||d d|�dS(NR4s %s "{}": must be %s%s or %ss, i����it,R<t ambiguoustbadR?(R@R'R;RR*R8(RR+R,R9R:R4terrmsg2((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckEnumParam�s c Os!d|kr|jd�}nd}|dkr<|j}nd|krZ|jd�}nt}x||D]t}t}|} t|t�r�| r�| tk r�t|�|j}t } q�n|j |||d|d| |�qgW|j||dddd|�|j||dddd|�dS( NR-R5R t6xR4sbad screen distance "6x"R?sbad screen distance "spam"(R@R't_conv_pixelsRIR$RRRR R R/R8( RR+R,R9R:R-R5RR tconv1((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckPixelsParam�s* c CsZ|j||dddddd�d}tdkr=d}n|j||d d|�dS( NtflattgroovetraisedtridgetsolidtsunkensHbad relief "spam": must be flat, groove, raised, ridge, solid, or sunkeniiR?R4(ii(R;RR'R8(RR+R,R4((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckReliefParam�s cCs[tjd|jdd�}|j|||dt�|j||ddd�d||<dS( NtmasterR,timage1R-R?R4simage "spam" doesn't existR<(R%t PhotoImageRR/RR8(RR+R,timage((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckImageParam�s cCs|j|||dt�dS(NR-(R/R(RR+R,tvar((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytcheckVariableParam�scCs�|j|�|j|t�t|�dkrF|jd|f�nx5|D]-}t|t�sM|jd|f�PqMqMWdS(NisInvalid bounding box: %r(tassertIsNotNonetassertIsInstanceRR*tfailRR(Rtbboxtitem((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytassertIsBoundingBox�s cCs|j�}|j�}t|t�sL|jt|�t|j���nx|D]}||qSWtjj ridd6dd6dd6dd6d d 6}t |�}t |j�}x_t||�D]J}||ko�|||ko�|||ks�d|jj |fGHq�q�WndS(Ntborderwidthtbdt backgroundtbgt foregroundtfgtinvalidcommandtinvcmdtvalidatecommandtvcmds%s.OPTIONS doesn't contain "%s"(tcreatetkeysRRRtsortedR)ttestttest_supporttverbosetsettOPTIONSt __class__t__name__(RR+R�tktaliasesR ((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_keys�s*% N(!R�t __module__tstaticmethodtpixels_roundRbR't_conv_pad_pixelsRHRtpropertyR Rtobjectt__eq__R#R$R/RIR8R;R>RARJRRRWR[R`RdRkRpRrRxR�(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyRs0 tStandardOptionsTestsc*BseZdbZd*�Zd+�Zd,�Zd-�Zd.�Zd/�Zd0�Z d1�Z d2�Zd3�Zd4�Z d5�Zd6�Zd7�Zd8�Zd9�Zejejd:kd;�d<��Zd=�Zd>�Zd?�Zd@�ZdA�ZdB�ZdC�ZdD�ZdE�Z dF�Z!dG�Z"dH�Z#dI�Z$dJ�Z%dK�Z&dL�Z'dM�Z(dN�Z)dO�Z*dP�Z+dQ�Z,dR�Z-dS�Z.dT�Z/dU�Z0dV�Z1dW�Z2dX�Z3dY�Z4dZ�Z5d[�Z6d\�Z7e8d]d^�d_��Z9e8d]d^�d`��Z:da�Z;RS(ctactivebackgroundtactiveborderwidthtactiveforegroundtanchorR{tbitmapRytcompoundtcursortdisabledforegroundtexportselectiontfontR}thighlightbackgroundthighlightcolorthighlightthicknessRotinsertbackgroundtinsertborderwidtht insertofftimetinsertontimetinsertwidthtjumptjustifytorienttpadxtpadytrelieftrepeatdelaytrepeatintervaltselectbackgroundtselectborderwidthtselectforegroundtsetgridt takefocusttextttextvariablettroughcolort underlinet wraplengthtxscrollcommandtyscrollcommandcCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activebackground sc Cs2|j�}|j|ddddddd�dS(NR�ig�������?g333333@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeborderwidthscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeforegroundscCs;|j�}|j|ddddddddd d �dS(NR�tntnetetsetstswtwtnwtcenter(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_anchorscCsB|j�}|j|d�d|jkr>|j|d�ndS(NR{R|(R�RRR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_backgroundscCs�|j�}|j|dd�|j|dd�tjjddd�}|j|dd|�d|jjjd d �ko�d|jj�ks�|j |ddd d�ndS(NR�t questheadtgray50s python.xbmtsubdirt imghdrdatat@taquaRtwindowingsystemtAppKitR?R4sbitmap "spam" not defined( R�R/R�R�tfindfileRRRtwinfo_serverR8(RR+tfilename((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_bitmap%sc Csf|j�}|j|ddddddd�d|jkrb|j|ddddddd�ndS( NRyig�������?g������@ii����R=Rz(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_borderwidth2s c Cs2|j�}|j|ddddddd�dS(NR�tbottomR�tleftRVtrightttop(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_compound9scCs |j�}|j|d�dS(NR�(R�RW(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_cursor>scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_disabledforegroundBscCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_exportselectionFscCs<|j�}|j|dd�|j|dddd�dS(NR�s3-Adobe-Helvetica-Medium-R-Normal--*-120-*-*-*-*-*-*R<R4sfont "" doesn't exist(R�R/R8(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_fontJs cCsB|j�}|j|d�d|jkr>|j|d�ndS(NR}R~(R�RRR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_foregroundQscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightbackgroundWscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightcolor[scCsQ|j�}|j|dddddd�|j|ddddd |j�dS( NR�ig�������?g������@iR=i����R R-(R�RdR/Rb(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightthickness_s tdarwins"crashes with Cocoa Tk (issue19733)cCs |j�}|j|d�dS(NRo(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_imagefscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertbackgroundlsc Cs2|j�}|j|ddddddd�dS(NR�ig�������?g������@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertborderwidthpscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertofftimeuscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertontimeyscCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertwidth}scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_jump�scCsH|j�}|j|dddddd�|j|dddd�dS( NR�R�R�R�R4s6bad justification "{}": must be left, right, or centerR<s:ambiguous justification "": must be left, right, or center(R�R`R8(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_justify�s cCsC|j�}|jt|d�|j�|j|ddd�dS(NR�t horizontaltvertical(R�RRtdefault_orientR`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_orient�sc Cs8|j�}|j|ddddddd|j�dS(NR�ig������@gffffff@i����t12mR-(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_padx�sc Cs8|j�}|j|ddddddd|j�dS(NR�ig������@gffffff@i����R�R-(R�RdR�(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_pady�scCs |j�}|j|d�dS(NR�(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_relief�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatdelay�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatinterval�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectbackground�scCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectborderwidth�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectforeground�scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_setgrid�scCs)|j�}|j|dddd�dS(Ntstatetactivetdisabledtnormal(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_state�scCs)|j�}|j|dddd�dS(NR�t0t1R<(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_takefocus�scCs&|j�}|j|ddd�dS(NR�R<s any string(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_text�scCs5|j�}tj|j�}|j|d|�dS(NR�(R�R%t StringVarRRr(RR+Rq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_textvariable�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_troughcolor�scCs)|j�}|j|dddd�dS(NR�iii (R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_underline�scCs#|j�}|j|dd�dS(NR�id(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_wraplength�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_xscrollcommand�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_yscrollcommand�scCs |j�}|j|d�dS(NRY(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_command�scCs |j�}|j|d�dS(Ntindicatoron(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_indicatoron�scCs |j�}|j|d�dS(Nt offrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_offrelief�scCs |j�}|j|d�dS(Nt overrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_overrelief�scCs |j�}|j|d�dS(Ntselectcolor(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectcolor�scCs |j�}|j|d�dS(Ntselectimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectimage�siicCs |j�}|j|d�dS(Nt tristateimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristateimage�scCs#|j�}|j|dd�dS(Nt tristatevaluet unknowable(R�R/(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristatevalue�scCs5|j�}tj|j�}|j|d|�dS(Ntvariable(R�R%t DoubleVarRRr(RR+Rq((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_variables(*R�R�R�R�R{R�RyR�R�R�R�R�R}R�R�R�RoR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(<R�R�tSTANDARD_OPTIONSR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tunittesttskipIftsystplatformR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RRRRRR R RRR RRRRRRRRR(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR��s� tIntegerSizeTestscBseZd�Zd�ZRS(cCs)|j�}|j|dddd�dS(Ntheightidi����i(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_height scCs)|j�}|j|dddd�dS(Ntwidthi�in���i(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt test_width s(R�R�R'R)(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR%s tPixelSizeTestscBseZd�Zd�ZRS(c Cs2|j�}|j|ddddddd�dS(NR&idg�����LY@gfffff�Y@i����it3c(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR'sc Cs2|j�}|j|ddddddd�dS(NR(i�gfffff6y@g�����Iy@in���it5i(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR)s(R�R�R'R)(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR*s cs�fd�}|S(Ncs�x��jD]�}d|}t�|�s xk�D]5}t||�r0t�|t||�j�Pq0q0W|�fd�}||_t�||�q q W�S(Nttest_cs1|j�}||td|�jf��dS(NsOption "%s" is not tested in %s(R�tAssertionErrorR�(RtoptionR+(tcls(s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyR�)s(R�thasattrtsetattrtgetattrtim_funcR�(R0R/t methodnametsource_classR�(tsource_classes(R0s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt decorators ((R7R8((R7s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytadd_standard_optionsscCs4tjjr0tj�}dG|jdd�GHndS(Nspatchlevel =tinfot patchlevel(R�R�R�R%tTclR(ttcl((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pytsetUpModule3s(R!R#tTkinterR%tttkRttest_ttk.supportRRRRRRttest.test_supportR�RHtnoconvtnoconv_methRR�R R�RR�R$RR�R%R*R9R>(((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt<module>s*. �� tkCommonDialog.py000064400000002612151703463030010030 0ustar00# base class for tk common dialogues # # this module provides a base class for accessing the common # dialogues available in Tk 4.2 and newer. use tkFileDialog, # tkColorChooser, and tkMessageBox to access the individual # dialogs. # # written by Fredrik Lundh, May 1997 # from Tkinter import * class Dialog: command = None def __init__(self, master=None, **options): # FIXME: should this be placed on the module level instead? if TkVersion < 4.2: raise TclError, "this module requires Tk 4.2 or newer" self.master = master self.options = options if not master and options.get('parent'): self.master = options['parent'] def _fixoptions(self): pass # hook def _fixresult(self, widget, result): return result # hook def show(self, **options): # update instance options for k, v in options.items(): self.options[k] = v self._fixoptions() # we need a dummy widget to properly process the options # (at least as long as we use Tkinter 1.63) w = Frame(self.master) try: s = w.tk.call(self.command, *w._options(self.options)) s = self._fixresult(w, s) finally: try: # get rid of the widget w.destroy() except: pass return s tkCommonDialog.pyc000064400000002754151703463030010202 0ustar00� zfc@s!ddlTddd��YZdS(i����(t*tDialogcBs5eZdZdd�Zd�Zd�Zd�ZRS(cKsTtdkrtd�n||_||_|rP|jd�rP|d|_ndS(Ng������@s$this module requires Tk 4.2 or newertparent(t TkVersiontTclErrortmastertoptionstget(tselfRR((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt__init__s cCsdS(N((R((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt_fixoptionsscCs|S(N((Rtwidgettresult((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt _fixresultscKs�x'|j�D]\}}||j|<q W|j�t|j�}z:|jj|j|j|j��}|j ||�}Wdy|j �WnnXX|S(N(titemsRR tFrameRttktcalltcommandt_optionsR tdestroy(RRtktvtwts((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pytshow"s $N(t__name__t __module__tNoneRR R R R(((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyR s N((tTkinterR(((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt<module>s tkCommonDialog.pyo000064400000002754151703463030010216 0ustar00� zfc@s!ddlTddd��YZdS(i����(t*tDialogcBs5eZdZdd�Zd�Zd�Zd�ZRS(cKsTtdkrtd�n||_||_|rP|jd�rP|d|_ndS(Ng������@s$this module requires Tk 4.2 or newertparent(t TkVersiontTclErrortmastertoptionstget(tselfRR((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt__init__s cCsdS(N((R((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt_fixoptionsscCs|S(N((Rtwidgettresult((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt _fixresultscKs�x'|j�D]\}}||j|<q W|j�t|j�}z:|jj|j|j|j��}|j ||�}Wdy|j �WnnXX|S(N(titemsRR tFrameRttktcalltcommandt_optionsR tdestroy(RRtktvtwts((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pytshow"s $N(t__name__t __module__tNoneRR R R R(((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyR s N((tTkinterR(((s-/usr/lib64/python2.7/lib-tk/tkCommonDialog.pyt<module>s tkFileDialog.py000064400000013137151703463030007463 0ustar00# # Instant Python # $Id: tkFileDialog.py 36560 2004-07-18 06:16:08Z tim_one $ # # tk common file dialogues # # this module provides interfaces to the native file dialogues # available in Tk 4.2 and newer, and the directory dialogue available # in Tk 8.3 and newer. # # written by Fredrik Lundh, May 1997. # # # options (all have default values): # # - defaultextension: added to filename if not explicitly given # # - filetypes: sequence of (label, pattern) tuples. the same pattern # may occur with several patterns. use "*" as pattern to indicate # all files. # # - initialdir: initial directory. preserved by dialog instance. # # - initialfile: initial file (ignored by the open dialog). preserved # by dialog instance. # # - parent: which window to place the dialog on top of # # - title: dialog title # # - multiple: if true user may select more than one file # # options for the directory chooser: # # - initialdir, parent, title: see above # # - mustexist: if true, user must pick an existing directory # # from tkCommonDialog import Dialog class _Dialog(Dialog): def _fixoptions(self): try: # make sure "filetypes" is a tuple self.options["filetypes"] = tuple(self.options["filetypes"]) except KeyError: pass def _fixresult(self, widget, result): if result: # keep directory and filename until next time import os # convert Tcl path objects to strings try: result = result.string except AttributeError: # it already is a string pass path, file = os.path.split(result) self.options["initialdir"] = path self.options["initialfile"] = file self.filename = result # compatibility return result # # file dialogs class Open(_Dialog): "Ask for a filename to open" command = "tk_getOpenFile" def _fixresult(self, widget, result): if isinstance(result, tuple): # multiple results: result = tuple([getattr(r, "string", r) for r in result]) if result: import os path, file = os.path.split(result[0]) self.options["initialdir"] = path # don't set initialfile or filename, as we have multiple of these return result if not widget.tk.wantobjects() and "multiple" in self.options: # Need to split result explicitly return self._fixresult(widget, widget.tk.splitlist(result)) return _Dialog._fixresult(self, widget, result) class SaveAs(_Dialog): "Ask for a filename to save as" command = "tk_getSaveFile" # the directory dialog has its own _fix routines. class Directory(Dialog): "Ask for a directory" command = "tk_chooseDirectory" def _fixresult(self, widget, result): if result: # convert Tcl path objects to strings try: result = result.string except AttributeError: # it already is a string pass # keep directory until next time self.options["initialdir"] = result self.directory = result # compatibility return result # # convenience stuff def askopenfilename(**options): "Ask for a filename to open" return Open(**options).show() def asksaveasfilename(**options): "Ask for a filename to save as" return SaveAs(**options).show() def askopenfilenames(**options): """Ask for multiple filenames to open Returns a list of filenames or empty list if cancel button selected """ options["multiple"]=1 return Open(**options).show() # FIXME: are the following perhaps a bit too convenient? def askopenfile(mode = "r", **options): "Ask for a filename to open, and returned the opened file" filename = Open(**options).show() if filename: return open(filename, mode) return None def askopenfiles(mode = "r", **options): """Ask for multiple filenames and return the open file objects returns a list of open file objects or an empty list if cancel selected """ files = askopenfilenames(**options) if files: ofiles=[] for filename in files: ofiles.append(open(filename, mode)) files=ofiles return files def asksaveasfile(mode = "w", **options): "Ask for a filename to save as, and returned the opened file" filename = SaveAs(**options).show() if filename: return open(filename, mode) return None def askdirectory (**options): "Ask for a directory, and return the file name" return Directory(**options).show() # -------------------------------------------------------------------- # test stuff if __name__ == "__main__": # Since the file name may contain non-ASCII characters, we need # to find an encoding that likely supports the file name, and # displays correctly on the terminal. # Start off with UTF-8 enc = "utf-8" import sys # See whether CODESET is defined try: import locale locale.setlocale(locale.LC_ALL,'') enc = locale.nl_langinfo(locale.CODESET) except (ImportError, AttributeError): pass # dialog for openening files openfilename=askopenfilename(filetypes=[("all files", "*")]) try: fp=open(openfilename,"r") fp.close() except: print "Could not open File: " print sys.exc_info()[1] print "open", openfilename.encode(enc) # dialog for saving files saveasfilename=asksaveasfilename() print "saveas", saveasfilename.encode(enc) tkFileDialog.pyc000064400000012051151703463030007620 0ustar00� zfc@s�ddlmZdefd��YZdefd��YZdefd��YZdefd ��YZd �Zd�Zd�Zd d�Z d d�Z dd�Zd�Ze dkr�dZddlZy5ddlZejejd�ejej�ZWneefk rnXeddg�Zyeed �Zej�WndGHej�dGHnXdGeje�GHe�ZdGeje�GHndS(i����(tDialogt_DialogcBseZd�Zd�ZRS(cCs6yt|jd�|jd<Wntk r1nXdS(Nt filetypes(ttupletoptionstKeyError(tself((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt_fixoptions/s cCsu|rhddl}y |j}Wntk r2nX|jj|�\}}||jd<||jd<n||_|S(Ni����t initialdirtinitialfile(toststringtAttributeErrortpathtsplitRtfilename(RtwidgettresultR R tfile((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt _fixresult6s (t__name__t __module__RR(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR-s tOpencBseZdZdZd�ZRS(sAsk for a filename to openttk_getOpenFilecCs�t|t�r|tg|D]}t|d|�^q�}|rxddl}|jj|d�\}}||jd<n|S|jj�r�d|jkr�|j ||jj |��Stj |||�S(NRi����iRtmultiple(t isinstanceRtgetattrR R RRttktwantobjectsRt splitlistR(RRRtrR R R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyROs+(RRt__doc__tcommandR(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyRJstSaveAscBseZdZdZRS(sAsk for a filename to save asttk_getSaveFile(RRRR (((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR!^st DirectorycBseZdZdZd�ZRS(sAsk for a directoryttk_chooseDirectorycCsD|r7y |j}Wntk r&nX||jd<n||_|S(NR(RRRt directory(RRR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyRjs (RRRR R(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR#escKst|�j�S(sAsk for a filename to open(Rtshow(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfilenamezscKst|�j�S(sAsk for a filename to save as(R!R&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytasksaveasfilenamescKsd|d<t|�j�S(stAsk for multiple filenames to open Returns a list of filenames or empty list if cancel button selected iR(RR&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfilenames�s RcKs)t|�j�}|r%t||�SdS(s8Ask for a filename to open, and returned the opened fileN(RR&topentNone(tmodeRR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfile�s cKsLt|�}|rHg}x$|D]}|jt||��qW|}n|S(s�Ask for multiple filenames and return the open file objects returns a list of open file objects or an empty list if cancel selected (R)tappendR*(R,RtfilestofilesR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfiles�s twcKs)t|�j�}|r%t||�SdS(s;Ask for a filename to save as, and returned the opened fileN(R!R&R*R+(R,RR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt asksaveasfile�s cKst|�j�S(s-Ask for a directory, and return the file name(R#R&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskdirectory�st__main__sutf-8NtRs all filest*sCould not open File: iR*tsaveas(s all filesR7(ttkCommonDialogRRRR!R#R'R(R)R-R1R3R4Rtenctsystlocalet setlocaletLC_ALLtnl_langinfotCODESETtImportErrorRtopenfilenameR*tfptclosetexc_infotencodetsaveasfilename(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt<module>+s< tkFileDialog.pyo000064400000012051151703463030007634 0ustar00� zfc@s�ddlmZdefd��YZdefd��YZdefd��YZdefd ��YZd �Zd�Zd�Zd d�Z d d�Z dd�Zd�Ze dkr�dZddlZy5ddlZejejd�ejej�ZWneefk rnXeddg�Zyeed �Zej�WndGHej�dGHnXdGeje�GHe�ZdGeje�GHndS(i����(tDialogt_DialogcBseZd�Zd�ZRS(cCs6yt|jd�|jd<Wntk r1nXdS(Nt filetypes(ttupletoptionstKeyError(tself((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt_fixoptions/s cCsu|rhddl}y |j}Wntk r2nX|jj|�\}}||jd<||jd<n||_|S(Ni����t initialdirtinitialfile(toststringtAttributeErrortpathtsplitRtfilename(RtwidgettresultR R tfile((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt _fixresult6s (t__name__t __module__RR(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR-s tOpencBseZdZdZd�ZRS(sAsk for a filename to openttk_getOpenFilecCs�t|t�r|tg|D]}t|d|�^q�}|rxddl}|jj|d�\}}||jd<n|S|jj�r�d|jkr�|j ||jj |��Stj |||�S(NRi����iRtmultiple(t isinstanceRtgetattrR R RRttktwantobjectsRt splitlistR(RRRtrR R R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyROs+(RRt__doc__tcommandR(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyRJstSaveAscBseZdZdZRS(sAsk for a filename to save asttk_getSaveFile(RRRR (((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR!^st DirectorycBseZdZdZd�ZRS(sAsk for a directoryttk_chooseDirectorycCsD|r7y |j}Wntk r&nX||jd<n||_|S(NR(RRRt directory(RRR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyRjs (RRRR R(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyR#escKst|�j�S(sAsk for a filename to open(Rtshow(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfilenamezscKst|�j�S(sAsk for a filename to save as(R!R&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytasksaveasfilenamescKsd|d<t|�j�S(stAsk for multiple filenames to open Returns a list of filenames or empty list if cancel button selected iR(RR&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfilenames�s RcKs)t|�j�}|r%t||�SdS(s8Ask for a filename to open, and returned the opened fileN(RR&topentNone(tmodeRR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfile�s cKsLt|�}|rHg}x$|D]}|jt||��qW|}n|S(s�Ask for multiple filenames and return the open file objects returns a list of open file objects or an empty list if cancel selected (R)tappendR*(R,RtfilestofilesR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskopenfiles�s twcKs)t|�j�}|r%t||�SdS(s;Ask for a filename to save as, and returned the opened fileN(R!R&R*R+(R,RR((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt asksaveasfile�s cKst|�j�S(s-Ask for a directory, and return the file name(R#R&(R((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pytaskdirectory�st__main__sutf-8NtRs all filest*sCould not open File: iR*tsaveas(s all filesR7(ttkCommonDialogRRRR!R#R'R(R)R-R1R3R4Rtenctsystlocalet setlocaletLC_ALLtnl_langinfotCODESETtImportErrorRtopenfilenameR*tfptclosetexc_infotencodetsaveasfilename(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt<module>+s< tkFont.py000064400000014022151703463030006364 0ustar00# Tkinter font wrapper # # written by Fredrik Lundh, February 1998 # # FIXME: should add 'displayof' option where relevant (actual, families, # measure, and metrics) # __version__ = "0.9" import Tkinter # weight/slant NORMAL = "normal" ROMAN = "roman" BOLD = "bold" ITALIC = "italic" def nametofont(name): """Given the name of a tk named font, returns a Font representation. """ return Font(name=name, exists=True) class Font: """Represents a named font. Constructor options are: font -- font specifier (name, system font, or (family, size, style)-tuple) name -- name to use for this font configuration (defaults to a unique name) exists -- does a named font by this name already exist? Creates a new named font if False, points to the existing font if True. Raises _Tkinter.TclError if the assertion is false. the following are ignored if font is specified: family -- font 'family', e.g. Courier, Times, Helvetica size -- font size in points weight -- font thickness: NORMAL, BOLD slant -- font slant: ROMAN, ITALIC underline -- font underlining: false (0), true (1) overstrike -- font strikeout: false (0), true (1) """ def _set(self, kw): options = [] for k, v in kw.items(): if not isinstance(v, basestring): v = str(v) options.append("-"+k) options.append(v) return tuple(options) def _get(self, args): options = [] for k in args: options.append("-"+k) return tuple(options) def _mkdict(self, args): options = {} for i in range(0, len(args), 2): options[args[i][1:]] = args[i+1] return options def __init__(self, root=None, font=None, name=None, exists=False, **options): if not root: root = Tkinter._default_root tk = getattr(root, 'tk', root) if font: # get actual settings corresponding to the given font font = tk.splitlist(tk.call("font", "actual", font)) else: font = self._set(options) if not name: name = "font" + str(id(self)) self.name = name if exists: self.delete_font = False # confirm font exists if self.name not in tk.splitlist(tk.call("font", "names")): raise Tkinter._tkinter.TclError, "named font %s does not already exist" % (self.name,) # if font config info supplied, apply it if font: tk.call("font", "configure", self.name, *font) else: # create new font (raises TclError if the font exists) tk.call("font", "create", self.name, *font) self.delete_font = True self._tk = tk self._split = tk.splitlist self._call = tk.call def __str__(self): return self.name def __eq__(self, other): return isinstance(other, Font) and self.name == other.name def __getitem__(self, key): return self.cget(key) def __setitem__(self, key, value): self.configure(**{key: value}) def __del__(self): try: if self.delete_font: self._call("font", "delete", self.name) except (KeyboardInterrupt, SystemExit): raise except Exception: pass def copy(self): "Return a distinct copy of the current font" return Font(self._tk, **self.actual()) def actual(self, option=None): "Return actual font attributes" if option: return self._call("font", "actual", self.name, "-"+option) else: return self._mkdict( self._split(self._call("font", "actual", self.name)) ) def cget(self, option): "Get font attribute" return self._call("font", "config", self.name, "-"+option) def config(self, **options): "Modify font attributes" if options: self._call("font", "config", self.name, *self._set(options)) else: return self._mkdict( self._split(self._call("font", "config", self.name)) ) configure = config def measure(self, text): "Return text width" return int(self._call("font", "measure", self.name, text)) def metrics(self, *options): """Return font metrics. For best performance, create a dummy widget using this font before calling this method.""" if options: return int( self._call("font", "metrics", self.name, self._get(options)) ) else: res = self._split(self._call("font", "metrics", self.name)) options = {} for i in range(0, len(res), 2): options[res[i][1:]] = int(res[i+1]) return options def families(root=None): "Get font families (as a tuple)" if not root: root = Tkinter._default_root return root.tk.splitlist(root.tk.call("font", "families")) def names(root=None): "Get names of defined fonts (as a tuple)" if not root: root = Tkinter._default_root return root.tk.splitlist(root.tk.call("font", "names")) # -------------------------------------------------------------------- # test stuff if __name__ == "__main__": root = Tkinter.Tk() # create a font f = Font(family="times", size=30, weight=NORMAL) print f.actual() print f.actual("family") print f.actual("weight") print f.config() print f.cget("family") print f.cget("weight") print names() print f.measure("hello"), f.metrics("linespace") print f.metrics() f = Font(font=("Courier", 20, "bold")) print f.measure("hello"), f.metrics("linespace") w = Tkinter.Label(root, text="Hello, world", font=f) w.pack() w = Tkinter.Button(root, text="Quit!", command=root.destroy) w.pack() fb = Font(font=w["font"]).copy() fb.config(weight=BOLD) w.config(font=fb) Tkinter.mainloop() tkFont.pyc000064400000016004151703463030006531 0ustar00� zfc@s�dZddlZdZdZdZdZd�Zddd ��YZdd �Z dd�Z edkr�ej�Z ed dddde�Zej�GHejd �GHejd�GHej�GHejd �GHejd�GHe �GHejd�Gejd�GHej�GHedd�Zejd�Gejd�GHeje ddde�Zej�eje ddde j�Zej�eded�j�Zejde�ejde�ej�ndS(s0.9i����NtnormaltromantboldtitaliccCstd|dt�S(sFGiven the name of a tk named font, returns a Font representation. tnametexists(tFonttTrue(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt nametofontsRcBs�eZdZd�Zd�Zd�Zddded�Zd�Z d�Z d�Zd�Zd �Z d �Zdd�Zd�Zd �ZeZd�Zd�ZRS(s�Represents a named font. Constructor options are: font -- font specifier (name, system font, or (family, size, style)-tuple) name -- name to use for this font configuration (defaults to a unique name) exists -- does a named font by this name already exist? Creates a new named font if False, points to the existing font if True. Raises _Tkinter.TclError if the assertion is false. the following are ignored if font is specified: family -- font 'family', e.g. Courier, Times, Helvetica size -- font size in points weight -- font thickness: NORMAL, BOLD slant -- font slant: ROMAN, ITALIC underline -- font underlining: false (0), true (1) overstrike -- font strikeout: false (0), true (1) cCsig}xV|j�D]H\}}t|t�s=t|�}n|jd|�|j|�qWt|�S(Nt-(titemst isinstancet basestringtstrtappendttuple(tselftkwtoptionstktv((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_set/scCs2g}x|D]}|jd|�q Wt|�S(NR (RR(RtargsRR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_get8s cCsGi}x:tdt|�d�D] }||d|||d<qW|S(Niii(trangetlen(RRRti((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_mkdict>scKs=|stj}nt|d|�}|rK|j|jdd|��}n|j|�}|sydtt|��}n||_|r�t |_ |j|j|jdd��kr�tjjd|jf�n|r|jdd|j|�qn"|jdd|j|�t |_ ||_|j|_|j|_dS(Nttktfonttactualtnamess$named font %s does not already existt configuretcreate(tTkintert _default_roottgetattrt splitlisttcallRR tidRtFalsetdelete_fontt_tkintertTclErrorRt_tkt_splitt_call(RtrootRRRRR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__init__Ds(! $ cCs|jS(N(R(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__str__ascCst|t�o|j|jkS(N(RRR(Rtother((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__eq__dscCs |j|�S(N(tcget(Rtkey((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__getitem__gscCs|ji||6�dS(N(R (RR5tvalue((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__setitem__jscCsWy&|jr%|jdd|j�nWn*ttfk rB�ntk rRnXdS(NRtdelete(R)R.RtKeyboardInterruptt SystemExitt Exception(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__del__ms cCst|j|j��S(s*Return a distinct copy of the current font(RR,R(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pytcopyvscCsO|r#|jdd|jd|�S|j|j|jdd|j���SdS(sReturn actual font attributesRRR N(R.RRR-(Rtoption((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRzscCs|jdd|jd|�S(sGet font attributeRtconfigR (R.R(RR?((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR4�scKsW|r+|jdd|j|j|��n(|j|j|jdd|j���SdS(sModify font attributesRR@N(R.RRRR-(RR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR@�s cCst|jdd|j|��S(sReturn text widthRtmeasure(tintR.R(Rttext((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRA�scGs�|r.t|jdd|j|j|���S|j|jdd|j��}i}x@tdt|�d�D]&}t||d�|||d<qnW|SdS(s}Return font metrics. For best performance, create a dummy widget using this font before calling this method.RtmetricsiiiN(RBR.RRR-RR(RRtresR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRD�s%!$N(t__name__t __module__t__doc__RRRtNoneR(R0R1R3R6R8R=R>RR4R@R RARD(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRs" cCs1|stj}n|jj|jjdd��S(sGet font families (as a tuple)Rtfamilies(R"R#RR%R&(R/((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRJ�scCs1|stj}n|jj|jjdd��S(s'Get names of defined fonts (as a tuple)RR(R"R#RR%R&(R/((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR�st__main__tfamilyttimestsizeitweightthellot linespaceRtCourieriRCsHello, worldsQuit!tcommand((RRiR(t__version__R"tNORMALtROMANtBOLDtITALICRRRIRJRRFtTkR/tfRR@R4RARDtLabeltwtpacktButtontdestroyR>tfbtmainloop(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt<module> s> � tkFont.pyo000064400000016004151703463030006545 0ustar00� zfc@s�dZddlZdZdZdZdZd�Zddd ��YZdd �Z dd�Z edkr�ej�Z ed dddde�Zej�GHejd �GHejd�GHej�GHejd �GHejd�GHe �GHejd�Gejd�GHej�GHedd�Zejd�Gejd�GHeje ddde�Zej�eje ddde j�Zej�eded�j�Zejde�ejde�ej�ndS(s0.9i����NtnormaltromantboldtitaliccCstd|dt�S(sFGiven the name of a tk named font, returns a Font representation. tnametexists(tFonttTrue(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt nametofontsRcBs�eZdZd�Zd�Zd�Zddded�Zd�Z d�Z d�Zd�Zd �Z d �Zdd�Zd�Zd �ZeZd�Zd�ZRS(s�Represents a named font. Constructor options are: font -- font specifier (name, system font, or (family, size, style)-tuple) name -- name to use for this font configuration (defaults to a unique name) exists -- does a named font by this name already exist? Creates a new named font if False, points to the existing font if True. Raises _Tkinter.TclError if the assertion is false. the following are ignored if font is specified: family -- font 'family', e.g. Courier, Times, Helvetica size -- font size in points weight -- font thickness: NORMAL, BOLD slant -- font slant: ROMAN, ITALIC underline -- font underlining: false (0), true (1) overstrike -- font strikeout: false (0), true (1) cCsig}xV|j�D]H\}}t|t�s=t|�}n|jd|�|j|�qWt|�S(Nt-(titemst isinstancet basestringtstrtappendttuple(tselftkwtoptionstktv((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_set/scCs2g}x|D]}|jd|�q Wt|�S(NR (RR(RtargsRR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_get8s cCsGi}x:tdt|�d�D] }||d|||d<qW|S(Niii(trangetlen(RRRti((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt_mkdict>scKs=|stj}nt|d|�}|rK|j|jdd|��}n|j|�}|sydtt|��}n||_|r�t |_ |j|j|jdd��kr�tjjd|jf�n|r|jdd|j|�qn"|jdd|j|�t |_ ||_|j|_|j|_dS(Nttktfonttactualtnamess$named font %s does not already existt configuretcreate(tTkintert _default_roottgetattrt splitlisttcallRR tidRtFalsetdelete_fontt_tkintertTclErrorRt_tkt_splitt_call(RtrootRRRRR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__init__Ds(! $ cCs|jS(N(R(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__str__ascCst|t�o|j|jkS(N(RRR(Rtother((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__eq__dscCs |j|�S(N(tcget(Rtkey((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__getitem__gscCs|ji||6�dS(N(R (RR5tvalue((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__setitem__jscCsWy&|jr%|jdd|j�nWn*ttfk rB�ntk rRnXdS(NRtdelete(R)R.RtKeyboardInterruptt SystemExitt Exception(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt__del__ms cCst|j|j��S(s*Return a distinct copy of the current font(RR,R(R((s%/usr/lib64/python2.7/lib-tk/tkFont.pytcopyvscCsO|r#|jdd|jd|�S|j|j|jdd|j���SdS(sReturn actual font attributesRRR N(R.RRR-(Rtoption((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRzscCs|jdd|jd|�S(sGet font attributeRtconfigR (R.R(RR?((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR4�scKsW|r+|jdd|j|j|��n(|j|j|jdd|j���SdS(sModify font attributesRR@N(R.RRRR-(RR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR@�s cCst|jdd|j|��S(sReturn text widthRtmeasure(tintR.R(Rttext((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRA�scGs�|r.t|jdd|j|j|���S|j|jdd|j��}i}x@tdt|�d�D]&}t||d�|||d<qnW|SdS(s}Return font metrics. For best performance, create a dummy widget using this font before calling this method.RtmetricsiiiN(RBR.RRR-RR(RRtresR((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRD�s%!$N(t__name__t __module__t__doc__RRRtNoneR(R0R1R3R6R8R=R>RR4R@R RARD(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRs" cCs1|stj}n|jj|jjdd��S(sGet font families (as a tuple)Rtfamilies(R"R#RR%R&(R/((s%/usr/lib64/python2.7/lib-tk/tkFont.pyRJ�scCs1|stj}n|jj|jjdd��S(s'Get names of defined fonts (as a tuple)RR(R"R#RR%R&(R/((s%/usr/lib64/python2.7/lib-tk/tkFont.pyR�st__main__tfamilyttimestsizeitweightthellot linespaceRtCourieriRCsHello, worldsQuit!tcommand((RRiR(t__version__R"tNORMALtROMANtBOLDtITALICRRRIRJRRFtTkR/tfRR@R4RARDtLabeltwtpacktButtontdestroyR>tfbtmainloop(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt<module> s> � tkMessageBox.py000064400000007147151703463030007525 0ustar00# tk common message boxes # # this module provides an interface to the native message boxes # available in Tk 4.2 and newer. # # written by Fredrik Lundh, May 1997 # # # options (all have default values): # # - default: which button to make default (one of the reply codes) # # - icon: which icon to display (see below) # # - message: the message to display # # - parent: which window to place the dialog on top of # # - title: dialog title # # - type: dialog type; that is, which buttons to display (see below) # from tkCommonDialog import Dialog # # constants # icons ERROR = "error" INFO = "info" QUESTION = "question" WARNING = "warning" # types ABORTRETRYIGNORE = "abortretryignore" OK = "ok" OKCANCEL = "okcancel" RETRYCANCEL = "retrycancel" YESNO = "yesno" YESNOCANCEL = "yesnocancel" # replies ABORT = "abort" RETRY = "retry" IGNORE = "ignore" OK = "ok" CANCEL = "cancel" YES = "yes" NO = "no" # # message dialog class class Message(Dialog): "A message box" command = "tk_messageBox" # # convenience stuff # Rename _icon and _type options to allow overriding them in options def _show(title=None, message=None, _icon=None, _type=None, **options): if _icon and "icon" not in options: options["icon"] = _icon if _type and "type" not in options: options["type"] = _type if title: options["title"] = title if message: options["message"] = message res = Message(**options).show() # In some Tcl installations, yes/no is converted into a boolean. if isinstance(res, bool): if res: return YES return NO # In others we get a Tcl_Obj. return str(res) def showinfo(title=None, message=None, **options): "Show an info message" return _show(title, message, INFO, OK, **options) def showwarning(title=None, message=None, **options): "Show a warning message" return _show(title, message, WARNING, OK, **options) def showerror(title=None, message=None, **options): "Show an error message" return _show(title, message, ERROR, OK, **options) def askquestion(title=None, message=None, **options): "Ask a question" return _show(title, message, QUESTION, YESNO, **options) def askokcancel(title=None, message=None, **options): "Ask if operation should proceed; return true if the answer is ok" s = _show(title, message, QUESTION, OKCANCEL, **options) return s == OK def askyesno(title=None, message=None, **options): "Ask a question; return true if the answer is yes" s = _show(title, message, QUESTION, YESNO, **options) return s == YES def askyesnocancel(title=None, message=None, **options): "Ask a question; return true if the answer is yes, None if cancelled." s = _show(title, message, QUESTION, YESNOCANCEL, **options) # s might be a Tcl index object, so convert it to a string s = str(s) if s == CANCEL: return None return s == YES def askretrycancel(title=None, message=None, **options): "Ask if operation should be retried; return true if the answer is yes" s = _show(title, message, WARNING, RETRYCANCEL, **options) return s == RETRY # -------------------------------------------------------------------- # test stuff if __name__ == "__main__": print "info", showinfo("Spam", "Egg Information") print "warning", showwarning("Spam", "Egg Warning") print "error", showerror("Spam", "Egg Alert") print "question", askquestion("Spam", "Question?") print "proceed", askokcancel("Spam", "Proceed?") print "yes/no", askyesno("Spam", "Got it?") print "yes/no/cancel", askyesnocancel("Spam", "Want it?") print "try again", askretrycancel("Spam", "Try again?") tkMessageBox.pyo000064400000007466151703463030007710 0ustar00� zfc@s�ddlmZdZdZdZdZdZdZdZd Z d Z dZdZd Z dZdZdZdZdZdefd��YZd+d+d+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zedkr�dGedd�GHdGedd �GHdGedd!�GHdGedd"�GHd#Gedd$�GHd%Gedd&�GHd'Gedd(�GHd)Gedd*�GHnd+S(,i����(tDialogterrortinfotquestiontwarningtabortretryignoretoktokcanceltretrycanceltyesnotyesnocanceltaborttretrytignoretcanceltyestnotMessagecBseZdZdZRS(s A message boxt tk_messageBox(t__name__t __module__t__doc__tcommand(((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyR9scKs�|rd|kr||d<n|r>d|kr>||d<n|rQ||d<n|rd||d<nt|�j�}t|t�r�|r�tStSt|�S(Nticonttypettitletmessage(Rtshowt isinstancetbooltYEStNOtstr(RRt_icont_typetoptionstres((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt_showCs cKst||tt|�S(sShow an info message(R%tINFOtOK(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytshowinfoQscKst||tt|�S(sShow a warning message(R%tWARNINGR'(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytshowwarningUscKst||tt|�S(sShow an error message(R%tERRORR'(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt showerrorYscKst||tt|�S(sAsk a question(R%tQUESTIONtYESNO(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskquestion]scKs"t||tt|�}|tkS(s@Ask if operation should proceed; return true if the answer is ok(R%R-tOKCANCELR'(RRR#ts((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskokcancelascKs"t||tt|�}|tkS(s0Ask a question; return true if the answer is yes(R%R-R.R(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskyesnofscKs>t||tt|�}t|�}|tkr4dS|tkS(sDAsk a question; return true if the answer is yes, None if cancelled.N(R%R-tYESNOCANCELR tCANCELtNoneR(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskyesnocancelks cKs"t||tt|�}|tkS(sDAsk if operation should be retried; return true if the answer is yes(R%R)tRETRYCANCELtRETRY(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskretrycanceltst__main__tSpamsEgg InformationsEgg Warnings Egg Alerts Question?tproceedsProceed?syes/nosGot it?s yes/no/cancelsWant it?s try agains Try again?N(ttkCommonDialogRR+R&R-R)tABORTRETRYIGNORER'R0R8R.R4tABORTR9tIGNORER5RRRR6R%R(R*R,R/R2R3R7R:R(((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt<module>sH tkSimpleDialog.py000064400000017053151703463030010036 0ustar00# # An Introduction to Tkinter # tkSimpleDialog.py # # Copyright (c) 1997 by Fredrik Lundh # # fredrik@pythonware.com # http://www.pythonware.com # # -------------------------------------------------------------------- # dialog base class '''Dialog boxes This module handles dialog boxes. It contains the following public symbols: Dialog -- a base class for dialogs askinteger -- get an integer from the user askfloat -- get a float from the user askstring -- get a string from the user ''' from Tkinter import * class Dialog(Toplevel): '''Class to open dialogs. This class is intended as a base class for custom dialogs ''' def __init__(self, parent, title = None): '''Initialize a dialog. Arguments: parent -- a parent window (the application window) title -- the dialog title ''' Toplevel.__init__(self, parent) self.withdraw() # remain invisible for now # If the master is not viewable, don't # make the child transient, or else it # would be opened withdrawn if parent.winfo_viewable(): self.transient(parent) if title: self.title(title) self.parent = parent self.result = None body = Frame(self) self.initial_focus = self.body(body) body.pack(padx=5, pady=5) self.buttonbox() if not self.initial_focus: self.initial_focus = self self.protocol("WM_DELETE_WINDOW", self.cancel) if self.parent is not None: self.geometry("+%d+%d" % (parent.winfo_rootx()+50, parent.winfo_rooty()+50)) self.deiconify() # become visibile now self.initial_focus.focus_set() # wait for window to appear on screen before calling grab_set self.wait_visibility() self.grab_set() self.wait_window(self) def destroy(self): '''Destroy the window''' self.initial_focus = None Toplevel.destroy(self) # # construction hooks def body(self, master): '''create dialog body. return widget that should have initial focus. This method should be overridden, and is called by the __init__ method. ''' pass def buttonbox(self): '''add standard button box. override if you do not want the standard buttons ''' box = Frame(self) w = Button(box, text="OK", width=10, command=self.ok, default=ACTIVE) w.pack(side=LEFT, padx=5, pady=5) w = Button(box, text="Cancel", width=10, command=self.cancel) w.pack(side=LEFT, padx=5, pady=5) self.bind("<Return>", self.ok) self.bind("<Escape>", self.cancel) box.pack() # # standard button semantics def ok(self, event=None): if not self.validate(): self.initial_focus.focus_set() # put focus back return self.withdraw() self.update_idletasks() try: self.apply() finally: self.cancel() def cancel(self, event=None): # put focus back to the parent window if self.parent is not None: self.parent.focus_set() self.destroy() # # command hooks def validate(self): '''validate the data This method is called automatically to validate the data before the dialog is destroyed. By default, it always validates OK. ''' return 1 # override def apply(self): '''process the data This method is called automatically to process the data, *after* the dialog is destroyed. By default, it does nothing. ''' pass # override # -------------------------------------------------------------------- # convenience dialogues class _QueryDialog(Dialog): def __init__(self, title, prompt, initialvalue=None, minvalue = None, maxvalue = None, parent = None): if not parent: import Tkinter parent = Tkinter._default_root self.prompt = prompt self.minvalue = minvalue self.maxvalue = maxvalue self.initialvalue = initialvalue Dialog.__init__(self, parent, title) def destroy(self): self.entry = None Dialog.destroy(self) def body(self, master): w = Label(master, text=self.prompt, justify=LEFT) w.grid(row=0, padx=5, sticky=W) self.entry = Entry(master, name="entry") self.entry.grid(row=1, padx=5, sticky=W+E) if self.initialvalue is not None: self.entry.insert(0, self.initialvalue) self.entry.select_range(0, END) return self.entry def validate(self): import tkMessageBox try: result = self.getresult() except ValueError: tkMessageBox.showwarning( "Illegal value", self.errormessage + "\nPlease try again", parent = self ) return 0 if self.minvalue is not None and result < self.minvalue: tkMessageBox.showwarning( "Too small", "The allowed minimum value is %s. " "Please try again." % self.minvalue, parent = self ) return 0 if self.maxvalue is not None and result > self.maxvalue: tkMessageBox.showwarning( "Too large", "The allowed maximum value is %s. " "Please try again." % self.maxvalue, parent = self ) return 0 self.result = result return 1 class _QueryInteger(_QueryDialog): errormessage = "Not an integer." def getresult(self): return int(self.entry.get()) def askinteger(title, prompt, **kw): '''get an integer from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is an integer ''' d = _QueryInteger(title, prompt, **kw) return d.result class _QueryFloat(_QueryDialog): errormessage = "Not a floating point value." def getresult(self): return float(self.entry.get()) def askfloat(title, prompt, **kw): '''get a float from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a float ''' d = _QueryFloat(title, prompt, **kw) return d.result class _QueryString(_QueryDialog): def __init__(self, *args, **kw): if "show" in kw: self.__show = kw["show"] del kw["show"] else: self.__show = None _QueryDialog.__init__(self, *args, **kw) def body(self, master): entry = _QueryDialog.body(self, master) if self.__show is not None: entry.configure(show=self.__show) return entry def getresult(self): return self.entry.get() def askstring(title, prompt, **kw): '''get a string from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a string ''' d = _QueryString(title, prompt, **kw) return d.result if __name__ == "__main__": root = Tk() root.update() print askinteger("Spam", "Egg count", initialvalue=12*12) print askfloat("Spam", "Egg weight\n(in tons)", minvalue=1, maxvalue=100) print askstring("Spam", "Egg label") tkSimpleDialog.pyc000064400000021631151703463030010176 0ustar00� zfc@s�dZddlTdefd��YZdefd��YZdefd��YZd �Zd efd��YZd�Zd efd��YZ d�Z edkr�e�Z e j�edddd�GHedddddd�GHe dd�GHndS(s�Dialog boxes This module handles dialog boxes. It contains the following public symbols: Dialog -- a base class for dialogs askinteger -- get an integer from the user askfloat -- get a float from the user askstring -- get a string from the user i����(t*tDialogcBs_eZdZd d�Zd�Zd�Zd�Zd d�Zd d�Z d�Z d�ZRS( sZClass to open dialogs. This class is intended as a base class for custom dialogs cCs=tj||�|j�|j�r6|j|�n|rL|j|�n||_d|_t |�}|j |�|_|jdddd�|j �|js�||_n|jd|j�|jdk r|jd|j�d|j�df�n|j�|jj�|j�|j�|j|�dS(s�Initialize a dialog. Arguments: parent -- a parent window (the application window) title -- the dialog title tpadxitpadytWM_DELETE_WINDOWs+%d+%di2N(tToplevelt__init__twithdrawtwinfo_viewablet transientttitletparenttNonetresulttFrametbodyt initial_focustpackt buttonboxtprotocoltcanceltgeometrytwinfo_rootxtwinfo_rootyt deiconifyt focus_settwait_visibilitytgrab_settwait_window(tselfRR R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR%s. cCsd|_tj|�dS(sDestroy the windowN(RRRtdestroy(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRXs cCsdS(s�create dialog body. return widget that should have initial focus. This method should be overridden, and is called by the __init__ method. N((Rtmaster((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR`sc Cs�t|�}t|ddddd|jdt�}|jdtdd d d �t|ddddd|j�}|jdtdd d d �|jd|j�|jd |j�|j�dS(s[add standard button box. override if you do not want the standard buttons ttexttOKtwidthi tcommandtdefaulttsideRiRtCancels<Return>s<Escape>N(RtButtontoktACTIVERtLEFTRtbind(Rtboxtw((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRis'!cCsQ|j�s|jj�dS|j�|j�z|j�Wd|j�XdS(N(tvalidateRRRtupdate_idletaskstapplyR(Rtevent((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR(~s cCs-|jdk r|jj�n|j�dS(N(RRRR(RR1((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�scCsdS(s�validate the data This method is called automatically to validate the data before the dialog is destroyed. By default, it always validates OK. i((R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�scCsdS(s�process the data This method is called automatically to process the data, *after* the dialog is destroyed. By default, it does nothing. N((R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR0�sN(t__name__t __module__t__doc__RRRRRR(RR.R0(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs3 t_QueryDialogcBs8eZddddd�Zd�Zd�Zd�ZRS(cCsY|sddl}|j}n||_||_||_||_tj|||�dS(Ni����(tTkintert _default_roottprompttminvaluetmaxvaluetinitialvalueRR(RR R8R;R9R:RR6((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s cCsd|_tj|�dS(N(RtentryRR(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s cCs�t|d|jdt�}|jdddddt�t|dd �|_|jjdd dddtt�|jdk r�|jj d|j�|jjdt�n|jS(NR tjustifytrowiRitstickytnameR<i( tLabelR8R*tgridtWtEntryR<tER;Rtinserttselect_rangetEND(RRR-((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s#cCs�ddl}y|j�}Wn/tk rM|jd|jdd|�dSX|jdk r�||jkr�|jdd|jd|�dS|jdk r�||jkr�|jdd |jd|�dS||_d S(Ni����s Illegal values Please try againRis Too smalls2The allowed minimum value is %s. Please try again.s Too larges2The allowed maximum value is %s. Please try again.i( ttkMessageBoxt getresultt ValueErrortshowwarningterrormessageR9RR:R (RRIR ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�s2 N(R2R3RRRRR.(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR5�s t _QueryIntegercBseZdZd�ZRS(sNot an integer.cCst|jj��S(N(tintR<tget(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJ�s(R2R3RMRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRN�scKst|||�}|jS(s�get an integer from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is an integer (RNR (R R8tkwtd((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt askinteger�st_QueryFloatcBseZdZd�ZRS(sNot a floating point value.cCst|jj��S(N(tfloatR<RP(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJs(R2R3RMRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRT scKst|||�}|jS(s�get a float from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a float (RTR (R R8RQRR((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pytaskfloatst_QueryStringcBs#eZd�Zd�Zd�ZRS(cOsCd|kr#|d|_|d=n d|_tj|||�dS(Ntshow(t_QueryString__showRR5R(RtargsRQ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs cCs;tj||�}|jdk r7|jd|j�n|S(NRX(R5RRYRt configure(RRR<((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR%scCs |jj�S(N(R<RP(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJ+s(R2R3RRRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRWs cKst|||�}|jS(s�get a string from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a string (RWR (R R8RQRR((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt askstring.st__main__tSpams Egg countR;isEgg weight (in tons)R9iR:ids Egg labelNi�(R4R6RRR5RNRSRTRVRWR\R2tTktroottupdate(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt<module>s �J tkSimpleDialog.pyo000064400000021631151703463030010212 0ustar00� zfc@s�dZddlTdefd��YZdefd��YZdefd��YZd �Zd efd��YZd�Zd efd��YZ d�Z edkr�e�Z e j�edddd�GHedddddd�GHe dd�GHndS(s�Dialog boxes This module handles dialog boxes. It contains the following public symbols: Dialog -- a base class for dialogs askinteger -- get an integer from the user askfloat -- get a float from the user askstring -- get a string from the user i����(t*tDialogcBs_eZdZd d�Zd�Zd�Zd�Zd d�Zd d�Z d�Z d�ZRS( sZClass to open dialogs. This class is intended as a base class for custom dialogs cCs=tj||�|j�|j�r6|j|�n|rL|j|�n||_d|_t |�}|j |�|_|jdddd�|j �|js�||_n|jd|j�|jdk r|jd|j�d|j�df�n|j�|jj�|j�|j�|j|�dS(s�Initialize a dialog. Arguments: parent -- a parent window (the application window) title -- the dialog title tpadxitpadytWM_DELETE_WINDOWs+%d+%di2N(tToplevelt__init__twithdrawtwinfo_viewablet transientttitletparenttNonetresulttFrametbodyt initial_focustpackt buttonboxtprotocoltcanceltgeometrytwinfo_rootxtwinfo_rootyt deiconifyt focus_settwait_visibilitytgrab_settwait_window(tselfRR R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR%s. cCsd|_tj|�dS(sDestroy the windowN(RRRtdestroy(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRXs cCsdS(s�create dialog body. return widget that should have initial focus. This method should be overridden, and is called by the __init__ method. N((Rtmaster((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR`sc Cs�t|�}t|ddddd|jdt�}|jdtdd d d �t|ddddd|j�}|jdtdd d d �|jd|j�|jd |j�|j�dS(s[add standard button box. override if you do not want the standard buttons ttexttOKtwidthi tcommandtdefaulttsideRiRtCancels<Return>s<Escape>N(RtButtontoktACTIVERtLEFTRtbind(Rtboxtw((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRis'!cCsQ|j�s|jj�dS|j�|j�z|j�Wd|j�XdS(N(tvalidateRRRtupdate_idletaskstapplyR(Rtevent((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR(~s cCs-|jdk r|jj�n|j�dS(N(RRRR(RR1((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�scCsdS(s�validate the data This method is called automatically to validate the data before the dialog is destroyed. By default, it always validates OK. i((R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�scCsdS(s�process the data This method is called automatically to process the data, *after* the dialog is destroyed. By default, it does nothing. N((R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR0�sN(t__name__t __module__t__doc__RRRRRR(RR.R0(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs3 t_QueryDialogcBs8eZddddd�Zd�Zd�Zd�ZRS(cCsY|sddl}|j}n||_||_||_||_tj|||�dS(Ni����(tTkintert _default_roottprompttminvaluetmaxvaluetinitialvalueRR(RR R8R;R9R:RR6((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s cCsd|_tj|�dS(N(RtentryRR(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s cCs�t|d|jdt�}|jdddddt�t|dd �|_|jjdd dddtt�|jdk r�|jj d|j�|jjdt�n|jS(NR tjustifytrowiRitstickytnameR<i( tLabelR8R*tgridtWtEntryR<tER;Rtinserttselect_rangetEND(RRR-((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s#cCs�ddl}y|j�}Wn/tk rM|jd|jdd|�dSX|jdk r�||jkr�|jdd|jd|�dS|jdk r�||jkr�|jdd |jd|�dS||_d S(Ni����s Illegal values Please try againRis Too smalls2The allowed minimum value is %s. Please try again.s Too larges2The allowed maximum value is %s. Please try again.i( ttkMessageBoxt getresultt ValueErrortshowwarningterrormessageR9RR:R (RRIR ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�s2 N(R2R3RRRRR.(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR5�s t _QueryIntegercBseZdZd�ZRS(sNot an integer.cCst|jj��S(N(tintR<tget(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJ�s(R2R3RMRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRN�scKst|||�}|jS(s�get an integer from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is an integer (RNR (R R8tkwtd((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt askinteger�st_QueryFloatcBseZdZd�ZRS(sNot a floating point value.cCst|jj��S(N(tfloatR<RP(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJs(R2R3RMRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRT scKst|||�}|jS(s�get a float from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a float (RTR (R R8RQRR((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pytaskfloatst_QueryStringcBs#eZd�Zd�Zd�ZRS(cOsCd|kr#|d|_|d=n d|_tj|||�dS(Ntshow(t_QueryString__showRR5R(RtargsRQ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs cCs;tj||�}|jdk r7|jd|j�n|S(NRX(R5RRYRt configure(RRR<((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR%scCs |jj�S(N(R<RP(R((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRJ+s(R2R3RRRJ(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRWs cKst|||�}|jS(s�get a string from the user Arguments: title -- the dialog title prompt -- the label text **kw -- see SimpleDialog class Return value is a string (RWR (R R8RQRR((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt askstring.st__main__tSpams Egg countR;isEgg weight (in tons)R9iR:ids Egg labelNi�(R4R6RRR5RNRSRTRVRWR\R2tTktroottupdate(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt<module>s �J ttk.py000064400000155555151703463030005742 0ustar00"""Ttk wrapper. This module provides classes to allow using Tk themed widget set. Ttk is based on a revised and enhanced version of TIP #48 (http://tip.tcl.tk/48) specified style engine. Its basic idea is to separate, to the extent possible, the code implementing a widget's behavior from the code implementing its appearance. Widget class bindings are primarily responsible for maintaining the widget state and invoking callbacks, all aspects of the widgets appearance lies at Themes. """ __version__ = "0.3.1" __author__ = "Guilherme Polo <ggpolo@gmail.com>" __all__ = ["Button", "Checkbutton", "Combobox", "Entry", "Frame", "Label", "Labelframe", "LabelFrame", "Menubutton", "Notebook", "Panedwindow", "PanedWindow", "Progressbar", "Radiobutton", "Scale", "Scrollbar", "Separator", "Sizegrip", "Style", "Treeview", # Extensions "LabeledScale", "OptionMenu", # functions "tclobjs_to_py", "setup_master"] import Tkinter from Tkinter import _flatten, _join, _stringify, _splitdict # Verify if Tk is new enough to not need the Tile package _REQUIRE_TILE = True if Tkinter.TkVersion < 8.5 else False def _load_tile(master): if _REQUIRE_TILE: import os tilelib = os.environ.get('TILE_LIBRARY') if tilelib: # append custom tile path to the list of directories that # Tcl uses when attempting to resolve packages with the package # command master.tk.eval( 'global auto_path; ' 'lappend auto_path {%s}' % tilelib) master.tk.eval('package require tile') # TclError may be raised here master._tile_loaded = True def _format_optvalue(value, script=False): """Internal function.""" if script: # if caller passes a Tcl script to tk.call, all the values need to # be grouped into words (arguments to a command in Tcl dialect) value = _stringify(value) elif isinstance(value, (list, tuple)): value = _join(value) return value def _format_optdict(optdict, script=False, ignore=None): """Formats optdict to a tuple to pass it to tk.call. E.g. (script=False): {'foreground': 'blue', 'padding': [1, 2, 3, 4]} returns: ('-foreground', 'blue', '-padding', '1 2 3 4')""" opts = [] for opt, value in optdict.iteritems(): if not ignore or opt not in ignore: opts.append("-%s" % opt) if value is not None: opts.append(_format_optvalue(value, script)) return _flatten(opts) def _mapdict_values(items): # each value in mapdict is expected to be a sequence, where each item # is another sequence containing a state (or several) and a value # E.g. (script=False): # [('active', 'selected', 'grey'), ('focus', [1, 2, 3, 4])] # returns: # ['active selected', 'grey', 'focus', [1, 2, 3, 4]] opt_val = [] for item in items: state = item[:-1] val = item[-1] # hacks for bakward compatibility state[0] # raise IndexError if empty if len(state) == 1: # if it is empty (something that evaluates to False), then # format it to Tcl code to denote the "normal" state state = state[0] or '' else: # group multiple states state = ' '.join(state) # raise TypeError if not str opt_val.append(state) if val is not None: opt_val.append(val) return opt_val def _format_mapdict(mapdict, script=False): """Formats mapdict to pass it to tk.call. E.g. (script=False): {'expand': [('active', 'selected', 'grey'), ('focus', [1, 2, 3, 4])]} returns: ('-expand', '{active selected} grey focus {1, 2, 3, 4}')""" opts = [] for opt, value in mapdict.iteritems(): opts.extend(("-%s" % opt, _format_optvalue(_mapdict_values(value), script))) return _flatten(opts) def _format_elemcreate(etype, script=False, *args, **kw): """Formats args and kw according to the given element factory etype.""" spec = None opts = () if etype in ("image", "vsapi"): if etype == "image": # define an element based on an image # first arg should be the default image name iname = args[0] # next args, if any, are statespec/value pairs which is almost # a mapdict, but we just need the value imagespec = _join(_mapdict_values(args[1:])) spec = "%s %s" % (iname, imagespec) else: # define an element whose visual appearance is drawn using the # Microsoft Visual Styles API which is responsible for the # themed styles on Windows XP and Vista. # Availability: Tk 8.6, Windows XP and Vista. class_name, part_id = args[:2] statemap = _join(_mapdict_values(args[2:])) spec = "%s %s %s" % (class_name, part_id, statemap) opts = _format_optdict(kw, script) elif etype == "from": # clone an element # it expects a themename and optionally an element to clone from, # otherwise it will clone {} (empty element) spec = args[0] # theme name if len(args) > 1: # elementfrom specified opts = (_format_optvalue(args[1], script),) if script: spec = '{%s}' % spec opts = ' '.join(opts) return spec, opts def _format_layoutlist(layout, indent=0, indent_size=2): """Formats a layout list so we can pass the result to ttk::style layout and ttk::style settings. Note that the layout doesn't have to be a list necessarily. E.g.: [("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ("Menubutton.indicator", {"side": "right"}) ] returns: Menubutton.background Menubutton.button -children { Menubutton.focus -children { Menubutton.padding -children { Menubutton.label -side left -expand 1 } } } Menubutton.indicator -side right""" script = [] for layout_elem in layout: elem, opts = layout_elem opts = opts or {} fopts = ' '.join(_format_optdict(opts, True, ("children",))) head = "%s%s%s" % (' ' * indent, elem, (" %s" % fopts) if fopts else '') if "children" in opts: script.append(head + " -children {") indent += indent_size newscript, indent = _format_layoutlist(opts['children'], indent, indent_size) script.append(newscript) indent -= indent_size script.append('%s}' % (' ' * indent)) else: script.append(head) return '\n'.join(script), indent def _script_from_settings(settings): """Returns an appropriate script, based on settings, according to theme_settings definition to be used by theme_settings and theme_create.""" script = [] # a script will be generated according to settings passed, which # will then be evaluated by Tcl for name, opts in settings.iteritems(): # will format specific keys according to Tcl code if opts.get('configure'): # format 'configure' s = ' '.join(_format_optdict(opts['configure'], True)) script.append("ttk::style configure %s %s;" % (name, s)) if opts.get('map'): # format 'map' s = ' '.join(_format_mapdict(opts['map'], True)) script.append("ttk::style map %s %s;" % (name, s)) if 'layout' in opts: # format 'layout' which may be empty if not opts['layout']: s = 'null' # could be any other word, but this one makes sense else: s, _ = _format_layoutlist(opts['layout']) script.append("ttk::style layout %s {\n%s\n}" % (name, s)) if opts.get('element create'): # format 'element create' eopts = opts['element create'] etype = eopts[0] # find where args end, and where kwargs start argc = 1 # etype was the first one while argc < len(eopts) and not hasattr(eopts[argc], 'iteritems'): argc += 1 elemargs = eopts[1:argc] elemkw = eopts[argc] if argc < len(eopts) and eopts[argc] else {} spec, opts = _format_elemcreate(etype, True, *elemargs, **elemkw) script.append("ttk::style element create %s %s %s %s" % ( name, etype, spec, opts)) return '\n'.join(script) def _list_from_statespec(stuple): """Construct a list from the given statespec tuple according to the accepted statespec accepted by _format_mapdict.""" nval = [] for val in stuple: typename = getattr(val, 'typename', None) if typename is None: nval.append(val) else: # this is a Tcl object val = str(val) if typename == 'StateSpec': val = val.split() nval.append(val) it = iter(nval) return [_flatten(spec) for spec in zip(it, it)] def _list_from_layouttuple(tk, ltuple): """Construct a list from the tuple returned by ttk::layout, this is somewhat the reverse of _format_layoutlist.""" ltuple = tk.splitlist(ltuple) res = [] indx = 0 while indx < len(ltuple): name = ltuple[indx] opts = {} res.append((name, opts)) indx += 1 while indx < len(ltuple): # grab name's options opt, val = ltuple[indx:indx + 2] if not opt.startswith('-'): # found next name break opt = opt[1:] # remove the '-' from the option indx += 2 if opt == 'children': val = _list_from_layouttuple(tk, val) opts[opt] = val return res def _val_or_dict(tk, options, *args): """Format options then call Tk command with args and options and return the appropriate result. If no option is specified, a dict is returned. If an option is specified with the None value, the value for that option is returned. Otherwise, the function just sets the passed options and the caller shouldn't be expecting a return value anyway.""" options = _format_optdict(options) res = tk.call(*(args + options)) if len(options) % 2: # option specified without a value, return its value return res return _splitdict(tk, res, conv=_tclobj_to_py) def _convert_stringval(value): """Converts a value to, hopefully, a more appropriate Python object.""" value = unicode(value) try: value = int(value) except (ValueError, TypeError): pass return value def _to_number(x): if isinstance(x, str): if '.' in x: x = float(x) else: x = int(x) return x def _tclobj_to_py(val): """Return value converted from Tcl object to Python object.""" if val and hasattr(val, '__len__') and not isinstance(val, basestring): if getattr(val[0], 'typename', None) == 'StateSpec': val = _list_from_statespec(val) else: val = map(_convert_stringval, val) elif hasattr(val, 'typename'): # some other (single) Tcl object val = _convert_stringval(val) return val def tclobjs_to_py(adict): """Returns adict with its values converted from Tcl objects to Python objects.""" for opt, val in adict.items(): adict[opt] = _tclobj_to_py(val) 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.""" _name = "ttk::style" def __init__(self, master=None): master = setup_master(master) if not getattr(master, '_tile_loaded', False): # Load tile now, if needed _load_tile(master) self.master = master self.tk = self.master.tk def configure(self, style, query_opt=None, **kw): """Query or sets the default value of the specified option(s) in style. Each key in kw is an option and each value is either a string or a sequence identifying the value for that option.""" if query_opt is not None: kw[query_opt] = None return _val_or_dict(self.tk, kw, self._name, "configure", style) def map(self, style, query_opt=None, **kw): """Query or sets dynamic values of the specified option(s) in style. Each key in kw is an option and each value should be a list or a tuple (usually) containing statespecs grouped in tuples, or list, or something else of your preference. A statespec is compound of one or more states and then a value.""" if query_opt is not None: return _list_from_statespec(self.tk.splitlist( self.tk.call(self._name, "map", style, '-%s' % query_opt))) return _splitdict( self.tk, self.tk.call(self._name, "map", style, *_format_mapdict(kw)), conv=_tclobj_to_py) def lookup(self, style, option, state=None, default=None): """Returns the value specified for option in style. If state is specified it is expected to be a sequence of one or more states. If the default argument is set, it is used as a fallback value in case no specification for option is found.""" state = ' '.join(state) if state else '' return self.tk.call(self._name, "lookup", style, '-%s' % option, state, default) def layout(self, style, layoutspec=None): """Define the widget layout for given style. If layoutspec is omitted, return the layout specification for given style. layoutspec is expected to be a list or an object different than None that evaluates to False if you want to "turn off" that style. If it is a list (or tuple, or something else), each item should be a tuple where the first item is the layout name and the second item should have the format described below: LAYOUTS A layout can contain the value None, if takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an initial cavity, each element is allocated a parcel. Valid options/values are: side: whichside Specifies which side of the cavity to place the element; one of top, right, bottom or left. If omitted, the element occupies the entire cavity. sticky: nswe Specifies where the element is placed inside its allocated parcel. children: [sublayout... ] Specifies a list of elements to place inside the element. Each element is a tuple (or other sequence) where the first item is the layout name, and the other is a LAYOUT.""" lspec = None if layoutspec: lspec = _format_layoutlist(layoutspec)[0] elif layoutspec is not None: # will disable the layout ({}, '', etc) lspec = "null" # could be any other word, but this may make sense # when calling layout(style) later return _list_from_layouttuple(self.tk, self.tk.call(self._name, "layout", style, lspec)) def element_create(self, elementname, etype, *args, **kw): """Create a new element in the current theme of given etype.""" spec, opts = _format_elemcreate(etype, False, *args, **kw) self.tk.call(self._name, "element", "create", elementname, etype, spec, *opts) def element_names(self): """Returns the list of elements defined in the current theme.""" return self.tk.splitlist(self.tk.call(self._name, "element", "names")) def element_options(self, elementname): """Return the list of elementname's options.""" return self.tk.splitlist(self.tk.call(self._name, "element", "options", elementname)) def theme_create(self, themename, parent=None, settings=None): """Creates a new theme. It is an error if themename already exists. If parent is specified, the new theme will inherit styles, elements and layouts from the specified parent theme. If settings are present, they are expected to have the same syntax used for theme_settings.""" script = _script_from_settings(settings) if settings else '' if parent: self.tk.call(self._name, "theme", "create", themename, "-parent", parent, "-settings", script) else: self.tk.call(self._name, "theme", "create", themename, "-settings", script) def theme_settings(self, themename, settings): """Temporarily sets the current theme to themename, apply specified settings and then restore the previous theme. Each key in settings is a style and each value may contain the keys 'configure', 'map', 'layout' and 'element create' and they are expected to have the same format as specified by the methods configure, map, layout and element_create respectively.""" script = _script_from_settings(settings) self.tk.call(self._name, "theme", "settings", themename, script) def theme_names(self): """Returns a list of all known themes.""" return self.tk.splitlist(self.tk.call(self._name, "theme", "names")) def theme_use(self, themename=None): """If themename is None, returns the theme in use, otherwise, set the current theme to themename, refreshes all widgets and emits a <<ThemeChanged>> event.""" if themename is None: # Starting on Tk 8.6, checking this global is no longer needed # since it allows doing self.tk.call(self._name, "theme", "use") return self.tk.eval("return $ttk::currentTheme") # using "ttk::setTheme" instead of "ttk::style theme use" causes # the variable currentTheme to be updated, also, ttk::setTheme calls # "ttk::style theme use" in order to change theme. self.tk.call("ttk::setTheme", themename) class Widget(Tkinter.Widget): """Base class for Tk themed widgets.""" def __init__(self, master, widgetname, kw=None): """Constructs a Ttk Widget with the parent master. STANDARD OPTIONS class, cursor, takefocus, style SCROLLABLE WIDGET OPTIONS xscrollcommand, yscrollcommand LABEL WIDGET OPTIONS text, textvariable, underline, image, compound, width WIDGET STATES active, disabled, focus, pressed, selected, background, readonly, alternate, invalid """ master = setup_master(master) if not getattr(master, '_tile_loaded', False): # Load tile now, if needed _load_tile(master) Tkinter.Widget.__init__(self, master, widgetname, kw=kw) def identify(self, x, y): """Returns the name of the element at position x, y, or the empty string if the point does not lie within any element. x and y are pixel coordinates relative to the widget.""" return self.tk.call(self._w, "identify", x, y) def instate(self, statespec, callback=None, *args, **kw): """Test the widget's state. If callback is not specified, returns True if the widget state matches statespec and False otherwise. If callback is specified, then it will be invoked with *args, **kw if the widget state matches statespec. statespec is expected to be a sequence.""" ret = self.tk.getboolean( self.tk.call(self._w, "instate", ' '.join(statespec))) if ret and callback: return callback(*args, **kw) return ret def state(self, statespec=None): """Modify or inquire widget state. Widget state is returned if statespec is None, otherwise it is set according to the statespec flags and then a new state spec is returned indicating which flags were changed. statespec is expected to be a sequence.""" if statespec is not None: statespec = ' '.join(statespec) return self.tk.splitlist(str(self.tk.call(self._w, "state", statespec))) class Button(Widget): """Ttk Button widget, displays a textual label and/or image, and evaluates a command when pressed.""" def __init__(self, master=None, **kw): """Construct a Ttk Button widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, default, width """ Widget.__init__(self, master, "ttk::button", kw) def invoke(self): """Invokes the command associated with the button.""" return self.tk.call(self._w, "invoke") class Checkbutton(Widget): """Ttk Checkbutton widget which is either in on- or off-state.""" def __init__(self, master=None, **kw): """Construct a Ttk Checkbutton widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, offvalue, onvalue, variable """ Widget.__init__(self, master, "ttk::checkbutton", kw) def invoke(self): """Toggles between the selected and deselected states and invokes the associated command. If the widget is currently selected, sets the option variable to the offvalue option and deselects the widget; otherwise, sets the option variable to the option onvalue. Returns the result of the associated command.""" return self.tk.call(self._w, "invoke") class Entry(Widget, Tkinter.Entry): """Ttk Entry widget displays a one-line text string and allows that string to be edited by the user.""" def __init__(self, master=None, widget=None, **kw): """Constructs a Ttk Entry widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand WIDGET-SPECIFIC OPTIONS exportselection, invalidcommand, justify, show, state, textvariable, validate, validatecommand, width VALIDATION MODES none, key, focus, focusin, focusout, all """ Widget.__init__(self, master, widget or "ttk::entry", kw) def bbox(self, index): """Return a tuple of (x, y, width, height) which describes the bounding box of the character given by index.""" return self._getints(self.tk.call(self._w, "bbox", index)) def identify(self, x, y): """Returns the name of the element at position x, y, or the empty string if the coordinates are outside the window.""" return self.tk.call(self._w, "identify", x, y) def validate(self): """Force revalidation, independent of the conditions specified by the validate option. Returns False if validation fails, True if it succeeds. Sets or clears the invalid state accordingly.""" return self.tk.getboolean(self.tk.call(self._w, "validate")) class Combobox(Entry): """Ttk Combobox widget combines a text field with a pop-down list of values.""" def __init__(self, master=None, **kw): """Construct a Ttk Combobox widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS exportselection, justify, height, postcommand, state, textvariable, values, width """ Entry.__init__(self, master, "ttk::combobox", **kw) def current(self, newindex=None): """If newindex is supplied, sets the combobox value to the element at position newindex in the list of values. Otherwise, returns the index of the current value in the list of values or -1 if the current value does not appear in the list.""" if newindex is None: return self.tk.getint(self.tk.call(self._w, "current")) return self.tk.call(self._w, "current", newindex) def set(self, value): """Sets the value of the combobox to value.""" self.tk.call(self._w, "set", value) class Frame(Widget): """Ttk Frame widget is a container, used to group other widgets together.""" def __init__(self, master=None, **kw): """Construct a Ttk Frame with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS borderwidth, relief, padding, width, height """ Widget.__init__(self, master, "ttk::frame", kw) class Label(Widget): """Ttk Label widget displays a textual label and/or image.""" def __init__(self, master=None, **kw): """Construct a Ttk Label with parent master. STANDARD OPTIONS class, compound, cursor, image, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS anchor, background, font, foreground, justify, padding, relief, text, wraplength """ Widget.__init__(self, master, "ttk::label", kw) class Labelframe(Widget): """Ttk Labelframe widget is a container used to group other widgets together. It has an optional label, which may be a plain text string or another widget.""" def __init__(self, master=None, **kw): """Construct a Ttk Labelframe with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS labelanchor, text, underline, padding, labelwidget, width, height """ Widget.__init__(self, master, "ttk::labelframe", kw) LabelFrame = Labelframe # Tkinter name compatibility class Menubutton(Widget): """Ttk Menubutton widget displays a textual label and/or image, and displays a menu when pressed.""" def __init__(self, master=None, **kw): """Construct a Ttk Menubutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS direction, menu """ Widget.__init__(self, master, "ttk::menubutton", kw) class Notebook(Widget): """Ttk Notebook widget manages a collection of windows and displays a single one at a time. Each child window is associated with a tab, which the user may select to change the currently-displayed window.""" def __init__(self, master=None, **kw): """Construct a Ttk Notebook with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS height, padding, width TAB OPTIONS state, sticky, padding, text, image, compound, underline TAB IDENTIFIERS (tab_id) The tab_id argument found in several methods may take any of the following forms: * An integer between zero and the number of tabs * The name of a child window * A positional specification of the form "@x,y", which defines the tab * The string "current", which identifies the currently-selected tab * The string "end", which returns the number of tabs (only valid for method index) """ Widget.__init__(self, master, "ttk::notebook", kw) def add(self, child, **kw): """Adds a new tab to the notebook. If window is currently managed by the notebook but hidden, it is restored to its previous position.""" self.tk.call(self._w, "add", child, *(_format_optdict(kw))) def forget(self, tab_id): """Removes the tab specified by tab_id, unmaps and unmanages the associated window.""" self.tk.call(self._w, "forget", tab_id) def hide(self, tab_id): """Hides the tab specified by tab_id. The tab will not be displayed, but the associated window remains managed by the notebook and its configuration remembered. Hidden tabs may be restored with the add command.""" self.tk.call(self._w, "hide", tab_id) def identify(self, x, y): """Returns the name of the tab element at position x, y, or the empty string if none.""" return self.tk.call(self._w, "identify", x, y) def index(self, tab_id): """Returns the numeric index of the tab specified by tab_id, or the total number of tabs if tab_id is the string "end".""" return self.tk.getint(self.tk.call(self._w, "index", tab_id)) def insert(self, pos, child, **kw): """Inserts a pane at the specified position. pos is either the string end, an integer index, or the name of a managed child. If child is already managed by the notebook, moves it to the specified position.""" self.tk.call(self._w, "insert", pos, child, *(_format_optdict(kw))) def select(self, tab_id=None): """Selects the specified tab. The associated child window will be displayed, and the previously-selected window (if different) is unmapped. If tab_id is omitted, returns the widget name of the currently selected pane.""" return self.tk.call(self._w, "select", tab_id) def tab(self, tab_id, option=None, **kw): """Query or modify the options of the specific tab_id. If kw is not given, returns a dict of the tab option values. If option is specified, returns the value of that option. Otherwise, sets the options to the corresponding values.""" if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, "tab", tab_id) def tabs(self): """Returns a list of windows managed by the notebook.""" return self.tk.splitlist(self.tk.call(self._w, "tabs") or ()) def enable_traversal(self): """Enable keyboard traversal for a toplevel window containing this notebook. This will extend the bindings for the toplevel window containing this notebook as follows: Control-Tab: selects the tab following the currently selected one Shift-Control-Tab: selects the tab preceding the currently selected one Alt-K: where K is the mnemonic (underlined) character of any tab, will select that tab. Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks. However, notebook traversal only works properly if all panes are direct children of the notebook.""" # The only, and good, difference I see is about mnemonics, which works # after calling this method. Control-Tab and Shift-Control-Tab always # works (here at least). self.tk.call("ttk::notebook::enableTraversal", self._w) class Panedwindow(Widget, Tkinter.PanedWindow): """Ttk Panedwindow widget displays a number of subwindows, stacked either vertically or horizontally.""" def __init__(self, master=None, **kw): """Construct a Ttk Panedwindow with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, width, height PANE OPTIONS weight """ Widget.__init__(self, master, "ttk::panedwindow", kw) forget = Tkinter.PanedWindow.forget # overrides Pack.forget def insert(self, pos, child, **kw): """Inserts a pane at the specified positions. pos is either the string end, and integer index, or the name of a child. If child is already managed by the paned window, moves it to the specified position.""" self.tk.call(self._w, "insert", pos, child, *(_format_optdict(kw))) def pane(self, pane, option=None, **kw): """Query or modify the options of the specified pane. pane is either an integer index or the name of a managed subwindow. If kw is not given, returns a dict of the pane option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.""" if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, "pane", pane) def sashpos(self, index, newpos=None): """If newpos is specified, sets the position of sash number index. May adjust the positions of adjacent sashes to ensure that positions are monotonically increasing. Sash positions are further constrained to be between 0 and the total size of the widget. Returns the new position of sash number index.""" return self.tk.getint(self.tk.call(self._w, "sashpos", index, newpos)) PanedWindow = Panedwindow # Tkinter name compatibility class Progressbar(Widget): """Ttk Progressbar widget shows the status of a long-running operation. They can operate in two modes: determinate mode shows the amount completed relative to the total amount of work to be done, and indeterminate mode provides an animated display to let the user know that something is happening.""" def __init__(self, master=None, **kw): """Construct a Ttk Progressbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, length, mode, maximum, value, variable, phase """ Widget.__init__(self, master, "ttk::progressbar", kw) def start(self, interval=None): """Begin autoincrement mode: schedules a recurring timer event that calls method step every interval milliseconds. interval defaults to 50 milliseconds (20 steps/second) if omitted.""" self.tk.call(self._w, "start", interval) def step(self, amount=None): """Increments the value option by amount. amount defaults to 1.0 if omitted.""" self.tk.call(self._w, "step", amount) def stop(self): """Stop autoincrement mode: cancels any recurring timer event initiated by start.""" self.tk.call(self._w, "stop") class Radiobutton(Widget): """Ttk Radiobutton widgets are used in groups to show or change a set of mutually-exclusive options.""" def __init__(self, master=None, **kw): """Construct a Ttk Radiobutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, value, variable """ Widget.__init__(self, master, "ttk::radiobutton", kw) def invoke(self): """Sets the option variable to the option value, selects the widget, and invokes the associated command. Returns the result of the command, or an empty string if no command is specified.""" return self.tk.call(self._w, "invoke") class Scale(Widget, Tkinter.Scale): """Ttk Scale widget is typically used to control the numeric value of a linked variable that varies uniformly over some range.""" def __init__(self, master=None, **kw): """Construct a Ttk Scale with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, from, length, orient, to, value, variable """ Widget.__init__(self, master, "ttk::scale", kw) def configure(self, cnf=None, **kw): """Modify or query scale options. Setting a value for any of the "from", "from_" or "to" options generates a <<RangeChanged>> event.""" if cnf: kw.update(cnf) Widget.configure(self, **kw) if any(['from' in kw, 'from_' in kw, 'to' in kw]): self.event_generate('<<RangeChanged>>') def get(self, x=None, y=None): """Get the current value of the value option, or the value corresponding to the coordinates x, y if they are specified. x and y are pixel coordinates relative to the scale widget origin.""" return self.tk.call(self._w, 'get', x, y) class Scrollbar(Widget, Tkinter.Scrollbar): """Ttk Scrollbar controls the viewport of a scrollable widget.""" def __init__(self, master=None, **kw): """Construct a Ttk Scrollbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, orient """ Widget.__init__(self, master, "ttk::scrollbar", kw) class Separator(Widget): """Ttk Separator widget displays a horizontal or vertical separator bar.""" def __init__(self, master=None, **kw): """Construct a Ttk Separator with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient """ Widget.__init__(self, master, "ttk::separator", kw) class Sizegrip(Widget): """Ttk Sizegrip allows the user to resize the containing toplevel window by pressing and dragging the grip.""" def __init__(self, master=None, **kw): """Construct a Ttk Sizegrip with parent master. STANDARD OPTIONS class, cursor, state, style, takefocus """ Widget.__init__(self, master, "ttk::sizegrip", kw) class Treeview(Widget, Tkinter.XView, Tkinter.YView): """Ttk Treeview widget displays a hierarchical collection of items. Each item has a textual label, an optional image, and an optional list of data values. The data values are displayed in successive columns after the tree label.""" def __init__(self, master=None, **kw): """Construct a Ttk Treeview with parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand, yscrollcommand WIDGET-SPECIFIC OPTIONS columns, displaycolumns, height, padding, selectmode, show ITEM OPTIONS text, image, values, open, tags TAG OPTIONS foreground, background, font, image """ Widget.__init__(self, master, "ttk::treeview", kw) def bbox(self, item, column=None): """Returns the bounding box (relative to the treeview widget's window) of the specified item in the form x y width height. If column is specified, returns the bounding box of that cell. If the item is not visible (i.e., if it is a descendant of a closed item or is scrolled offscreen), returns an empty string.""" return self._getints(self.tk.call(self._w, "bbox", item, column)) or '' def get_children(self, item=None): """Returns a tuple of children belonging to item. If item is not specified, returns root children.""" return self.tk.splitlist( self.tk.call(self._w, "children", item or '') or ()) def set_children(self, item, *newchildren): """Replaces item's child with newchildren. Children present in item that are not present in newchildren are detached from tree. No items in newchildren may be an ancestor of item.""" self.tk.call(self._w, "children", item, newchildren) def column(self, column, option=None, **kw): """Query or modify the options for the specified column. If kw is not given, returns a dict of the column option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.""" if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, "column", column) def delete(self, *items): """Delete all specified items and all their descendants. The root item may not be deleted.""" self.tk.call(self._w, "delete", items) def detach(self, *items): """Unlinks all of the specified items from the tree. The items and all of their descendants are still present, and may be reinserted at another point in the tree, but will not be displayed. The root item may not be detached.""" self.tk.call(self._w, "detach", items) def exists(self, item): """Returns True if the specified item is present in the tree, False otherwise.""" return self.tk.getboolean(self.tk.call(self._w, "exists", item)) def focus(self, item=None): """If item is specified, sets the focus item to item. Otherwise, returns the current focus item, or '' if there is none.""" return self.tk.call(self._w, "focus", item) def heading(self, column, option=None, **kw): """Query or modify the heading options for the specified column. If kw is not given, returns a dict of the heading option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values. Valid options/values are: text: text The text to display in the column heading image: image_name Specifies an image to display to the right of the column heading anchor: anchor Specifies how the heading text should be aligned. One of the standard Tk anchor values command: callback A callback to be invoked when the heading label is pressed. To configure the tree column heading, call this with column = "#0" """ cmd = kw.get('command') if cmd and not isinstance(cmd, basestring): # callback not registered yet, do it now kw['command'] = self.master.register(cmd, self._substitute) if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, 'heading', column) def identify(self, component, x, y): """Returns a description of the specified component under the point given by x and y, or the empty string if no such component is present at that position.""" return self.tk.call(self._w, "identify", component, x, y) def identify_row(self, y): """Returns the item ID of the item at position y.""" return self.identify("row", 0, y) def identify_column(self, x): """Returns the data column identifier of the cell at position x. The tree column has ID #0.""" return self.identify("column", x, 0) def identify_region(self, x, y): """Returns one of: heading: Tree heading area. separator: Space between two columns headings; tree: The tree area. cell: A data cell. * Availability: Tk 8.6""" return self.identify("region", x, y) def identify_element(self, x, y): """Returns the element at position x, y. * Availability: Tk 8.6""" return self.identify("element", x, y) def index(self, item): """Returns the integer index of item within its parent's list of children.""" return self.tk.getint(self.tk.call(self._w, "index", item)) def insert(self, parent, index, iid=None, **kw): """Creates a new item and return the item identifier of the newly created item. parent is the item ID of the parent item, or the empty string to create a new top-level item. index is an integer, or the value end, specifying where in the list of parent's children to insert the new item. If index is less than or equal to zero, the new node is inserted at the beginning, if index is greater than or equal to the current number of children, it is inserted at the end. If iid is specified, it is used as the item identifier, iid must not already exist in the tree. Otherwise, a new unique identifier is generated.""" opts = _format_optdict(kw) if iid is not None: res = self.tk.call(self._w, "insert", parent, index, "-id", iid, *opts) else: res = self.tk.call(self._w, "insert", parent, index, *opts) return res def item(self, item, option=None, **kw): """Query or modify the options for the specified item. If no options are given, a dict with options/values for the item is returned. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values as given by kw.""" if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, "item", item) def move(self, item, parent, index): """Moves item to position index in parent's list of children. It is illegal to move an item under one of its descendants. If index is less than or equal to zero, item is moved to the beginning, if greater than or equal to the number of children, it is moved to the end. If item was detached it is reattached.""" self.tk.call(self._w, "move", item, parent, index) reattach = move # A sensible method name for reattaching detached items def next(self, item): """Returns the identifier of item's next sibling, or '' if item is the last child of its parent.""" return self.tk.call(self._w, "next", item) def parent(self, item): """Returns the ID of the parent of item, or '' if item is at the top level of the hierarchy.""" return self.tk.call(self._w, "parent", item) def prev(self, item): """Returns the identifier of item's previous sibling, or '' if item is the first child of its parent.""" return self.tk.call(self._w, "prev", item) def see(self, item): """Ensure that item is visible. Sets all of item's ancestors open option to True, and scrolls the widget if necessary so that item is within the visible portion of the tree.""" self.tk.call(self._w, "see", item) def selection(self, selop=None, items=None): """If selop is not specified, returns selected items.""" if isinstance(items, basestring): items = (items,) return self.tk.splitlist(self.tk.call(self._w, "selection", selop, items)) def selection_set(self, items): """items becomes the new selection.""" self.selection("set", items) def selection_add(self, items): """Add items to the selection.""" self.selection("add", items) def selection_remove(self, items): """Remove items from the selection.""" self.selection("remove", items) def selection_toggle(self, items): """Toggle the selection state of each item in items.""" self.selection("toggle", items) def set(self, item, column=None, value=None): """Query or set the value of given item. With one argument, return a dictionary of column/value pairs for the specified item. With two arguments, return the current value of the specified column. With three arguments, set the value of given column in given item to the specified value.""" res = self.tk.call(self._w, "set", item, column, value) if column is None and value is None: return _splitdict(self.tk, res, cut_minus=False, conv=_tclobj_to_py) else: return res def tag_bind(self, tagname, sequence=None, callback=None): """Bind a callback for the given event sequence to the tag tagname. When an event is delivered to an item, the callbacks for each of the item's tags option are called.""" self._bind((self._w, "tag", "bind", tagname), sequence, callback, add=0) def tag_configure(self, tagname, option=None, **kw): """Query or modify the options for the specified tagname. If kw is not given, returns a dict of the option settings for tagname. If option is specified, returns the value for that option for the specified tagname. Otherwise, sets the options to the corresponding values for the given tagname.""" if option is not None: kw[option] = None return _val_or_dict(self.tk, kw, self._w, "tag", "configure", tagname) def tag_has(self, tagname, item=None): """If item is specified, returns 1 or 0 depending on whether the specified item has the given tagname. Otherwise, returns a list of all items which have the specified tag. * Availability: Tk 8.6""" if item is None: return self.tk.splitlist( self.tk.call(self._w, "tag", "has", tagname)) else: return self.tk.getboolean( self.tk.call(self._w, "tag", "has", tagname, item)) # Extensions class LabeledScale(Frame, object): """A Ttk Scale widget with a Ttk Label widget indicating its current value. The Ttk Scale can be accessed through instance.scale, and Ttk Label can be accessed through instance.label""" def __init__(self, master=None, variable=None, from_=0, to=10, **kw): """Construct a horizontal LabeledScale with parent master, a variable to be associated with the Ttk Scale widget and its range. If variable is not specified, a Tkinter.IntVar is created. WIDGET-SPECIFIC OPTIONS compound: 'top' or 'bottom' Specifies how to display the label relative to the scale. Defaults to 'top'. """ self._label_top = kw.pop('compound', 'top') == 'top' Frame.__init__(self, master, **kw) self._variable = variable or Tkinter.IntVar(master) self._variable.set(from_) self._last_valid = from_ self.label = Label(self) self.scale = Scale(self, variable=self._variable, from_=from_, to=to) self.scale.bind('<<RangeChanged>>', self._adjust) # position scale and label according to the compound option scale_side = 'bottom' if self._label_top else 'top' label_side = 'top' if scale_side == 'bottom' else 'bottom' self.scale.pack(side=scale_side, fill='x') tmp = Label(self).pack(side=label_side) # place holder self.label.place(anchor='n' if label_side == 'top' else 's') # update the label as scale or variable changes self.__tracecb = self._variable.trace_variable('w', self._adjust) self.bind('<Configure>', self._adjust) self.bind('<Map>', self._adjust) def destroy(self): """Destroy this widget and possibly its associated variable.""" try: self._variable.trace_vdelete('w', self.__tracecb) except AttributeError: # widget has been destroyed already pass else: del self._variable Frame.destroy(self) self.label = None self.scale = None def _adjust(self, *args): """Adjust the label position according to the scale.""" def adjust_label(): self.update_idletasks() # "force" scale redraw x, y = self.scale.coords() if self._label_top: y = self.scale.winfo_y() - self.label.winfo_reqheight() else: y = self.scale.winfo_reqheight() + self.label.winfo_reqheight() self.label.place_configure(x=x, y=y) from_ = _to_number(self.scale['from']) to = _to_number(self.scale['to']) if to < from_: from_, to = to, from_ newval = self._variable.get() if not from_ <= newval <= to: # value outside range, set value back to the last valid one self.value = self._last_valid return self._last_valid = newval self.label['text'] = newval self.after_idle(adjust_label) def _get_value(self): """Return current scale value.""" return self._variable.get() def _set_value(self, val): """Set new scale value.""" self._variable.set(val) value = property(_get_value, _set_value) class OptionMenu(Menubutton): """Themed OptionMenu, based after Tkinter's OptionMenu, which allows the user to select a value from a menu.""" def __init__(self, master, variable, default=None, *values, **kwargs): """Construct a themed OptionMenu widget with master as the parent, the resource textvariable set to variable, the initially selected value specified by the default parameter, the menu values given by *values and additional keywords. WIDGET-SPECIFIC OPTIONS style: stylename Menubutton style. direction: 'above', 'below', 'left', 'right', or 'flush' Menubutton direction. command: callback A callback that will be invoked after selecting an item. """ kw = {'textvariable': variable, 'style': kwargs.pop('style', None), 'direction': kwargs.pop('direction', None)} Menubutton.__init__(self, master, **kw) self['menu'] = Tkinter.Menu(self, tearoff=False) self._variable = variable self._callback = kwargs.pop('command', None) if kwargs: raise Tkinter.TclError('unknown option -%s' % ( kwargs.iterkeys().next())) self.set_menu(default, *values) def __getitem__(self, item): if item == 'menu': return self.nametowidget(Menubutton.__getitem__(self, item)) return Menubutton.__getitem__(self, item) def set_menu(self, default=None, *values): """Build a new menu of radiobuttons with *values and optionally a default value.""" menu = self['menu'] menu.delete(0, 'end') for val in values: menu.add_radiobutton(label=val, command=Tkinter._setit(self._variable, val, self._callback), variable=self._variable) if default: self._variable.set(default) def destroy(self): """Destroy this widget and its associated variable.""" try: del self._variable except AttributeError: pass Menubutton.destroy(self) ttk.pyc000064400000172244151703463030006077 0ustar00� zfc@sYdZdZdZddddddd d ddd dddddddddddddgZddlZddlmZmZmZmZej dkr�e neZd�Z ed �Zeed!�Zd"�Zed#�Zed$�Zd%d&d'�Zd(�Zd)�Zd*�Zd+�Zd,�Zd-�Zd.�Zd/�Zed0�Zdefd1��YZd2ej fd3��YZ de fd4��YZ!de fd5��YZ"de ej#fd6��YZ#de#fd7��YZ$de fd8��YZ%de fd9��YZ&d e fd:��YZ'e'Z(de fd;��YZ)de fd<��YZ*d e ej+fd=��YZ,e,Z+de fd>��YZ-de fd?��YZ.de ej/fd@��YZ/de ej0fdA��YZ0de fdB��YZ1de fdC��YZ2de ej3ej4fdD��YZ5de%efdE��YZ6de)fdF��YZ7dS(Gs�Ttk wrapper. This module provides classes to allow using Tk themed widget set. Ttk is based on a revised and enhanced version of TIP #48 (http://tip.tcl.tk/48) specified style engine. Its basic idea is to separate, to the extent possible, the code implementing a widget's behavior from the code implementing its appearance. Widget class bindings are primarily responsible for maintaining the widget state and invoking callbacks, all aspects of the widgets appearance lies at Themes. s0.3.1s!Guilherme Polo <ggpolo@gmail.com>tButtontCheckbuttontComboboxtEntrytFrametLabelt Labelframet LabelFramet MenubuttontNotebooktPanedwindowtPanedWindowtProgressbartRadiobuttontScalet Scrollbart SeparatortSizegriptStyletTreeviewtLabeledScalet OptionMenut tclobjs_to_pytsetup_masteri����N(t_flattent_joint _stringifyt _splitdictg!@cCsatr]ddl}|jjd�}|rA|jjd|�n|jjd�t|_ndS(Ni����tTILE_LIBRARYs(global auto_path; lappend auto_path {%s}spackage require tile(t _REQUIRE_TILEtostenvirontgetttktevaltTruet_tile_loaded(tmasterRttilelib((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _load_tile"s cCs=|rt|�}n$t|ttf�r9t|�}n|S(sInternal function.(Rt isinstancetlistttupleR(tvaluetscript((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_optvalue1s cCsyg}xf|j�D]X\}}|s2||kr|jd|�|dk rk|jt||��qkqqWt|�S(s�Formats optdict to a tuple to pass it to tk.call. E.g. (script=False): {'foreground': 'blue', 'padding': [1, 2, 3, 4]} returns: ('-foreground', 'blue', '-padding', '1 2 3 4')s-%sN(t iteritemstappendtNoneR-R(toptdictR,tignoretoptstoptR+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_optdict;s cCs�g}x�|D]}|d }|d}|dt|�dkrT|dpNd}ndj|�}|j|�|dk r |j|�q q W|S(Ni����iitt (tlentjoinR/R0(titemstopt_valtitemtstatetval((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_mapdict_valuesKs cCsSg}x@|j�D]2\}}|jd|tt|�|�f�qWt|�S(s�Formats mapdict to pass it to tk.call. E.g. (script=False): {'expand': [('active', 'selected', 'grey'), ('focus', [1, 2, 3, 4])]} returns: ('-expand', '{active selected} grey focus {1, 2, 3, 4}')s-%s(R.textendR-R?R(tmapdictR,R3R4R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_mapdictds cOsd}d}|d kr�|dkrW|d}tt|d��}d||f}n9|d \}} tt|d��} d|| | f}t||�}nD|dkr�|d}t|�dkr�t|d|�f}q�n|rd |}d j|�}n||fS(sAFormats args and kw according to the given element factory etype.timagetvsapiiis%s %sis%s %s %stfroms{%s}R7N((RCRD(R0RR?R5R8R-R9(tetypeR,targstkwtspecR3tinamet imagespect class_nametpart_idtstatemap((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_elemcreateus& iic Csg}x�|D]�}|\}}|p(i}djt|td ��}dd|||rcd|ndf}d|kr�|j|d�||7}t|d||�\} }|j| �||8}|jdd|�q |j|�q Wdj|�|fS( s$Formats a layout list so we can pass the result to ttk::style layout and ttk::style settings. Note that the layout doesn't have to be a list necessarily. E.g.: [("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ("Menubutton.indicator", {"side": "right"}) ] returns: Menubutton.background Menubutton.button -children { Menubutton.focus -children { Menubutton.padding -children { Menubutton.label -side left -expand 1 } } } Menubutton.indicator -side rightR7tchildrens%s%s%ss %sR6s -children {s%s}s (RP(R9R5R#R/t_format_layoutlist( tlayouttindenttindent_sizeR,tlayout_elemtelemR3tfoptstheadt newscript((s"/usr/lib64/python2.7/lib-tk/ttk.pyRQ�s ' cCs�g}x�|j�D]�\}}|jd�rddjt|dt��}|jd||f�n|jd�r�djt|dt��}|jd||f�nd|kr�|ds�d}nt|d�\}}|jd||f�n|jd �r|d }|d }d}x4|t|�krWt ||d�rW|d7}q$W|d|!} |t|�kr�||r�||ni} t |t| | �\}}|jd ||||f�qqWdj|�S(s�Returns an appropriate script, based on settings, according to theme_settings definition to be used by theme_settings and theme_create.t configureR7sttk::style configure %s %s;tmapsttk::style map %s %s;RRtnullsttk::style layout %s { %s }selement createiiR.s%ttk::style element create %s %s %s %ss (R.R R9R5R#R/RBRQR8thasattrRO(tsettingsR,tnameR3tst_teoptsRFtargctelemargstelemkwRI((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_script_from_settings�s2 ) , cCs�g}xp|D]h}t|dd�}|dkrA|j|�q t|�}|dkrh|j�}n|j|�q Wt|�}gt||�D]}t|�^q�S(stConstruct a list from the given statespec tuple according to the accepted statespec accepted by _format_mapdict.ttypenamet StateSpecN(tgetattrR0R/tstrtsplittitertzipR(tstupletnvalR>RgtitRI((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_list_from_statespec�s cCs�|j|�}g}d}x�|t|�kr�||}i}|j||f�|d7}x||t|�kr�|||d!\}}|jd�s�Pn|d}|d7}|dkr�t||�}n|||<q`WqW|S(spConstruct a list from the tuple returned by ttk::layout, this is somewhat the reverse of _format_layoutlist.iiit-RP(t splitlistR8R/t startswitht_list_from_layouttuple(R!tltupletrestindxR_R3R4R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyRus$ cGsFt|�}|j||�}t|�dr3|St||dt�S(shFormat options then call Tk command with args and options and return the appropriate result. If no option is specified, a dict is returned. If an option is specified with the None value, the value for that option is returned. Otherwise, the function just sets the passed options and the caller shouldn't be expecting a return value anyway.itconv(R5tcallR8Rt _tclobj_to_py(R!toptionsRGRw((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_val_or_dict"s cCs:t|�}yt|�}Wnttfk r5nX|S(sAConverts a value to, hopefully, a more appropriate Python object.(tunicodetintt ValueErrort TypeError(R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_convert_stringval2scCs=t|t�r9d|kr*t|�}q9t|�}n|S(Nt.(R(RjtfloatR(tx((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _to_number<s cCs�|rbt|d�rbt|t�rbt|ddd�dkrPt|�}q�tt|�}nt|d�r�t|�}n|S(s8Return value converted from Tcl object to Python object.t__len__iRgRhN(R]R(t basestringRiR0RqR[R�(R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyR{Ds%cCs1x*|j�D]\}}t|�||<q W|S(sOReturns adict with its values converted from Tcl objects to Python objects.(R:R{(tadictR4R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyRQscCs@|dkr<tjr-tjp'tj�}q<td��n|S(sIf 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.sINo master specified and Tkinter is configured to not support default rootN(R0tTkintert_support_default_roott _default_roottTktRuntimeError(R%((s"/usr/lib64/python2.7/lib-tk/ttk.pyRYs cBs�eZdZdZdd�Zdd�Zdd�Zddd�Zdd�Z d�Z d�Zd �Zddd �Z d�Zd�Zdd �ZRS(sManipulate style database.s ttk::stylecCsGt|�}t|dt�s+t|�n||_|jj|_dS(NR$(RRitFalseR'R%R!(tselfR%((s"/usr/lib64/python2.7/lib-tk/ttk.pyt__init__os cKs5|dk rd||<nt|j||jd|�S(s�Query or sets the default value of the specified option(s) in style. Each key in kw is an option and each value is either a string or a sequence identifying the value for that option.RZN(R0R}R!t_name(R�tstylet query_optRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyRZzs cKsr|dk r>t|jj|jj|jd|d|���St|j|jj|jd|t|��dt�S(sSQuery or sets dynamic values of the specified option(s) in style. Each key in kw is an option and each value should be a list or a tuple (usually) containing statespecs grouped in tuples, or list, or something else of your preference. A statespec is compound of one or more states and then a value.R[s-%sRyN( R0RqR!RsRzR�RRBR{(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR[�s&$cCsA|rdj|�nd}|jj|jd|d|||�S(sReturns the value specified for option in style. If state is specified it is expected to be a sequence of one or more states. If the default argument is set, it is used as a fallback value in case no specification for option is found.R7R6tlookups-%s(R9R!RzR�(R�R�toptionR=tdefault((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs\d}|rt|�d}n|dk r4d}nt|j|jj|jd||��S(s�Define the widget layout for given style. If layoutspec is omitted, return the layout specification for given style. layoutspec is expected to be a list or an object different than None that evaluates to False if you want to "turn off" that style. If it is a list (or tuple, or something else), each item should be a tuple where the first item is the layout name and the second item should have the format described below: LAYOUTS A layout can contain the value None, if takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an initial cavity, each element is allocated a parcel. Valid options/values are: side: whichside Specifies which side of the cavity to place the element; one of top, right, bottom or left. If omitted, the element occupies the entire cavity. sticky: nswe Specifies where the element is placed inside its allocated parcel. children: [sublayout... ] Specifies a list of elements to place inside the element. Each element is a tuple (or other sequence) where the first item is the layout name, and the other is a LAYOUT.iR\RRN(R0RQRuR!RzR�(R�R�t layoutspectlspec((s"/usr/lib64/python2.7/lib-tk/ttk.pyRR�s cOsDt|t||�\}}|jj|jdd||||�dS(s9Create a new element in the current theme of given etype.telementtcreateN(ROR�R!RzR�(R�telementnameRFRGRHRIR3((s"/usr/lib64/python2.7/lib-tk/ttk.pytelement_create�scCs%|jj|jj|jdd��S(s:Returns the list of elements defined in the current theme.R�tnames(R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt element_names�scCs(|jj|jj|jdd|��S(s)Return the list of elementname's options.R�R|(R!RsRzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytelement_options�sc Cso|rt|�nd}|rI|jj|jdd|d|d|�n"|jj|jdd|d|�dS(s.Creates a new theme. It is an error if themename already exists. If parent is specified, the new theme will inherit styles, elements and layouts from the specified parent theme. If settings are present, they are expected to have the same syntax used for theme_settings.R6tthemeR�s-parents -settingsN(RfR!RzR�(R�t themenametparentR^R,((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_create�scCs/t|�}|jj|jdd||�dS(s�Temporarily sets the current theme to themename, apply specified settings and then restore the previous theme. Each key in settings is a style and each value may contain the keys 'configure', 'map', 'layout' and 'element create' and they are expected to have the same format as specified by the methods configure, map, layout and element_create respectively.R�R^N(RfR!RzR�(R�R�R^R,((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_settings�scCs%|jj|jj|jdd��S(s#Returns a list of all known themes.R�R�(R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_names�scCs3|dkr|jjd�S|jjd|�dS(s�If themename is None, returns the theme in use, otherwise, set the current theme to themename, refreshes all widgets and emits a <<ThemeChanged>> event.sreturn $ttk::currentThemes ttk::setThemeN(R0R!R"Rz(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt theme_usesN(t__name__t __module__t__doc__R�R0R�RZR[R�RRR�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRjs+ tWidgetcBs;eZdZdd�Zd�Zdd�Zdd�ZRS(s!Base class for Tk themed widgets.cCsKt|�}t|dt�s+t|�ntjj|||d|�dS(s�Constructs a Ttk Widget with the parent master. STANDARD OPTIONS class, cursor, takefocus, style SCROLLABLE WIDGET OPTIONS xscrollcommand, yscrollcommand LABEL WIDGET OPTIONS text, textvariable, underline, image, compound, width WIDGET STATES active, disabled, focus, pressed, selected, background, readonly, alternate, invalid R$RHN(RRiR�R'R�R�R�(R�R%t widgetnameRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cCs|jj|jd||�S(s�Returns the name of the element at position x, y, or the empty string if the point does not lie within any element. x and y are pixel coordinates relative to the widget.tidentify(R!Rzt_w(R�R�ty((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�.scOsM|jj|jj|jddj|���}|rI|rI|||�S|S(s1Test the widget's state. If callback is not specified, returns True if the widget state matches statespec and False otherwise. If callback is specified, then it will be invoked with *args, **kw if the widget state matches statespec. statespec is expected to be a sequence.tinstateR7(R!t getbooleanRzR�R9(R�t statespectcallbackRGRHtret((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�6s ' cCsI|dk rdj|�}n|jjt|jj|jd|���S(sModify or inquire widget state. Widget state is returned if statespec is None, otherwise it is set according to the statespec flags and then a new state spec is returned indicating which flags were changed. statespec is expected to be a sequence.R7R=N(R0R9R!RsRjRzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR=EsN(R�R�R�R0R�R�R�R=(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs#eZdZdd�Zd�ZRS(scTtk Button widget, displays a textual label and/or image, and evaluates a command when pressed.cKstj||d|�dS(sConstruct a Ttk Button widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, default, width sttk::buttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�VscCs|jj|jd�S(s/Invokes the command associated with the button.tinvoke(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�esN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRRscBs#eZdZdd�Zd�ZRS(s;Ttk Checkbutton widget which is either in on- or off-state.cKstj||d|�dS(s'Construct a Ttk Checkbutton widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, offvalue, onvalue, variable sttk::checkbuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�mscCs|jj|jd�S(sWToggles between the selected and deselected states and invokes the associated command. If the widget is currently selected, sets the option variable to the offvalue option and deselects the widget; otherwise, sets the option variable to the option onvalue. Returns the result of the associated command.R�(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�|sN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRjscBs8eZdZddd�Zd�Zd�Zd�ZRS(seTtk Entry widget displays a one-line text string and allows that string to be edited by the user.cKs tj|||pd|�dS(s�Constructs a Ttk Entry widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand WIDGET-SPECIFIC OPTIONS exportselection, invalidcommand, justify, show, state, textvariable, validate, validatecommand, width VALIDATION MODES none, key, focus, focusin, focusout, all s ttk::entryN(R�R�(R�R%twidgetRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs"|j|jj|jd|��S(sqReturn a tuple of (x, y, width, height) which describes the bounding box of the character given by index.tbbox(t_getintsR!RzR�(R�tindex((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd||�S(sxReturns the name of the element at position x, y, or the empty string if the coordinates are outside the window.R�(R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs"|jj|jj|jd��S(s�Force revalidation, independent of the conditions specified by the validate option. Returns False if validation fails, True if it succeeds. Sets or clears the invalid state accordingly.tvalidate(R!R�RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs/eZdZdd�Zdd�Zd�ZRS(sMTtk Combobox widget combines a text field with a pop-down list of values.cKstj||d|�dS(sConstruct a Ttk Combobox widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS exportselection, justify, height, postcommand, state, textvariable, values, width s ttk::comboboxN(RR�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCsG|dkr.|jj|jj|jd��S|jj|jd|�S(sIf newindex is supplied, sets the combobox value to the element at position newindex in the list of values. Otherwise, returns the index of the current value in the list of values or -1 if the current value does not appear in the list.tcurrentN(R0R!tgetintRzR�(R�tnewindex((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s"cCs|jj|jd|�dS(s(Sets the value of the combobox to value.tsetN(R!RzR�(R�R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBseZdZdd�ZRS(sJTtk Frame widget is a container, used to group other widgets together.cKstj||d|�dS(s�Construct a Ttk Frame with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS borderwidth, relief, padding, width, height s ttk::frameN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(s7Ttk Label widget displays a textual label and/or image.cKstj||d|�dS(sGConstruct a Ttk Label with parent master. STANDARD OPTIONS class, compound, cursor, image, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS anchor, background, font, foreground, justify, padding, relief, text, wraplength s ttk::labelN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s N(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(s�Ttk Labelframe widget is a container used to group other widgets together. It has an optional label, which may be a plain text string or another widget.cKstj||d|�dS(s�Construct a Ttk Labelframe with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS labelanchor, text, underline, padding, labelwidget, width, height sttk::labelframeN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(sbTtk Menubutton widget displays a textual label and/or image, and displays a menu when pressed.cKstj||d|�dS(sConstruct a Ttk Menubutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS direction, menu sttk::menubuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR scBszeZdZdd�Zd�Zd�Zd�Zd�Zd�Z d�Z dd�Zdd �Zd �Z d�ZRS( s�Ttk Notebook widget manages a collection of windows and displays a single one at a time. Each child window is associated with a tab, which the user may select to change the currently-displayed window.cKstj||d|�dS(s\Construct a Ttk Notebook with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS height, padding, width TAB OPTIONS state, sticky, padding, text, image, compound, underline TAB IDENTIFIERS (tab_id) The tab_id argument found in several methods may take any of the following forms: * An integer between zero and the number of tabs * The name of a child window * A positional specification of the form "@x,y", which defines the tab * The string "current", which identifies the currently-selected tab * The string "end", which returns the number of tabs (only valid for method index) s ttk::notebookN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�%scKs&|jj|jd|t|��dS(s�Adds a new tab to the notebook. If window is currently managed by the notebook but hidden, it is restored to its previous position.taddN(R!RzR�R5(R�tchildRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�EscCs|jj|jd|�dS(sXRemoves the tab specified by tab_id, unmaps and unmanages the associated window.tforgetN(R!RzR�(R�ttab_id((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�MscCs|jj|jd|�dS(s�Hides the tab specified by tab_id. The tab will not be displayed, but the associated window remains managed by the notebook and its configuration remembered. Hidden tabs may be restored with the add command.thideN(R!RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�SscCs|jj|jd||�S(sZReturns the name of the tab element at position x, y, or the empty string if none.R�(R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�\scCs%|jj|jj|jd|��S(s|Returns the numeric index of the tab specified by tab_id, or the total number of tabs if tab_id is the string "end".R�(R!R�RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�bscKs)|jj|jd||t|��dS(s�Inserts a pane at the specified position. pos is either the string end, an integer index, or the name of a managed child. If child is already managed by the notebook, moves it to the specified position.tinsertN(R!RzR�R5(R�tposR�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�hscCs|jj|jd|�S(s�Selects the specified tab. The associated child window will be displayed, and the previously-selected window (if different) is unmapped. If tab_id is omitted, returns the widget name of the currently selected pane.tselect(R!RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�qscKs5|dk rd||<nt|j||jd|�S(s�Query or modify the options of the specific tab_id. If kw is not given, returns a dict of the tab option values. If option is specified, returns the value of that option. Otherwise, sets the options to the corresponding values.ttabN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�{s cCs(|jj|jj|jd�p$d�S(s2Returns a list of windows managed by the notebook.ttabs((R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jjd|j�dS(s�Enable keyboard traversal for a toplevel window containing this notebook. This will extend the bindings for the toplevel window containing this notebook as follows: Control-Tab: selects the tab following the currently selected one Shift-Control-Tab: selects the tab preceding the currently selected one Alt-K: where K is the mnemonic (underlined) character of any tab, will select that tab. Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks. However, notebook traversal only works properly if all panes are direct children of the notebook.sttk::notebook::enableTraversalN(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytenable_traversal�sN(R�R�R�R0R�R�R�R�R�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR s cBsGeZdZdd�ZejjZd�Zdd�Z dd�Z RS(sfTtk Panedwindow widget displays a number of subwindows, stacked either vertically or horizontally.cKstj||d|�dS(s�Construct a Ttk Panedwindow with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, width, height PANE OPTIONS weight sttk::panedwindowN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKs)|jj|jd||t|��dS(s�Inserts a pane at the specified positions. pos is either the string end, and integer index, or the name of a child. If child is already managed by the paned window, moves it to the specified position.R�N(R!RzR�R5(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKs5|dk rd||<nt|j||jd|�S(sQQuery or modify the options of the specified pane. pane is either an integer index or the name of a managed subwindow. If kw is not given, returns a dict of the pane option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.tpaneN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cCs(|jj|jj|jd||��S(sLIf newpos is specified, sets the position of sash number index. May adjust the positions of adjacent sashes to ensure that positions are monotonically increasing. Sash positions are further constrained to be between 0 and the total size of the widget. Returns the new position of sash number index.tsashpos(R!R�RzR�(R�R�tnewpos((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�RR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR �s cBs;eZdZdd�Zdd�Zdd�Zd�ZRS(s6Ttk Progressbar widget shows the status of a long-running operation. They can operate in two modes: determinate mode shows the amount completed relative to the total amount of work to be done, and indeterminate mode provides an animated display to let the user know that something is happening.cKstj||d|�dS(s�Construct a Ttk Progressbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, length, mode, maximum, value, variable, phase sttk::progressbarN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�dS(s�Begin autoincrement mode: schedules a recurring timer event that calls method step every interval milliseconds. interval defaults to 50 milliseconds (20 steps/second) if omitted.tstartN(R!RzR�(R�tinterval((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�dS(sRIncrements the value option by amount. amount defaults to 1.0 if omitted.tstepN(R!RzR�(R�tamount((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd�dS(sVStop autoincrement mode: cancels any recurring timer event initiated by start.tstopN(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs#eZdZdd�Zd�ZRS(seTtk Radiobutton widgets are used in groups to show or change a set of mutually-exclusive options.cKstj||d|�dS(sConstruct a Ttk Radiobutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, value, variable sttk::radiobuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scCs|jj|jd�S(s�Sets the option variable to the option value, selects the widget, and invokes the associated command. Returns the result of the command, or an empty string if no command is specified.R�(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR scBs5eZdZdd�Zdd�Zddd�ZRS(sTtk Scale widget is typically used to control the numeric value of a linked variable that varies uniformly over some range.cKstj||d|�dS(s�Construct a Ttk Scale with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, from, length, orient, to, value, variable s ttk::scaleN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�*scKsa|r|j|�ntj||�td|kd|kd|kg�r]|jd�ndS(s�Modify or query scale options. Setting a value for any of the "from", "from_" or "to" options generates a <<RangeChanged>> event.REtfrom_ttos<<RangeChanged>>N(tupdateR�RZtanytevent_generate(R�tcnfRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyRZ8s 'cCs|jj|jd||�S(s�Get the current value of the value option, or the value corresponding to the coordinates x, y if they are specified. x and y are pixel coordinates relative to the scale widget origin.R (R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR DsN(R�R�R�R0R�RZR (((s"/usr/lib64/python2.7/lib-tk/ttk.pyR&scBseZdZdd�ZRS(s;Ttk Scrollbar controls the viewport of a scrollable widget.cKstj||d|�dS(s�Construct a Ttk Scrollbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, orient sttk::scrollbarN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�PsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRMscBseZdZdd�ZRS(sITtk Separator widget displays a horizontal or vertical separator bar.cKstj||d|�dS(s�Construct a Ttk Separator with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient sttk::separatorN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�bsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR^scBseZdZdd�ZRS(slTtk Sizegrip allows the user to resize the containing toplevel window by pressing and dragging the grip.cKstj||d|�dS(s�Construct a Ttk Sizegrip with parent master. STANDARD OPTIONS class, cursor, state, style, takefocus s ttk::sizegripN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�tsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRpscBsdeZdZd!d�Zd!d�Zd!d�Zd�Zd!d�Zd�Z d�Z d�Zd!d �Zd!d �Z d�Zd�Zd �Zd�Zd�Zd�Zd!d�Zd!d�Zd�ZeZd�Zd�Zd�Zd�Zd!d!d�Zd�Zd�Zd�Zd�Z d!d!d�Z!d!d!d�Z"d!d�Z#d!d �Z$RS("s�Ttk Treeview widget displays a hierarchical collection of items. Each item has a textual label, an optional image, and an optional list of data values. The data values are displayed in successive columns after the tree label.cKstj||d|�dS(s�Construct a Ttk Treeview with parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand, yscrollcommand WIDGET-SPECIFIC OPTIONS columns, displaycolumns, height, padding, selectmode, show ITEM OPTIONS text, image, values, open, tags TAG OPTIONS foreground, background, font, image s ttk::treeviewN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs+|j|jj|jd||��p*dS(sTReturns the bounding box (relative to the treeview widget's window) of the specified item in the form x y width height. If column is specified, returns the bounding box of that cell. If the item is not visible (i.e., if it is a descendant of a closed item or is scrolled offscreen), returns an empty string.R�R6(R�R!RzR�(R�R<tcolumn((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs1|jj|jj|jd|p$d�p-d�S(shReturns a tuple of children belonging to item. If item is not specified, returns root children.RPR6((R!RsRzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pytget_children�s cGs |jj|jd||�dS(s�Replaces item's child with newchildren. Children present in item that are not present in newchildren are detached from tree. No items in newchildren may be an ancestor of item.RPN(R!RzR�(R�R<tnewchildren((s"/usr/lib64/python2.7/lib-tk/ttk.pytset_children�scKs5|dk rd||<nt|j||jd|�S(s Query or modify the options for the specified column. If kw is not given, returns a dict of the column option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.R�N(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cGs|jj|jd|�dS(s_Delete all specified items and all their descendants. The root item may not be deleted.tdeleteN(R!RzR�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scGs|jj|jd|�dS(s�Unlinks all of the specified items from the tree. The items and all of their descendants are still present, and may be reinserted at another point in the tree, but will not be displayed. The root item may not be detached.tdetachN(R!RzR�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs%|jj|jj|jd|��S(sSReturns True if the specified item is present in the tree, False otherwise.texists(R!R�RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�S(s}If item is specified, sets the focus item to item. Otherwise, returns the current focus item, or '' if there is none.tfocus(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKsy|jd�}|rDt|t�rD|jj||j�|d<n|dk r]d||<nt|j||j d|�S(s_Query or modify the heading options for the specified column. If kw is not given, returns a dict of the heading option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values. Valid options/values are: text: text The text to display in the column heading image: image_name Specifies an image to display to the right of the column heading anchor: anchor Specifies how the heading text should be aligned. One of the standard Tk anchor values command: callback A callback to be invoked when the heading label is pressed. To configure the tree column heading, call this with column = "#0" tcommandtheadingN( R R(R�R%tregistert_substituteR0R}R!R�(R�R�R�RHtcmd((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cCs|jj|jd|||�S(s�Returns a description of the specified component under the point given by x and y, or the empty string if no such component is present at that position.R�(R!RzR�(R�t componentR�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jdd|�S(s.Returns the item ID of the item at position y.trowi(R�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_rowscCs|jd|d�S(saReturns the data column identifier of the cell at position x. The tree column has ID #0.R�i(R�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_column scCs|jd||�S(s�Returns one of: heading: Tree heading area. separator: Space between two columns headings; tree: The tree area. cell: A data cell. * Availability: Tk 8.6tregion(R�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_regions cCs|jd||�S(sEReturns the element at position x, y. * Availability: Tk 8.6R�(R�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_elementscCs%|jj|jj|jd|��S(sOReturns the integer index of item within its parent's list of children.R�(R!R�RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�#scKsgt|�}|dk rB|jj|jd||d||�}n!|jj|jd|||�}|S(s�Creates a new item and return the item identifier of the newly created item. parent is the item ID of the parent item, or the empty string to create a new top-level item. index is an integer, or the value end, specifying where in the list of parent's children to insert the new item. If index is less than or equal to zero, the new node is inserted at the beginning, if index is greater than or equal to the current number of children, it is inserted at the end. If iid is specified, it is used as the item identifier, iid must not already exist in the tree. Otherwise, a new unique identifier is generated.R�s-idN(R5R0R!RzR�(R�R�R�tiidRHR3Rw((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�)s !cKs5|dk rd||<nt|j||jd|�S(s-Query or modify the options for the specified item. If no options are given, a dict with options/values for the item is returned. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values as given by kw.R<N(R0R}R!R�(R�R<R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR<@s cCs#|jj|jd|||�dS(sRMoves item to position index in parent's list of children. It is illegal to move an item under one of its descendants. If index is less than or equal to zero, item is moved to the beginning, if greater than or equal to the number of children, it is moved to the end. If item was detached it is reattached.tmoveN(R!RzR�(R�R<R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�LscCs|jj|jd|�S(seReturns the identifier of item's next sibling, or '' if item is the last child of its parent.tnext(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�XscCs|jj|jd|�S(saReturns the ID of the parent of item, or '' if item is at the top level of the hierarchy.R�(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�^scCs|jj|jd|�S(sjReturns the identifier of item's previous sibling, or '' if item is the first child of its parent.tprev(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�dscCs|jj|jd|�dS(s�Ensure that item is visible. Sets all of item's ancestors open option to True, and scrolls the widget if necessary so that item is within the visible portion of the tree.tseeN(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�jscCsCt|t�r|f}n|jj|jj|jd||��S(s2If selop is not specified, returns selected items.t selection(R(R�R!RsRzR�(R�tselopR:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sscCs|jd|�dS(s items becomes the new selection.R�N(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyt selection_setzscCs|jd|�dS(sAdd items to the selection.R�N(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyt selection_addscCs|jd|�dS(s Remove items from the selection.tremoveN(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pytselection_remove�scCs|jd|�dS(s1Toggle the selection state of each item in items.ttoggleN(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pytselection_toggle�scCs]|jj|jd|||�}|dkrU|dkrUt|j|dtdt�S|SdS(s;Query or set the value of given item. With one argument, return a dictionary of column/value pairs for the specified item. With two arguments, return the current value of the specified column. With three arguments, set the value of given column in given item to the specified value.R�t cut_minusRyN(R!RzR�R0RR�R{(R�R<R�R+Rw((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s ! cCs,|j|jdd|f||dd�dS(s�Bind a callback for the given event sequence to the tag tagname. When an event is delivered to an item, the callbacks for each of the item's tags option are called.ttagtbindR�iN(t_bindR�(R�ttagnametsequenceR�((s"/usr/lib64/python2.7/lib-tk/ttk.pyttag_bind�scKs8|dk rd||<nt|j||jdd|�S(sBQuery or modify the options for the specified tagname. If kw is not given, returns a dict of the option settings for tagname. If option is specified, returns the value for that option for the specified tagname. Otherwise, sets the options to the corresponding values for the given tagname.R�RZN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyt tag_configure�s cCsc|dkr4|jj|jj|jdd|��S|jj|jj|jdd||��SdS(s�If item is specified, returns 1 or 0 depending on whether the specified item has the given tagname. Otherwise, returns a list of all items which have the specified tag. * Availability: Tk 8.6R�thasN(R0R!RsRzR�R�(R�R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyttag_has�s N(%R�R�R�R0R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R<R�treattachR�R�R�R�R�R�R�R�R�R�R�RR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR~sD cBsVeZdZddddd�Zd�Zd�Zd�Zd�Ze ee�Z RS( s�A Ttk Scale widget with a Ttk Label widget indicating its current value. The Ttk Scale can be accessed through instance.scale, and Ttk Label can be accessed through instance.labelii c Ksp|jdd�dk|_tj|||�|p@tj|�|_|jj|�||_t |�|_ t|d|jd|d|�|_|jj d|j�|jr�dnd}|dkr�dnd}|jjd|d d �t |�jd|�}|j jd|dkr$dnd �|jjd|j�|_|j d|j�|j d|j�dS(s�Construct a horizontal LabeledScale with parent master, a variable to be associated with the Ttk Scale widget and its range. If variable is not specified, a Tkinter.IntVar is created. WIDGET-SPECIFIC OPTIONS compound: 'top' or 'bottom' Specifies how to display the label relative to the scale. Defaults to 'top'. tcompoundttoptvariableR�R�s<<RangeChanged>>tbottomtsidetfillR�tanchortnR`tws<Configure>s<Map>N(tpopt _label_topRR�R�tIntVart _variableR�t_last_validRtlabelRtscaleR�t_adjusttpacktplacettrace_variablet_LabeledScale__tracecb( R�R%RR�R�RHt scale_sidet label_sidettmp((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s $%cCsWy|jjd|j�Wntk r-nX|`tj|�d|_d|_dS(s9Destroy this widget and possibly its associated variable.RN( Rt trace_vdeleteRtAttributeErrorRtdestroyR0RR(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cs��fd�}t�jd�}t�jd�}||krQ||}}n�jj�}||kow|kns��j�_dS|�_|�jd<�j|�dS(s1Adjust the label position according to the scale.cs��j��jj�\}}�jrG�jj��jj�}n�jj��jj�}�jjd|d|�dS(NR�R�(tupdate_idletasksRtcoordsRtwinfo_yRtwinfo_reqheighttplace_configure(R�R�(R�(s"/usr/lib64/python2.7/lib-tk/ttk.pytadjust_label�s RER�Nttext(R�RRR RR+Rt after_idle(R�RGR$R�R�tnewval((R�s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cCs |jj�S(sReturn current scale value.(RR (R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _get_valuescCs|jj|�dS(sSet new scale value.N(RR�(R�R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _set_valuesN(R�R�R�R0R�RRR(R)tpropertyR+(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s# cBs8eZdZdd�Zd�Zdd�Zd�ZRS(smThemed OptionMenu, based after Tkinter's OptionMenu, which allows the user to select a value from a menu.cOs�i|d6|jdd�d6|jdd�d6}tj|||�tj|dt�|d<||_|jdd�|_|r�tj d|j �j���n|j||�dS( s9Construct a themed OptionMenu widget with master as the parent, the resource textvariable set to variable, the initially selected value specified by the default parameter, the menu values given by *values and additional keywords. WIDGET-SPECIFIC OPTIONS style: stylename Menubutton style. direction: 'above', 'below', 'left', 'right', or 'flush' Menubutton direction. command: callback A callback that will be invoked after selecting an item. ttextvariableR�t directionttearofftmenuR�sunknown option -%sN( R R0RR�R�tMenuR�Rt _callbacktTclErrortiterkeysR�tset_menu(R�R%RR�tvaluestkwargsRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�&s cCs5|dkr%|jtj||��Stj||�S(NR.(tnametowidgetRt__getitem__(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR7Csc Gs||d}|jdd�xB|D]:}|jd|dtj|j||j�d|j�q!W|rx|jj|�ndS(sUBuild a new menu of radiobuttons with *values and optionally a default value.R.itendRR�RN(R�tadd_radiobuttonR�t_setitRR0R�(R�R�R4R.R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyR3Js cCs/y |`Wntk rnXtj|�dS(s0Destroy this widget and its associated variable.N(RRRR(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyRXs N(R�R�R�R0R�R7R3R(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR"s (8R�t__version__t __author__t__all__R�RRRRt TkVersionR#R�RR'R-R0R5R?RBRORQRfRqRuR}R�R�R{RRtobjectRR�RRRRRRRRRR RR RR RRRRtXViewtYViewRRR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyt<module> sf" %1 * �B*"�8*'"�Dattk.pyo000064400000172244151703463030006113 0ustar00� zfc@sYdZdZdZddddddd d ddd dddddddddddddgZddlZddlmZmZmZmZej dkr�e neZd�Z ed �Zeed!�Zd"�Zed#�Zed$�Zd%d&d'�Zd(�Zd)�Zd*�Zd+�Zd,�Zd-�Zd.�Zd/�Zed0�Zdefd1��YZd2ej fd3��YZ de fd4��YZ!de fd5��YZ"de ej#fd6��YZ#de#fd7��YZ$de fd8��YZ%de fd9��YZ&d e fd:��YZ'e'Z(de fd;��YZ)de fd<��YZ*d e ej+fd=��YZ,e,Z+de fd>��YZ-de fd?��YZ.de ej/fd@��YZ/de ej0fdA��YZ0de fdB��YZ1de fdC��YZ2de ej3ej4fdD��YZ5de%efdE��YZ6de)fdF��YZ7dS(Gs�Ttk wrapper. This module provides classes to allow using Tk themed widget set. Ttk is based on a revised and enhanced version of TIP #48 (http://tip.tcl.tk/48) specified style engine. Its basic idea is to separate, to the extent possible, the code implementing a widget's behavior from the code implementing its appearance. Widget class bindings are primarily responsible for maintaining the widget state and invoking callbacks, all aspects of the widgets appearance lies at Themes. s0.3.1s!Guilherme Polo <ggpolo@gmail.com>tButtontCheckbuttontComboboxtEntrytFrametLabelt Labelframet LabelFramet MenubuttontNotebooktPanedwindowtPanedWindowtProgressbartRadiobuttontScalet Scrollbart SeparatortSizegriptStyletTreeviewtLabeledScalet OptionMenut tclobjs_to_pytsetup_masteri����N(t_flattent_joint _stringifyt _splitdictg!@cCsatr]ddl}|jjd�}|rA|jjd|�n|jjd�t|_ndS(Ni����tTILE_LIBRARYs(global auto_path; lappend auto_path {%s}spackage require tile(t _REQUIRE_TILEtostenvirontgetttktevaltTruet_tile_loaded(tmasterRttilelib((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _load_tile"s cCs=|rt|�}n$t|ttf�r9t|�}n|S(sInternal function.(Rt isinstancetlistttupleR(tvaluetscript((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_optvalue1s cCsyg}xf|j�D]X\}}|s2||kr|jd|�|dk rk|jt||��qkqqWt|�S(s�Formats optdict to a tuple to pass it to tk.call. E.g. (script=False): {'foreground': 'blue', 'padding': [1, 2, 3, 4]} returns: ('-foreground', 'blue', '-padding', '1 2 3 4')s-%sN(t iteritemstappendtNoneR-R(toptdictR,tignoretoptstoptR+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_optdict;s cCs�g}x�|D]}|d }|d}|dt|�dkrT|dpNd}ndj|�}|j|�|dk r |j|�q q W|S(Ni����iitt (tlentjoinR/R0(titemstopt_valtitemtstatetval((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_mapdict_valuesKs cCsSg}x@|j�D]2\}}|jd|tt|�|�f�qWt|�S(s�Formats mapdict to pass it to tk.call. E.g. (script=False): {'expand': [('active', 'selected', 'grey'), ('focus', [1, 2, 3, 4])]} returns: ('-expand', '{active selected} grey focus {1, 2, 3, 4}')s-%s(R.textendR-R?R(tmapdictR,R3R4R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_mapdictds cOsd}d}|d kr�|dkrW|d}tt|d��}d||f}n9|d \}} tt|d��} d|| | f}t||�}nD|dkr�|d}t|�dkr�t|d|�f}q�n|rd |}d j|�}n||fS(sAFormats args and kw according to the given element factory etype.timagetvsapiiis%s %sis%s %s %stfroms{%s}R7N((RCRD(R0RR?R5R8R-R9(tetypeR,targstkwtspecR3tinamet imagespect class_nametpart_idtstatemap((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_format_elemcreateus& iic Csg}x�|D]�}|\}}|p(i}djt|td ��}dd|||rcd|ndf}d|kr�|j|d�||7}t|d||�\} }|j| �||8}|jdd|�q |j|�q Wdj|�|fS( s$Formats a layout list so we can pass the result to ttk::style layout and ttk::style settings. Note that the layout doesn't have to be a list necessarily. E.g.: [("Menubutton.background", None), ("Menubutton.button", {"children": [("Menubutton.focus", {"children": [("Menubutton.padding", {"children": [("Menubutton.label", {"side": "left", "expand": 1})] })] })] }), ("Menubutton.indicator", {"side": "right"}) ] returns: Menubutton.background Menubutton.button -children { Menubutton.focus -children { Menubutton.padding -children { Menubutton.label -side left -expand 1 } } } Menubutton.indicator -side rightR7tchildrens%s%s%ss %sR6s -children {s%s}s (RP(R9R5R#R/t_format_layoutlist( tlayouttindenttindent_sizeR,tlayout_elemtelemR3tfoptstheadt newscript((s"/usr/lib64/python2.7/lib-tk/ttk.pyRQ�s ' cCs�g}x�|j�D]�\}}|jd�rddjt|dt��}|jd||f�n|jd�r�djt|dt��}|jd||f�nd|kr�|ds�d}nt|d�\}}|jd||f�n|jd �r|d }|d }d}x4|t|�krWt ||d�rW|d7}q$W|d|!} |t|�kr�||r�||ni} t |t| | �\}}|jd ||||f�qqWdj|�S(s�Returns an appropriate script, based on settings, according to theme_settings definition to be used by theme_settings and theme_create.t configureR7sttk::style configure %s %s;tmapsttk::style map %s %s;RRtnullsttk::style layout %s { %s }selement createiiR.s%ttk::style element create %s %s %s %ss (R.R R9R5R#R/RBRQR8thasattrRO(tsettingsR,tnameR3tst_teoptsRFtargctelemargstelemkwRI((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_script_from_settings�s2 ) , cCs�g}xp|D]h}t|dd�}|dkrA|j|�q t|�}|dkrh|j�}n|j|�q Wt|�}gt||�D]}t|�^q�S(stConstruct a list from the given statespec tuple according to the accepted statespec accepted by _format_mapdict.ttypenamet StateSpecN(tgetattrR0R/tstrtsplittitertzipR(tstupletnvalR>RgtitRI((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_list_from_statespec�s cCs�|j|�}g}d}x�|t|�kr�||}i}|j||f�|d7}x||t|�kr�|||d!\}}|jd�s�Pn|d}|d7}|dkr�t||�}n|||<q`WqW|S(spConstruct a list from the tuple returned by ttk::layout, this is somewhat the reverse of _format_layoutlist.iiit-RP(t splitlistR8R/t startswitht_list_from_layouttuple(R!tltupletrestindxR_R3R4R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyRus$ cGsFt|�}|j||�}t|�dr3|St||dt�S(shFormat options then call Tk command with args and options and return the appropriate result. If no option is specified, a dict is returned. If an option is specified with the None value, the value for that option is returned. Otherwise, the function just sets the passed options and the caller shouldn't be expecting a return value anyway.itconv(R5tcallR8Rt _tclobj_to_py(R!toptionsRGRw((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_val_or_dict"s cCs:t|�}yt|�}Wnttfk r5nX|S(sAConverts a value to, hopefully, a more appropriate Python object.(tunicodetintt ValueErrort TypeError(R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyt_convert_stringval2scCs=t|t�r9d|kr*t|�}q9t|�}n|S(Nt.(R(RjtfloatR(tx((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _to_number<s cCs�|rbt|d�rbt|t�rbt|ddd�dkrPt|�}q�tt|�}nt|d�r�t|�}n|S(s8Return value converted from Tcl object to Python object.t__len__iRgRhN(R]R(t basestringRiR0RqR[R�(R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyR{Ds%cCs1x*|j�D]\}}t|�||<q W|S(sOReturns adict with its values converted from Tcl objects to Python objects.(R:R{(tadictR4R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyRQscCs@|dkr<tjr-tjp'tj�}q<td��n|S(sIf 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.sINo master specified and Tkinter is configured to not support default rootN(R0tTkintert_support_default_roott _default_roottTktRuntimeError(R%((s"/usr/lib64/python2.7/lib-tk/ttk.pyRYs cBs�eZdZdZdd�Zdd�Zdd�Zddd�Zdd�Z d�Z d�Zd �Zddd �Z d�Zd�Zdd �ZRS(sManipulate style database.s ttk::stylecCsGt|�}t|dt�s+t|�n||_|jj|_dS(NR$(RRitFalseR'R%R!(tselfR%((s"/usr/lib64/python2.7/lib-tk/ttk.pyt__init__os cKs5|dk rd||<nt|j||jd|�S(s�Query or sets the default value of the specified option(s) in style. Each key in kw is an option and each value is either a string or a sequence identifying the value for that option.RZN(R0R}R!t_name(R�tstylet query_optRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyRZzs cKsr|dk r>t|jj|jj|jd|d|���St|j|jj|jd|t|��dt�S(sSQuery or sets dynamic values of the specified option(s) in style. Each key in kw is an option and each value should be a list or a tuple (usually) containing statespecs grouped in tuples, or list, or something else of your preference. A statespec is compound of one or more states and then a value.R[s-%sRyN( R0RqR!RsRzR�RRBR{(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR[�s&$cCsA|rdj|�nd}|jj|jd|d|||�S(sReturns the value specified for option in style. If state is specified it is expected to be a sequence of one or more states. If the default argument is set, it is used as a fallback value in case no specification for option is found.R7R6tlookups-%s(R9R!RzR�(R�R�toptionR=tdefault((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs\d}|rt|�d}n|dk r4d}nt|j|jj|jd||��S(s�Define the widget layout for given style. If layoutspec is omitted, return the layout specification for given style. layoutspec is expected to be a list or an object different than None that evaluates to False if you want to "turn off" that style. If it is a list (or tuple, or something else), each item should be a tuple where the first item is the layout name and the second item should have the format described below: LAYOUTS A layout can contain the value None, if takes no options, or a dict of options specifying how to arrange the element. The layout mechanism uses a simplified version of the pack geometry manager: given an initial cavity, each element is allocated a parcel. Valid options/values are: side: whichside Specifies which side of the cavity to place the element; one of top, right, bottom or left. If omitted, the element occupies the entire cavity. sticky: nswe Specifies where the element is placed inside its allocated parcel. children: [sublayout... ] Specifies a list of elements to place inside the element. Each element is a tuple (or other sequence) where the first item is the layout name, and the other is a LAYOUT.iR\RRN(R0RQRuR!RzR�(R�R�t layoutspectlspec((s"/usr/lib64/python2.7/lib-tk/ttk.pyRR�s cOsDt|t||�\}}|jj|jdd||||�dS(s9Create a new element in the current theme of given etype.telementtcreateN(ROR�R!RzR�(R�telementnameRFRGRHRIR3((s"/usr/lib64/python2.7/lib-tk/ttk.pytelement_create�scCs%|jj|jj|jdd��S(s:Returns the list of elements defined in the current theme.R�tnames(R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt element_names�scCs(|jj|jj|jdd|��S(s)Return the list of elementname's options.R�R|(R!RsRzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytelement_options�sc Cso|rt|�nd}|rI|jj|jdd|d|d|�n"|jj|jdd|d|�dS(s.Creates a new theme. It is an error if themename already exists. If parent is specified, the new theme will inherit styles, elements and layouts from the specified parent theme. If settings are present, they are expected to have the same syntax used for theme_settings.R6tthemeR�s-parents -settingsN(RfR!RzR�(R�t themenametparentR^R,((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_create�scCs/t|�}|jj|jdd||�dS(s�Temporarily sets the current theme to themename, apply specified settings and then restore the previous theme. Each key in settings is a style and each value may contain the keys 'configure', 'map', 'layout' and 'element create' and they are expected to have the same format as specified by the methods configure, map, layout and element_create respectively.R�R^N(RfR!RzR�(R�R�R^R,((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_settings�scCs%|jj|jj|jdd��S(s#Returns a list of all known themes.R�R�(R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyttheme_names�scCs3|dkr|jjd�S|jjd|�dS(s�If themename is None, returns the theme in use, otherwise, set the current theme to themename, refreshes all widgets and emits a <<ThemeChanged>> event.sreturn $ttk::currentThemes ttk::setThemeN(R0R!R"Rz(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt theme_usesN(t__name__t __module__t__doc__R�R0R�RZR[R�RRR�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRjs+ tWidgetcBs;eZdZdd�Zd�Zdd�Zdd�ZRS(s!Base class for Tk themed widgets.cCsKt|�}t|dt�s+t|�ntjj|||d|�dS(s�Constructs a Ttk Widget with the parent master. STANDARD OPTIONS class, cursor, takefocus, style SCROLLABLE WIDGET OPTIONS xscrollcommand, yscrollcommand LABEL WIDGET OPTIONS text, textvariable, underline, image, compound, width WIDGET STATES active, disabled, focus, pressed, selected, background, readonly, alternate, invalid R$RHN(RRiR�R'R�R�R�(R�R%t widgetnameRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cCs|jj|jd||�S(s�Returns the name of the element at position x, y, or the empty string if the point does not lie within any element. x and y are pixel coordinates relative to the widget.tidentify(R!Rzt_w(R�R�ty((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�.scOsM|jj|jj|jddj|���}|rI|rI|||�S|S(s1Test the widget's state. If callback is not specified, returns True if the widget state matches statespec and False otherwise. If callback is specified, then it will be invoked with *args, **kw if the widget state matches statespec. statespec is expected to be a sequence.tinstateR7(R!t getbooleanRzR�R9(R�t statespectcallbackRGRHtret((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�6s ' cCsI|dk rdj|�}n|jjt|jj|jd|���S(sModify or inquire widget state. Widget state is returned if statespec is None, otherwise it is set according to the statespec flags and then a new state spec is returned indicating which flags were changed. statespec is expected to be a sequence.R7R=N(R0R9R!RsRjRzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR=EsN(R�R�R�R0R�R�R�R=(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs#eZdZdd�Zd�ZRS(scTtk Button widget, displays a textual label and/or image, and evaluates a command when pressed.cKstj||d|�dS(sConstruct a Ttk Button widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, default, width sttk::buttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�VscCs|jj|jd�S(s/Invokes the command associated with the button.tinvoke(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�esN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRRscBs#eZdZdd�Zd�ZRS(s;Ttk Checkbutton widget which is either in on- or off-state.cKstj||d|�dS(s'Construct a Ttk Checkbutton widget with the parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, offvalue, onvalue, variable sttk::checkbuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�mscCs|jj|jd�S(sWToggles between the selected and deselected states and invokes the associated command. If the widget is currently selected, sets the option variable to the offvalue option and deselects the widget; otherwise, sets the option variable to the option onvalue. Returns the result of the associated command.R�(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�|sN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRjscBs8eZdZddd�Zd�Zd�Zd�ZRS(seTtk Entry widget displays a one-line text string and allows that string to be edited by the user.cKs tj|||pd|�dS(s�Constructs a Ttk Entry widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand WIDGET-SPECIFIC OPTIONS exportselection, invalidcommand, justify, show, state, textvariable, validate, validatecommand, width VALIDATION MODES none, key, focus, focusin, focusout, all s ttk::entryN(R�R�(R�R%twidgetRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs"|j|jj|jd|��S(sqReturn a tuple of (x, y, width, height) which describes the bounding box of the character given by index.tbbox(t_getintsR!RzR�(R�tindex((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd||�S(sxReturns the name of the element at position x, y, or the empty string if the coordinates are outside the window.R�(R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs"|jj|jj|jd��S(s�Force revalidation, independent of the conditions specified by the validate option. Returns False if validation fails, True if it succeeds. Sets or clears the invalid state accordingly.tvalidate(R!R�RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs/eZdZdd�Zdd�Zd�ZRS(sMTtk Combobox widget combines a text field with a pop-down list of values.cKstj||d|�dS(sConstruct a Ttk Combobox widget with the parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS exportselection, justify, height, postcommand, state, textvariable, values, width s ttk::comboboxN(RR�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCsG|dkr.|jj|jj|jd��S|jj|jd|�S(sIf newindex is supplied, sets the combobox value to the element at position newindex in the list of values. Otherwise, returns the index of the current value in the list of values or -1 if the current value does not appear in the list.tcurrentN(R0R!tgetintRzR�(R�tnewindex((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s"cCs|jj|jd|�dS(s(Sets the value of the combobox to value.tsetN(R!RzR�(R�R+((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBseZdZdd�ZRS(sJTtk Frame widget is a container, used to group other widgets together.cKstj||d|�dS(s�Construct a Ttk Frame with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS borderwidth, relief, padding, width, height s ttk::frameN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(s7Ttk Label widget displays a textual label and/or image.cKstj||d|�dS(sGConstruct a Ttk Label with parent master. STANDARD OPTIONS class, compound, cursor, image, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS anchor, background, font, foreground, justify, padding, relief, text, wraplength s ttk::labelN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s N(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(s�Ttk Labelframe widget is a container used to group other widgets together. It has an optional label, which may be a plain text string or another widget.cKstj||d|�dS(s�Construct a Ttk Labelframe with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS labelanchor, text, underline, padding, labelwidget, width, height sttk::labelframeN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scBseZdZdd�ZRS(sbTtk Menubutton widget displays a textual label and/or image, and displays a menu when pressed.cKstj||d|�dS(sConstruct a Ttk Menubutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS direction, menu sttk::menubuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR scBszeZdZdd�Zd�Zd�Zd�Zd�Zd�Z d�Z dd�Zdd �Zd �Z d�ZRS( s�Ttk Notebook widget manages a collection of windows and displays a single one at a time. Each child window is associated with a tab, which the user may select to change the currently-displayed window.cKstj||d|�dS(s\Construct a Ttk Notebook with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS height, padding, width TAB OPTIONS state, sticky, padding, text, image, compound, underline TAB IDENTIFIERS (tab_id) The tab_id argument found in several methods may take any of the following forms: * An integer between zero and the number of tabs * The name of a child window * A positional specification of the form "@x,y", which defines the tab * The string "current", which identifies the currently-selected tab * The string "end", which returns the number of tabs (only valid for method index) s ttk::notebookN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�%scKs&|jj|jd|t|��dS(s�Adds a new tab to the notebook. If window is currently managed by the notebook but hidden, it is restored to its previous position.taddN(R!RzR�R5(R�tchildRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�EscCs|jj|jd|�dS(sXRemoves the tab specified by tab_id, unmaps and unmanages the associated window.tforgetN(R!RzR�(R�ttab_id((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�MscCs|jj|jd|�dS(s�Hides the tab specified by tab_id. The tab will not be displayed, but the associated window remains managed by the notebook and its configuration remembered. Hidden tabs may be restored with the add command.thideN(R!RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�SscCs|jj|jd||�S(sZReturns the name of the tab element at position x, y, or the empty string if none.R�(R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�\scCs%|jj|jj|jd|��S(s|Returns the numeric index of the tab specified by tab_id, or the total number of tabs if tab_id is the string "end".R�(R!R�RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�bscKs)|jj|jd||t|��dS(s�Inserts a pane at the specified position. pos is either the string end, an integer index, or the name of a managed child. If child is already managed by the notebook, moves it to the specified position.tinsertN(R!RzR�R5(R�tposR�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�hscCs|jj|jd|�S(s�Selects the specified tab. The associated child window will be displayed, and the previously-selected window (if different) is unmapped. If tab_id is omitted, returns the widget name of the currently selected pane.tselect(R!RzR�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�qscKs5|dk rd||<nt|j||jd|�S(s�Query or modify the options of the specific tab_id. If kw is not given, returns a dict of the tab option values. If option is specified, returns the value of that option. Otherwise, sets the options to the corresponding values.ttabN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�{s cCs(|jj|jj|jd�p$d�S(s2Returns a list of windows managed by the notebook.ttabs((R!RsRzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jjd|j�dS(s�Enable keyboard traversal for a toplevel window containing this notebook. This will extend the bindings for the toplevel window containing this notebook as follows: Control-Tab: selects the tab following the currently selected one Shift-Control-Tab: selects the tab preceding the currently selected one Alt-K: where K is the mnemonic (underlined) character of any tab, will select that tab. Multiple notebooks in a single toplevel may be enabled for traversal, including nested notebooks. However, notebook traversal only works properly if all panes are direct children of the notebook.sttk::notebook::enableTraversalN(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytenable_traversal�sN(R�R�R�R0R�R�R�R�R�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR s cBsGeZdZdd�ZejjZd�Zdd�Z dd�Z RS(sfTtk Panedwindow widget displays a number of subwindows, stacked either vertically or horizontally.cKstj||d|�dS(s�Construct a Ttk Panedwindow with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, width, height PANE OPTIONS weight sttk::panedwindowN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKs)|jj|jd||t|��dS(s�Inserts a pane at the specified positions. pos is either the string end, and integer index, or the name of a child. If child is already managed by the paned window, moves it to the specified position.R�N(R!RzR�R5(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKs5|dk rd||<nt|j||jd|�S(sQQuery or modify the options of the specified pane. pane is either an integer index or the name of a managed subwindow. If kw is not given, returns a dict of the pane option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.tpaneN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cCs(|jj|jj|jd||��S(sLIf newpos is specified, sets the position of sash number index. May adjust the positions of adjacent sashes to ensure that positions are monotonically increasing. Sash positions are further constrained to be between 0 and the total size of the widget. Returns the new position of sash number index.tsashpos(R!R�RzR�(R�R�tnewpos((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��sN(R�R�R�R0R�R�RR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR �s cBs;eZdZdd�Zdd�Zdd�Zd�ZRS(s6Ttk Progressbar widget shows the status of a long-running operation. They can operate in two modes: determinate mode shows the amount completed relative to the total amount of work to be done, and indeterminate mode provides an animated display to let the user know that something is happening.cKstj||d|�dS(s�Construct a Ttk Progressbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient, length, mode, maximum, value, variable, phase sttk::progressbarN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�dS(s�Begin autoincrement mode: schedules a recurring timer event that calls method step every interval milliseconds. interval defaults to 50 milliseconds (20 steps/second) if omitted.tstartN(R!RzR�(R�tinterval((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�dS(sRIncrements the value option by amount. amount defaults to 1.0 if omitted.tstepN(R!RzR�(R�tamount((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd�dS(sVStop autoincrement mode: cancels any recurring timer event initiated by start.tstopN(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cBs#eZdZdd�Zd�ZRS(seTtk Radiobutton widgets are used in groups to show or change a set of mutually-exclusive options.cKstj||d|�dS(sConstruct a Ttk Radiobutton with parent master. STANDARD OPTIONS class, compound, cursor, image, state, style, takefocus, text, textvariable, underline, width WIDGET-SPECIFIC OPTIONS command, value, variable sttk::radiobuttonN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�scCs|jj|jd�S(s�Sets the option variable to the option value, selects the widget, and invokes the associated command. Returns the result of the command, or an empty string if no command is specified.R�(R!RzR�(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sN(R�R�R�R0R�R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR scBs5eZdZdd�Zdd�Zddd�ZRS(sTtk Scale widget is typically used to control the numeric value of a linked variable that varies uniformly over some range.cKstj||d|�dS(s�Construct a Ttk Scale with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, from, length, orient, to, value, variable s ttk::scaleN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�*scKsa|r|j|�ntj||�td|kd|kd|kg�r]|jd�ndS(s�Modify or query scale options. Setting a value for any of the "from", "from_" or "to" options generates a <<RangeChanged>> event.REtfrom_ttos<<RangeChanged>>N(tupdateR�RZtanytevent_generate(R�tcnfRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyRZ8s 'cCs|jj|jd||�S(s�Get the current value of the value option, or the value corresponding to the coordinates x, y if they are specified. x and y are pixel coordinates relative to the scale widget origin.R (R!RzR�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR DsN(R�R�R�R0R�RZR (((s"/usr/lib64/python2.7/lib-tk/ttk.pyR&scBseZdZdd�ZRS(s;Ttk Scrollbar controls the viewport of a scrollable widget.cKstj||d|�dS(s�Construct a Ttk Scrollbar with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS command, orient sttk::scrollbarN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�PsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRMscBseZdZdd�ZRS(sITtk Separator widget displays a horizontal or vertical separator bar.cKstj||d|�dS(s�Construct a Ttk Separator with parent master. STANDARD OPTIONS class, cursor, style, takefocus WIDGET-SPECIFIC OPTIONS orient sttk::separatorN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�bsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR^scBseZdZdd�ZRS(slTtk Sizegrip allows the user to resize the containing toplevel window by pressing and dragging the grip.cKstj||d|�dS(s�Construct a Ttk Sizegrip with parent master. STANDARD OPTIONS class, cursor, state, style, takefocus s ttk::sizegripN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�tsN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyRpscBsdeZdZd!d�Zd!d�Zd!d�Zd�Zd!d�Zd�Z d�Z d�Zd!d �Zd!d �Z d�Zd�Zd �Zd�Zd�Zd�Zd!d�Zd!d�Zd�ZeZd�Zd�Zd�Zd�Zd!d!d�Zd�Zd�Zd�Zd�Z d!d!d�Z!d!d!d�Z"d!d�Z#d!d �Z$RS("s�Ttk Treeview widget displays a hierarchical collection of items. Each item has a textual label, an optional image, and an optional list of data values. The data values are displayed in successive columns after the tree label.cKstj||d|�dS(s�Construct a Ttk Treeview with parent master. STANDARD OPTIONS class, cursor, style, takefocus, xscrollcommand, yscrollcommand WIDGET-SPECIFIC OPTIONS columns, displaycolumns, height, padding, selectmode, show ITEM OPTIONS text, image, values, open, tags TAG OPTIONS foreground, background, font, image s ttk::treeviewN(R�R�(R�R%RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs+|j|jj|jd||��p*dS(sTReturns the bounding box (relative to the treeview widget's window) of the specified item in the form x y width height. If column is specified, returns the bounding box of that cell. If the item is not visible (i.e., if it is a descendant of a closed item or is scrolled offscreen), returns an empty string.R�R6(R�R!RzR�(R�R<tcolumn((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs1|jj|jj|jd|p$d�p-d�S(shReturns a tuple of children belonging to item. If item is not specified, returns root children.RPR6((R!RsRzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pytget_children�s cGs |jj|jd||�dS(s�Replaces item's child with newchildren. Children present in item that are not present in newchildren are detached from tree. No items in newchildren may be an ancestor of item.RPN(R!RzR�(R�R<tnewchildren((s"/usr/lib64/python2.7/lib-tk/ttk.pytset_children�scKs5|dk rd||<nt|j||jd|�S(s Query or modify the options for the specified column. If kw is not given, returns a dict of the column option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values.R�N(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cGs|jj|jd|�dS(s_Delete all specified items and all their descendants. The root item may not be deleted.tdeleteN(R!RzR�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scGs|jj|jd|�dS(s�Unlinks all of the specified items from the tree. The items and all of their descendants are still present, and may be reinserted at another point in the tree, but will not be displayed. The root item may not be detached.tdetachN(R!RzR�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs%|jj|jj|jd|��S(sSReturns True if the specified item is present in the tree, False otherwise.texists(R!R�RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jj|jd|�S(s}If item is specified, sets the focus item to item. Otherwise, returns the current focus item, or '' if there is none.tfocus(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scKsy|jd�}|rDt|t�rD|jj||j�|d<n|dk r]d||<nt|j||j d|�S(s_Query or modify the heading options for the specified column. If kw is not given, returns a dict of the heading option values. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values. Valid options/values are: text: text The text to display in the column heading image: image_name Specifies an image to display to the right of the column heading anchor: anchor Specifies how the heading text should be aligned. One of the standard Tk anchor values command: callback A callback to be invoked when the heading label is pressed. To configure the tree column heading, call this with column = "#0" tcommandtheadingN( R R(R�R%tregistert_substituteR0R}R!R�(R�R�R�RHtcmd((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s cCs|jj|jd|||�S(s�Returns a description of the specified component under the point given by x and y, or the empty string if no such component is present at that position.R�(R!RzR�(R�t componentR�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��scCs|jdd|�S(s.Returns the item ID of the item at position y.trowi(R�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_rowscCs|jd|d�S(saReturns the data column identifier of the cell at position x. The tree column has ID #0.R�i(R�(R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_column scCs|jd||�S(s�Returns one of: heading: Tree heading area. separator: Space between two columns headings; tree: The tree area. cell: A data cell. * Availability: Tk 8.6tregion(R�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_regions cCs|jd||�S(sEReturns the element at position x, y. * Availability: Tk 8.6R�(R�(R�R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pytidentify_elementscCs%|jj|jj|jd|��S(sOReturns the integer index of item within its parent's list of children.R�(R!R�RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�#scKsgt|�}|dk rB|jj|jd||d||�}n!|jj|jd|||�}|S(s�Creates a new item and return the item identifier of the newly created item. parent is the item ID of the parent item, or the empty string to create a new top-level item. index is an integer, or the value end, specifying where in the list of parent's children to insert the new item. If index is less than or equal to zero, the new node is inserted at the beginning, if index is greater than or equal to the current number of children, it is inserted at the end. If iid is specified, it is used as the item identifier, iid must not already exist in the tree. Otherwise, a new unique identifier is generated.R�s-idN(R5R0R!RzR�(R�R�R�tiidRHR3Rw((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�)s !cKs5|dk rd||<nt|j||jd|�S(s-Query or modify the options for the specified item. If no options are given, a dict with options/values for the item is returned. If option is specified then the value for that option is returned. Otherwise, sets the options to the corresponding values as given by kw.R<N(R0R}R!R�(R�R<R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR<@s cCs#|jj|jd|||�dS(sRMoves item to position index in parent's list of children. It is illegal to move an item under one of its descendants. If index is less than or equal to zero, item is moved to the beginning, if greater than or equal to the number of children, it is moved to the end. If item was detached it is reattached.tmoveN(R!RzR�(R�R<R�R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�LscCs|jj|jd|�S(seReturns the identifier of item's next sibling, or '' if item is the last child of its parent.tnext(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�XscCs|jj|jd|�S(saReturns the ID of the parent of item, or '' if item is at the top level of the hierarchy.R�(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�^scCs|jj|jd|�S(sjReturns the identifier of item's previous sibling, or '' if item is the first child of its parent.tprev(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�dscCs|jj|jd|�dS(s�Ensure that item is visible. Sets all of item's ancestors open option to True, and scrolls the widget if necessary so that item is within the visible portion of the tree.tseeN(R!RzR�(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�jscCsCt|t�r|f}n|jj|jj|jd||��S(s2If selop is not specified, returns selected items.t selection(R(R�R!RsRzR�(R�tselopR:((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�sscCs|jd|�dS(s items becomes the new selection.R�N(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyt selection_setzscCs|jd|�dS(sAdd items to the selection.R�N(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pyt selection_addscCs|jd|�dS(s Remove items from the selection.tremoveN(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pytselection_remove�scCs|jd|�dS(s1Toggle the selection state of each item in items.ttoggleN(R�(R�R:((s"/usr/lib64/python2.7/lib-tk/ttk.pytselection_toggle�scCs]|jj|jd|||�}|dkrU|dkrUt|j|dtdt�S|SdS(s;Query or set the value of given item. With one argument, return a dictionary of column/value pairs for the specified item. With two arguments, return the current value of the specified column. With three arguments, set the value of given column in given item to the specified value.R�t cut_minusRyN(R!RzR�R0RR�R{(R�R<R�R+Rw((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s ! cCs,|j|jdd|f||dd�dS(s�Bind a callback for the given event sequence to the tag tagname. When an event is delivered to an item, the callbacks for each of the item's tags option are called.ttagtbindR�iN(t_bindR�(R�ttagnametsequenceR�((s"/usr/lib64/python2.7/lib-tk/ttk.pyttag_bind�scKs8|dk rd||<nt|j||jdd|�S(sBQuery or modify the options for the specified tagname. If kw is not given, returns a dict of the option settings for tagname. If option is specified, returns the value for that option for the specified tagname. Otherwise, sets the options to the corresponding values for the given tagname.R�RZN(R0R}R!R�(R�R�R�RH((s"/usr/lib64/python2.7/lib-tk/ttk.pyt tag_configure�s cCsc|dkr4|jj|jj|jdd|��S|jj|jj|jdd||��SdS(s�If item is specified, returns 1 or 0 depending on whether the specified item has the given tagname. Otherwise, returns a list of all items which have the specified tag. * Availability: Tk 8.6R�thasN(R0R!RsRzR�R�(R�R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyttag_has�s N(%R�R�R�R0R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R<R�treattachR�R�R�R�R�R�R�R�R�R�R�RR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR~sD cBsVeZdZddddd�Zd�Zd�Zd�Zd�Ze ee�Z RS( s�A Ttk Scale widget with a Ttk Label widget indicating its current value. The Ttk Scale can be accessed through instance.scale, and Ttk Label can be accessed through instance.labelii c Ksp|jdd�dk|_tj|||�|p@tj|�|_|jj|�||_t |�|_ t|d|jd|d|�|_|jj d|j�|jr�dnd}|dkr�dnd}|jjd|d d �t |�jd|�}|j jd|dkr$dnd �|jjd|j�|_|j d|j�|j d|j�dS(s�Construct a horizontal LabeledScale with parent master, a variable to be associated with the Ttk Scale widget and its range. If variable is not specified, a Tkinter.IntVar is created. WIDGET-SPECIFIC OPTIONS compound: 'top' or 'bottom' Specifies how to display the label relative to the scale. Defaults to 'top'. tcompoundttoptvariableR�R�s<<RangeChanged>>tbottomtsidetfillR�tanchortnR`tws<Configure>s<Map>N(tpopt _label_topRR�R�tIntVart _variableR�t_last_validRtlabelRtscaleR�t_adjusttpacktplacettrace_variablet_LabeledScale__tracecb( R�R%RR�R�RHt scale_sidet label_sidettmp((s"/usr/lib64/python2.7/lib-tk/ttk.pyR��s $%cCsWy|jjd|j�Wntk r-nX|`tj|�d|_d|_dS(s9Destroy this widget and possibly its associated variable.RN( Rt trace_vdeleteRtAttributeErrorRtdestroyR0RR(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cs��fd�}t�jd�}t�jd�}||krQ||}}n�jj�}||kow|kns��j�_dS|�_|�jd<�j|�dS(s1Adjust the label position according to the scale.cs��j��jj�\}}�jrG�jj��jj�}n�jj��jj�}�jjd|d|�dS(NR�R�(tupdate_idletasksRtcoordsRtwinfo_yRtwinfo_reqheighttplace_configure(R�R�(R�(s"/usr/lib64/python2.7/lib-tk/ttk.pytadjust_label�s RER�Nttext(R�RRR RR+Rt after_idle(R�RGR$R�R�tnewval((R�s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s cCs |jj�S(sReturn current scale value.(RR (R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _get_valuescCs|jj|�dS(sSet new scale value.N(RR�(R�R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyt _set_valuesN(R�R�R�R0R�RRR(R)tpropertyR+(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�s# cBs8eZdZdd�Zd�Zdd�Zd�ZRS(smThemed OptionMenu, based after Tkinter's OptionMenu, which allows the user to select a value from a menu.cOs�i|d6|jdd�d6|jdd�d6}tj|||�tj|dt�|d<||_|jdd�|_|r�tj d|j �j���n|j||�dS( s9Construct a themed OptionMenu widget with master as the parent, the resource textvariable set to variable, the initially selected value specified by the default parameter, the menu values given by *values and additional keywords. WIDGET-SPECIFIC OPTIONS style: stylename Menubutton style. direction: 'above', 'below', 'left', 'right', or 'flush' Menubutton direction. command: callback A callback that will be invoked after selecting an item. ttextvariableR�t directionttearofftmenuR�sunknown option -%sN( R R0RR�R�tMenuR�Rt _callbacktTclErrortiterkeysR�tset_menu(R�R%RR�tvaluestkwargsRH((s"/usr/lib64/python2.7/lib-tk/ttk.pyR�&s cCs5|dkr%|jtj||��Stj||�S(NR.(tnametowidgetRt__getitem__(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR7Csc Gs||d}|jdd�xB|D]:}|jd|dtj|j||j�d|j�q!W|rx|jj|�ndS(sUBuild a new menu of radiobuttons with *values and optionally a default value.R.itendRR�RN(R�tadd_radiobuttonR�t_setitRR0R�(R�R�R4R.R>((s"/usr/lib64/python2.7/lib-tk/ttk.pyR3Js cCs/y |`Wntk rnXtj|�dS(s0Destroy this widget and its associated variable.N(RRRR(R�((s"/usr/lib64/python2.7/lib-tk/ttk.pyRXs N(R�R�R�R0R�R7R3R(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR"s (8R�t__version__t __author__t__all__R�RRRRt TkVersionR#R�RR'R-R0R5R?RBRORQRfRqRuR}R�R�R{RRtobjectRR�RRRRRRRRRR RR RR RRRRtXViewtYViewRRR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyt<module> sf" %1 * �B*"�8*'"�Daturtle.py000064400000417433151703463030006453 0ustar00# # turtle.py: a Tkinter based turtle graphics module for Python # Version 1.0.1 - 24. 9. 2009 # # Copyright (C) 2006 - 2010 Gregor Lingl # email: glingl@aon.at # # This software is provided 'as-is', without any express or implied # warranty. In no event will the authors be held liable for any damages # arising from the use of this software. # # Permission is granted to anyone to use this software for any purpose, # including commercial applications, and to alter it and redistribute it # freely, subject to the following restrictions: # # 1. The origin of this software must not be misrepresented; you must not # claim that you wrote the original software. If you use this software # in a product, an acknowledgment in the product documentation would be # appreciated but is not required. # 2. Altered source versions must be plainly marked as such, and must not be # misrepresented as being the original software. # 3. This notice may not be removed or altered from any source distribution. """ Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise. By combining together these and similar commands, intricate shapes and pictures can easily be drawn. ----- turtle.py This module is an extended reimplementation of turtle.py from the Python standard distribution up to Python 2.5. (See: http://www.python.org) It tries to keep the merits of turtle.py and to be (nearly) 100% compatible with it. This means in the first place to enable the learning programmer to use all the commands, classes and methods interactively when using the module from within IDLE run with the -n switch. Roughly it has the following features added: - Better animation of the turtle movements, especially of turning the turtle. So the turtles can more easily be used as a visual feedback instrument by the (beginning) programmer. - Different turtle shapes, gif-images as turtle shapes, user defined and user controllable turtle shapes, among them compound (multicolored) shapes. Turtle shapes can be stretched and tilted, which makes turtles very versatile geometrical objects. - Fine control over turtle movement and screen updates via delay(), and enhanced tracer() and speed() methods. - Aliases for the most commonly used commands, like fd for forward etc., following the early Logo traditions. This reduces the boring work of typing long sequences of commands, which often occur in a natural way when kids try to program fancy pictures on their first encounter with turtle graphics. - Turtles now have an undo()-method with configurable undo-buffer. - Some simple commands/methods for creating event driven programs (mouse-, key-, timer-events). Especially useful for programming games. - A scrollable Canvas class. The default scrollable Canvas can be extended interactively as needed while playing around with the turtle(s). - A TurtleScreen class with methods controlling background color or background image, window and canvas size and other properties of the TurtleScreen. - There is a method, setworldcoordinates(), to install a user defined coordinate-system for the TurtleScreen. - The implementation uses a 2-vector class named Vec2D, derived from tuple. This class is public, so it can be imported by the application programmer, which makes certain types of computations very natural and compact. - Appearance of the TurtleScreen and the Turtles at startup/import can be configured by means of a turtle.cfg configuration file. The default configuration mimics the appearance of the old turtle module. - If configured appropriately the module reads in docstrings from a docstring dictionary in some different language, supplied separately and replaces the English ones by those read in. There is a utility function write_docstringdict() to write a dictionary with the original (English) docstrings to disc, so it can serve as a template for translations. Behind the scenes there are some features included with possible extensions in mind. These will be commented and documented elsewhere. """ _ver = "turtle 1.0b1 - for Python 2.6 - 30. 5. 2008, 18:08" #print _ver import Tkinter as TK import types import math import time import os from os.path import isfile, split, join from copy import deepcopy from math import * ## for compatibility with old turtle module _tg_classes = ['ScrolledCanvas', 'TurtleScreen', 'Screen', 'RawTurtle', 'Turtle', 'RawPen', 'Pen', 'Shape', 'Vec2D'] _tg_screen_functions = ['addshape', 'bgcolor', 'bgpic', 'bye', 'clearscreen', 'colormode', 'delay', 'exitonclick', 'getcanvas', 'getshapes', 'listen', 'mode', 'onkey', 'onscreenclick', 'ontimer', 'register_shape', 'resetscreen', 'screensize', 'setup', 'setworldcoordinates', 'title', 'tracer', 'turtles', 'update', 'window_height', 'window_width'] _tg_turtle_functions = ['back', 'backward', 'begin_fill', 'begin_poly', 'bk', 'circle', 'clear', 'clearstamp', 'clearstamps', 'clone', 'color', 'degrees', 'distance', 'dot', 'down', 'end_fill', 'end_poly', 'fd', 'fill', 'fillcolor', 'forward', 'get_poly', 'getpen', 'getscreen', 'getturtle', 'goto', 'heading', 'hideturtle', 'home', 'ht', 'isdown', 'isvisible', 'left', 'lt', 'onclick', 'ondrag', 'onrelease', 'pd', 'pen', 'pencolor', 'pendown', 'pensize', 'penup', 'pos', 'position', 'pu', 'radians', 'right', 'reset', 'resizemode', 'rt', 'seth', 'setheading', 'setpos', 'setposition', 'settiltangle', 'setundobuffer', 'setx', 'sety', 'shape', 'shapesize', 'showturtle', 'speed', 'st', 'stamp', 'tilt', 'tiltangle', 'towards', 'tracer', 'turtlesize', 'undo', 'undobufferentries', 'up', 'width', 'window_height', 'window_width', 'write', 'xcor', 'ycor'] _tg_utilities = ['write_docstringdict', 'done', 'mainloop'] _math_functions = ['acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'cosh', 'e', 'exp', 'fabs', 'floor', 'fmod', 'frexp', 'hypot', 'ldexp', 'log', 'log10', 'modf', 'pi', 'pow', 'sin', 'sinh', 'sqrt', 'tan', 'tanh'] __all__ = (_tg_classes + _tg_screen_functions + _tg_turtle_functions + _tg_utilities + ['Terminator'] + _math_functions) _alias_list = ['addshape', 'backward', 'bk', 'fd', 'ht', 'lt', 'pd', 'pos', 'pu', 'rt', 'seth', 'setpos', 'setposition', 'st', 'turtlesize', 'up', 'width'] _CFG = {"width" : 0.5, # Screen "height" : 0.75, "canvwidth" : 400, "canvheight": 300, "leftright": None, "topbottom": None, "mode": "standard", # TurtleScreen "colormode": 1.0, "delay": 10, "undobuffersize": 1000, # RawTurtle "shape": "classic", "pencolor" : "black", "fillcolor" : "black", "resizemode" : "noresize", "visible" : True, "language": "english", # docstrings "exampleturtle": "turtle", "examplescreen": "screen", "title": "Python Turtle Graphics", "using_IDLE": False } ##print "cwd:", os.getcwd() ##print "__file__:", __file__ ## ##def show(dictionary): ## print "==========================" ## for key in sorted(dictionary.keys()): ## print key, ":", dictionary[key] ## print "==========================" ## print def config_dict(filename): """Convert content of config-file into dictionary.""" f = open(filename, "r") cfglines = f.readlines() f.close() cfgdict = {} for line in cfglines: line = line.strip() if not line or line.startswith("#"): continue try: key, value = line.split("=") except ValueError: print "Bad line in config-file %s:\n%s" % (filename,line) continue key = key.strip() value = value.strip() if value in ["True", "False", "None", "''", '""']: value = eval(value) else: try: if "." in value: value = float(value) else: value = int(value) except ValueError: pass # value need not be converted cfgdict[key] = value return cfgdict def readconfig(cfgdict): """Read config-files, change configuration-dict accordingly. If there is a turtle.cfg file in the current working directory, read it from there. If this contains an importconfig-value, say 'myway', construct filename turtle_mayway.cfg else use turtle.cfg and read it from the import-directory, where turtle.py is located. Update configuration dictionary first according to config-file, in the import directory, then according to config-file in the current working directory. If no config-file is found, the default configuration is used. """ default_cfg = "turtle.cfg" cfgdict1 = {} cfgdict2 = {} if isfile(default_cfg): cfgdict1 = config_dict(default_cfg) #print "1. Loading config-file %s from: %s" % (default_cfg, os.getcwd()) if "importconfig" in cfgdict1: default_cfg = "turtle_%s.cfg" % cfgdict1["importconfig"] try: head, tail = split(__file__) cfg_file2 = join(head, default_cfg) except BaseException: cfg_file2 = "" if isfile(cfg_file2): #print "2. Loading config-file %s:" % cfg_file2 cfgdict2 = config_dict(cfg_file2) ## show(_CFG) ## show(cfgdict2) _CFG.update(cfgdict2) ## show(_CFG) ## show(cfgdict1) _CFG.update(cfgdict1) ## show(_CFG) try: readconfig(_CFG) except BaseException: print "No configfile read, reason unknown" class Vec2D(tuple): """A 2 dimensional vector class, used as a helper class for implementing turtle graphics. May be useful for turtle graphics programs also. Derived from tuple, so a vector is a tuple! Provides (for a, b vectors, k number): a+b vector addition a-b vector subtraction a*b inner product k*a and a*k multiplication with scalar |a| absolute value of a a.rotate(angle) rotation """ def __new__(cls, x, y): return tuple.__new__(cls, (x, y)) def __add__(self, other): return Vec2D(self[0]+other[0], self[1]+other[1]) def __mul__(self, other): if isinstance(other, Vec2D): return self[0]*other[0]+self[1]*other[1] return Vec2D(self[0]*other, self[1]*other) def __rmul__(self, other): if isinstance(other, (int, long, float)): return Vec2D(self[0]*other, self[1]*other) def __sub__(self, other): return Vec2D(self[0]-other[0], self[1]-other[1]) def __neg__(self): return Vec2D(-self[0], -self[1]) def __abs__(self): return (self[0]**2 + self[1]**2)**0.5 def rotate(self, angle): """rotate self counterclockwise by angle """ perp = Vec2D(-self[1], self[0]) angle = angle * math.pi / 180.0 c, s = math.cos(angle), math.sin(angle) return Vec2D(self[0]*c+perp[0]*s, self[1]*c+perp[1]*s) def __getnewargs__(self): return (self[0], self[1]) def __repr__(self): return "(%.2f,%.2f)" % self ############################################################################## ### From here up to line : Tkinter - Interface for turtle.py ### ### May be replaced by an interface to some different graphics toolkit ### ############################################################################## ## helper functions for Scrolled Canvas, to forward Canvas-methods ## to ScrolledCanvas class def __methodDict(cls, _dict): """helper function for Scrolled Canvas""" baseList = list(cls.__bases__) baseList.reverse() for _super in baseList: __methodDict(_super, _dict) for key, value in cls.__dict__.items(): if type(value) == types.FunctionType: _dict[key] = value def __methods(cls): """helper function for Scrolled Canvas""" _dict = {} __methodDict(cls, _dict) return _dict.keys() __stringBody = ( 'def %(method)s(self, *args, **kw): return ' + 'self.%(attribute)s.%(method)s(*args, **kw)') def __forwardmethods(fromClass, toClass, toPart, exclude = ()): """Helper functions for Scrolled Canvas, used to forward ScrolledCanvas-methods to Tkinter.Canvas class. """ _dict = {} __methodDict(toClass, _dict) for ex in _dict.keys(): if ex[:1] == '_' or ex[-1:] == '_': del _dict[ex] for ex in exclude: if ex in _dict: del _dict[ex] for ex in __methods(fromClass): if ex in _dict: del _dict[ex] for method, func in _dict.items(): d = {'method': method, 'func': func} if type(toPart) == types.StringType: execString = \ __stringBody % {'method' : method, 'attribute' : toPart} exec execString in d fromClass.__dict__[method] = d[method] class ScrolledCanvas(TK.Frame): """Modeled after the scrolled canvas class from Grayons's Tkinter book. Used as the default canvas, which pops up automatically when using turtle graphics functions or the Turtle class. """ def __init__(self, master, width=500, height=350, canvwidth=600, canvheight=500): TK.Frame.__init__(self, master, width=width, height=height) self._rootwindow = self.winfo_toplevel() self.width, self.height = width, height self.canvwidth, self.canvheight = canvwidth, canvheight self.bg = "white" self._canvas = TK.Canvas(master, width=width, height=height, bg=self.bg, relief=TK.SUNKEN, borderwidth=2) self.hscroll = TK.Scrollbar(master, command=self._canvas.xview, orient=TK.HORIZONTAL) self.vscroll = TK.Scrollbar(master, command=self._canvas.yview) self._canvas.configure(xscrollcommand=self.hscroll.set, yscrollcommand=self.vscroll.set) self.rowconfigure(0, weight=1, minsize=0) self.columnconfigure(0, weight=1, minsize=0) self._canvas.grid(padx=1, in_ = self, pady=1, row=0, column=0, rowspan=1, columnspan=1, sticky='news') self.vscroll.grid(padx=1, in_ = self, pady=1, row=0, column=1, rowspan=1, columnspan=1, sticky='news') self.hscroll.grid(padx=1, in_ = self, pady=1, row=1, column=0, rowspan=1, columnspan=1, sticky='news') self.reset() self._rootwindow.bind('<Configure>', self.onResize) def reset(self, canvwidth=None, canvheight=None, bg = None): """Adjust canvas and scrollbars according to given canvas size.""" if canvwidth: self.canvwidth = canvwidth if canvheight: self.canvheight = canvheight if bg: self.bg = bg self._canvas.config(bg=bg, scrollregion=(-self.canvwidth//2, -self.canvheight//2, self.canvwidth//2, self.canvheight//2)) self._canvas.xview_moveto(0.5*(self.canvwidth - self.width + 30) / self.canvwidth) self._canvas.yview_moveto(0.5*(self.canvheight- self.height + 30) / self.canvheight) self.adjustScrolls() def adjustScrolls(self): """ Adjust scrollbars according to window- and canvas-size. """ cwidth = self._canvas.winfo_width() cheight = self._canvas.winfo_height() self._canvas.xview_moveto(0.5*(self.canvwidth-cwidth)/self.canvwidth) self._canvas.yview_moveto(0.5*(self.canvheight-cheight)/self.canvheight) if cwidth < self.canvwidth or cheight < self.canvheight: self.hscroll.grid(padx=1, in_ = self, pady=1, row=1, column=0, rowspan=1, columnspan=1, sticky='news') self.vscroll.grid(padx=1, in_ = self, pady=1, row=0, column=1, rowspan=1, columnspan=1, sticky='news') else: self.hscroll.grid_forget() self.vscroll.grid_forget() def onResize(self, event): """self-explanatory""" self.adjustScrolls() def bbox(self, *args): """ 'forward' method, which canvas itself has inherited... """ return self._canvas.bbox(*args) def cget(self, *args, **kwargs): """ 'forward' method, which canvas itself has inherited... """ return self._canvas.cget(*args, **kwargs) def config(self, *args, **kwargs): """ 'forward' method, which canvas itself has inherited... """ self._canvas.config(*args, **kwargs) def bind(self, *args, **kwargs): """ 'forward' method, which canvas itself has inherited... """ self._canvas.bind(*args, **kwargs) def unbind(self, *args, **kwargs): """ 'forward' method, which canvas itself has inherited... """ self._canvas.unbind(*args, **kwargs) def focus_force(self): """ 'forward' method, which canvas itself has inherited... """ self._canvas.focus_force() __forwardmethods(ScrolledCanvas, TK.Canvas, '_canvas') class _Root(TK.Tk): """Root class for Screen based on Tkinter.""" def __init__(self): TK.Tk.__init__(self) def setupcanvas(self, width, height, cwidth, cheight): self._canvas = ScrolledCanvas(self, width, height, cwidth, cheight) self._canvas.pack(expand=1, fill="both") def _getcanvas(self): return self._canvas def set_geometry(self, width, height, startx, starty): self.geometry("%dx%d%+d%+d"%(width, height, startx, starty)) def ondestroy(self, destroy): self.wm_protocol("WM_DELETE_WINDOW", destroy) def win_width(self): return self.winfo_screenwidth() def win_height(self): return self.winfo_screenheight() Canvas = TK.Canvas class TurtleScreenBase(object): """Provide the basic graphics functionality. Interface between Tkinter and turtle.py. To port turtle.py to some different graphics toolkit a corresponding TurtleScreenBase class has to be implemented. """ @staticmethod def _blankimage(): """return a blank image object """ img = TK.PhotoImage(width=1, height=1) img.blank() return img @staticmethod def _image(filename): """return an image object containing the imagedata from a gif-file named filename. """ return TK.PhotoImage(file=filename) def __init__(self, cv): self.cv = cv if isinstance(cv, ScrolledCanvas): w = self.cv.canvwidth h = self.cv.canvheight else: # expected: ordinary TK.Canvas w = int(self.cv.cget("width")) h = int(self.cv.cget("height")) self.cv.config(scrollregion = (-w//2, -h//2, w//2, h//2 )) self.canvwidth = w self.canvheight = h self.xscale = self.yscale = 1.0 def _createpoly(self): """Create an invisible polygon item on canvas self.cv) """ return self.cv.create_polygon((0, 0, 0, 0, 0, 0), fill="", outline="") def _drawpoly(self, polyitem, coordlist, fill=None, outline=None, width=None, top=False): """Configure polygonitem polyitem according to provided arguments: coordlist is sequence of coordinates fill is filling color outline is outline color top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. """ cl = [] for x, y in coordlist: cl.append(x * self.xscale) cl.append(-y * self.yscale) self.cv.coords(polyitem, *cl) if fill is not None: self.cv.itemconfigure(polyitem, fill=fill) if outline is not None: self.cv.itemconfigure(polyitem, outline=outline) if width is not None: self.cv.itemconfigure(polyitem, width=width) if top: self.cv.tag_raise(polyitem) def _createline(self): """Create an invisible line item on canvas self.cv) """ return self.cv.create_line(0, 0, 0, 0, fill="", width=2, capstyle = TK.ROUND) def _drawline(self, lineitem, coordlist=None, fill=None, width=None, top=False): """Configure lineitem according to provided arguments: coordlist is sequence of coordinates fill is drawing color width is width of drawn line. top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. """ if coordlist is not None: cl = [] for x, y in coordlist: cl.append(x * self.xscale) cl.append(-y * self.yscale) self.cv.coords(lineitem, *cl) if fill is not None: self.cv.itemconfigure(lineitem, fill=fill) if width is not None: self.cv.itemconfigure(lineitem, width=width) if top: self.cv.tag_raise(lineitem) def _delete(self, item): """Delete graphics item from canvas. If item is"all" delete all graphics items. """ self.cv.delete(item) def _update(self): """Redraw graphics items on canvas """ self.cv.update() def _delay(self, delay): """Delay subsequent canvas actions for delay ms.""" self.cv.after(delay) def _iscolorstring(self, color): """Check if the string color is a legal Tkinter color string. """ try: rgb = self.cv.winfo_rgb(color) ok = True except TK.TclError: ok = False return ok def _bgcolor(self, color=None): """Set canvas' backgroundcolor if color is not None, else return backgroundcolor.""" if color is not None: self.cv.config(bg = color) self._update() else: return self.cv.cget("bg") def _write(self, pos, txt, align, font, pencolor): """Write txt at pos in canvas with specified font and color. Return text item and x-coord of right bottom corner of text's bounding box.""" x, y = pos x = x * self.xscale y = y * self.yscale anchor = {"left":"sw", "center":"s", "right":"se" } item = self.cv.create_text(x-1, -y, text = txt, anchor = anchor[align], fill = pencolor, font = font) x0, y0, x1, y1 = self.cv.bbox(item) self.cv.update() return item, x1-1 ## def _dot(self, pos, size, color): ## """may be implemented for some other graphics toolkit""" def _onclick(self, item, fun, num=1, add=None): """Bind fun to mouse-click event on turtle. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 """ if fun is None: self.cv.tag_unbind(item, "<Button-%s>" % num) else: def eventfun(event): x, y = (self.cv.canvasx(event.x)/self.xscale, -self.cv.canvasy(event.y)/self.yscale) fun(x, y) self.cv.tag_bind(item, "<Button-%s>" % num, eventfun, add) def _onrelease(self, item, fun, num=1, add=None): """Bind fun to mouse-button-release event on turtle. fun must be a function with two arguments, the coordinates of the point on the canvas where mouse button is released. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. """ if fun is None: self.cv.tag_unbind(item, "<Button%s-ButtonRelease>" % num) else: def eventfun(event): x, y = (self.cv.canvasx(event.x)/self.xscale, -self.cv.canvasy(event.y)/self.yscale) fun(x, y) self.cv.tag_bind(item, "<Button%s-ButtonRelease>" % num, eventfun, add) def _ondrag(self, item, fun, num=1, add=None): """Bind fun to mouse-move-event (with pressed mouse button) on turtle. fun must be a function with two arguments, the coordinates of the actual mouse position on the canvas. num, the number of the mouse-button defaults to 1 Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. """ if fun is None: self.cv.tag_unbind(item, "<Button%s-Motion>" % num) else: def eventfun(event): try: x, y = (self.cv.canvasx(event.x)/self.xscale, -self.cv.canvasy(event.y)/self.yscale) fun(x, y) except BaseException: pass self.cv.tag_bind(item, "<Button%s-Motion>" % num, eventfun, add) def _onscreenclick(self, fun, num=1, add=None): """Bind fun to mouse-click event on canvas. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. """ if fun is None: self.cv.unbind("<Button-%s>" % num) else: def eventfun(event): x, y = (self.cv.canvasx(event.x)/self.xscale, -self.cv.canvasy(event.y)/self.yscale) fun(x, y) self.cv.bind("<Button-%s>" % num, eventfun, add) def _onkey(self, fun, key): """Bind fun to key-release event of key. Canvas must have focus. See method listen """ if fun is None: self.cv.unbind("<KeyRelease-%s>" % key, None) else: def eventfun(event): fun() self.cv.bind("<KeyRelease-%s>" % key, eventfun) def _listen(self): """Set focus on canvas (in order to collect key-events) """ self.cv.focus_force() def _ontimer(self, fun, t): """Install a timer, which calls fun after t milliseconds. """ if t == 0: self.cv.after_idle(fun) else: self.cv.after(t, fun) def _createimage(self, image): """Create and return image item on canvas. """ return self.cv.create_image(0, 0, image=image) def _drawimage(self, item, pos, image): """Configure image item as to draw image object at position (x,y) on canvas) """ x, y = pos self.cv.coords(item, (x * self.xscale, -y * self.yscale)) self.cv.itemconfig(item, image=image) def _setbgpic(self, item, image): """Configure image item as to draw image object at center of canvas. Set item to the first item in the displaylist, so it will be drawn below any other item .""" self.cv.itemconfig(item, image=image) self.cv.tag_lower(item) def _type(self, item): """Return 'line' or 'polygon' or 'image' depending on type of item. """ return self.cv.type(item) def _pointlist(self, item): """returns list of coordinate-pairs of points of item Example (for insiders): >>> from turtle import * >>> getscreen()._pointlist(getturtle().turtle._item) [(0.0, 9.9999999999999982), (0.0, -9.9999999999999982), (9.9999999999999982, 0.0)] >>> """ cl = self.cv.coords(item) pl = [(cl[i], -cl[i+1]) for i in range(0, len(cl), 2)] return pl def _setscrollregion(self, srx1, sry1, srx2, sry2): self.cv.config(scrollregion=(srx1, sry1, srx2, sry2)) def _rescale(self, xscalefactor, yscalefactor): items = self.cv.find_all() for item in items: coordinates = self.cv.coords(item) newcoordlist = [] while coordinates: x, y = coordinates[:2] newcoordlist.append(x * xscalefactor) newcoordlist.append(y * yscalefactor) coordinates = coordinates[2:] self.cv.coords(item, *newcoordlist) def _resize(self, canvwidth=None, canvheight=None, bg=None): """Resize the canvas the turtles are drawing on. Does not alter the drawing window. """ # needs amendment if not isinstance(self.cv, ScrolledCanvas): return self.canvwidth, self.canvheight if canvwidth is canvheight is bg is None: return self.cv.canvwidth, self.cv.canvheight if canvwidth is not None: self.canvwidth = canvwidth if canvheight is not None: self.canvheight = canvheight self.cv.reset(canvwidth, canvheight, bg) def _window_size(self): """ Return the width and height of the turtle window. """ width = self.cv.winfo_width() if width <= 1: # the window isn't managed by a geometry manager width = self.cv['width'] height = self.cv.winfo_height() if height <= 1: # the window isn't managed by a geometry manager height = self.cv['height'] return width, height ############################################################################## ### End of Tkinter - interface ### ############################################################################## class Terminator (Exception): """Will be raised in TurtleScreen.update, if _RUNNING becomes False. This stops execution of a turtle graphics script. Main purpose: use in the Demo-Viewer turtle.Demo.py. """ pass class TurtleGraphicsError(Exception): """Some TurtleGraphics Error """ class Shape(object): """Data structure modeling shapes. attribute _type is one of "polygon", "image", "compound" attribute _data is - depending on _type a poygon-tuple, an image or a list constructed using the addcomponent method. """ def __init__(self, type_, data=None): self._type = type_ if type_ == "polygon": if isinstance(data, list): data = tuple(data) elif type_ == "image": if isinstance(data, basestring): if data.lower().endswith(".gif") and isfile(data): data = TurtleScreen._image(data) # else data assumed to be Photoimage elif type_ == "compound": data = [] else: raise TurtleGraphicsError("There is no shape type %s" % type_) self._data = data def addcomponent(self, poly, fill, outline=None): """Add component to a shape of type compound. Arguments: poly is a polygon, i. e. a tuple of number pairs. fill is the fillcolor of the component, outline is the outline color of the component. call (for a Shapeobject namend s): -- s.addcomponent(((0,0), (10,10), (-10,10)), "red", "blue") Example: >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # .. add more components and then use register_shape() """ if self._type != "compound": raise TurtleGraphicsError("Cannot add component to %s Shape" % self._type) if outline is None: outline = fill self._data.append([poly, fill, outline]) class Tbuffer(object): """Ring buffer used as undobuffer for RawTurtle objects.""" def __init__(self, bufsize=10): self.bufsize = bufsize self.buffer = [[None]] * bufsize self.ptr = -1 self.cumulate = False def reset(self, bufsize=None): if bufsize is None: for i in range(self.bufsize): self.buffer[i] = [None] else: self.bufsize = bufsize self.buffer = [[None]] * bufsize self.ptr = -1 def push(self, item): if self.bufsize > 0: if not self.cumulate: self.ptr = (self.ptr + 1) % self.bufsize self.buffer[self.ptr] = item else: self.buffer[self.ptr].append(item) def pop(self): if self.bufsize > 0: item = self.buffer[self.ptr] if item is None: return None else: self.buffer[self.ptr] = [None] self.ptr = (self.ptr - 1) % self.bufsize return (item) def nr_of_items(self): return self.bufsize - self.buffer.count([None]) def __repr__(self): return str(self.buffer) + " " + str(self.ptr) class TurtleScreen(TurtleScreenBase): """Provides screen oriented methods like setbg etc. Only relies upon the methods of TurtleScreenBase and NOT upon components of the underlying graphics toolkit - which is Tkinter in this case. """ # _STANDARD_DELAY = 5 _RUNNING = True def __init__(self, cv, mode=_CFG["mode"], colormode=_CFG["colormode"], delay=_CFG["delay"]): self._shapes = { "arrow" : Shape("polygon", ((-10,0), (10,0), (0,10))), "turtle" : Shape("polygon", ((0,16), (-2,14), (-1,10), (-4,7), (-7,9), (-9,8), (-6,5), (-7,1), (-5,-3), (-8,-6), (-6,-8), (-4,-5), (0,-7), (4,-5), (6,-8), (8,-6), (5,-3), (7,1), (6,5), (9,8), (7,9), (4,7), (1,10), (2,14))), "circle" : Shape("polygon", ((10,0), (9.51,3.09), (8.09,5.88), (5.88,8.09), (3.09,9.51), (0,10), (-3.09,9.51), (-5.88,8.09), (-8.09,5.88), (-9.51,3.09), (-10,0), (-9.51,-3.09), (-8.09,-5.88), (-5.88,-8.09), (-3.09,-9.51), (-0.00,-10.00), (3.09,-9.51), (5.88,-8.09), (8.09,-5.88), (9.51,-3.09))), "square" : Shape("polygon", ((10,-10), (10,10), (-10,10), (-10,-10))), "triangle" : Shape("polygon", ((10,-5.77), (0,11.55), (-10,-5.77))), "classic": Shape("polygon", ((0,0),(-5,-9),(0,-7),(5,-9))), "blank" : Shape("image", self._blankimage()) } self._bgpics = {"nopic" : ""} TurtleScreenBase.__init__(self, cv) self._mode = mode self._delayvalue = delay self._colormode = _CFG["colormode"] self._keys = [] self.clear() def clear(self): """Delete all drawings and all turtles from the TurtleScreen. Reset empty TurtleScreen to its initial state: white background, no backgroundimage, no eventbindings and tracing on. No argument. Example (for a TurtleScreen instance named screen): >>> screen.clear() Note: this method is not available as function. """ self._delayvalue = _CFG["delay"] self._colormode = _CFG["colormode"] self._delete("all") self._bgpic = self._createimage("") self._bgpicname = "nopic" self._tracing = 1 self._updatecounter = 0 self._turtles = [] self.bgcolor("white") for btn in 1, 2, 3: self.onclick(None, btn) for key in self._keys[:]: self.onkey(None, key) Turtle._pen = None def mode(self, mode=None): """Set turtle-mode ('standard', 'logo' or 'world') and perform reset. Optional argument: mode -- one of the strings 'standard', 'logo' or 'world' Mode 'standard' is compatible with turtle.py. Mode 'logo' is compatible with most Logo-Turtle-Graphics. Mode 'world' uses userdefined 'worldcoordinates'. *Attention*: in this mode angles appear distorted if x/y unit-ratio doesn't equal 1. If mode is not given, return the current mode. Mode Initial turtle heading positive angles ------------|-------------------------|------------------- 'standard' to the right (east) counterclockwise 'logo' upward (north) clockwise Examples: >>> mode('logo') # resets turtle heading to north >>> mode() 'logo' """ if mode is None: return self._mode mode = mode.lower() if mode not in ["standard", "logo", "world"]: raise TurtleGraphicsError("No turtle-graphics-mode %s" % mode) self._mode = mode if mode in ["standard", "logo"]: self._setscrollregion(-self.canvwidth//2, -self.canvheight//2, self.canvwidth//2, self.canvheight//2) self.xscale = self.yscale = 1.0 self.reset() def setworldcoordinates(self, llx, lly, urx, ury): """Set up a user defined coordinate-system. Arguments: llx -- a number, x-coordinate of lower left corner of canvas lly -- a number, y-coordinate of lower left corner of canvas urx -- a number, x-coordinate of upper right corner of canvas ury -- a number, y-coordinate of upper right corner of canvas Set up user coodinat-system and switch to mode 'world' if necessary. This performs a screen.reset. If mode 'world' is already active, all drawings are redrawn according to the new coordinates. But ATTENTION: in user-defined coordinatesystems angles may appear distorted. (see Screen.mode()) Example (for a TurtleScreen instance named screen): >>> screen.setworldcoordinates(-10,-0.5,50,1.5) >>> for _ in range(36): ... left(10) ... forward(0.5) """ if self.mode() != "world": self.mode("world") xspan = float(urx - llx) yspan = float(ury - lly) wx, wy = self._window_size() self.screensize(wx-20, wy-20) oldxscale, oldyscale = self.xscale, self.yscale self.xscale = self.canvwidth / xspan self.yscale = self.canvheight / yspan srx1 = llx * self.xscale sry1 = -ury * self.yscale srx2 = self.canvwidth + srx1 sry2 = self.canvheight + sry1 self._setscrollregion(srx1, sry1, srx2, sry2) self._rescale(self.xscale/oldxscale, self.yscale/oldyscale) self.update() def register_shape(self, name, shape=None): """Adds a turtle shape to TurtleScreen's shapelist. Arguments: (1) name is the name of a gif-file and shape is None. Installs the corresponding image shape. !! Image-shapes DO NOT rotate when turning the turtle, !! so they do not display the heading of the turtle! (2) name is an arbitrary string and shape is a tuple of pairs of coordinates. Installs the corresponding polygon shape (3) name is an arbitrary string and shape is a (compound) Shape object. Installs the corresponding compound shape. To use a shape, you have to issue the command shape(shapename). call: register_shape("turtle.gif") --or: register_shape("tri", ((0,0), (10,10), (-10,10))) Example (for a TurtleScreen instance named screen): >>> screen.register_shape("triangle", ((5,-3),(0,5),(-5,-3))) """ if shape is None: # image if name.lower().endswith(".gif"): shape = Shape("image", self._image(name)) else: raise TurtleGraphicsError("Bad arguments for register_shape.\n" + "Use help(register_shape)" ) elif isinstance(shape, tuple): shape = Shape("polygon", shape) ## else shape assumed to be Shape-instance self._shapes[name] = shape # print "shape added:" , self._shapes def _colorstr(self, color): """Return color string corresponding to args. Argument may be a string or a tuple of three numbers corresponding to actual colormode, i.e. in the range 0<=n<=colormode. If the argument doesn't represent a color, an error is raised. """ if len(color) == 1: color = color[0] if isinstance(color, basestring): if self._iscolorstring(color) or color == "": return color else: raise TurtleGraphicsError("bad color string: %s" % str(color)) try: r, g, b = color except (TypeError, ValueError): raise TurtleGraphicsError("bad color arguments: %s" % str(color)) if self._colormode == 1.0: r, g, b = [round(255.0*x) for x in (r, g, b)] if not ((0 <= r <= 255) and (0 <= g <= 255) and (0 <= b <= 255)): raise TurtleGraphicsError("bad color sequence: %s" % str(color)) return "#%02x%02x%02x" % (r, g, b) def _color(self, cstr): if not cstr.startswith("#"): return cstr if len(cstr) == 7: cl = [int(cstr[i:i+2], 16) for i in (1, 3, 5)] elif len(cstr) == 4: cl = [16*int(cstr[h], 16) for h in cstr[1:]] else: raise TurtleGraphicsError("bad colorstring: %s" % cstr) return tuple([c * self._colormode/255 for c in cl]) def colormode(self, cmode=None): """Return the colormode or set it to 1.0 or 255. Optional argument: cmode -- one of the values 1.0 or 255 r, g, b values of colortriples have to be in range 0..cmode. Example (for a TurtleScreen instance named screen): >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> pencolor(240,160,80) """ if cmode is None: return self._colormode if cmode == 1.0: self._colormode = float(cmode) elif cmode == 255: self._colormode = int(cmode) def reset(self): """Reset all Turtles on the Screen to their initial state. No argument. Example (for a TurtleScreen instance named screen): >>> screen.reset() """ for turtle in self._turtles: turtle._setmode(self._mode) turtle.reset() def turtles(self): """Return the list of turtles on the screen. Example (for a TurtleScreen instance named screen): >>> screen.turtles() [<turtle.Turtle object at 0x00E11FB0>] """ return self._turtles def bgcolor(self, *args): """Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example (for a TurtleScreen instance named screen): >>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() '#800080' """ if args: color = self._colorstr(args) else: color = None color = self._bgcolor(color) if color is not None: color = self._color(color) return color def tracer(self, n=None, delay=None): """Turns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a TurtleScreen instance named screen): >>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2 """ if n is None: return self._tracing self._tracing = int(n) self._updatecounter = 0 if delay is not None: self._delayvalue = int(delay) if self._tracing: self.update() def delay(self, delay=None): """ Return or set the drawing delay in milliseconds. Optional argument: delay -- positive integer Example (for a TurtleScreen instance named screen): >>> screen.delay(15) >>> screen.delay() 15 """ if delay is None: return self._delayvalue self._delayvalue = int(delay) def _incrementudc(self): """Increment update counter.""" if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator if self._tracing > 0: self._updatecounter += 1 self._updatecounter %= self._tracing def update(self): """Perform a TurtleScreen update. """ tracing = self._tracing self._tracing = True for t in self.turtles(): t._update_data() t._drawturtle() self._tracing = tracing self._update() def window_width(self): """ Return the width of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 """ return self._window_size()[0] def window_height(self): """ Return the height of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 """ return self._window_size()[1] def getcanvas(self): """Return the Canvas of this TurtleScreen. No argument. Example (for a Screen instance named screen): >>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas instance at 0x010742D8> """ return self.cv def getshapes(self): """Return a list of names of all currently available turtle shapes. No argument. Example (for a TurtleScreen instance named screen): >>> screen.getshapes() ['arrow', 'blank', 'circle', ... , 'turtle'] """ return sorted(self._shapes.keys()) def onclick(self, fun, btn=1, add=None): """Bind fun to mouse-click event on canvas. Arguments: fun -- a function with two arguments, the coordinates of the clicked point on the canvas. btn -- the number of the mouse-button, defaults to 1 Example (for a TurtleScreen instance named screen and a Turtle instance named turtle): >>> screen.onclick(goto) >>> # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) """ self._onscreenclick(fun, btn, add) def onkey(self, fun, key): """Bind fun to key-release event of key. Arguments: fun -- a function with no arguments key -- a string: key (e.g. "a") or key-symbol (e.g. "space") In order to be able to register key-events, TurtleScreen must have focus. (See method listen.) Example (for a TurtleScreen instance named screen): >>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen() Subsequently the turtle can be moved by repeatedly pressing the up-arrow key, consequently drawing a hexagon """ if fun is None: if key in self._keys: self._keys.remove(key) elif key not in self._keys: self._keys.append(key) self._onkey(fun, key) def listen(self, xdummy=None, ydummy=None): """Set focus on TurtleScreen (in order to collect key-events) No arguments. Dummy arguments are provided in order to be able to pass listen to the onclick method. Example (for a TurtleScreen instance named screen): >>> screen.listen() """ self._listen() def ontimer(self, fun, t=0): """Install a timer, which calls fun after t milliseconds. Arguments: fun -- a function with no arguments. t -- a number >= 0 Example (for a TurtleScreen instance named screen): >>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) ... >>> f() # makes the turtle marching around >>> running = False """ self._ontimer(fun, t) def bgpic(self, picname=None): """Set background image or return name of current backgroundimage. Optional argument: picname -- a string, name of a gif-file or "nopic". If picname is a filename, set the corresponding image as background. If picname is "nopic", delete backgroundimage, if present. If picname is None, return the filename of the current backgroundimage. Example (for a TurtleScreen instance named screen): >>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() 'landscape.gif' """ if picname is None: return self._bgpicname if picname not in self._bgpics: self._bgpics[picname] = self._image(picname) self._setbgpic(self._bgpic, self._bgpics[picname]) self._bgpicname = picname def screensize(self, canvwidth=None, canvheight=None, bg=None): """Resize the canvas the turtles are drawing on. Optional arguments: canvwidth -- positive integer, new width of canvas in pixels canvheight -- positive integer, new height of canvas in pixels bg -- colorstring or color-tuple, new backgroundcolor If no arguments are given, return current (canvaswidth, canvasheight) Do not alter the drawing window. To observe hidden parts of the canvas use the scrollbars. (Can make visible those parts of a drawing, which were outside the canvas before!) Example (for a Turtle instance named turtle): >>> turtle.screensize(2000,1500) >>> # e. g. to search for an erroneously escaped turtle ;-) """ return self._resize(canvwidth, canvheight, bg) onscreenclick = onclick resetscreen = reset clearscreen = clear addshape = register_shape class TNavigator(object): """Navigation part of the RawTurtle. Implements methods for turtle movement. """ START_ORIENTATION = { "standard": Vec2D(1.0, 0.0), "world" : Vec2D(1.0, 0.0), "logo" : Vec2D(0.0, 1.0) } DEFAULT_MODE = "standard" DEFAULT_ANGLEOFFSET = 0 DEFAULT_ANGLEORIENT = 1 def __init__(self, mode=DEFAULT_MODE): self._angleOffset = self.DEFAULT_ANGLEOFFSET self._angleOrient = self.DEFAULT_ANGLEORIENT self._mode = mode self.undobuffer = None self.degrees() self._mode = None self._setmode(mode) TNavigator.reset(self) def reset(self): """reset turtle to its initial values Will be overwritten by parent class """ self._position = Vec2D(0.0, 0.0) self._orient = TNavigator.START_ORIENTATION[self._mode] def _setmode(self, mode=None): """Set turtle-mode to 'standard', 'world' or 'logo'. """ if mode is None: return self._mode if mode not in ["standard", "logo", "world"]: return self._mode = mode if mode in ["standard", "world"]: self._angleOffset = 0 self._angleOrient = 1 else: # mode == "logo": self._angleOffset = self._fullcircle/4. self._angleOrient = -1 def _setDegreesPerAU(self, fullcircle): """Helper function for degrees() and radians()""" self._fullcircle = fullcircle self._degreesPerAU = 360/fullcircle if self._mode == "standard": self._angleOffset = 0 else: self._angleOffset = fullcircle/4. def degrees(self, fullcircle=360.0): """ Set angle measurement units to degrees. Optional argument: fullcircle - a number Set angle measurement units, i. e. set number of 'degrees' for a full circle. Dafault value is 360 degrees. Example (for a Turtle instance named turtle): >>> turtle.left(90) >>> turtle.heading() 90 Change angle measurement unit to grad (also known as gon, grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100 """ self._setDegreesPerAU(fullcircle) def radians(self): """ Set the angle measurement units to radians. No arguments. Example (for a Turtle instance named turtle): >>> turtle.heading() 90 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966 """ self._setDegreesPerAU(2*math.pi) def _go(self, distance): """move turtle forward by specified distance""" ende = self._position + self._orient * distance self._goto(ende) def _rotate(self, angle): """Turn turtle counterclockwise by specified angle if angle > 0.""" angle *= self._degreesPerAU self._orient = self._orient.rotate(angle) def _goto(self, end): """move turtle to position end.""" self._position = end def forward(self, distance): """Move the turtle forward by the specified distance. Aliases: forward | fd Argument: distance -- a number (integer or float) Move the turtle forward by the specified distance, in the direction the turtle is headed. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00) """ self._go(distance) def back(self, distance): """Move the turtle backward by distance. Aliases: back | backward | bk Argument: distance -- a number Move the turtle backward by distance ,opposite to the direction the turtle is headed. Do not change the turtle's heading. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00, 0.00) """ self._go(-distance) def right(self, angle): """Turn turtle right by angle units. Aliases: right | rt Argument: angle -- a number (integer or float) Turn turtle right by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0 """ self._rotate(-angle) def left(self, angle): """Turn turtle left by angle units. Aliases: left | lt Argument: angle -- a number (integer or float) Turn turtle left by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0 """ self._rotate(angle) def pos(self): """Return the turtle's current location (x,y), as a Vec2D-vector. Aliases: pos | position No arguments. Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 240.00) """ return self._position def xcor(self): """ Return the turtle's x coordinate. No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.xcor() 50.0 """ return self._position[0] def ycor(self): """ Return the turtle's y coordinate --- No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.ycor() 86.6025403784 """ return self._position[1] def goto(self, x, y=None): """Move turtle to an absolute position. Aliases: setpos | setposition | goto: Arguments: x -- a number or a pair/vector of numbers y -- a number None call: goto(x, y) # two coordinates --or: goto((x, y)) # a pair (tuple) of coordinates --or: goto(vec) # e.g. as returned by pos() Move turtle to an absolute position. If the pen is down, a line will be drawn. The turtle's orientation does not change. Example (for a Turtle instance named turtle): >>> tp = turtle.pos() >>> tp (0.00, 0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00) """ if y is None: self._goto(Vec2D(*x)) else: self._goto(Vec2D(x, y)) def home(self): """Move turtle to the origin - coordinates (0,0). No arguments. Move turtle to the origin - coordinates (0,0) and set its heading to its start-orientation (which depends on mode). Example (for a Turtle instance named turtle): >>> turtle.home() """ self.goto(0, 0) self.setheading(0) def setx(self, x): """Set the turtle's first coordinate to x Argument: x -- a number (integer or float) Set the turtle's first coordinate to x, leave second coordinate unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 240.00) >>> turtle.setx(10) >>> turtle.position() (10.00, 240.00) """ self._goto(Vec2D(x, self._position[1])) def sety(self, y): """Set the turtle's second coordinate to y Argument: y -- a number (integer or float) Set the turtle's first coordinate to x, second coordinate remains unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00, -10.00) """ self._goto(Vec2D(self._position[0], y)) def distance(self, x, y=None): """Return the distance from the turtle to (x,y) in turtle step units. Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 0.00) >>> turtle.distance(30,40) 50.0 >>> pen = Turtle() >>> pen.forward(77) >>> turtle.distance(pen) 77.0 """ if y is not None: pos = Vec2D(x, y) if isinstance(x, Vec2D): pos = x elif isinstance(x, tuple): pos = Vec2D(*x) elif isinstance(x, TNavigator): pos = x._position return abs(pos - self._position) def towards(self, x, y=None): """Return the angle of the line from the turtle's position to (x, y). Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Return the angle, between the line from turtle-position to position specified by x, y and the turtle's start orientation. (Depends on modes - "standard" or "logo") Example (for a Turtle instance named turtle): >>> turtle.pos() (10.00, 10.00) >>> turtle.towards(0,0) 225.0 """ if y is not None: pos = Vec2D(x, y) if isinstance(x, Vec2D): pos = x elif isinstance(x, tuple): pos = Vec2D(*x) elif isinstance(x, TNavigator): pos = x._position x, y = pos - self._position result = round(math.atan2(y, x)*180.0/math.pi, 10) % 360.0 result /= self._degreesPerAU return (self._angleOffset + self._angleOrient*result) % self._fullcircle def heading(self): """ Return the turtle's current heading. No arguments. Example (for a Turtle instance named turtle): >>> turtle.left(67) >>> turtle.heading() 67.0 """ x, y = self._orient result = round(math.atan2(y, x)*180.0/math.pi, 10) % 360.0 result /= self._degreesPerAU return (self._angleOffset + self._angleOrient*result) % self._fullcircle def setheading(self, to_angle): """Set the orientation of the turtle to to_angle. Aliases: setheading | seth Argument: to_angle -- a number (integer or float) Set the orientation of the turtle to to_angle. Here are some common directions in degrees: standard - mode: logo-mode: -------------------|-------------------- 0 - east 0 - north 90 - north 90 - east 180 - west 180 - south 270 - south 270 - west Example (for a Turtle instance named turtle): >>> turtle.setheading(90) >>> turtle.heading() 90 """ angle = (to_angle - self.heading())*self._angleOrient full = self._fullcircle angle = (angle+full/2.)%full - full/2. self._rotate(angle) def circle(self, radius, extent = None, steps = None): """ Draw a circle with given radius. Arguments: radius -- a number extent (optional) -- a number steps (optional) -- an integer Draw a circle with given radius. The center is radius units left of the turtle; extent - an angle - determines which part of the circle is drawn. If extent is not given, draw the entire circle. If extent is not a full circle, one endpoint of the arc is the current pen position. Draw the arc in counterclockwise direction if radius is positive, otherwise in clockwise direction. Finally the direction of the turtle is changed by the amount of extent. As the circle is approximated by an inscribed regular polygon, steps determines the number of steps to use. If not given, it will be calculated automatically. Maybe used to draw regular polygons. call: circle(radius) # full circle --or: circle(radius, extent) # arc --or: circle(radius, extent, steps) --or: circle(radius, steps=6) # 6-sided polygon Example (for a Turtle instance named turtle): >>> turtle.circle(50) >>> turtle.circle(120, 180) # semicircle """ if self.undobuffer: self.undobuffer.push(["seq"]) self.undobuffer.cumulate = True speed = self.speed() if extent is None: extent = self._fullcircle if steps is None: frac = abs(extent)/self._fullcircle steps = 1+int(min(11+abs(radius)/6.0, 59.0)*frac) w = 1.0 * extent / steps w2 = 0.5 * w l = 2.0 * radius * math.sin(w2*math.pi/180.0*self._degreesPerAU) if radius < 0: l, w, w2 = -l, -w, -w2 tr = self.tracer() dl = self._delay() if speed == 0: self.tracer(0, 0) else: self.speed(0) self._rotate(w2) for i in range(steps): self.speed(speed) self._go(l) self.speed(0) self._rotate(w) self._rotate(-w2) if speed == 0: self.tracer(tr, dl) self.speed(speed) if self.undobuffer: self.undobuffer.cumulate = False ## three dummy methods to be implemented by child class: def speed(self, s=0): """dummy method - to be overwritten by child class""" def tracer(self, a=None, b=None): """dummy method - to be overwritten by child class""" def _delay(self, n=None): """dummy method - to be overwritten by child class""" fd = forward bk = back backward = back rt = right lt = left position = pos setpos = goto setposition = goto seth = setheading class TPen(object): """Drawing part of the RawTurtle. Implements drawing properties. """ def __init__(self, resizemode=_CFG["resizemode"]): self._resizemode = resizemode # or "user" or "noresize" self.undobuffer = None TPen._reset(self) def _reset(self, pencolor=_CFG["pencolor"], fillcolor=_CFG["fillcolor"]): self._pensize = 1 self._shown = True self._pencolor = pencolor self._fillcolor = fillcolor self._drawing = True self._speed = 3 self._stretchfactor = (1, 1) self._tilt = 0 self._outlinewidth = 1 ### self.screen = None # to override by child class def resizemode(self, rmode=None): """Set resizemode to one of the values: "auto", "user", "noresize". (Optional) Argument: rmode -- one of the strings "auto", "user", "noresize" Different resizemodes have the following effects: - "auto" adapts the appearance of the turtle corresponding to the value of pensize. - "user" adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), which are set by shapesize() - "noresize" no adaption of the turtle's appearance takes place. If no argument is given, return current resizemode. resizemode("user") is called by a call of shapesize with arguments. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("noresize") >>> turtle.resizemode() 'noresize' """ if rmode is None: return self._resizemode rmode = rmode.lower() if rmode in ["auto", "user", "noresize"]: self.pen(resizemode=rmode) def pensize(self, width=None): """Set or return the line thickness. Aliases: pensize | width Argument: width -- positive number Set the line thickness to width or return it. If resizemode is set to "auto" and turtleshape is a polygon, that polygon is drawn with the same line thickness. If no argument is given, current pensize is returned. Example (for a Turtle instance named turtle): >>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn """ if width is None: return self._pensize self.pen(pensize=width) def penup(self): """Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example (for a Turtle instance named turtle): >>> turtle.penup() """ if not self._drawing: return self.pen(pendown=False) def pendown(self): """Pull the pen down -- drawing when moving. Aliases: pendown | pd | down No argument. Example (for a Turtle instance named turtle): >>> turtle.pendown() """ if self._drawing: return self.pen(pendown=True) def isdown(self): """Return True if pen is down, False if it's up. No argument. Example (for a Turtle instance named turtle): >>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True """ return self._drawing def speed(self, speed=None): """ Return or set the turtle's speed. Optional argument: speed -- an integer in the range 0..10 or a speedstring (see below) Set the turtle's speed to an integer value in the range 0 .. 10. If no argument is given: return current speed. If input is a number greater than 10 or smaller than 0.5, speed is set to 0. Speedstrings are mapped to speedvalues in the following way: 'fastest' : 0 'fast' : 10 'normal' : 6 'slow' : 3 'slowest' : 1 speeds from 1 to 10 enforce increasingly faster animation of line drawing and turtle turning. Attention: speed = 0 : *no* animation takes place. forward/back makes turtle jump and likewise left/right make the turtle turn instantly. Example (for a Turtle instance named turtle): >>> turtle.speed(3) """ speeds = {'fastest':0, 'fast':10, 'normal':6, 'slow':3, 'slowest':1 } if speed is None: return self._speed if speed in speeds: speed = speeds[speed] elif 0.5 < speed < 10.5: speed = int(round(speed)) else: speed = 0 self.pen(speed=speed) def color(self, *args): """Return or set the pencolor and fillcolor. Arguments: Several input formats are allowed. They use 0, 1, 2, or 3 arguments as follows: color() Return the current pencolor and the current fillcolor as a pair of color specification strings as are returned by pencolor and fillcolor. color(colorstring), color((r,g,b)), color(r,g,b) inputs as in pencolor, set both, fillcolor and pencolor, to the given value. color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) equivalent to pencolor(colorstring1) and fillcolor(colorstring2) and analogously, if the other input format is used. If turtleshape is a polygon, outline and interior of that polygon is drawn with the newly set colors. For mor info see: pencolor, fillcolor Example (for a Turtle instance named turtle): >>> turtle.color('red', 'green') >>> turtle.color() ('red', 'green') >>> colormode(255) >>> color((40, 80, 120), (160, 200, 240)) >>> color() ('#285078', '#a0c8f0') """ if args: l = len(args) if l == 1: pcolor = fcolor = args[0] elif l == 2: pcolor, fcolor = args elif l == 3: pcolor = fcolor = args pcolor = self._colorstr(pcolor) fcolor = self._colorstr(fcolor) self.pen(pencolor=pcolor, fillcolor=fcolor) else: return self._color(self._pencolor), self._color(self._fillcolor) def pencolor(self, *args): """ Return or set the pencolor. Arguments: Four input formats are allowed: - pencolor() Return the current pencolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - pencolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - pencolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - pencolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the outline of that polygon is drawn with the newly set pencolor. Example (for a Turtle instance named turtle): >>> turtle.pencolor('brown') >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() '#33cc8c' """ if args: color = self._colorstr(args) if color == self._pencolor: return self.pen(pencolor=color) else: return self._color(self._pencolor) def fillcolor(self, *args): """ Return or set the fillcolor. Arguments: Four input formats are allowed: - fillcolor() Return the current fillcolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - fillcolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - fillcolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - fillcolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the interior of that polygon is drawn with the newly set fillcolor. Example (for a Turtle instance named turtle): >>> turtle.fillcolor('violet') >>> col = turtle.pencolor() >>> turtle.fillcolor(col) >>> turtle.fillcolor(0, .5, 0) """ if args: color = self._colorstr(args) if color == self._fillcolor: return self.pen(fillcolor=color) else: return self._color(self._fillcolor) def showturtle(self): """Makes the turtle visible. Aliases: showturtle | st No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> turtle.showturtle() """ self.pen(shown=True) def hideturtle(self): """Makes the turtle invisible. Aliases: hideturtle | ht No argument. It's a good idea to do this while you're in the middle of a complicated drawing, because hiding the turtle speeds up the drawing observably. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() """ self.pen(shown=False) def isvisible(self): """Return True if the Turtle is shown, False if it's hidden. No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> print turtle.isvisible(): False """ return self._shown def pen(self, pen=None, **pendict): """Return or set the pen's attributes. Arguments: pen -- a dictionary with some or all of the below listed keys. **pendict -- one or more keyword-arguments with the below listed keys as keywords. Return or set the pen's attributes in a 'pen-dictionary' with the following key/value pairs: "shown" : True/False "pendown" : True/False "pencolor" : color-string or color-tuple "fillcolor" : color-string or color-tuple "pensize" : positive number "speed" : number in range 0..10 "resizemode" : "auto" or "user" or "noresize" "stretchfactor": (positive number, positive number) "outline" : positive number "tilt" : number This dictionary can be used as argument for a subsequent pen()-call to restore the former pen-state. Moreover one or more of these attributes can be provided as keyword-arguments. This can be used to set several pen attributes in one statement. Examples (for a Turtle instance named turtle): >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'black', 'stretchfactor': (1,1), 'speed': 3} >>> penstate=turtle.pen() >>> turtle.color("yellow","") >>> turtle.penup() >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'yellow', 'pendown': False, 'fillcolor': '', 'stretchfactor': (1,1), 'speed': 3} >>> p.pen(penstate, fillcolor="green") >>> p.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'green', 'stretchfactor': (1,1), 'speed': 3} """ _pd = {"shown" : self._shown, "pendown" : self._drawing, "pencolor" : self._pencolor, "fillcolor" : self._fillcolor, "pensize" : self._pensize, "speed" : self._speed, "resizemode" : self._resizemode, "stretchfactor" : self._stretchfactor, "outline" : self._outlinewidth, "tilt" : self._tilt } if not (pen or pendict): return _pd if isinstance(pen, dict): p = pen else: p = {} p.update(pendict) _p_buf = {} for key in p: _p_buf[key] = _pd[key] if self.undobuffer: self.undobuffer.push(("pen", _p_buf)) newLine = False if "pendown" in p: if self._drawing != p["pendown"]: newLine = True if "pencolor" in p: if isinstance(p["pencolor"], tuple): p["pencolor"] = self._colorstr((p["pencolor"],)) if self._pencolor != p["pencolor"]: newLine = True if "pensize" in p: if self._pensize != p["pensize"]: newLine = True if newLine: self._newLine() if "pendown" in p: self._drawing = p["pendown"] if "pencolor" in p: self._pencolor = p["pencolor"] if "pensize" in p: self._pensize = p["pensize"] if "fillcolor" in p: if isinstance(p["fillcolor"], tuple): p["fillcolor"] = self._colorstr((p["fillcolor"],)) self._fillcolor = p["fillcolor"] if "speed" in p: self._speed = p["speed"] if "resizemode" in p: self._resizemode = p["resizemode"] if "stretchfactor" in p: sf = p["stretchfactor"] if isinstance(sf, (int, long, float)): sf = (sf, sf) self._stretchfactor = sf if "outline" in p: self._outlinewidth = p["outline"] if "shown" in p: self._shown = p["shown"] if "tilt" in p: self._tilt = p["tilt"] self._update() ## three dummy methods to be implemented by child class: def _newLine(self, usePos = True): """dummy method - to be overwritten by child class""" def _update(self, count=True, forced=False): """dummy method - to be overwritten by child class""" def _color(self, args): """dummy method - to be overwritten by child class""" def _colorstr(self, args): """dummy method - to be overwritten by child class""" width = pensize up = penup pu = penup pd = pendown down = pendown st = showturtle ht = hideturtle class _TurtleImage(object): """Helper class: Datatype to store Turtle attributes """ def __init__(self, screen, shapeIndex): self.screen = screen self._type = None self._setshape(shapeIndex) def _setshape(self, shapeIndex): screen = self.screen # RawTurtle.screens[self.screenIndex] self.shapeIndex = shapeIndex if self._type == "polygon" == screen._shapes[shapeIndex]._type: return if self._type == "image" == screen._shapes[shapeIndex]._type: return if self._type in ["image", "polygon"]: screen._delete(self._item) elif self._type == "compound": for item in self._item: screen._delete(item) self._type = screen._shapes[shapeIndex]._type if self._type == "polygon": self._item = screen._createpoly() elif self._type == "image": self._item = screen._createimage(screen._shapes["blank"]._data) elif self._type == "compound": self._item = [screen._createpoly() for item in screen._shapes[shapeIndex]._data] class RawTurtle(TPen, TNavigator): """Animation part of the RawTurtle. Puts RawTurtle upon a TurtleScreen and provides tools for its animation. """ screens = [] def __init__(self, canvas=None, shape=_CFG["shape"], undobuffersize=_CFG["undobuffersize"], visible=_CFG["visible"]): if isinstance(canvas, _Screen): self.screen = canvas elif isinstance(canvas, TurtleScreen): if canvas not in RawTurtle.screens: RawTurtle.screens.append(canvas) self.screen = canvas elif isinstance(canvas, (ScrolledCanvas, Canvas)): for screen in RawTurtle.screens: if screen.cv == canvas: self.screen = screen break else: self.screen = TurtleScreen(canvas) RawTurtle.screens.append(self.screen) else: raise TurtleGraphicsError("bad canvas argument %s" % canvas) screen = self.screen TNavigator.__init__(self, screen.mode()) TPen.__init__(self) screen._turtles.append(self) self.drawingLineItem = screen._createline() self.turtle = _TurtleImage(screen, shape) self._poly = None self._creatingPoly = False self._fillitem = self._fillpath = None self._shown = visible self._hidden_from_screen = False self.currentLineItem = screen._createline() self.currentLine = [self._position] self.items = [self.currentLineItem] self.stampItems = [] self._undobuffersize = undobuffersize self.undobuffer = Tbuffer(undobuffersize) self._update() def reset(self): """Delete the turtle's drawings and restore its default values. No argument. , Delete the turtle's drawings from the screen, re-center the turtle and set variables to the default values. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 """ TNavigator.reset(self) TPen._reset(self) self._clear() self._drawturtle() self._update() def setundobuffer(self, size): """Set or disable undobuffer. Argument: size -- an integer or None If size is an integer an empty undobuffer of given size is installed. Size gives the maximum number of turtle-actions that can be undone by the undo() function. If size is None, no undobuffer is present. Example (for a Turtle instance named turtle): >>> turtle.setundobuffer(42) """ if size is None or size <= 0: self.undobuffer = None else: self.undobuffer = Tbuffer(size) def undobufferentries(self): """Return count of entries in the undobuffer. No argument. Example (for a Turtle instance named turtle): >>> while undobufferentries(): ... undo() """ if self.undobuffer is None: return 0 return self.undobuffer.nr_of_items() def _clear(self): """Delete all of pen's drawings""" self._fillitem = self._fillpath = None for item in self.items: self.screen._delete(item) self.currentLineItem = self.screen._createline() self.currentLine = [] if self._drawing: self.currentLine.append(self._position) self.items = [self.currentLineItem] self.clearstamps() self.setundobuffer(self._undobuffersize) def clear(self): """Delete the turtle's drawings from the screen. Do not move turtle. No arguments. Delete the turtle's drawings from the screen. Do not move turtle. State and position of the turtle as well as drawings of other turtles are not affected. Examples (for a Turtle instance named turtle): >>> turtle.clear() """ self._clear() self._update() def _update_data(self): self.screen._incrementudc() if self.screen._updatecounter != 0: return if len(self.currentLine)>1: self.screen._drawline(self.currentLineItem, self.currentLine, self._pencolor, self._pensize) def _update(self): """Perform a Turtle-data update. """ screen = self.screen if screen._tracing == 0: return elif screen._tracing == 1: self._update_data() self._drawturtle() screen._update() # TurtleScreenBase screen._delay(screen._delayvalue) # TurtleScreenBase else: self._update_data() if screen._updatecounter == 0: for t in screen.turtles(): t._drawturtle() screen._update() def tracer(self, flag=None, delay=None): """Turns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a Turtle instance named turtle): >>> turtle.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... turtle.fd(dist) ... turtle.rt(90) ... dist += 2 """ return self.screen.tracer(flag, delay) def _color(self, args): return self.screen._color(args) def _colorstr(self, args): return self.screen._colorstr(args) def _cc(self, args): """Convert colortriples to hexstrings. """ if isinstance(args, basestring): return args try: r, g, b = args except (TypeError, ValueError): raise TurtleGraphicsError("bad color arguments: %s" % str(args)) if self.screen._colormode == 1.0: r, g, b = [round(255.0*x) for x in (r, g, b)] if not ((0 <= r <= 255) and (0 <= g <= 255) and (0 <= b <= 255)): raise TurtleGraphicsError("bad color sequence: %s" % str(args)) return "#%02x%02x%02x" % (r, g, b) def clone(self): """Create and return a clone of the turtle. No argument. Create and return a clone of the turtle with same position, heading and turtle properties. Example (for a Turtle instance named mick): mick = Turtle() joe = mick.clone() """ screen = self.screen self._newLine(self._drawing) turtle = self.turtle self.screen = None self.turtle = None # too make self deepcopy-able q = deepcopy(self) self.screen = screen self.turtle = turtle q.screen = screen q.turtle = _TurtleImage(screen, self.turtle.shapeIndex) screen._turtles.append(q) ttype = screen._shapes[self.turtle.shapeIndex]._type if ttype == "polygon": q.turtle._item = screen._createpoly() elif ttype == "image": q.turtle._item = screen._createimage(screen._shapes["blank"]._data) elif ttype == "compound": q.turtle._item = [screen._createpoly() for item in screen._shapes[self.turtle.shapeIndex]._data] q.currentLineItem = screen._createline() q._update() return q def shape(self, name=None): """Set turtle shape to shape with given name / return current shapename. Optional argument: name -- a string, which is a valid shapename Set turtle shape to shape with given name or, if name is not given, return name of current shape. Shape with name must exist in the TurtleScreen's shape dictionary. Initially there are the following polygon shapes: 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'. To learn about how to deal with shapes see Screen-method register_shape. Example (for a Turtle instance named turtle): >>> turtle.shape() 'arrow' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle' """ if name is None: return self.turtle.shapeIndex if not name in self.screen.getshapes(): raise TurtleGraphicsError("There is no shape named %s" % name) self.turtle._setshape(name) self._update() def shapesize(self, stretch_wid=None, stretch_len=None, outline=None): """Set/return turtle's stretchfactors/outline. Set resizemode to "user". Optional arguments: stretch_wid : positive number stretch_len : positive number outline : positive number Return or set the pen's attributes x/y-stretchfactors and/or outline. Set resizemode to "user". If and only if resizemode is set to "user", the turtle will be displayed stretched according to its stretchfactors: stretch_wid is stretchfactor perpendicular to orientation stretch_len is stretchfactor in direction of turtles orientation. outline determines the width of the shapes's outline. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize(outline=8) """ if stretch_wid is stretch_len is outline is None: stretch_wid, stretch_len = self._stretchfactor return stretch_wid, stretch_len, self._outlinewidth if stretch_wid is not None: if stretch_len is None: stretchfactor = stretch_wid, stretch_wid else: stretchfactor = stretch_wid, stretch_len elif stretch_len is not None: stretchfactor = self._stretchfactor[0], stretch_len else: stretchfactor = self._stretchfactor if outline is None: outline = self._outlinewidth self.pen(resizemode="user", stretchfactor=stretchfactor, outline=outline) def settiltangle(self, angle): """Rotate the turtleshape to point in the specified direction Optional argument: angle -- number Rotate the turtleshape to point in the direction specified by angle, regardless of its current tilt-angle. DO NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> stamp() >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> stamp() >>> turtle.fd(50) """ tilt = -angle * self._degreesPerAU * self._angleOrient tilt = (tilt * math.pi / 180.0) % (2*math.pi) self.pen(resizemode="user", tilt=tilt) def tiltangle(self): """Return the current tilt-angle. No argument. Return the current tilt-angle, i. e. the angle between the orientation of the turtleshape and the heading of the turtle (its direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() """ tilt = -self._tilt * (180.0/math.pi) * self._angleOrient return (tilt / self._degreesPerAU) % self._fullcircle def tilt(self, angle): """Rotate the turtleshape by angle. Argument: angle - a number Rotate the turtleshape by angle from its current tilt-angle, but do NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50) """ self.settiltangle(angle + self.tiltangle()) def _polytrafo(self, poly): """Computes transformed polygon shapes from a shape according to current position and heading. """ screen = self.screen p0, p1 = self._position e0, e1 = self._orient e = Vec2D(e0, e1 * screen.yscale / screen.xscale) e0, e1 = (1.0 / abs(e)) * e return [(p0+(e1*x+e0*y)/screen.xscale, p1+(-e0*x+e1*y)/screen.yscale) for (x, y) in poly] def _drawturtle(self): """Manages the correct rendering of the turtle with respect to its shape, resizemode, stretch and tilt etc.""" screen = self.screen shape = screen._shapes[self.turtle.shapeIndex] ttype = shape._type titem = self.turtle._item if self._shown and screen._updatecounter == 0 and screen._tracing > 0: self._hidden_from_screen = False tshape = shape._data if ttype == "polygon": if self._resizemode == "noresize": w = 1 shape = tshape else: if self._resizemode == "auto": lx = ly = max(1, self._pensize/5.0) w = self._pensize tiltangle = 0 elif self._resizemode == "user": lx, ly = self._stretchfactor w = self._outlinewidth tiltangle = self._tilt shape = [(lx*x, ly*y) for (x, y) in tshape] t0, t1 = math.sin(tiltangle), math.cos(tiltangle) shape = [(t1*x+t0*y, -t0*x+t1*y) for (x, y) in shape] shape = self._polytrafo(shape) fc, oc = self._fillcolor, self._pencolor screen._drawpoly(titem, shape, fill=fc, outline=oc, width=w, top=True) elif ttype == "image": screen._drawimage(titem, self._position, tshape) elif ttype == "compound": lx, ly = self._stretchfactor w = self._outlinewidth for item, (poly, fc, oc) in zip(titem, tshape): poly = [(lx*x, ly*y) for (x, y) in poly] poly = self._polytrafo(poly) screen._drawpoly(item, poly, fill=self._cc(fc), outline=self._cc(oc), width=w, top=True) else: if self._hidden_from_screen: return if ttype == "polygon": screen._drawpoly(titem, ((0, 0), (0, 0), (0, 0)), "", "") elif ttype == "image": screen._drawimage(titem, self._position, screen._shapes["blank"]._data) elif ttype == "compound": for item in titem: screen._drawpoly(item, ((0, 0), (0, 0), (0, 0)), "", "") self._hidden_from_screen = True ############################## stamp stuff ############################### def stamp(self): """Stamp a copy of the turtleshape onto the canvas and return its id. No argument. Stamp a copy of the turtle shape onto the canvas at the current turtle position. Return a stamp_id for that stamp, which can be used to delete it by calling clearstamp(stamp_id). Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> turtle.stamp() 13 >>> turtle.fd(50) """ screen = self.screen shape = screen._shapes[self.turtle.shapeIndex] ttype = shape._type tshape = shape._data if ttype == "polygon": stitem = screen._createpoly() if self._resizemode == "noresize": w = 1 shape = tshape else: if self._resizemode == "auto": lx = ly = max(1, self._pensize/5.0) w = self._pensize tiltangle = 0 elif self._resizemode == "user": lx, ly = self._stretchfactor w = self._outlinewidth tiltangle = self._tilt shape = [(lx*x, ly*y) for (x, y) in tshape] t0, t1 = math.sin(tiltangle), math.cos(tiltangle) shape = [(t1*x+t0*y, -t0*x+t1*y) for (x, y) in shape] shape = self._polytrafo(shape) fc, oc = self._fillcolor, self._pencolor screen._drawpoly(stitem, shape, fill=fc, outline=oc, width=w, top=True) elif ttype == "image": stitem = screen._createimage("") screen._drawimage(stitem, self._position, tshape) elif ttype == "compound": stitem = [] for element in tshape: item = screen._createpoly() stitem.append(item) stitem = tuple(stitem) lx, ly = self._stretchfactor w = self._outlinewidth for item, (poly, fc, oc) in zip(stitem, tshape): poly = [(lx*x, ly*y) for (x, y) in poly] poly = self._polytrafo(poly) screen._drawpoly(item, poly, fill=self._cc(fc), outline=self._cc(oc), width=w, top=True) self.stampItems.append(stitem) self.undobuffer.push(("stamp", stitem)) return stitem def _clearstamp(self, stampid): """does the work for clearstamp() and clearstamps() """ if stampid in self.stampItems: if isinstance(stampid, tuple): for subitem in stampid: self.screen._delete(subitem) else: self.screen._delete(stampid) self.stampItems.remove(stampid) # Delete stampitem from undobuffer if necessary # if clearstamp is called directly. item = ("stamp", stampid) buf = self.undobuffer if item not in buf.buffer: return index = buf.buffer.index(item) buf.buffer.remove(item) if index <= buf.ptr: buf.ptr = (buf.ptr - 1) % buf.bufsize buf.buffer.insert((buf.ptr+1)%buf.bufsize, [None]) def clearstamp(self, stampid): """Delete stamp with given stampid Argument: stampid - an integer, must be return value of previous stamp() call. Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.clearstamp(astamp) """ self._clearstamp(stampid) self._update() def clearstamps(self, n=None): """Delete all or first/last n of turtle's stamps. Optional argument: n -- an integer If n is None, delete all of pen's stamps, else if n > 0 delete first n stamps else if n < 0 delete last n stamps. Example (for a Turtle instance named turtle): >>> for i in range(8): ... turtle.stamp(); turtle.fd(30) ... >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps() """ if n is None: toDelete = self.stampItems[:] elif n >= 0: toDelete = self.stampItems[:n] else: toDelete = self.stampItems[n:] for item in toDelete: self._clearstamp(item) self._update() def _goto(self, end): """Move the pen to the point end, thereby drawing a line if pen is down. All other methods for turtle movement depend on this one. """ ## Version mit undo-stuff go_modes = ( self._drawing, self._pencolor, self._pensize, isinstance(self._fillpath, list)) screen = self.screen undo_entry = ("go", self._position, end, go_modes, (self.currentLineItem, self.currentLine[:], screen._pointlist(self.currentLineItem), self.items[:]) ) if self.undobuffer: self.undobuffer.push(undo_entry) start = self._position if self._speed and screen._tracing == 1: diff = (end-start) diffsq = (diff[0]*screen.xscale)**2 + (diff[1]*screen.yscale)**2 nhops = 1+int((diffsq**0.5)/(3*(1.1**self._speed)*self._speed)) delta = diff * (1.0/nhops) for n in range(1, nhops): if n == 1: top = True else: top = False self._position = start + delta * n if self._drawing: screen._drawline(self.drawingLineItem, (start, self._position), self._pencolor, self._pensize, top) self._update() if self._drawing: screen._drawline(self.drawingLineItem, ((0, 0), (0, 0)), fill="", width=self._pensize) # Turtle now at end, if self._drawing: # now update currentLine self.currentLine.append(end) if isinstance(self._fillpath, list): self._fillpath.append(end) ###### vererbung!!!!!!!!!!!!!!!!!!!!!! self._position = end if self._creatingPoly: self._poly.append(end) if len(self.currentLine) > 42: # 42! answer to the ultimate question # of life, the universe and everything self._newLine() self._update() #count=True) def _undogoto(self, entry): """Reverse a _goto. Used for undo() """ old, new, go_modes, coodata = entry drawing, pc, ps, filling = go_modes cLI, cL, pl, items = coodata screen = self.screen if abs(self._position - new) > 0.5: print "undogoto: HALLO-DA-STIMMT-WAS-NICHT!" # restore former situation self.currentLineItem = cLI self.currentLine = cL if pl == [(0, 0), (0, 0)]: usepc = "" else: usepc = pc screen._drawline(cLI, pl, fill=usepc, width=ps) todelete = [i for i in self.items if (i not in items) and (screen._type(i) == "line")] for i in todelete: screen._delete(i) self.items.remove(i) start = old if self._speed and screen._tracing == 1: diff = old - new diffsq = (diff[0]*screen.xscale)**2 + (diff[1]*screen.yscale)**2 nhops = 1+int((diffsq**0.5)/(3*(1.1**self._speed)*self._speed)) delta = diff * (1.0/nhops) for n in range(1, nhops): if n == 1: top = True else: top = False self._position = new + delta * n if drawing: screen._drawline(self.drawingLineItem, (start, self._position), pc, ps, top) self._update() if drawing: screen._drawline(self.drawingLineItem, ((0, 0), (0, 0)), fill="", width=ps) # Turtle now at position old, self._position = old ## if undo is done during creating a polygon, the last vertex ## will be deleted. if the polygon is entirely deleted, ## creatingPoly will be set to False. ## Polygons created before the last one will not be affected by undo() if self._creatingPoly: if len(self._poly) > 0: self._poly.pop() if self._poly == []: self._creatingPoly = False self._poly = None if filling: if self._fillpath == []: self._fillpath = None print "Unwahrscheinlich in _undogoto!" elif self._fillpath is not None: self._fillpath.pop() self._update() #count=True) def _rotate(self, angle): """Turns pen clockwise by angle. """ if self.undobuffer: self.undobuffer.push(("rot", angle, self._degreesPerAU)) angle *= self._degreesPerAU neworient = self._orient.rotate(angle) tracing = self.screen._tracing if tracing == 1 and self._speed > 0: anglevel = 3.0 * self._speed steps = 1 + int(abs(angle)/anglevel) delta = 1.0*angle/steps for _ in range(steps): self._orient = self._orient.rotate(delta) self._update() self._orient = neworient self._update() def _newLine(self, usePos=True): """Closes current line item and starts a new one. Remark: if current line became too long, animation performance (via _drawline) slowed down considerably. """ if len(self.currentLine) > 1: self.screen._drawline(self.currentLineItem, self.currentLine, self._pencolor, self._pensize) self.currentLineItem = self.screen._createline() self.items.append(self.currentLineItem) else: self.screen._drawline(self.currentLineItem, top=True) self.currentLine = [] if usePos: self.currentLine = [self._position] def fill(self, flag=None): """Call fill(True) before drawing a shape to fill, fill(False) when done. Optional argument: flag -- True/False (or 1/0 respectively) Call fill(True) before drawing the shape you want to fill, and fill(False) when done. When used without argument: return fillstate (True if filling, False else) Example (for a Turtle instance named turtle): >>> turtle.fill(True) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.fill(False) """ filling = isinstance(self._fillpath, list) if flag is None: return filling screen = self.screen entry1 = entry2 = () if filling: if len(self._fillpath) > 2: self.screen._drawpoly(self._fillitem, self._fillpath, fill=self._fillcolor) entry1 = ("dofill", self._fillitem) if flag: self._fillitem = self.screen._createpoly() self.items.append(self._fillitem) self._fillpath = [self._position] entry2 = ("beginfill", self._fillitem) # , self._fillpath) self._newLine() else: self._fillitem = self._fillpath = None if self.undobuffer: if entry1 == (): if entry2 != (): self.undobuffer.push(entry2) else: if entry2 == (): self.undobuffer.push(entry1) else: self.undobuffer.push(["seq", entry1, entry2]) self._update() def begin_fill(self): """Called just before drawing a shape to be filled. No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() """ self.fill(True) def end_fill(self): """Fill the shape drawn after the call begin_fill(). No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() """ self.fill(False) def dot(self, size=None, *color): """Draw a dot with diameter size, using color. Optional arguments: size -- an integer >= 1 (if given) color -- a colorstring or a numeric color tuple Draw a circular dot with diameter size, using color. If size is not given, the maximum of pensize+4 and 2*pensize is used. Example (for a Turtle instance named turtle): >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) """ #print "dot-1:", size, color if not color: if isinstance(size, (basestring, tuple)): color = self._colorstr(size) size = self._pensize + max(self._pensize, 4) else: color = self._pencolor if not size: size = self._pensize + max(self._pensize, 4) else: if size is None: size = self._pensize + max(self._pensize, 4) color = self._colorstr(color) #print "dot-2:", size, color if hasattr(self.screen, "_dot"): item = self.screen._dot(self._position, size, color) #print "dot:", size, color, "item:", item self.items.append(item) if self.undobuffer: self.undobuffer.push(("dot", item)) else: pen = self.pen() if self.undobuffer: self.undobuffer.push(["seq"]) self.undobuffer.cumulate = True try: if self.resizemode() == 'auto': self.ht() self.pendown() self.pensize(size) self.pencolor(color) self.forward(0) finally: self.pen(pen) if self.undobuffer: self.undobuffer.cumulate = False def _write(self, txt, align, font): """Performs the writing for write() """ item, end = self.screen._write(self._position, txt, align, font, self._pencolor) self.items.append(item) if self.undobuffer: self.undobuffer.push(("wri", item)) return end def write(self, arg, move=False, align="left", font=("Arial", 8, "normal")): """Write text at the current turtle position. Arguments: arg -- info, which is to be written to the TurtleScreen move (optional) -- True/False align (optional) -- one of the strings "left", "center" or right" font (optional) -- a triple (fontname, fontsize, fonttype) Write text - the string representation of arg - at the current turtle position according to align ("left", "center" or right") and with the given font. If move is True, the pen is moved to the bottom-right corner of the text. By default, move is False. Example (for a Turtle instance named turtle): >>> turtle.write('Home = ', True, align="center") >>> turtle.write((0,0), True) """ if self.undobuffer: self.undobuffer.push(["seq"]) self.undobuffer.cumulate = True end = self._write(str(arg), align.lower(), font) if move: x, y = self.pos() self.setpos(end, y) if self.undobuffer: self.undobuffer.cumulate = False def begin_poly(self): """Start recording the vertices of a polygon. No argument. Start recording the vertices of a polygon. Current turtle position is first point of polygon. Example (for a Turtle instance named turtle): >>> turtle.begin_poly() """ self._poly = [self._position] self._creatingPoly = True def end_poly(self): """Stop recording the vertices of a polygon. No argument. Stop recording the vertices of a polygon. Current turtle position is last point of polygon. This will be connected with the first point. Example (for a Turtle instance named turtle): >>> turtle.end_poly() """ self._creatingPoly = False def get_poly(self): """Return the lastly recorded polygon. No argument. Example (for a Turtle instance named turtle): >>> p = turtle.get_poly() >>> turtle.register_shape("myFavouriteShape", p) """ ## check if there is any poly? -- 1st solution: if self._poly is not None: return tuple(self._poly) def getscreen(self): """Return the TurtleScreen object, the turtle is drawing on. No argument. Return the TurtleScreen object, the turtle is drawing on. So TurtleScreen-methods can be called for that object. Example (for a Turtle instance named turtle): >>> ts = turtle.getscreen() >>> ts <turtle.TurtleScreen object at 0x0106B770> >>> ts.bgcolor("pink") """ return self.screen def getturtle(self): """Return the Turtleobject itself. No argument. Only reasonable use: as a function to return the 'anonymous turtle': Example: >>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x0187D810> >>> turtles() [<turtle.Turtle object at 0x0187D810>] """ return self getpen = getturtle ################################################################ ### screen oriented methods recurring to methods of TurtleScreen ################################################################ def window_width(self): """ Returns the width of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 """ return self.screen._window_size()[0] def window_height(self): """ Return the height of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 """ return self.screen._window_size()[1] def _delay(self, delay=None): """Set delay value which determines speed of turtle animation. """ return self.screen.delay(delay) ##### event binding methods ##### def onclick(self, fun, btn=1, add=None): """Bind fun to mouse-click event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). add -- True or False. If True, new binding will be added, otherwise it will replace a former binding. Example for the anonymous turtle, i. e. the procedural way: >>> def turn(x, y): ... left(360) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed """ self.screen._onclick(self.turtle._item, fun, btn, add) self._update() def onrelease(self, fun, btn=1, add=None): """Bind fun to mouse-button-release event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Example (for a MyTurtle instance named joe): >>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> joe = MyTurtle() >>> joe.onclick(joe.glow) >>> joe.onrelease(joe.unglow) Clicking on joe turns fillcolor red, unclicking turns it to transparent. """ self.screen._onrelease(self.turtle._item, fun, btn, add) self._update() def ondrag(self, fun, btn=1, add=None): """Bind fun to mouse-move event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. Example (for a Turtle instance named turtle): >>> turtle.ondrag(turtle.goto) Subsequently clicking and dragging a Turtle will move it across the screen thereby producing handdrawings (if pen is down). """ self.screen._ondrag(self.turtle._item, fun, btn, add) def _undo(self, action, data): """Does the main part of the work for undo() """ if self.undobuffer is None: return if action == "rot": angle, degPAU = data self._rotate(-angle*degPAU/self._degreesPerAU) dummy = self.undobuffer.pop() elif action == "stamp": stitem = data[0] self.clearstamp(stitem) elif action == "go": self._undogoto(data) elif action in ["wri", "dot"]: item = data[0] self.screen._delete(item) self.items.remove(item) elif action == "dofill": item = data[0] self.screen._drawpoly(item, ((0, 0),(0, 0),(0, 0)), fill="", outline="") elif action == "beginfill": item = data[0] self._fillitem = self._fillpath = None self.screen._delete(item) self.items.remove(item) elif action == "pen": TPen.pen(self, data[0]) self.undobuffer.pop() def undo(self): """undo (repeatedly) the last turtle action. No argument. undo (repeatedly) the last turtle action. Number of available undo actions is determined by the size of the undobuffer. Example (for a Turtle instance named turtle): >>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo() ... """ if self.undobuffer is None: return item = self.undobuffer.pop() action = item[0] data = item[1:] if action == "seq": while data: item = data.pop() self._undo(item[0], item[1:]) else: self._undo(action, data) turtlesize = shapesize RawPen = RawTurtle ### Screen - Singleton ######################## def Screen(): """Return the singleton screen object. If none exists at the moment, create a new one and return it, else return the existing one.""" if Turtle._screen is None: Turtle._screen = _Screen() return Turtle._screen class _Screen(TurtleScreen): _root = None _canvas = None _title = _CFG["title"] def __init__(self): # XXX there is no need for this code to be conditional, # as there will be only a single _Screen instance, anyway # XXX actually, the turtle demo is injecting root window, # so perhaps the conditional creation of a root should be # preserved (perhaps by passing it as an optional parameter) if _Screen._root is None: _Screen._root = self._root = _Root() self._root.title(_Screen._title) self._root.ondestroy(self._destroy) if _Screen._canvas is None: width = _CFG["width"] height = _CFG["height"] canvwidth = _CFG["canvwidth"] canvheight = _CFG["canvheight"] leftright = _CFG["leftright"] topbottom = _CFG["topbottom"] self._root.setupcanvas(width, height, canvwidth, canvheight) _Screen._canvas = self._root._getcanvas() TurtleScreen.__init__(self, _Screen._canvas) self.setup(width, height, leftright, topbottom) def setup(self, width=_CFG["width"], height=_CFG["height"], startx=_CFG["leftright"], starty=_CFG["topbottom"]): """ Set the size and position of the main window. Arguments: width: as integer a size in pixels, as float a fraction of the screen. Default is 50% of screen. height: as integer the height in pixels, as float a fraction of the screen. Default is 75% of screen. startx: if positive, starting position in pixels from the left edge of the screen, if negative from the right edge Default, startx=None is to center window horizontally. starty: if positive, starting position in pixels from the top edge of the screen, if negative from the bottom edge Default, starty=None is to center window vertically. Examples (for a Screen instance named screen): >>> screen.setup (width=200, height=200, startx=0, starty=0) sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) sets window to 75% of screen by 50% of screen and centers """ if not hasattr(self._root, "set_geometry"): return sw = self._root.win_width() sh = self._root.win_height() if isinstance(width, float) and 0 <= width <= 1: width = sw*width if startx is None: startx = (sw - width) / 2 if isinstance(height, float) and 0 <= height <= 1: height = sh*height if starty is None: starty = (sh - height) / 2 self._root.set_geometry(width, height, startx, starty) self.update() def title(self, titlestring): """Set title of turtle-window Argument: titlestring -- a string, to appear in the titlebar of the turtle graphics window. This is a method of Screen-class. Not available for TurtleScreen- objects. Example (for a Screen instance named screen): >>> screen.title("Welcome to the turtle-zoo!") """ if _Screen._root is not None: _Screen._root.title(titlestring) _Screen._title = titlestring def _destroy(self): root = self._root if root is _Screen._root: Turtle._pen = None Turtle._screen = None _Screen._root = None _Screen._canvas = None TurtleScreen._RUNNING = False root.destroy() def bye(self): """Shut the turtlegraphics window. Example (for a TurtleScreen instance named screen): >>> screen.bye() """ self._destroy() def exitonclick(self): """Go into mainloop until the mouse is clicked. No arguments. Bind bye() method to mouseclick on TurtleScreen. If "using_IDLE" - value in configuration dictionary is False (default value), enter mainloop. If IDLE with -n switch (no subprocess) is used, this value should be set to True in turtle.cfg. In this case IDLE's mainloop is active also for the client script. This is a method of the Screen-class and not available for TurtleScreen instances. Example (for a Screen instance named screen): >>> screen.exitonclick() """ def exitGracefully(x, y): """Screen.bye() with two dummy-parameters""" self.bye() self.onclick(exitGracefully) if _CFG["using_IDLE"]: return try: mainloop() except AttributeError: exit(0) class Turtle(RawTurtle): """RawTurtle auto-creating (scrolled) canvas. When a Turtle object is created or a function derived from some Turtle method is called a TurtleScreen object is automatically created. """ _pen = None _screen = None def __init__(self, shape=_CFG["shape"], undobuffersize=_CFG["undobuffersize"], visible=_CFG["visible"]): if Turtle._screen is None: Turtle._screen = Screen() RawTurtle.__init__(self, Turtle._screen, shape=shape, undobuffersize=undobuffersize, visible=visible) Pen = Turtle def write_docstringdict(filename="turtle_docstringdict"): """Create and write docstring-dictionary to file. Optional argument: filename -- a string, used as filename default value is turtle_docstringdict Has to be called explicitly, (not used by the turtle-graphics classes) The docstring dictionary will be written to the Python script <filname>.py It is intended to serve as a template for translation of the docstrings into different languages. """ docsdict = {} for methodname in _tg_screen_functions: key = "_Screen."+methodname docsdict[key] = eval(key).__doc__ for methodname in _tg_turtle_functions: key = "Turtle."+methodname docsdict[key] = eval(key).__doc__ f = open("%s.py" % filename,"w") keys = sorted([x for x in docsdict.keys() if x.split('.')[1] not in _alias_list]) f.write('docsdict = {\n\n') for key in keys[:-1]: f.write('%s :\n' % repr(key)) f.write(' """%s\n""",\n\n' % docsdict[key]) key = keys[-1] f.write('%s :\n' % repr(key)) f.write(' """%s\n"""\n\n' % docsdict[key]) f.write("}\n") f.close() def read_docstrings(lang): """Read in docstrings from lang-specific docstring dictionary. Transfer docstrings, translated to lang, from a dictionary-file to the methods of classes Screen and Turtle and - in revised form - to the corresponding functions. """ modname = "turtle_docstringdict_%(language)s" % {'language':lang.lower()} module = __import__(modname) docsdict = module.docsdict for key in docsdict: #print key try: eval(key).im_func.__doc__ = docsdict[key] except BaseException: print "Bad docstring-entry: %s" % key _LANGUAGE = _CFG["language"] try: if _LANGUAGE != "english": read_docstrings(_LANGUAGE) except ImportError: print "Cannot find docsdict for", _LANGUAGE except BaseException: print ("Unknown Error when trying to import %s-docstring-dictionary" % _LANGUAGE) def getmethparlist(ob): "Get strings describing the arguments for the given object" argText1 = argText2 = "" # bit of a hack for methods - turn it into a function # but we drop the "self" param. if type(ob)==types.MethodType: fob = ob.im_func argOffset = 1 else: fob = ob argOffset = 0 # Try and build one for Python defined functions if type(fob) in [types.FunctionType, types.LambdaType]: try: counter = fob.func_code.co_argcount items2 = list(fob.func_code.co_varnames[argOffset:counter]) realArgs = fob.func_code.co_varnames[argOffset:counter] defaults = fob.func_defaults or [] defaults = list(map(lambda name: "=%s" % repr(name), defaults)) defaults = [""] * (len(realArgs)-len(defaults)) + defaults items1 = map(lambda arg, dflt: arg+dflt, realArgs, defaults) if fob.func_code.co_flags & 0x4: items1.append("*"+fob.func_code.co_varnames[counter]) items2.append("*"+fob.func_code.co_varnames[counter]) counter += 1 if fob.func_code.co_flags & 0x8: items1.append("**"+fob.func_code.co_varnames[counter]) items2.append("**"+fob.func_code.co_varnames[counter]) argText1 = ", ".join(items1) argText1 = "(%s)" % argText1 argText2 = ", ".join(items2) argText2 = "(%s)" % argText2 except: pass return argText1, argText2 def _turtle_docrevise(docstr): """To reduce docstrings from RawTurtle class for functions """ import re if docstr is None: return None turtlename = _CFG["exampleturtle"] newdocstr = docstr.replace("%s." % turtlename,"") parexp = re.compile(r' \(.+ %s\):' % turtlename) newdocstr = parexp.sub(":", newdocstr) return newdocstr def _screen_docrevise(docstr): """To reduce docstrings from TurtleScreen class for functions """ import re if docstr is None: return None screenname = _CFG["examplescreen"] newdocstr = docstr.replace("%s." % screenname,"") parexp = re.compile(r' \(.+ %s\):' % screenname) newdocstr = parexp.sub(":", newdocstr) return newdocstr ## The following mechanism makes all methods of RawTurtle and Turtle available ## as functions. So we can enhance, change, add, delete methods to these ## classes and do not need to change anything here. __func_body = """\ def {name}{paramslist}: if {obj} is None: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator {obj} = {init} try: return {obj}.{name}{argslist} except TK.TclError: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator raise """ def _make_global_funcs(functions, cls, obj, init, docrevise): for methodname in functions: method = getattr(cls, methodname) pl1, pl2 = getmethparlist(method) if pl1 == "": print ">>>>>>", pl1, pl2 continue defstr = __func_body.format(obj=obj, init=init, name=methodname, paramslist=pl1, argslist=pl2) exec defstr in globals() globals()[methodname].__doc__ = docrevise(method.__doc__) _make_global_funcs(_tg_screen_functions, _Screen, 'Turtle._screen', 'Screen()', _screen_docrevise) _make_global_funcs(_tg_turtle_functions, Turtle, 'Turtle._pen', 'Turtle()', _turtle_docrevise) done = mainloop = TK.mainloop if __name__ == "__main__": def switchpen(): if isdown(): pu() else: pd() def demo1(): """Demo of old turtle.py - module""" reset() tracer(True) up() backward(100) down() # draw 3 squares; the last filled width(3) for i in range(3): if i == 2: fill(1) for _ in range(4): forward(20) left(90) if i == 2: color("maroon") fill(0) up() forward(30) down() width(1) color("black") # move out of the way tracer(False) up() right(90) forward(100) right(90) forward(100) right(180) down() # some text write("startstart", 1) write(u"start", 1) color("red") # staircase for i in range(5): forward(20) left(90) forward(20) right(90) # filled staircase tracer(True) fill(1) for i in range(5): forward(20) left(90) forward(20) right(90) fill(0) # more text def demo2(): """Demo of some new features.""" speed(1) st() pensize(3) setheading(towards(0, 0)) radius = distance(0, 0)/2.0 rt(90) for _ in range(18): switchpen() circle(radius, 10) write("wait a moment...") while undobufferentries(): undo() reset() lt(90) colormode(255) laenge = 10 pencolor("green") pensize(3) lt(180) for i in range(-2, 16): if i > 0: begin_fill() fillcolor(255-15*i, 0, 15*i) for _ in range(3): fd(laenge) lt(120) laenge += 10 lt(15) speed((speed()+1)%12) end_fill() lt(120) pu() fd(70) rt(30) pd() color("red","yellow") speed(0) fill(1) for _ in range(4): circle(50, 90) rt(90) fd(30) rt(90) fill(0) lt(90) pu() fd(30) pd() shape("turtle") tri = getturtle() tri.resizemode("auto") turtle = Turtle() turtle.resizemode(u"auto") turtle.shape("turtle") turtle.reset() turtle.left(90) turtle.speed(0) turtle.up() turtle.goto(280, 40) turtle.lt(30) turtle.down() turtle.speed(6) turtle.color("blue",u"orange") turtle.pensize(2) tri.speed(6) setheading(towards(turtle)) count = 1 while tri.distance(turtle) > 4: turtle.fd(3.5) turtle.lt(0.6) tri.setheading(tri.towards(turtle)) tri.fd(4) if count % 20 == 0: turtle.stamp() tri.stamp() switchpen() count += 1 tri.write("CAUGHT! ", font=("Arial", 16, "bold"), align=u"right") tri.pencolor("black") tri.pencolor(u"red") def baba(xdummy, ydummy): clearscreen() bye() time.sleep(2) while undobufferentries(): tri.undo() turtle.undo() tri.fd(50) tri.write(" Click me!", font = ("Courier", 12, "bold") ) tri.onclick(baba, 1) demo1() demo2() exitonclick() turtle.pyc000064400000420471151703463030006612 0ustar00� zfcO@s+dZdZddlZddlZddlZddlZddlZddlm Z m Z mZddlm Z ddlTddd d ddd ddg Zddddddddddddddddd d!d"d#d$d%d&d'd(d)gZd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmd%dndodpdqdrd(d)dsdtdugOZdvdwdxgZdydzd{d|d}d~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�gZeeeed�geZdd+d.d;dGdKdOdUdWd\d]d_d`didndqdrgZid�dr6d�d�6d�d�6d�d�6ed�6ed�6d�d6d�d6d�d6d�d�6d�de6d�dQ6d�d=6d�d[6ed�6d�d�6d�d�6d�d�6d�d$6ed�6Zd��Zd��Zyee�Wnek rfd�GHnXdefd���YZd��Zd��Zd�d�Z fd��Z!dej"fd���YZ#e!e#ej$d��d�ej%fd���YZ&ej$Z$d�e'fd���YZ(d�e)fd���YZ*d�e)fd���YZ+de'fd���YZ,d�e'fd���YZ-de(fd���YZ.d�e'fd���YZ/d�e'fd���YZ0d�e'fd���YZ1d e0e/fd���YZ2e2Z3d��Z4d�e.fd���YZ5de2fd���YZ6e6Z7d�d��Z8d��Z9ed�Z:ye:d�krNe9e:�nWn3e;k rkd�Ge:GHnek r�d�e:GHnXd��Z<d��Z=d��Z>d�Z?d��Z@e@ee5d�d�e>�e@ee6d�d�e=�ejAZBZAeCd�kr'd��ZDd��ZEd��ZFeE�eF�eG�ndS(�s� Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise. By combining together these and similar commands, intricate shapes and pictures can easily be drawn. ----- turtle.py This module is an extended reimplementation of turtle.py from the Python standard distribution up to Python 2.5. (See: http://www.python.org) It tries to keep the merits of turtle.py and to be (nearly) 100% compatible with it. This means in the first place to enable the learning programmer to use all the commands, classes and methods interactively when using the module from within IDLE run with the -n switch. Roughly it has the following features added: - Better animation of the turtle movements, especially of turning the turtle. So the turtles can more easily be used as a visual feedback instrument by the (beginning) programmer. - Different turtle shapes, gif-images as turtle shapes, user defined and user controllable turtle shapes, among them compound (multicolored) shapes. Turtle shapes can be stretched and tilted, which makes turtles very versatile geometrical objects. - Fine control over turtle movement and screen updates via delay(), and enhanced tracer() and speed() methods. - Aliases for the most commonly used commands, like fd for forward etc., following the early Logo traditions. This reduces the boring work of typing long sequences of commands, which often occur in a natural way when kids try to program fancy pictures on their first encounter with turtle graphics. - Turtles now have an undo()-method with configurable undo-buffer. - Some simple commands/methods for creating event driven programs (mouse-, key-, timer-events). Especially useful for programming games. - A scrollable Canvas class. The default scrollable Canvas can be extended interactively as needed while playing around with the turtle(s). - A TurtleScreen class with methods controlling background color or background image, window and canvas size and other properties of the TurtleScreen. - There is a method, setworldcoordinates(), to install a user defined coordinate-system for the TurtleScreen. - The implementation uses a 2-vector class named Vec2D, derived from tuple. This class is public, so it can be imported by the application programmer, which makes certain types of computations very natural and compact. - Appearance of the TurtleScreen and the Turtles at startup/import can be configured by means of a turtle.cfg configuration file. The default configuration mimics the appearance of the old turtle module. - If configured appropriately the module reads in docstrings from a docstring dictionary in some different language, supplied separately and replaces the English ones by those read in. There is a utility function write_docstringdict() to write a dictionary with the original (English) docstrings to disc, so it can serve as a template for translations. Behind the scenes there are some features included with possible extensions in mind. These will be commented and documented elsewhere. s5turtle 1.0b1 - for Python 2.6 - 30. 5. 2008, 18:08i����N(tisfiletsplittjoin(tdeepcopy(t*tScrolledCanvastTurtleScreentScreent RawTurtletTurtletRawPentPentShapetVec2Dtaddshapetbgcolortbgpictbyetclearscreent colormodetdelaytexitonclickt getcanvast getshapestlistentmodetonkeyt onscreenclicktontimertregister_shapetresetscreent screensizetsetuptsetworldcoordinatesttitlettracertturtlestupdatet window_heighttwindow_widthtbacktbackwardt begin_fillt begin_polytbktcircletcleart clearstamptclearstampstclonetcolortdegreestdistancetdottdowntend_filltend_polytfdtfillt fillcolortforwardtget_polytgetpent getscreent getturtletgototheadingt hideturtlethomethttisdownt isvisibletlefttlttonclicktondragt onreleasetpdtpentpencolortpendowntpensizetpenuptpostpositiontputradianstrighttresett resizemodetrttsetht setheadingtsetpostsetpositiontsettiltanglet setundobuffertsetxtsetytshapet shapesizet showturtletspeedtsttstampttiltt tiltanglettowardst turtlesizetundotundobufferentriestuptwidthtwritetxcortycortwrite_docstringdicttdonetmainlooptacostasintatantatan2tceiltcostcoshtetexptfabstfloortfmodtfrexpthypottldexptlogtlog10tmodftpitpowtsintsinhtsqrtttanttanht Terminatorg�?g�?theighti�t canvwidthi,t canvheightt leftrightt topbottomtstandardg�?i i�tundobuffersizetclassictblacktnoresizetvisibletenglishtlanguagetturtlet exampleturtletscreent examplescreensPython Turtle Graphicst using_IDLEcCs#t|d�}|j�}|j�i}x�|D]�}|j�}|s2|jd�r`q2ny|jd�\}}Wn#tk r�d||fGHq2nX|j�}|j�}|dkr�t|�}n?y+d |kr�t|�}nt |�}Wntk rnX|||<q2W|S(s/Convert content of config-file into dictionary.trt#t=sBad line in config-file %s: %stTruetFalsetNones''s""t.(R�R�R�s''s""( topent readlinestclosetstript startswithRt ValueErrortevaltfloattint(tfilenametftcfglinestcfgdicttlinetkeytvalue((s%/usr/lib64/python2.7/lib-tk/turtle.pytconfig_dict�s2 cCs�d}i}i}t|�r-t|�}nd|krJd|d}ny%tt�\}}t||�}Wntk r�d}nXt|�r�t|�}ntj|�tj|�dS(s@Read config-files, change configuration-dict accordingly. If there is a turtle.cfg file in the current working directory, read it from there. If this contains an importconfig-value, say 'myway', construct filename turtle_mayway.cfg else use turtle.cfg and read it from the import-directory, where turtle.py is located. Update configuration dictionary first according to config-file, in the import directory, then according to config-file in the current working directory. If no config-file is found, the default configuration is used. s turtle.cfgtimportconfigs turtle_%s.cfgtN(RR�Rt__file__Rt BaseExceptiont_CFGR%(R�tdefault_cfgtcfgdict1tcfgdict2theadttailt cfg_file2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt readconfig�s s"No configfile read, reason unknowncBsheZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Zd �ZRS(s�A 2 dimensional vector class, used as a helper class for implementing turtle graphics. May be useful for turtle graphics programs also. Derived from tuple, so a vector is a tuple! Provides (for a, b vectors, k number): a+b vector addition a-b vector subtraction a*b inner product k*a and a*k multiplication with scalar |a| absolute value of a a.rotate(angle) rotation cCstj|||f�S(N(ttuplet__new__(tclstxty((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs%t|d|d|d|d�S(Nii(R (tselftother((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__add__scCsLt|t�r/|d|d|d|dSt|d||d|�S(Nii(t isinstanceR (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__mul__s cCs9t|tttf�r5t|d||d|�SdS(Nii(R�R�tlongR�R (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__rmul__scCs%t|d|d|d|d�S(Nii(R (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__sub__scCst|d|d�S(Nii(R (R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__neg__scCs|dd|dddS(Niiig�?((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__abs__scCs}t|d|d�}|tjd}tj|�tj|�}}t|d||d||d||d|�S(s.rotate self counterclockwise by angle iig�f@(R tmathR�R|R�(R�tangletperptcts((s%/usr/lib64/python2.7/lib-tk/turtle.pytrotatescCs|d|dfS(Nii((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__getnewargs__&scCsd|S(Ns(%.2f,%.2f)((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__repr__(s( t__name__t __module__t__doc__R�R�R�R�R�R�R�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR s cCs}t|j�}|j�x|D]}t||�q Wx?|jj�D].\}}t|�tjkrG|||<qGqGWdS(s#helper function for Scrolled CanvasN( tlistt __bases__treverset__methodDictt__dict__titemsttypettypestFunctionType(R�t_dicttbaseListt_superR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�4s cCsi}t||�|j�S(s#helper function for Scrolled Canvas(R�tkeys(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt __methods>s s*def %(method)s(self, *args, **kw): return s*self.%(attribute)s.%(method)s(*args, **kw)c Bs&i}e||�x>|j�D]0}|d dksF|ddkr ||=q q Wx$|D]}||kr[||=q[q[Wx*e|�D]}||kr�||=q�q�Wxw|j�D]i\}}i|d6|d6}e|�ejkrei|d6|d6} n| |U|||j|<q�WdS(snHelper functions for Scrolled Canvas, used to forward ScrolledCanvas-methods to Tkinter.Canvas class. it_i����tmethodtfunct attributeN( R�R�R�R�R�R�t StringTypet__stringBodyR�( t fromClassttoClassttoParttexcludeR�texR�R�tdt execString((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__forwardmethodsHs" cBs}eZdZddddd�Zdddd�Zd�Zd�Zd�Zd �Z d �Z d�Zd�Zd �Z RS(s�Modeled after the scrolled canvas class from Grayons's Tkinter book. Used as the default canvas, which pops up automatically when using turtle graphics functions or the Turtle class. i�i^iXcCs tjj||d|d|�|j�|_|||_|_|||_|_d|_ tj |d|d|d|j dtjdd�|_tj |d|jjd tj�|_tj |d|jj�|_|jjd |jjd|jj�|jdd ddd�|jdd ddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|j�|jjd|j�dS(NRpR�twhitetbgtrelieftborderwidthitcommandtorienttxscrollcommandtyscrollcommanditweightitminsizetpadxtin_tpadytrowtcolumntrowspant columnspantstickytnewss<Configure>(tTKtFramet__init__twinfo_toplevelt_rootwindowRpR�R�R�R�tCanvastSUNKENt_canvast Scrollbartxviewt HORIZONTALthscrolltyviewtvscrollt configuretsettrowconfiguretcolumnconfiguretgridRXtbindtonResize(R�tmasterRpR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRgs, $$$ c Cs�|r||_n|r$||_n|r6||_n|jjd|d|jd|jd|jd|jdf�|jjd|j|jd|j�|jjd|j|jd|j�|j �dS(s<Adjust canvas and scrollbars according to given canvas size.R�tscrollregionig�?iN( R�R�R�Rtconfigtxview_movetoRptyview_movetoR�t adjustScrolls(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCs|jj�}|jj�}|jjd|j||j�|jjd|j||j�||jks�||jkr�|jjddd|ddddddd dd ddd�|j jddd|ddddddd dd ddd�n|jj �|j j �d S(sA Adjust scrollbars according to window- and canvas-size. g�?RiRR R RiRR RRN(Rtwinfo_widthtwinfo_heightR(R�R)R�RR"Rtgrid_forget(R�tcwidthtcheight((s%/usr/lib64/python2.7/lib-tk/turtle.pyR*�s""$$ cCs|j�dS(sself-explanatoryN(R*(R�tevent((s%/usr/lib64/python2.7/lib-tk/turtle.pyR$�scGs|jj|�S(s@ 'forward' method, which canvas itself has inherited... (Rtbbox(R�targs((s%/usr/lib64/python2.7/lib-tk/turtle.pyR1�scOs|jj||�S(s@ 'forward' method, which canvas itself has inherited... (Rtcget(R�R2tkwargs((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(RR'(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR'�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(RR#(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(Rtunbind(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR5�scCs|jj�dS(s@ 'forward' method, which canvas itself has inherited... N(Rtfocus_force(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR6�sN(R�R�R�RR�RXR*R$R1R3R'R#R5R6(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRas Rt_RootcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(s'Root class for Screen based on Tkinter.cCstjj|�dS(N(RtTkR(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs8t|||||�|_|jjdddd�dS(NtexpandiR:tboth(RRtpack(R�RpR�R.R/((s%/usr/lib64/python2.7/lib-tk/turtle.pytsetupcanvas�scCs|jS(N(R(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _getcanvas�scCs!|jd||||f�dS(Ns%dx%d%+d%+d(tgeometry(R�RpR�tstartxtstarty((s%/usr/lib64/python2.7/lib-tk/turtle.pytset_geometry�scCs|jd|�dS(NtWM_DELETE_WINDOW(twm_protocol(R�tdestroy((s%/usr/lib64/python2.7/lib-tk/turtle.pyt ondestroy�scCs |j�S(N(twinfo_screenwidth(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt win_width�scCs |j�S(N(twinfo_screenheight(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt win_height�s( R�R�R�RR<R=RARERGRI(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR7�s tTurtleScreenBasecBs[eZdZed��Zed��Zd�Zd�Zddde d�Z d�Zddde d�Zd�Z d �Zd �Zd�Zdd�Zd �Zddd�Zddd�Zddd�Zddd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z dddd�Z!d�Z"RS( s�Provide the basic graphics functionality. Interface between Tkinter and turtle.py. To port turtle.py to some different graphics toolkit a corresponding TurtleScreenBase class has to be implemented. cCs&tjdddd�}|j�|S(s$return a blank image object RpiR�(Rt PhotoImagetblank(timg((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_blankimage�s cCstjd|�S(s`return an image object containing the imagedata from a gif-file named filename. tfile(RRK(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_image�scCs�||_t|t�r3|jj}|jj}nat|jjd��}t|jjd��}|jjd|d|d|d|df�||_||_d|_|_ dS(NRpR�R&ig�?( tcvR�RR�R�R�R3R'txscaletyscale(R�RQtwth((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s 1 cCs|jjddddd�S(s<Create an invisible polygon item on canvas self.cv) iR:R�toutline(iiiiii(RQtcreate_polygon(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createpolysc Cs�g}x=|D]5\}} |j||j�|j| |j�q W|jj||�|dk r~|jj|d|�n|dk r�|jj|d|�n|dk r�|jj|d|�n|r�|jj|�ndS(s`Configure polygonitem polyitem according to provided arguments: coordlist is sequence of coordinates fill is filling color outline is outline color top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. R:RVRpN(tappendRRRSRQtcoordsR�t itemconfiguret tag_raise( R�tpolyitemt coordlistR:RVRpttoptclR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawpolyscCs.|jjdddddddddtj�S(s9Create an invisible line item on canvas self.cv) iR:R�Rpitcapstyle(RQtcreate_lineRtROUND(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createline$s$c Cs�|dk rhg}x=|D]5\}}|j||j�|j||j�qW|jj||�n|dk r�|jj|d|�n|dk r�|jj|d|�n|r�|jj|�ndS(sQConfigure lineitem according to provided arguments: coordlist is sequence of coordinates fill is drawing color width is width of drawn line. top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. R:RpN(R�RYRRRSRQRZR[R\( R�tlineitemR^R:RpR_R`R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawline*s cCs|jj|�dS(s]Delete graphics item from canvas. If item is"all" delete all graphics items. N(RQtdelete(R�titem((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_deleteAscCs|jj�dS(s(Redraw graphics items on canvas N(RQR%(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_updateGscCs|jj|�dS(s-Delay subsequent canvas actions for delay ms.N(RQtafter(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_delayLscCs=y|jj|�}t}Wntjk r8t}nX|S(sCCheck if the string color is a legal Tkinter color string. (RQt winfo_rgbR�RtTclErrorR�(R�R2trgbtok((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_iscolorstringPs cCs@|dk r,|jjd|�|j�n|jjd�SdS(sVSet canvas' backgroundcolor if color is not None, else return backgroundcolor.R�N(R�RQR'RkR3(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_bgcolorZs cCs�|\}}||j}||j}idd6dd6dd6}|jj|d|d|d ||d |d|�} |jj| �\} }}} |jj�| |dfS(s�Write txt at pos in canvas with specified font and color. Return text item and x-coord of right bottom corner of text's bounding box.tswRHR�tcentertseRWittexttanchorR:tfont(RRRSRQtcreate_textR1R%(R�RSttxttalignRyROR�R�RxRitx0ty0tx1ty1((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_writecs ' icsY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(s�Bind fun to mouse-click event on turtle. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 s<Button-%s>csK�jj|j��j�jj|j��j}}�||�dS(N(RQtcanvasxR�RRtcanvasyR�RS(R0R�R�(tfunR�(s%/usr/lib64/python2.7/lib-tk/turtle.pyteventfun~s!N(R�RQt tag_unbindttag_bind(R�RiR�tnumtaddR�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onclickuscsY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(sgBind fun to mouse-button-release event on turtle. fun must be a function with two arguments, the coordinates of the point on the canvas where mouse button is released. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. s<Button%s-ButtonRelease>csK�jj|j��j�jj|j��j}}�||�dS(N(RQR�R�RRR�R�RS(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s!N(R�RQR�R�(R�RiR�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt _onrelease�s csY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(sqBind fun to mouse-move-event (with pressed mouse button) on turtle. fun must be a function with two arguments, the coordinates of the actual mouse position on the canvas. num, the number of the mouse-button defaults to 1 Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. s<Button%s-Motion>cscyK�jj|j��j�jj|j��j}}�||�Wntk r^nXdS(N(RQR�R�RRR�R�RSR�(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s! N(R�RQR�R�(R�RiR�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_ondrag�s csS�dkr#�jjd|�n,��fd�}�jjd|||�dS(sGBind fun to mouse-click event on canvas. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. s<Button-%s>csK�jj|j��j�jj|j��j}}�||�dS(N(RQR�R�RRR�R�RS(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s!N(R�RQR5R#(R�R�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onscreenclick�s csP�dkr&|jjd|d�n&�fd�}|jjd||�dS(s`Bind fun to key-release event of key. Canvas must have focus. See method listen s<KeyRelease-%s>cs��dS(N((R0(R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sN(R�RQR5R#(R�R�R�R�((R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onkey�scCs|jj�dS(s=Set focus on canvas (in order to collect key-events) N(RQR6(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_listen�scCs6|dkr|jj|�n|jj||�dS(s?Install a timer, which calls fun after t milliseconds. iN(RQt after_idleRl(R�R�tt((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_ontimer�scCs|jjddd|�S(s0Create and return image item on canvas. itimage(RQtcreate_image(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createimage�scCsN|\}}|jj|||j||jf�|jj|d|�dS(sZConfigure image item as to draw image object at position (x,y) on canvas) R�N(RQRZRRRSt itemconfig(R�RiRSR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawimage�s(cCs*|jj|d|�|jj|�dS(s�Configure image item as to draw image object at center of canvas. Set item to the first item in the displaylist, so it will be drawn below any other item .R�N(RQR�t tag_lower(R�RiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _setbgpic�scCs|jj|�S(sQReturn 'line' or 'polygon' or 'image' depending on type of item. (RQR�(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_type�scCsT|jj|�}gtdt|�d�D]}||||df^q+}|S(s returns list of coordinate-pairs of points of item Example (for insiders): >>> from turtle import * >>> getscreen()._pointlist(getturtle().turtle._item) [(0.0, 9.9999999999999982), (0.0, -9.9999999999999982), (9.9999999999999982, 0.0)] >>> iii(RQRZtrangetlen(R�RiR`titpl((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _pointlist�s>cCs#|jjd||||f�dS(NR&(RQR'(R�tsrx1tsry1tsrx2tsry2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_setscrollregion�sc Cs�|jj�}x�|D]z}|jj|�}g}xF|r||d \}}|j||�|j||�|d}q7W|jj||�qWdS(Ni(RQtfind_allRZRY( R�txscalefactortyscalefactorR�RitcoordinatestnewcoordlistR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_rescales cCs�t|jt�s"|j|jfS||koD|koDdknr_|jj|jjfS|dk rw||_n|dk r�||_n|jj|||�dS(saResize the canvas the turtles are drawing on. Does not alter the drawing window. N(R�RQRR�R�R�RX(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_resizes'cCs`|jj�}|dkr+|jd}n|jj�}|dkrV|jd}n||fS(s; Return the width and height of the turtle window. iRpR�(RQR+R,(R�RpR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_window_sizesN(#R�R�R�tstaticmethodRNRPRRXR�R�RaReRgRjRkRmRrRsR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJ�s@ cBseZdZRS(s�Will be raised in TurtleScreen.update, if _RUNNING becomes False. This stops execution of a turtle graphics script. Main purpose: use in the Demo-Viewer turtle.Demo.py. (R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�,stTurtleGraphicsErrorcBseZdZRS(sSome TurtleGraphics Error (R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�5scBs&eZdZdd�Zdd�ZRS(s�Data structure modeling shapes. attribute _type is one of "polygon", "image", "compound" attribute _data is - depending on _type a poygon-tuple, an image or a list constructed using the addcomponent method. cCs�||_|dkr6t|t�r�t|�}q�ny|dkr�t|t�r�|j�jd�r�t|�r�tj |�}q�q�n%|dkr�g}nt d|��||_dS(NtpolygonR�s.giftcompoundsThere is no shape type %s(R�R�R�R�t basestringtlowertendswithRRRPR�t_data(R�ttype_tdata((s%/usr/lib64/python2.7/lib-tk/turtle.pyRAs ! cCsW|jdkr%td|j��n|dkr:|}n|jj|||g�dS(s-Add component to a shape of type compound. Arguments: poly is a polygon, i. e. a tuple of number pairs. fill is the fillcolor of the component, outline is the outline color of the component. call (for a Shapeobject namend s): -- s.addcomponent(((0,0), (10,10), (-10,10)), "red", "blue") Example: >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # .. add more components and then use register_shape() R�s Cannot add component to %s ShapeN(R�R�R�R�RY(R�tpolyR:RV((s%/usr/lib64/python2.7/lib-tk/turtle.pytaddcomponentQs N(R�R�R�R�RR�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:stTbuffercBsJeZdZdd�Zdd�Zd�Zd�Zd�Zd�Z RS( s5Ring buffer used as undobuffer for RawTurtle objects.i cCs2||_dgg||_d|_t|_dS(Ni����(tbufsizeR�tbuffertptrR�tcumulate(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRks cCsb|dkr9xFt|j�D]}dg|j|<qWn||_dgg||_d|_dS(Ni����(R�R�R�R�R�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRXps cCs`|jdkr\|jsB|jd|j|_||j|j<q\|j|jj|�ndS(Nii(R�R�R�R�RY(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pytpushxs cCsd|jdkr`|j|j}|dkr/dSdg|j|j<|jd|j|_|SndS(Nii(R�R�R�R�(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pytpopscCs|j|jjdg�S(N(R�R�tcountR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytnr_of_items�scCst|j�dt|j�S(Nt (tstrR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sN( R�R�R�RR�RXR�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�is cBsOeZdZeZedededd�Zd�Zdd�Z d�Z dd�Zd �Zd �Z dd�Zd�Zd �Zd�Zddd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zddd�Zd�Zddd�Zdd�Zdd�Zdddd�ZeZ eZ!eZ"eZ#RS( s�Provides screen oriented methods like setbg etc. Only relies upon the methods of TurtleScreenBase and NOT upon components of the underlying graphics toolkit - which is Tkinter in this case. RRRcCs�itdd/d0d1f�d6tdd2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIf�d6tddJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]f�d$6tdd^d_d`daf�d%6tddbdcddf�d(6tddedfdgdhf�d)6td*|j��d+6|_id,d-6|_tj||�||_||_td.|_ g|_ |j�dS(iNR�i����ii tarrowii����ii����i����ii����i i����ii����iii����i����i����iiiR�g��Q�#@g���Q�@g�G�z. @g��Q��@g���Q��g��Q���g�G�z. �g��Q�#�g�g$�R-tsquareg�G�z�g�����'@ttriangleR�R�RLR�tnopicR(i����i(i i(ii (ii(i����i(i����i (i����i(i����i (i����i(i����i(i����i(i����i����(i����i����(i����i����(i����i����(ii����(ii����(ii����(ii����(ii����(ii(ii(i i(ii (ii(ii (ii(i i(g��Q�#@g���Q�@(g�G�z. @g��Q��@(g��Q��@g�G�z. @(g���Q�@g��Q�#@(ii (g���Q��g��Q�#@(g��Q���g�G�z. @(g�G�z. �g��Q��@(g��Q�#�g���Q�@(i����i(g��Q�#�g���Q��(g�G�z. �g��Q���(g��Q���g�G�z. �(g���Q��g��Q�#�(g�g$�(g���Q�@g��Q�#�(g��Q��@g�G�z. �(g�G�z. @g��Q���(g��Q�#@g���Q��(i i����(i i (i����i (i����i����(i g�G�z�(ig�����'@(i����g�G�z�(ii(i����i����(ii����(ii����(RRNt_shapest_bgpicsRJRt_modet_delayvalueR�t _colormodet_keysR.(R�RQRRR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s4 cCs�td|_td|_|jd�|jd�|_d|_d|_d|_g|_ |j d�xdD]}|jd|�qqWx"|j D]}|jd|�q�Wdt_dS( sqDelete all drawings and all turtles from the TurtleScreen. Reset empty TurtleScreen to its initial state: white background, no backgroundimage, no eventbindings and tracing on. No argument. Example (for a TurtleScreen instance named screen): >>> screen.clear() Note: this method is not available as function. RRtallR�R�iiR�iiN(iii(R�R�R�RjR�t_bgpict _bgpicnamet_tracingt_updatecountert_turtlesRRJR�R�RR t_pen(R�tbtnR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR.�s cCs�|dkr|jS|j�}|dkr>td|��n||_|d kr�|j|jd|jd|jd|jd�d|_|_n|j �dS( shSet turtle-mode ('standard', 'logo' or 'world') and perform reset. Optional argument: mode -- one of the strings 'standard', 'logo' or 'world' Mode 'standard' is compatible with turtle.py. Mode 'logo' is compatible with most Logo-Turtle-Graphics. Mode 'world' uses userdefined 'worldcoordinates'. *Attention*: in this mode angles appear distorted if x/y unit-ratio doesn't equal 1. If mode is not given, return the current mode. Mode Initial turtle heading positive angles ------------|-------------------------|------------------- 'standard' to the right (east) counterclockwise 'logo' upward (north) clockwise Examples: >>> mode('logo') # resets turtle heading to north >>> mode() 'logo' R�tlogotworldsNo turtle-graphics-mode %sig�?N(R�R�R�(R�R�( R�R�R�R�R�R�R�RRRSRX(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCs|j�dkr"|jd�nt||�}t||�}|j�\}}|j|d|d�|j|j} } |j||_|j||_||j}||j}|j|} |j|}|j||| |�|j |j| |j| �|j �dS(ssSet up a user defined coordinate-system. Arguments: llx -- a number, x-coordinate of lower left corner of canvas lly -- a number, y-coordinate of lower left corner of canvas urx -- a number, x-coordinate of upper right corner of canvas ury -- a number, y-coordinate of upper right corner of canvas Set up user coodinat-system and switch to mode 'world' if necessary. This performs a screen.reset. If mode 'world' is already active, all drawings are redrawn according to the new coordinates. But ATTENTION: in user-defined coordinatesystems angles may appear distorted. (see Screen.mode()) Example (for a TurtleScreen instance named screen): >>> screen.setworldcoordinates(-10,-0.5,50,1.5) >>> for _ in range(36): ... left(10) ... forward(0.5) R�iN(RR�R�RRRRSR�R�R�R�R%(R�tllxtllyturxturytxspantyspantwxtwyt oldxscalet oldyscaleR�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR!�s cCs�|dkrO|j�jd�r<td|j|��}qptdd��n!t|t�rptd|�}n||j|<dS(s�Adds a turtle shape to TurtleScreen's shapelist. Arguments: (1) name is the name of a gif-file and shape is None. Installs the corresponding image shape. !! Image-shapes DO NOT rotate when turning the turtle, !! so they do not display the heading of the turtle! (2) name is an arbitrary string and shape is a tuple of pairs of coordinates. Installs the corresponding polygon shape (3) name is an arbitrary string and shape is a (compound) Shape object. Installs the corresponding compound shape. To use a shape, you have to issue the command shape(shapename). call: register_shape("turtle.gif") --or: register_shape("tri", ((0,0), (10,10), (-10,10))) Example (for a TurtleScreen instance named screen): >>> screen.register_shape("triangle", ((5,-3),(0,5),(-5,-3))) s.gifR�s"Bad arguments for register_shape. sUse help(register_shape)R�N( R�R�R�RRPR�R�R�R�(R�tnameRc((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs cCsnt|�dkr|d}nt|t�rf|j|�sI|dkrM|Stdt|���ny|\}}}Wn-ttfk r�tdt|���nX|jdkr�g|||fD]}t d|�^q�\}}}nd|kodknoAd|ko#dknoAd|ko?dkns]td t|���nd |||fS(sReturn color string corresponding to args. Argument may be a string or a tuple of three numbers corresponding to actual colormode, i.e. in the range 0<=n<=colormode. If the argument doesn't represent a color, an error is raised. iiR�sbad color string: %ssbad color arguments: %sg�?g�o@i�sbad color sequence: %ss #%02x%02x%02x( R�R�R�RrR�R�t TypeErrorR�R�tround(R�R2R�tgtbR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _colorstrBs 8TcCs�|jd�s|St|�dkrUgdD] }t|||d!d�^q,}nSt|�dkr�g|dD]}dt||d�^qr}ntd |��tg|D]}||jd ^q��S(NR�iiiiiiisbad colorstring: %si�(iii(R�R�R�R�R�R�(R�tcstrR�R`RUR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_color]s01cCsS|dkr|jS|dkr1t|�|_n|dkrOt|�|_ndS(sqReturn the colormode or set it to 1.0 or 255. Optional argument: cmode -- one of the values 1.0 or 255 r, g, b values of colortriples have to be in range 0..cmode. Example (for a TurtleScreen instance named screen): >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> pencolor(240,160,80) g�?i�N(R�R�R�R�(R�tcmode((s%/usr/lib64/python2.7/lib-tk/turtle.pyRhscCs2x+|jD] }|j|j�|j�q WdS(s�Reset all Turtles on the Screen to their initial state. No argument. Example (for a TurtleScreen instance named screen): >>> screen.reset() N(R�t_setmodeR�RX(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX}scCs|jS(s�Return the list of turtles on the screen. Example (for a TurtleScreen instance named screen): >>> screen.turtles() [<turtle.Turtle object at 0x00E11FB0>] (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR$�scGsO|r|j|�}nd}|j|�}|dk rK|j|�}n|S(s�Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example (for a TurtleScreen instance named screen): >>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() '#800080' N(R�R�RsR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCsc|dkr|jSt|�|_d|_|dk rIt|�|_n|jr_|j�ndS(seTurns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a TurtleScreen instance named screen): >>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2 iN(R�R�R�R�R�R%(R�tnR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�s cCs&|dkr|jSt|�|_dS(s� Return or set the drawing delay in milliseconds. Optional argument: delay -- positive integer Example (for a TurtleScreen instance named screen): >>> screen.delay(15) >>> screen.delay() 15 N(R�R�R�(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCsRtjstt_t�n|jdkrN|jd7_|j|j;_ndS(sIncrement update counter.iiN(Rt_RUNNINGR�R�R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _incrementudc�s cCsT|j}t|_x(|j�D]}|j�|j�qW||_|j�dS(s'Perform a TurtleScreen update. N(R�R�R$t_update_datat_drawturtleRk(R�ttracingR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR%�s cCs|j�dS(s� Return the width of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR'�scCs|j�dS(s� Return the height of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR&�scCs|jS(s�Return the Canvas of this TurtleScreen. No argument. Example (for a Screen instance named screen): >>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas instance at 0x010742D8> (RQ(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCst|jj��S(s�Return a list of names of all currently available turtle shapes. No argument. Example (for a TurtleScreen instance named screen): >>> screen.getshapes() ['arrow', 'blank', 'circle', ... , 'turtle'] (tsortedR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs icCs|j|||�dS(sBind fun to mouse-click event on canvas. Arguments: fun -- a function with two arguments, the coordinates of the clicked point on the canvas. btn -- the number of the mouse-button, defaults to 1 Example (for a TurtleScreen instance named screen and a Turtle instance named turtle): >>> screen.onclick(goto) >>> # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) N(R�(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJscCsg|dkr1||jkrS|jj|�qSn"||jkrS|jj|�n|j||�dS(smBind fun to key-release event of key. Arguments: fun -- a function with no arguments key -- a string: key (e.g. "a") or key-symbol (e.g. "space") In order to be able to register key-events, TurtleScreen must have focus. (See method listen.) Example (for a TurtleScreen instance named screen): >>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen() Subsequently the turtle can be moved by repeatedly pressing the up-arrow key, consequently drawing a hexagon N(R�R�tremoveRYR�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#scCs|j�dS(sSet focus on TurtleScreen (in order to collect key-events) No arguments. Dummy arguments are provided in order to be able to pass listen to the onclick method. Example (for a TurtleScreen instance named screen): >>> screen.listen() N(R�(R�txdummytydummy((s%/usr/lib64/python2.7/lib-tk/turtle.pyRAs icCs|j||�dS(s�Install a timer, which calls fun after t milliseconds. Arguments: fun -- a function with no arguments. t -- a number >= 0 Example (for a TurtleScreen instance named screen): >>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) ... >>> f() # makes the turtle marching around >>> running = False N(R�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRMscCsb|dkr|jS||jkr;|j|�|j|<n|j|j|j|�||_dS(sFSet background image or return name of current backgroundimage. Optional argument: picname -- a string, name of a gif-file or "nopic". If picname is a filename, set the corresponding image as background. If picname is "nopic", delete backgroundimage, if present. If picname is None, return the filename of the current backgroundimage. Example (for a TurtleScreen instance named screen): >>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() 'landscape.gif' N(R�R�R�RPR�R�(R�tpicname((s%/usr/lib64/python2.7/lib-tk/turtle.pyRbscCs|j|||�S(s�Resize the canvas the turtles are drawing on. Optional arguments: canvwidth -- positive integer, new width of canvas in pixels canvheight -- positive integer, new height of canvas in pixels bg -- colorstring or color-tuple, new backgroundcolor If no arguments are given, return current (canvaswidth, canvasheight) Do not alter the drawing window. To observe hidden parts of the canvas use the scrollbars. (Can make visible those parts of a drawing, which were outside the canvas before!) Example (for a Turtle instance named turtle): >>> turtle.screensize(2000,1500) >>> # e. g. to search for an erroneously escaped turtle ;-) (R�(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRzsN($R�R�R�R�R�R�RR.R�RR!RR�R�RRXR$RR#RR�R%R'R&RRRJRRRRRRRRR(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s@ " '$ t TNavigatorcBs�eZdZiedd�d6edd�d6edd�d6ZdZdZdZed�Zd �Z d%d �Zd�Zdd �Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd%d�Zd�Zd�Zd�Zd%d�Zd%d�Zd�Zd �Z d%d%d!�Z!dd"�Z"d%d%d#�Z#d%d$�Z$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,e Z-RS(&sRNavigation part of the RawTurtle. Implements methods for turtle movement. g�?gR�R�R�iicCs[|j|_|j|_||_d|_|j�d|_|j|�t j |�dS(N(tDEFAULT_ANGLEOFFSETt_angleOffsettDEFAULT_ANGLEORIENTt_angleOrientR�R�t undobufferR3R�R�RX(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCs)tdd�|_tj|j|_dS(sXreset turtle to its initial values Will be overwritten by parent class gN(R t _positionR�tSTART_ORIENTATIONR�t_orient(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCsj|dkr|jS|d kr#dS||_|d krMd|_d|_n|jd|_d|_dS(s:Set turtle-mode to 'standard', 'world' or 'logo'. R�R�R�Niig@i����(R�R�R�(R�R�(R�R�R�R�t_fullcircle(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s cCsB||_d||_|jdkr1d|_n |d|_dS(s+Helper function for degrees() and radians()ihR�ig@N(Rt _degreesPerAUR�R�(R�t fullcircle((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_setDegreesPerAU�s g�v@cCs|j|�dS(s> Set angle measurement units to degrees. Optional argument: fullcircle - a number Set angle measurement units, i. e. set number of 'degrees' for a full circle. Dafault value is 360 degrees. Example (for a Turtle instance named turtle): >>> turtle.left(90) >>> turtle.heading() 90 Change angle measurement unit to grad (also known as gon, grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100 N(R(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3�scCs|jdtj�dS(s Set the angle measurement units to radians. No arguments. Example (for a Turtle instance named turtle): >>> turtle.heading() 90 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966 iN(RR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRV�scCs%|j|j|}|j|�dS(s)move turtle forward by specified distanceN(R�R�t_goto(R�R4tende((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_go�scCs&||j9}|jj|�|_dS(s=Turn turtle counterclockwise by specified angle if angle > 0.N(RR�R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_rotate�s cCs ||_dS(smove turtle to position end.N(R�(R�tend((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs|j|�dS(sMove the turtle forward by the specified distance. Aliases: forward | fd Argument: distance -- a number (integer or float) Move the turtle forward by the specified distance, in the direction the turtle is headed. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00) N(R(R�R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR<�scCs|j|�dS(s�Move the turtle backward by distance. Aliases: back | backward | bk Argument: distance -- a number Move the turtle backward by distance ,opposite to the direction the turtle is headed. Do not change the turtle's heading. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00, 0.00) N(R(R�R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR(scCs|j|�dS(s�Turn turtle right by angle units. Aliases: right | rt Argument: angle -- a number (integer or float) Turn turtle right by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0 N(R(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRW'scCs|j|�dS(s�Turn turtle left by angle units. Aliases: left | lt Argument: angle -- a number (integer or float) Turn turtle left by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0 N(R(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRH<scCs|jS(s�Return the turtle's current location (x,y), as a Vec2D-vector. Aliases: pos | position No arguments. Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 240.00) (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRSQscCs|jdS(s� Return the turtle's x coordinate. No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.xcor() 50.0 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRr^scCs|jdS(s Return the turtle's y coordinate --- No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.ycor() 86.6025403784 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRslscCs<|dkr"|jt|��n|jt||��dS(stMove turtle to an absolute position. Aliases: setpos | setposition | goto: Arguments: x -- a number or a pair/vector of numbers y -- a number None call: goto(x, y) # two coordinates --or: goto((x, y)) # a pair (tuple) of coordinates --or: goto(vec) # e.g. as returned by pos() Move turtle to an absolute position. If the pen is down, a line will be drawn. The turtle's orientation does not change. Example (for a Turtle instance named turtle): >>> tp = turtle.pos() >>> tp (0.00, 0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00) N(R�RR (R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRA{scCs!|jdd�|jd�dS(s$Move turtle to the origin - coordinates (0,0). No arguments. Move turtle to the origin - coordinates (0,0) and set its heading to its start-orientation (which depends on mode). Example (for a Turtle instance named turtle): >>> turtle.home() iN(RAR\(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRD�scCs!|jt||jd��dS(s�Set the turtle's first coordinate to x Argument: x -- a number (integer or float) Set the turtle's first coordinate to x, leave second coordinate unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 240.00) >>> turtle.setx(10) >>> turtle.position() (10.00, 240.00) iN(RR R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRa�scCs!|jt|jd|��dS(s�Set the turtle's second coordinate to y Argument: y -- a number (integer or float) Set the turtle's first coordinate to x, second coordinate remains unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00, -10.00) iN(RR R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRb�scCs�|dk rt||�}nt|t�r6|}n9t|t�rTt|�}nt|t�ro|j}nt||j�S(s�Return the distance from the turtle to (x,y) in turtle step units. Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 0.00) >>> turtle.distance(30,40) 50.0 >>> pen = Turtle() >>> pen.forward(77) >>> turtle.distance(pen) 77.0 N(R�R R�R�R�R�tabs(R�R�R�RS((s%/usr/lib64/python2.7/lib-tk/turtle.pyR4�s cCs�|dk rt||�}nt|t�r6|}n9t|t�rTt|�}nt|t�ro|j}n||j\}}ttj||�dtj d�d}||j :}|j|j||j S(sCReturn the angle of the line from the turtle's position to (x, y). Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Return the angle, between the line from turtle-position to position specified by x, y and the turtle's start orientation. (Depends on modes - "standard" or "logo") Example (for a Turtle instance named turtle): >>> turtle.pos() (10.00, 10.00) >>> turtle.towards(0,0) 225.0 g�f@i g�v@N(R�R R�R�R�R�R�R�RzR�RR�R�R(R�R�R�RStresult((s%/usr/lib64/python2.7/lib-tk/turtle.pyRk�s * cCs_|j\}}ttj||�dtjd�d}||j:}|j|j||jS(s� Return the turtle's current heading. No arguments. Example (for a Turtle instance named turtle): >>> turtle.left(67) >>> turtle.heading() 67.0 g�f@i g�v@( R�R�R�RzR�RR�R�R(R�R�R�R ((s%/usr/lib64/python2.7/lib-tk/turtle.pyRBs * cCsK||j�|j}|j}||d||d}|j|�dS(s�Set the orientation of the turtle to to_angle. Aliases: setheading | seth Argument: to_angle -- a number (integer or float) Set the orientation of the turtle to to_angle. Here are some common directions in degrees: standard - mode: logo-mode: -------------------|-------------------- 0 - east 0 - north 90 - north 90 - east 180 - west 180 - south 270 - south 270 - west Example (for a Turtle instance named turtle): >>> turtle.setheading(90) >>> turtle.heading() 90 g@N(RBR�RR(R�tto_angleR�tfull((s%/usr/lib64/python2.7/lib-tk/turtle.pyR\"s cCs�|jr+|jjdg�t|j_n|j�}|dkrO|j}n|dkr�t|�|j}dtt dt|�dd�|�}nd||}d|}d|t j|t jd |j �}|d kr|||}}}n|j�} |j�} |d kr:|jd d �n |jd �|j|�xHt|�D]:}|j|�|j|�|jd �|j|�qaW|j|�|d kr�|j| | �n|j|�|jr�t|j_ndS(s� Draw a circle with given radius. Arguments: radius -- a number extent (optional) -- a number steps (optional) -- an integer Draw a circle with given radius. The center is radius units left of the turtle; extent - an angle - determines which part of the circle is drawn. If extent is not given, draw the entire circle. If extent is not a full circle, one endpoint of the arc is the current pen position. Draw the arc in counterclockwise direction if radius is positive, otherwise in clockwise direction. Finally the direction of the turtle is changed by the amount of extent. As the circle is approximated by an inscribed regular polygon, steps determines the number of steps to use. If not given, it will be calculated automatically. Maybe used to draw regular polygons. call: circle(radius) # full circle --or: circle(radius, extent) # arc --or: circle(radius, extent, steps) --or: circle(radius, steps=6) # 6-sided polygon Example (for a Turtle instance named turtle): >>> turtle.circle(50) >>> turtle.circle(120, 180) # semicircle tseqiig@g�M@g�?g�?g@g�f@iN(R�R�R�R�RfR�RR R�tminR�R�R�RR#RmRR�RR�(R�tradiustextenttstepsRftfracRTtw2tlttrtdlR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR->s> . ) cCsdS(s/dummy method - to be overwritten by child classN((R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRfR�cCsdS(s/dummy method - to be overwritten by child classN((R�taR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�R�cCsdS(s/dummy method - to be overwritten by child classN((R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRm�R�N(.R�R�R�R R�tDEFAULT_MODER�R�RRXR�R�RR3RVRRRR<R(RWRHRSRrRsRARDRaRbR4RkRBR\R-RfR#RmR9R,R)RZRIRTR]R^R[(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sZ # # AtTPencBs eZdZedd�Zededd�Zdd�Zdd�Zd�Z d �Z d �Zdd�Zd�Z d �Zd�Zd�Zd�Zd�Zdd�Zed�Zeed�Zd�Zd�ZeZe Ze Ze Ze ZeZeZ RS(sFDrawing part of the RawTurtle. Implements drawing properties. RYcCs#||_d|_tj|�dS(N(t_resizemodeR�R�Rt_reset(R�RY((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s ROR;cCsUd|_t|_||_||_t|_d|_d|_d|_d|_ dS(Niii(ii( t_pensizeR�t_shownt _pencolort _fillcolort_drawingt_speedt_stretchfactort_tiltt _outlinewidth(R�ROR;((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCsB|dkr|jS|j�}|dkr>|jd|�ndS(szSet resizemode to one of the values: "auto", "user", "noresize". (Optional) Argument: rmode -- one of the strings "auto", "user", "noresize" Different resizemodes have the following effects: - "auto" adapts the appearance of the turtle corresponding to the value of pensize. - "user" adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), which are set by shapesize() - "noresize" no adaption of the turtle's appearance takes place. If no argument is given, return current resizemode. resizemode("user") is called by a call of shapesize with arguments. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("noresize") >>> turtle.resizemode() 'noresize' tautotuserR�RYN(R%R&R�(R�RR�RN(R�trmode((s%/usr/lib64/python2.7/lib-tk/turtle.pyRY�s cCs'|dkr|jS|jd|�dS(s!Set or return the line thickness. Aliases: pensize | width Argument: width -- positive number Set the line thickness to width or return it. If resizemode is set to "auto" and turtleshape is a polygon, that polygon is drawn with the same line thickness. If no argument is given, current pensize is returned. Example (for a Turtle instance named turtle): >>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn RQN(R�RRN(R�Rp((s%/usr/lib64/python2.7/lib-tk/turtle.pyRQ�scCs!|js dS|jdt�dS(s�Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example (for a Turtle instance named turtle): >>> turtle.penup() NRP(R RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRR�s cCs!|jr dS|jdt�dS(s�Pull the pen down -- drawing when moving. Aliases: pendown | pd | down No argument. Example (for a Turtle instance named turtle): >>> turtle.pendown() NRP(R RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRP�s cCs|jS(sReturn True if pen is down, False if it's up. No argument. Example (for a Turtle instance named turtle): >>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True (R (R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRF�s cCs�idd6dd6dd6dd6d d 6}|dkr<|jS||krU||}n7d|koldknr�tt|��}nd}|jd |�dS(s� Return or set the turtle's speed. Optional argument: speed -- an integer in the range 0..10 or a speedstring (see below) Set the turtle's speed to an integer value in the range 0 .. 10. If no argument is given: return current speed. If input is a number greater than 10 or smaller than 0.5, speed is set to 0. Speedstrings are mapped to speedvalues in the following way: 'fastest' : 0 'fast' : 10 'normal' : 6 'slow' : 3 'slowest' : 1 speeds from 1 to 10 enforce increasingly faster animation of line drawing and turtle turning. Attention: speed = 0 : *no* animation takes place. forward/back makes turtle jump and likewise left/right make the turtle turn instantly. Example (for a Turtle instance named turtle): >>> turtle.speed(3) itfastesti tfastitnormalitslowitslowestg�?g%@RfN(R�R!R�R�RN(R�Rftspeeds((s%/usr/lib64/python2.7/lib-tk/turtle.pyRfs) cGs�|r�t|�}|dkr/|d}}n4|dkrJ|\}}n|dkrc|}}n|j|�}|j|�}|jd|d|�n"|j|j�|j|j�fSdS(s�Return or set the pencolor and fillcolor. Arguments: Several input formats are allowed. They use 0, 1, 2, or 3 arguments as follows: color() Return the current pencolor and the current fillcolor as a pair of color specification strings as are returned by pencolor and fillcolor. color(colorstring), color((r,g,b)), color(r,g,b) inputs as in pencolor, set both, fillcolor and pencolor, to the given value. color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) equivalent to pencolor(colorstring1) and fillcolor(colorstring2) and analogously, if the other input format is used. If turtleshape is a polygon, outline and interior of that polygon is drawn with the newly set colors. For mor info see: pencolor, fillcolor Example (for a Turtle instance named turtle): >>> turtle.color('red', 'green') >>> turtle.color() ('red', 'green') >>> colormode(255) >>> color((40, 80, 120), (160, 200, 240)) >>> color() ('#285078', '#a0c8f0') iiiiROR;N(R�R�RNR�RR(R�R2Rtpcolortfcolor((s%/usr/lib64/python2.7/lib-tk/turtle.pyR2+s cGsO|r;|j|�}||jkr(dS|jd|�n|j|j�SdS(sZ Return or set the pencolor. Arguments: Four input formats are allowed: - pencolor() Return the current pencolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - pencolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - pencolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - pencolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the outline of that polygon is drawn with the newly set pencolor. Example (for a Turtle instance named turtle): >>> turtle.pencolor('brown') >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() '#33cc8c' NRO(R�RRNR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyROYscGsO|r;|j|�}||jkr(dS|jd|�n|j|j�SdS(s] Return or set the fillcolor. Arguments: Four input formats are allowed: - fillcolor() Return the current fillcolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - fillcolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - fillcolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - fillcolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the interior of that polygon is drawn with the newly set fillcolor. Example (for a Turtle instance named turtle): >>> turtle.fillcolor('violet') >>> col = turtle.pencolor() >>> turtle.fillcolor(col) >>> turtle.fillcolor(0, .5, 0) NR;(R�RRNR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR;~scCs|jdt�dS(s�Makes the turtle visible. Aliases: showturtle | st No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> turtle.showturtle() tshownN(RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRe�scCs|jdt�dS(sYMakes the turtle invisible. Aliases: hideturtle | ht No argument. It's a good idea to do this while you're in the middle of a complicated drawing, because hiding the turtle speeds up the drawing observably. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() R0N(RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRC�scCs|jS(s�Return True if the Turtle is shown, False if it's hidden. No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> print turtle.isvisible(): False (R(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRG�s c Ks9i |jd6|jd6|jd6|jd6|jd6|jd6|jd6|jd6|jd 6|j d 6}|ps|sz|St |t�r�|}ni}|j|�i}x|D]}||||<q�W|j r�|j jd|f�nt}d|kr|j|dkrt}qnd|krxt |dt�rY|j|df�|d<n|j|dkrxt}qxnd|kr�|j|dkr�t}q�n|r�|j�nd|kr�|d|_nd|kr�|d|_nd|kr |d|_nd|krVt |dt�rF|j|df�|d<n|d|_nd|krr|d|_nd|kr�|d|_nd|kr�|d}t |tttf�r�||f}n||_nd |kr�|d |_nd|kr|d|_nd |kr+|d |_ n|j�dS( s�Return or set the pen's attributes. Arguments: pen -- a dictionary with some or all of the below listed keys. **pendict -- one or more keyword-arguments with the below listed keys as keywords. Return or set the pen's attributes in a 'pen-dictionary' with the following key/value pairs: "shown" : True/False "pendown" : True/False "pencolor" : color-string or color-tuple "fillcolor" : color-string or color-tuple "pensize" : positive number "speed" : number in range 0..10 "resizemode" : "auto" or "user" or "noresize" "stretchfactor": (positive number, positive number) "outline" : positive number "tilt" : number This dictionary can be used as argument for a subsequent pen()-call to restore the former pen-state. Moreover one or more of these attributes can be provided as keyword-arguments. This can be used to set several pen attributes in one statement. Examples (for a Turtle instance named turtle): >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'black', 'stretchfactor': (1,1), 'speed': 3} >>> penstate=turtle.pen() >>> turtle.color("yellow","") >>> turtle.penup() >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'yellow', 'pendown': False, 'fillcolor': '', 'stretchfactor': (1,1), 'speed': 3} >>> p.pen(penstate, fillcolor="green") >>> p.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'green', 'stretchfactor': (1,1), 'speed': 3} R0RPROR;RQRfRYt stretchfactorRVRiRNN(RR RRRR!RR"R$R#R�tdictR%R�R�R�R�R�R�t_newLineR�R�R�Rk( R�RNtpendictt_pdtpt_p_bufR�tnewLinetsf((s%/usr/lib64/python2.7/lib-tk/turtle.pyRN�sz. cCsdS(s/dummy method - to be overwritten by child classN((R�tusePos((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3@ R�cCsdS(s/dummy method - to be overwritten by child classN((R�R�tforced((s%/usr/lib64/python2.7/lib-tk/turtle.pyRkB R�cCsdS(s/dummy method - to be overwritten by child classN((R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�D R�cCsdS(s/dummy method - to be overwritten by child classN((R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�F R�N(!R�R�R�R�RRR�RYRQRRRPRFRfR2ROR;ReRCRGRNR�R3R�RkR�R�RpRoRURMR6RgRE(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s8 & . % $ u t_TurtleImagecBs eZdZd�Zd�ZRS(s6Helper class: Datatype to store Turtle attributes cCs#||_d|_|j|�dS(N(R�R�R�t _setshape(R�R�t shapeIndex((s%/usr/lib64/python2.7/lib-tk/turtle.pyRV s cCse|j}||_|jdko6|j|jknr?dS|jdkoc|j|jknrldS|jdkr�|j|j�n3|jdkr�x!|jD]}|j|�q�Wn|j|j|_|jdkr�|j�|_nl|jdkr#|j|jdj�|_n>|jdkrag|j|jD]}|j�^qC|_ndS(NR�R�R�RL(R�R�( R�R>R�R�Rjt_itemRXR�R�(R�R>R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyR=[ s& ))(R�R�R�RR=(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR<R s cBseZdZgZd8edededd�Zd�Zd�Zd�Z d�Z d �Zd �Zd�Z d8d8d�Zd �Zd�Zd�Zd�Zd8d�Zd8d8d8d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd8d�Zd�Zd�Zd�Z e!d�Z"d8d �Z#d!�Z$d"�Z%d8d#�Z&d$�Z'e(d%d9d)�Z)d*�Z*d+�Z+d,�Z,d-�Z-d.�Z.e.Z/d/�Z0d0�Z1d8d1�Z2d2d8d3�Z3d2d8d4�Z4d2d8d5�Z5d6�Z6d7�Z7eZ8RS(:svAnimation part of the RawTurtle. Puts RawTurtle upon a TurtleScreen and provides tools for its animation. RcR�R�cCs�t|t�r||_n�t|t�rX|tjkrLtjj|�n||_nzt|ttf�r�xbtjD]"}|j |krw||_PqwqwWt|�|_tjj|j�nt d|��|j}tj||j ��tj|�|jj|�|j�|_t||�|_d|_t|_d|_|_||_t|_|j�|_|jg|_|jg|_g|_ ||_!t"|�|_#|j$�dS(Nsbad canvas argument %s(%R�t_ScreenR�RRtscreensRYRRRQR�R�RRRR�RetdrawingLineItemR<R�R�t_polyR�t _creatingPolyt _fillitemt _fillpathRt_hidden_from_screentcurrentLineItemR�tcurrentLineR�t stampItemst_undobuffersizeR�R�Rk(R�tcanvasRcR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRx s@ cCs<tj|�tj|�|j�|j�|j�dS(s�Delete the turtle's drawings and restore its default values. No argument. , Delete the turtle's drawings from the screen, re-center the turtle and set variables to the default values. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 N(R�RXRRt_clearR�Rk(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX� s cCs7|dks|dkr$d|_nt|�|_dS(s�Set or disable undobuffer. Argument: size -- an integer or None If size is an integer an empty undobuffer of given size is installed. Size gives the maximum number of turtle-actions that can be undone by the undo() function. If size is None, no undobuffer is present. Example (for a Turtle instance named turtle): >>> turtle.setundobuffer(42) iN(R�R�R�(R�tsize((s%/usr/lib64/python2.7/lib-tk/turtle.pyR`� scCs |jdkrdS|jj�S(s�Return count of entries in the undobuffer. No argument. Example (for a Turtle instance named turtle): >>> while undobufferentries(): ... undo() iN(R�R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRn� s cCs�d|_|_x!|jD]}|jj|�qW|jj�|_g|_|j rn|jj |j�n|jg|_|j�|j |j�dS(sDelete all of pen's drawingsN(R�RERFR�R�RjReRHRIR RYR�R0R`RK(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyRM� s cCs|j�|j�dS(sgDelete the turtle's drawings from the screen. Do not move turtle. No arguments. Delete the turtle's drawings from the screen. Do not move turtle. State and position of the turtle as well as drawings of other turtles are not affected. Examples (for a Turtle instance named turtle): >>> turtle.clear() N(RMRk(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR.� s cCsd|jj�|jjdkr#dSt|j�dkr`|jj|j|j|j|j�ndS(Nii( R�R�R�R�RIRgRHRR(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�� s cCs�|j}|jdkrdS|jdkr\|j�|j�|j�|j|j�nG|j�|jdkr�x|j�D]}|j�q�W|j�ndS(s&Perform a Turtle-data update. iNi( R�R�R�R�RkRmR�R�R$(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRk� s cCs|jj||�S(smTurns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a Turtle instance named turtle): >>> turtle.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... turtle.fd(dist) ... turtle.rt(90) ... dist += 2 (R�R#(R�tflagR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR# scCs|jj|�S(N(R�R�(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�% scCs|jj|�S(N(R�R�(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�( scCst|t�r|Sy|\}}}Wn-ttfk rUtdt|���nX|jjdkr�g|||fD]}td|�^qx\}}}nd|ko�dkno�d|ko�dkno�d|ko�dkns tdt|���nd|||fS(s,Convert colortriples to hexstrings. sbad color arguments: %sg�?g�o@ii�sbad color sequence: %ss #%02x%02x%02x( R�R�R�R�R�R�R�R�R�(R�R2R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_cc+ s8TcCsI|j}|j|j�|j}d|_d|_t|�}||_||_||_t||jj�|_|jj |�|j |jjj}|dkr�|j�|j_ nr|dkr�|j|j dj�|j_ nD|dkr,g|j |jjjD]}|j�^q|j_ n|j�|_|j�|S(sCreate and return a clone of the turtle. No argument. Create and return a clone of the turtle with same position, heading and turtle properties. Example (for a Turtle instance named mick): mick = Turtle() joe = mick.clone() R�R�RLR�N(R�R3R R�R�RR<R>R�RYR�R�RXR?R�R�ReRHRk(R�R�R�tqtttypeRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyR1: s, "5 cCs\|dkr|jjS||jj�kr>td|��n|jj|�|j�dS(s�Set turtle shape to shape with given name / return current shapename. Optional argument: name -- a string, which is a valid shapename Set turtle shape to shape with given name or, if name is not given, return name of current shape. Shape with name must exist in the TurtleScreen's shape dictionary. Initially there are the following polygon shapes: 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'. To learn about how to deal with shapes see Screen-method register_shape. Example (for a Turtle instance named turtle): >>> turtle.shape() 'arrow' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle' sThere is no shape named %sN(R�R�R>R�RR�R=Rk(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRcb s cCs�||ko"|ko"dknrF|j\}}|||jfS|dk r||dkrm||f}q�||f}n+|dk r�|jd|f}n |j}|dkr�|j}n|jddd|d|�dS(sOSet/return turtle's stretchfactors/outline. Set resizemode to "user". Optional arguments: stretch_wid : positive number stretch_len : positive number outline : positive number Return or set the pen's attributes x/y-stretchfactors and/or outline. Set resizemode to "user". If and only if resizemode is set to "user", the turtle will be displayed stretched according to its stretchfactors: stretch_wid is stretchfactor perpendicular to orientation stretch_len is stretchfactor in direction of turtles orientation. outline determines the width of the shapes's outline. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize(outline=8) iRYR&R1RVN(R�R"R$RN(R�tstretch_widtstretch_lenRVR1((s%/usr/lib64/python2.7/lib-tk/turtle.pyRd} s' cCsK||j|j}|tjddtj}|jddd|�dS(sZRotate the turtleshape to point in the specified direction Optional argument: angle -- number Rotate the turtleshape to point in the direction specified by angle, regardless of its current tilt-angle. DO NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> stamp() >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> stamp() >>> turtle.fd(50) g�f@iRYR&RiN(RR�R�R�RN(R�R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyR_� scCs.|jdtj|j}||j|jS(s�Return the current tilt-angle. No argument. Return the current tilt-angle, i. e. the angle between the orientation of the turtleshape and the heading of the turtle (its direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() g�f@(R#R�R�R�RR(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyRj� scCs|j||j��dS(s�Rotate the turtleshape by angle. Argument: angle - a number Rotate the turtleshape by angle from its current tilt-angle, but do NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50) N(R_Rj(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRi� sc Cs�|j}|j\}}|j\}}t|||j|j�}dt|�|\}}g|D]G\}} ||||| |j||||| |jf^qeS(slComputes transformed polygon shapes from a shape according to current position and heading. g�?(R�R�R�R RSRRR ( R�R�R�tp0tp1te0te1R~R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _polytrafo� s cCs}|j}|j|jj}|j}|jj}|jr�|jdkr�|jdkr�t |_ |j}|dkr�|jdkr�d}|}n�|jdkr�t d|jd�}}|j}d} n3|jdkr|j\}}|j}|j} ng|D] \} }|| ||f^q }tj| �tj| �}} g|D]1\} }| | |||| | |f^qU}|j|�}|j|j}}|j||d|d |d |dt�qy|dkr�|j||j|�qy|d kry|j\}}|j}x�t||�D]�\}\}}}g|D] \} }|| ||f^qN}|j|�}|j||d|j|�d |j|�d |dt�q2Wqyn�|j r�dS|dkr|j|dddfdd�nn|dkr1|j||j|jdj�n?|d krpx0|D]%}|j|dddfdd�qDWnt|_ dS(spManages the correct rendering of the turtle with respect to its shape, resizemode, stretch and tilt etc.iR�R�iR%g@R&R:RVRpR_R�R�NR�RL(ii(ii(ii(ii(ii(ii(R�R�R�R>R�R?RR�R�R�RGR�RtmaxRR"R$R#R�R�R|RYRRRaR�R�R�tzipRP(R�R�RcRRttitemttshapeRTtlxtlyRjR�R�tt0tt1tfctocRiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�� s^ ' -> %-& " &cCs |j}|j|jj}|j}|j}|dkr�|j�}|jdkrdd}|}n�|jdkr�td|j d�}}|j }d} n3|jdkr�|j \}}|j}|j} ng|D] \} }|| ||f^q�}t j| �t j| �}} g|D]1\} }| | |||| | |f^q%}|j|�}|j|j}}|j||d|d |d |dt�n6|dkr�|jd �}|j||j|�n|dkr�g}x'|D]}|j�}|j|�q�Wt|�}|j \}}|j}x�t||�D]�\}\}}}g|D] \} }|| ||f^qi}|j|�}|j||d|j|�d |j|�d |dt�qMWn|jj|�|jjd|f�|S(s�Stamp a copy of the turtleshape onto the canvas and return its id. No argument. Stamp a copy of the turtle shape onto the canvas at the current turtle position. Return a stamp_id for that stamp, which can be used to delete it by calling clearstamp(stamp_id). Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> turtle.stamp() 13 >>> turtle.fd(50) R�R�iR%g@iR&R:RVRpR_R�R�R�Rh(R�R�R�R>R�R�RXRRZRR"R$R#R�R�R|RYRRRaR�R�R�R�RYR�R[RPRJR�R�(R�R�RcRRR]tstitemRTR^R_RjR�R�R`RaRbRctelementRiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRh$sV -> %-#cCs||jkret|t�rBx1|D]}|jj|�q%Wn|jj|�|jj|�nd|f}|j}||jkr�dS|jj|�}|jj|�||j kr�|j d|j |_ n|jj|j d|j dg�dS(s9does the work for clearstamp() and clearstamps() RhNi( RJR�R�R�RjR�R�R�tindexR�R�tinsertR�(R�tstampidtsubitemRitbufRf((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_clearstamp`s cCs|j|�|j�dS(sDDelete stamp with given stampid Argument: stampid - an integer, must be return value of previous stamp() call. Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.clearstamp(astamp) N(RkRk(R�Rh((s%/usr/lib64/python2.7/lib-tk/turtle.pyR/vs cCsn|dkr|j}n)|dkr5|j| }n |j|}x|D]}|j|�qIW|j�dS(s�Delete all or first/last n of turtle's stamps. Optional argument: n -- an integer If n is None, delete all of pen's stamps, else if n > 0 delete first n stamps else if n < 0 delete last n stamps. Example (for a Turtle instance named turtle): >>> for i in range(8): ... turtle.stamp(); turtle.fd(30) ... >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps() iN(R�RJRkRk(R�R�ttoDeleteRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyR0�s cCsf|j|j|jt|jt�f}|j}d|j|||j|j |j |j�|jff}|jr�|jj |�n|j}|jr�|jdkr�||}|d|jd|d|jd}dt|ddd|j|j�}|d|} x�td|�D]s} | dkr=t}nt}|| | |_|jr�|j|j||jf|j|j|�n|j�q"W|jr�|j|jddfd d d|j�q�n|jr�|j j|�nt|jt�r|jj|�n||_|jr6|jj|�nt|j �dkrX|j�n|j�d S(s�Move the pen to the point end, thereby drawing a line if pen is down. All other methods for turtle movement depend on this one. tgoiiig�?ig�������?g�?R:R�Rpi*N(ii(ii(R RRR�RFR�R�R�RHRIR�R�R�R�R!R�RRRSR�R�R�R�RgRBRkRYRDRCR�R3(R�Rtgo_modesR�t undo_entrytstarttdifftdiffsqtnhopstdeltaR�R_((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�sR (* cCs|\}}}}|\}}}} |\} }}} |j}t|j|�dkr`dGHn| |_||_|ddgkr�d}n|}|j| |d|d|�g|jD]-}|| kr�|j|�dkr�|^q�}x+|D]#}|j|�|jj |�q�W|}|j rQ|jdkrQ||}|d|jd |d|j d }dt|dd d|j |j �}|d|}x{td|�D]j}|dkr�t}nt}||||_|r|j|j||jf|||�n|j�q�W|rQ|j|jddfddd|�qQn||_|jr�t|j�dkr�|jj�n|jgkr�t|_d|_q�n| r�|jgkr�d|_d GHq�|jdk r�|jj�q�n|j�dS(s)Reverse a _goto. Used for undo() g�?s$undogoto: HALLO-DA-STIMMT-WAS-NICHT!iR�R:RpR�iiig�������?g�?sUnwahrscheinlich in _undogoto!N(ii(ii(ii(ii(R�R R�RHRIRgR�R�RjR�R!R�RRRSR�R�R�R�RBRkRDR�RCR�R�RF(R�tentrytoldtnewRntcoodatatdrawingtpctpstfillingtcLItcLR�R�R�tusepcR�ttodeleteRpRqRrRsRtR�R_((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _undogoto�sd ! (* cCs�|jr(|jjd||jf�n||j9}|jj|�}|jj}|dkr�|jdkr�d|j}dtt |�|�}d||}x6t |�D]%}|jj|�|_|j�q�Wn||_|j�dS(s&Turns pen clockwise by angle. trotiig@g�?N(R�R�RR�R�R�R�R!R�R R�Rk(R�R�t neworientR�tanglevelRRtR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs cCs�t|j�dkrb|jj|j|j|j|j�|jj�|_|jj |j�n|jj|jdt �g|_|r�|jg|_ndS(s�Closes current line item and starts a new one. Remark: if current line became too long, animation performance (via _drawline) slowed down considerably. iR_N(R�RIR�RgRHRRReR�RYR�R�(R�R:((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3)s cCsmt|jt�}|dkr"|S|j}d}}|r�t|j�dkr�|jj|j|jd|j�d|jf}q�n|r�|jj �|_|j j|j�|jg|_d|jf}|j �nd|_|_|jr_|dkr$|d kr\|jj|�q\q_|d krC|jj|�q_|jjd||g�n|j�dS(s�Call fill(True) before drawing a shape to fill, fill(False) when done. Optional argument: flag -- True/False (or 1/0 respectively) Call fill(True) before drawing the shape you want to fill, and fill(False) when done. When used without argument: return fillstate (True if filling, False else) Example (for a Turtle instance named turtle): >>> turtle.fill(True) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.fill(False) iR:tdofillt beginfillR N(((((R�RFR�R�R�R�RaRERRXR�RYR�R3R�R�Rk(R�ROR|R�tentry1tentry2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:9s2 cCs|jt�dS(s�Called just before drawing a shape to be filled. No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() N(R:R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR*lscCs|jt�dS(s�Fill the shape drawn after the call begin_fill(). No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() N(R:R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR7~scGs�|stt|ttf�rF|j|�}|jt|jd�}q�|j}|s�|jt|jd�}q�n7|dkr�|jt|jd�}n|j|�}t|j d�r |j j |j||�}|jj |�|jr�|jjd|f�q�n�|j�}|jrD|jjdg�t|j_nzT|j�dkrf|j�n|j�|j|�|j|�|jd�Wd|j|�X|jr�t|j_ndS(s�Draw a dot with diameter size, using color. Optional arguments: size -- an integer >= 1 (if given) color -- a colorstring or a numeric color tuple Draw a circular dot with diameter size, using color. If size is not given, the maximum of pensize+4 and 2*pensize is used. Example (for a Turtle instance named turtle): >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) it_dotR5R R%iN(R�R�R�R�RRZRR�thasattrR�R�R�R�RYR�R�RNR�R�RYRERPRQROR<R�(R�RNR2RiRN((s%/usr/lib64/python2.7/lib-tk/turtle.pyR5�s: cCs`|jj|j||||j�\}}|jj|�|jr\|jjd|f�n|S(s)Performs the writing for write() twri(R�R�R�RR�RYR�R�(R�R{R|RyRiR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s RHtArialiR*cCs�|jr+|jjdg�t|j_n|jt|�|j�|�}|rw|j�\}}|j||�n|jr�t |j_ndS(s�Write text at the current turtle position. Arguments: arg -- info, which is to be written to the TurtleScreen move (optional) -- True/False align (optional) -- one of the strings "left", "center" or right" font (optional) -- a triple (fontname, fontsize, fonttype) Write text - the string representation of arg - at the current turtle position according to align ("left", "center" or right") and with the given font. If move is True, the pen is moved to the bottom-right corner of the text. By default, move is False. Example (for a Turtle instance named turtle): >>> turtle.write('Home = ', True, align="center") >>> turtle.write((0,0), True) R N( R�R�R�R�R�R�R�RSR]R�(R�targtmoveR|RyRR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRq�s ! cCs|jg|_t|_dS(sStart recording the vertices of a polygon. No argument. Start recording the vertices of a polygon. Current turtle position is first point of polygon. Example (for a Turtle instance named turtle): >>> turtle.begin_poly() N(R�RCR�RD(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR+�scCs t|_dS(s7Stop recording the vertices of a polygon. No argument. Stop recording the vertices of a polygon. Current turtle position is last point of polygon. This will be connected with the first point. Example (for a Turtle instance named turtle): >>> turtle.end_poly() N(R�RD(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR8�scCs |jdk rt|j�SdS(s�Return the lastly recorded polygon. No argument. Example (for a Turtle instance named turtle): >>> p = turtle.get_poly() >>> turtle.register_shape("myFavouriteShape", p) N(RCR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR= s cCs|jS(s�Return the TurtleScreen object, the turtle is drawing on. No argument. Return the TurtleScreen object, the turtle is drawing on. So TurtleScreen-methods can be called for that object. Example (for a Turtle instance named turtle): >>> ts = turtle.getscreen() >>> ts <turtle.TurtleScreen object at 0x0106B770> >>> ts.bgcolor("pink") (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR? scCs|S(sUReturn the Turtleobject itself. No argument. Only reasonable use: as a function to return the 'anonymous turtle': Example: >>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x0187D810> >>> turtles() [<turtle.Turtle object at 0x0187D810>] ((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR@" scCs|jj�dS(s� Returns the width of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 i(R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR': s cCs|jj�dS(s� Return the height of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 i(R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR&E s cCs|jj|�S(sDSet delay value which determines speed of turtle animation. (R�R(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyRmP sicCs-|jj|jj|||�|j�dS(s�Bind fun to mouse-click event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). add -- True or False. If True, new binding will be added, otherwise it will replace a former binding. Example for the anonymous turtle, i. e. the procedural way: >>> def turn(x, y): ... left(360) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed N(R�R�R�R?Rk(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJW scCs-|jj|jj|||�|j�dS(s�Bind fun to mouse-button-release event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Example (for a MyTurtle instance named joe): >>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> joe = MyTurtle() >>> joe.onclick(joe.glow) >>> joe.onrelease(joe.unglow) Clicking on joe turns fillcolor red, unclicking turns it to transparent. N(R�R�R�R?Rk(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRLl scCs#|jj|jj|||�dS(s�Bind fun to mouse-move event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. Example (for a Turtle instance named turtle): >>> turtle.ondrag(turtle.goto) Subsequently clicking and dragging a Turtle will move it across the screen thereby producing handdrawings (if pen is down). N(R�R�R�R?(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRK� scCs�|jdkrdS|dkrV|\}}|j|||j�|jj�}n5|dkr||d}|j|�n|dkr�|j|�n�|dkr�|d}|jj|�|j j |�n�|dkr|d}|jj|dddfd d dd �ny|dkr[|d}d|_|_ |jj|�|j j |�n0|d kr�tj||d�|jj�ndS(s2Does the main part of the work for undo() NR�RhiRmR�R5R�R:R�RVR�RN(R�R5(ii(ii(ii(R�R�RRR�R/R�R�RjR�R�RaRERFRRN(R�tactionR�R�tdegPAUtdummyRdRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_undo� s6 cCs�|jdkrdS|jj�}|d}|d}|dkrvxA|rr|j�}|j|d|d�qEWn|j||�dS(s�undo (repeatedly) the last turtle action. No argument. undo (repeatedly) the last turtle action. Number of available undo actions is determined by the size of the undobuffer. Example (for a Turtle instance named turtle): >>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo() ... NiiR (R�R�R�R�(R�RiR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRm� s N(R�iR*(9R�R�R�RAR�R�RRXR`RnRMR.R�RkR#R�R�RPR1RcRdR_RjRiRYR�RhRkR/R0RR�RR�R3R:R*R7R5R�R�RqR+R8R=R?R@R>R'R&RmRJRLRKR�RmRl(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRq sl% (& 7 < 5 A 3 3 cCs%tjdkrt�t_ntjS(s�Return the singleton screen object. If none exists at the moment, create a new one and return it, else return the existing one.N(R t_screenR�R@(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR� sR@cBspeZdZdZedZd�Zededededd�Zd�Z d�Z d �Zd �ZRS(R"cCs�tjdkrKt�t_|_|jjtj�|jj|j�ntjdkr�t d}t d}t d}t d}t d}t d}|jj ||||�|jj�t_tj |tj�|j||||�ndS(NRpR�R�R�R�R�(R@t_rootR�R7R"t_titleREt_destroyRR�R<R=RRR (R�RpR�R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR� s RpR�R�R�cCst|jd�sdS|jj�}|jj�}t|t�rld|koZdknrl||}n|dkr�||d}nt|t�r�d|ko�dknr�||}n|dkr�||d}n|jj||||�|j�dS(s Set the size and position of the main window. Arguments: width: as integer a size in pixels, as float a fraction of the screen. Default is 50% of screen. height: as integer the height in pixels, as float a fraction of the screen. Default is 75% of screen. startx: if positive, starting position in pixels from the left edge of the screen, if negative from the right edge Default, startx=None is to center window horizontally. starty: if positive, starting position in pixels from the top edge of the screen, if negative from the bottom edge Default, starty=None is to center window vertically. Examples (for a Screen instance named screen): >>> screen.setup (width=200, height=200, startx=0, starty=0) sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) sets window to 75% of screen by 50% of screen and centers RANiii( R�R�RGRIR�R�R�RAR%(R�RpR�R?R@Rttsh((s%/usr/lib64/python2.7/lib-tk/turtle.pyR s+ + cCs/tjdk r"tjj|�n|t_dS(sqSet title of turtle-window Argument: titlestring -- a string, to appear in the titlebar of the turtle graphics window. This is a method of Screen-class. Not available for TurtleScreen- objects. Example (for a Screen instance named screen): >>> screen.title("Welcome to the turtle-zoo!") N(R@R�R�R"R�(R�ttitlestring((s%/usr/lib64/python2.7/lib-tk/turtle.pyR"(s cCsV|j}|tjkr?dt_dt_dt_dt_ntt_ |j �dS(N(R�R@R�R R�R�RR�RR�RD(R�troot((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�9s cCs|j�dS(s~Shut the turtlegraphics window. Example (for a TurtleScreen instance named screen): >>> screen.bye() N(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRCscsW�fd�}�j|�tdr*dSyt�Wntk rRtd�nXdS(slGo into mainloop until the mouse is clicked. No arguments. Bind bye() method to mouseclick on TurtleScreen. If "using_IDLE" - value in configuration dictionary is False (default value), enter mainloop. If IDLE with -n switch (no subprocess) is used, this value should be set to True in turtle.cfg. In this case IDLE's mainloop is active also for the client script. This is a method of the Screen-class and not available for TurtleScreen instances. Example (for a Screen instance named screen): >>> screen.exitonclick() cs�j�dS(s&Screen.bye() with two dummy-parametersN(R(R�R�(R�(s%/usr/lib64/python2.7/lib-tk/turtle.pytexitGracefully^sR�Ni(RJR�RvtAttributeErrortexit(R�R�((R�s%/usr/lib64/python2.7/lib-tk/turtle.pyRKs N( R�R�R�R�RR�R�RR R"R�RR(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR@� s ' cBs8eZdZdZdZedededd�ZRS(s�RawTurtle auto-creating (scrolled) canvas. When a Turtle object is created or a function derived from some Turtle method is called a TurtleScreen object is automatically created. RcR�R�c CsGtjdkrt�t_ntj|tjd|d|d|�dS(NRcR�R�(R R�R�RRR(R�RcR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRrsN(R�R�R�R�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR istturtle_docstringdictcCsRi}x+tD]#}d|}t|�j||<q Wx+tD]#}d|}t|�j||<q;Wtd|d�}tg|j�D]%}|jd�dtkr�|^q��}|j d�x>|d D]2}|j d t |��|j d ||�q�W|d}|j d t |��|j d||�|j d�|j�d S(s�Create and write docstring-dictionary to file. Optional argument: filename -- a string, used as filename default value is turtle_docstringdict Has to be called explicitly, (not used by the turtle-graphics classes) The docstring dictionary will be written to the Python script <filname>.py It is intended to serve as a template for translation of the docstrings into different languages. s_Screen.sTurtle.s%s.pyRTR�isdocsdict = { i����s%s : s """%s """, s """%s """ s} N(t_tg_screen_functionsR�R�t_tg_turtle_functionsR�R�R�Rt_alias_listRqtreprR�(R�tdocsdictt methodnameR�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRts& ( cCsxdi|j�d6}t|�}|j}xE|D]=}y||t|�j_Wq3tk rod|GHq3Xq3WdS(s�Read in docstrings from lang-specific docstring dictionary. Transfer docstrings, translated to lang, from a dictionary-file to the methods of classes Screen and Turtle and - in revised form - to the corresponding functions. s!turtle_docstringdict_%(language)sR�sBad docstring-entry: %sN(R�t __import__R�R�tim_funcR�R�(tlangtmodnametmoduleR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytread_docstrings�s sCannot find docsdict fors;Unknown Error when trying to import %s-docstring-dictionaryc Cs�d}}t|�tjkr1|j}d}n|}d}t|�tjtjgkr�yg|jj}t|jj ||!�}|jj ||!}|j p�g}ttd�|��}dgt|�t|�|}td�||�} |jj d@rF| jd|jj |�|jd|jj |�|d7}n|jj d@r�| jd |jj |�|jd |jj |�nd j| �}d|}d j|�}d|}Wq�q�Xn||fS(s9Get strings describing the arguments for the given objectR�iicSsdt|�S(Ns=%s(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt<lambda>�R�cSs||S(N((R�tdflt((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��R�iRis**s, s(%s)(R�R�t MethodTypeR�R�t LambdaTypet func_codetco_argcountR�tco_varnamest func_defaultstmapR�tco_flagsRYR( tobtargText1targText2tfobt argOffsettcountertitems2trealArgstdefaultstitems1((s%/usr/lib64/python2.7/lib-tk/turtle.pytgetmethparlist�s: ! cCseddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S(s<To reduce docstrings from RawTurtle class for functions i����NR�s%s.R�s \(.+ %s\):t:(treR�R�treplacetcompiletsub(tdocstrR�t turtlenamet newdocstrtparexp((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_turtle_docrevise�s cCseddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S(s?To reduce docstrings from TurtleScreen class for functions i����NR�s%s.R�s \(.+ %s\):R�(R�R�R�R�R�R�(R�R�t screennameR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_screen_docrevise�s srdef {name}{paramslist}: if {obj} is None: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator {obj} = {init} try: return {obj}.{name}{argslist} except TK.TclError: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator raise c Bs�x�|D]�}e||�}e|�\}}|dkrMdG|G|GHqnejd|d|d|d|d|�} | e�U||j�e�|_qWdS(NR�s>>>>>>tobjtinitR�t paramslisttargslist(tgetattrR�t__func_bodytformattglobalsR�( t functionsR�R�R�t docreviseR�R�tpl1tpl2tdefstr((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_make_global_funcss sTurtle._screensScreen()sTurtle._pensTurtle()t__main__cCst�rt�nt�dS(N(RFRURM(((s%/usr/lib64/python2.7/lib-tk/turtle.pyt switchpen#s cCs�t�tt�t�td�t�td�x�td�D]�}|dkr_td�nx(td�D]}t d�t d�qlW|dkr�td�td �nt�t d �t�q@Wtd�td�tt�t�t d�t d�t d�t d�t d�t�td d�tdd�td�x<td�D].}t d�t d�t d�t d�qXWtt�td�x<td�D].}t d�t d�t d�t d�q�Wtd �dS(sDemo of old turtle.py - moduleidiiiiiiZtmarooniiR�i�t startstartustarttrediN(RXR#R�RoR)R6RpR�R:R<RHR2R�RWRq(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytdemo1)sX cCsOtd�t�td�ttdd��tdd�d}td�x(td�D]}t�t |d�qXWt d�xt�r�t�q�Wt �td�td �d}td �td�td�x�tdd �D]�}|dkrt�td d|dd|�nx(td�D]}t|�td�q+W|d7}td�tt�dd�q�Wt�td�t�td�td�t�tdd�td�td�x?td�D]1}t dd�td�td�td�q�Wtd�td�t�td�t�td�t�}|jd�t�}|jd�|jd�|j �|jd�|jd�|j�|jdd�|jd�|j �|jd�|jdd�|jd�|jd�tt|��d}x�|j|�dkr�|jd �|jd!�|j|j|��|jd�|d"dkr�|j!�|j!�t�n|d7}q W|j d#d$d/d'd(�|jd)�|jd*�d+�}t"j#d�x!t�r|j�|j�q�W|jd�|j d,d$d0�|j$|d�d.S(1sDemo of some new features.iiig@iZii swait a moment...i�tgreeni�i����iiixiiFiR�tyellowii2R�R%uautoii(itblueuorangeig@g333333�?isCAUGHT! RyR�tboldR|urightR�uredcSst�t�dS(N(RR(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytbaba�ss Click me!tCourierN(R�iR�(R�iR�(%RfRgRQR\RkR4RZR�R�R-RqRnRmRXRIRROR*R;R9R7RURMR2R:RcR@RYR RHRoRAR6RhttimetsleepRJ(RR�tlaengeR�ttriR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytdemo2^s� (HR�t_vertTkinterRR�R�R�tostos.pathRRRtcopyRt_tg_classesR�R�t _tg_utilitiest_math_functionst__all__R�R�R�R�R�R�R�R�R�R R�R�R�R�RRRR8R7tobjectRJt ExceptionR�R�RR�RR�RR<RR RR@R RRtR�t _LANGUAGEtImportErrorR�R�R�R�R�RvRuR�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyt<module>es� ! % 4 c �K /&����������k �" $ 5 bturtle.pyo000064400000420471151703463030006626 0ustar00� zfcO@s+dZdZddlZddlZddlZddlZddlZddlm Z m Z mZddlm Z ddlTddd d ddd ddg Zddddddddddddddddd d!d"d#d$d%d&d'd(d)gZd*d+d,d-d.d/d0d1d2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIdJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]d^d_d`dadbdcdddedfdgdhdidjdkdldmd%dndodpdqdrd(d)dsdtdugOZdvdwdxgZdydzd{d|d}d~dd�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�d�gZeeeed�geZdd+d.d;dGdKdOdUdWd\d]d_d`didndqdrgZid�dr6d�d�6d�d�6d�d�6ed�6ed�6d�d6d�d6d�d6d�d�6d�de6d�dQ6d�d=6d�d[6ed�6d�d�6d�d�6d�d�6d�d$6ed�6Zd��Zd��Zyee�Wnek rfd�GHnXdefd���YZd��Zd��Zd�d�Z fd��Z!dej"fd���YZ#e!e#ej$d��d�ej%fd���YZ&ej$Z$d�e'fd���YZ(d�e)fd���YZ*d�e)fd���YZ+de'fd���YZ,d�e'fd���YZ-de(fd���YZ.d�e'fd���YZ/d�e'fd���YZ0d�e'fd���YZ1d e0e/fd���YZ2e2Z3d��Z4d�e.fd���YZ5de2fd���YZ6e6Z7d�d��Z8d��Z9ed�Z:ye:d�krNe9e:�nWn3e;k rkd�Ge:GHnek r�d�e:GHnXd��Z<d��Z=d��Z>d�Z?d��Z@e@ee5d�d�e>�e@ee6d�d�e=�ejAZBZAeCd�kr'd��ZDd��ZEd��ZFeE�eF�eG�ndS(�s� Turtle graphics is a popular way for introducing programming to kids. It was part of the original Logo programming language developed by Wally Feurzig and Seymour Papert in 1966. Imagine a robotic turtle starting at (0, 0) in the x-y plane. After an ``import turtle``, give it the command turtle.forward(15), and it moves (on-screen!) 15 pixels in the direction it is facing, drawing a line as it moves. Give it the command turtle.right(25), and it rotates in-place 25 degrees clockwise. By combining together these and similar commands, intricate shapes and pictures can easily be drawn. ----- turtle.py This module is an extended reimplementation of turtle.py from the Python standard distribution up to Python 2.5. (See: http://www.python.org) It tries to keep the merits of turtle.py and to be (nearly) 100% compatible with it. This means in the first place to enable the learning programmer to use all the commands, classes and methods interactively when using the module from within IDLE run with the -n switch. Roughly it has the following features added: - Better animation of the turtle movements, especially of turning the turtle. So the turtles can more easily be used as a visual feedback instrument by the (beginning) programmer. - Different turtle shapes, gif-images as turtle shapes, user defined and user controllable turtle shapes, among them compound (multicolored) shapes. Turtle shapes can be stretched and tilted, which makes turtles very versatile geometrical objects. - Fine control over turtle movement and screen updates via delay(), and enhanced tracer() and speed() methods. - Aliases for the most commonly used commands, like fd for forward etc., following the early Logo traditions. This reduces the boring work of typing long sequences of commands, which often occur in a natural way when kids try to program fancy pictures on their first encounter with turtle graphics. - Turtles now have an undo()-method with configurable undo-buffer. - Some simple commands/methods for creating event driven programs (mouse-, key-, timer-events). Especially useful for programming games. - A scrollable Canvas class. The default scrollable Canvas can be extended interactively as needed while playing around with the turtle(s). - A TurtleScreen class with methods controlling background color or background image, window and canvas size and other properties of the TurtleScreen. - There is a method, setworldcoordinates(), to install a user defined coordinate-system for the TurtleScreen. - The implementation uses a 2-vector class named Vec2D, derived from tuple. This class is public, so it can be imported by the application programmer, which makes certain types of computations very natural and compact. - Appearance of the TurtleScreen and the Turtles at startup/import can be configured by means of a turtle.cfg configuration file. The default configuration mimics the appearance of the old turtle module. - If configured appropriately the module reads in docstrings from a docstring dictionary in some different language, supplied separately and replaces the English ones by those read in. There is a utility function write_docstringdict() to write a dictionary with the original (English) docstrings to disc, so it can serve as a template for translations. Behind the scenes there are some features included with possible extensions in mind. These will be commented and documented elsewhere. s5turtle 1.0b1 - for Python 2.6 - 30. 5. 2008, 18:08i����N(tisfiletsplittjoin(tdeepcopy(t*tScrolledCanvastTurtleScreentScreent RawTurtletTurtletRawPentPentShapetVec2Dtaddshapetbgcolortbgpictbyetclearscreent colormodetdelaytexitonclickt getcanvast getshapestlistentmodetonkeyt onscreenclicktontimertregister_shapetresetscreent screensizetsetuptsetworldcoordinatesttitlettracertturtlestupdatet window_heighttwindow_widthtbacktbackwardt begin_fillt begin_polytbktcircletcleart clearstamptclearstampstclonetcolortdegreestdistancetdottdowntend_filltend_polytfdtfillt fillcolortforwardtget_polytgetpent getscreent getturtletgototheadingt hideturtlethomethttisdownt isvisibletlefttlttonclicktondragt onreleasetpdtpentpencolortpendowntpensizetpenuptpostpositiontputradianstrighttresett resizemodetrttsetht setheadingtsetpostsetpositiontsettiltanglet setundobuffertsetxtsetytshapet shapesizet showturtletspeedtsttstampttiltt tiltanglettowardst turtlesizetundotundobufferentriestuptwidthtwritetxcortycortwrite_docstringdicttdonetmainlooptacostasintatantatan2tceiltcostcoshtetexptfabstfloortfmodtfrexpthypottldexptlogtlog10tmodftpitpowtsintsinhtsqrtttanttanht Terminatorg�?g�?theighti�t canvwidthi,t canvheightt leftrightt topbottomtstandardg�?i i�tundobuffersizetclassictblacktnoresizetvisibletenglishtlanguagetturtlet exampleturtletscreent examplescreensPython Turtle Graphicst using_IDLEcCs#t|d�}|j�}|j�i}x�|D]�}|j�}|s2|jd�r`q2ny|jd�\}}Wn#tk r�d||fGHq2nX|j�}|j�}|dkr�t|�}n?y+d |kr�t|�}nt |�}Wntk rnX|||<q2W|S(s/Convert content of config-file into dictionary.trt#t=sBad line in config-file %s: %stTruetFalsetNones''s""t.(R�R�R�s''s""( topent readlinestclosetstript startswithRt ValueErrortevaltfloattint(tfilenametftcfglinestcfgdicttlinetkeytvalue((s%/usr/lib64/python2.7/lib-tk/turtle.pytconfig_dict�s2 cCs�d}i}i}t|�r-t|�}nd|krJd|d}ny%tt�\}}t||�}Wntk r�d}nXt|�r�t|�}ntj|�tj|�dS(s@Read config-files, change configuration-dict accordingly. If there is a turtle.cfg file in the current working directory, read it from there. If this contains an importconfig-value, say 'myway', construct filename turtle_mayway.cfg else use turtle.cfg and read it from the import-directory, where turtle.py is located. Update configuration dictionary first according to config-file, in the import directory, then according to config-file in the current working directory. If no config-file is found, the default configuration is used. s turtle.cfgtimportconfigs turtle_%s.cfgtN(RR�Rt__file__Rt BaseExceptiont_CFGR%(R�tdefault_cfgtcfgdict1tcfgdict2theadttailt cfg_file2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt readconfig�s s"No configfile read, reason unknowncBsheZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z d �Zd �ZRS(s�A 2 dimensional vector class, used as a helper class for implementing turtle graphics. May be useful for turtle graphics programs also. Derived from tuple, so a vector is a tuple! Provides (for a, b vectors, k number): a+b vector addition a-b vector subtraction a*b inner product k*a and a*k multiplication with scalar |a| absolute value of a a.rotate(angle) rotation cCstj|||f�S(N(ttuplet__new__(tclstxty((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs%t|d|d|d|d�S(Nii(R (tselftother((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__add__scCsLt|t�r/|d|d|d|dSt|d||d|�S(Nii(t isinstanceR (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__mul__s cCs9t|tttf�r5t|d||d|�SdS(Nii(R�R�tlongR�R (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__rmul__scCs%t|d|d|d|d�S(Nii(R (R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__sub__scCst|d|d�S(Nii(R (R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__neg__scCs|dd|dddS(Niiig�?((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__abs__scCs}t|d|d�}|tjd}tj|�tj|�}}t|d||d||d||d|�S(s.rotate self counterclockwise by angle iig�f@(R tmathR�R|R�(R�tangletperptcts((s%/usr/lib64/python2.7/lib-tk/turtle.pytrotatescCs|d|dfS(Nii((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__getnewargs__&scCsd|S(Ns(%.2f,%.2f)((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__repr__(s( t__name__t __module__t__doc__R�R�R�R�R�R�R�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR s cCs}t|j�}|j�x|D]}t||�q Wx?|jj�D].\}}t|�tjkrG|||<qGqGWdS(s#helper function for Scrolled CanvasN( tlistt __bases__treverset__methodDictt__dict__titemsttypettypestFunctionType(R�t_dicttbaseListt_superR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�4s cCsi}t||�|j�S(s#helper function for Scrolled Canvas(R�tkeys(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt __methods>s s*def %(method)s(self, *args, **kw): return s*self.%(attribute)s.%(method)s(*args, **kw)c Bs&i}e||�x>|j�D]0}|d dksF|ddkr ||=q q Wx$|D]}||kr[||=q[q[Wx*e|�D]}||kr�||=q�q�Wxw|j�D]i\}}i|d6|d6}e|�ejkrei|d6|d6} n| |U|||j|<q�WdS(snHelper functions for Scrolled Canvas, used to forward ScrolledCanvas-methods to Tkinter.Canvas class. it_i����tmethodtfunct attributeN( R�R�R�R�R�R�t StringTypet__stringBodyR�( t fromClassttoClassttoParttexcludeR�texR�R�tdt execString((s%/usr/lib64/python2.7/lib-tk/turtle.pyt__forwardmethodsHs" cBs}eZdZddddd�Zdddd�Zd�Zd�Zd�Zd �Z d �Z d�Zd�Zd �Z RS(s�Modeled after the scrolled canvas class from Grayons's Tkinter book. Used as the default canvas, which pops up automatically when using turtle graphics functions or the Turtle class. i�i^iXcCs tjj||d|d|�|j�|_|||_|_|||_|_d|_ tj |d|d|d|j dtjdd�|_tj |d|jjd tj�|_tj |d|jj�|_|jjd |jjd|jj�|jdd ddd�|jdd ddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|j�|jjd|j�dS(NRpR�twhitetbgtrelieftborderwidthitcommandtorienttxscrollcommandtyscrollcommanditweightitminsizetpadxtin_tpadytrowtcolumntrowspant columnspantstickytnewss<Configure>(tTKtFramet__init__twinfo_toplevelt_rootwindowRpR�R�R�R�tCanvastSUNKENt_canvast Scrollbartxviewt HORIZONTALthscrolltyviewtvscrollt configuretsettrowconfiguretcolumnconfiguretgridRXtbindtonResize(R�tmasterRpR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRgs, $$$ c Cs�|r||_n|r$||_n|r6||_n|jjd|d|jd|jd|jd|jdf�|jjd|j|jd|j�|jjd|j|jd|j�|j �dS(s<Adjust canvas and scrollbars according to given canvas size.R�tscrollregionig�?iN( R�R�R�Rtconfigtxview_movetoRptyview_movetoR�t adjustScrolls(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCs|jj�}|jj�}|jjd|j||j�|jjd|j||j�||jks�||jkr�|jjddd|ddddddd dd ddd�|j jddd|ddddddd dd ddd�n|jj �|j j �d S(sA Adjust scrollbars according to window- and canvas-size. g�?RiRR R RiRR RRN(Rtwinfo_widthtwinfo_heightR(R�R)R�RR"Rtgrid_forget(R�tcwidthtcheight((s%/usr/lib64/python2.7/lib-tk/turtle.pyR*�s""$$ cCs|j�dS(sself-explanatoryN(R*(R�tevent((s%/usr/lib64/python2.7/lib-tk/turtle.pyR$�scGs|jj|�S(s@ 'forward' method, which canvas itself has inherited... (Rtbbox(R�targs((s%/usr/lib64/python2.7/lib-tk/turtle.pyR1�scOs|jj||�S(s@ 'forward' method, which canvas itself has inherited... (Rtcget(R�R2tkwargs((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(RR'(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR'�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(RR#(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�scOs|jj||�dS(s@ 'forward' method, which canvas itself has inherited... N(Rtunbind(R�R2R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR5�scCs|jj�dS(s@ 'forward' method, which canvas itself has inherited... N(Rtfocus_force(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR6�sN(R�R�R�RR�RXR*R$R1R3R'R#R5R6(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRas Rt_RootcBsMeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS(s'Root class for Screen based on Tkinter.cCstjj|�dS(N(RtTkR(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs8t|||||�|_|jjdddd�dS(NtexpandiR:tboth(RRtpack(R�RpR�R.R/((s%/usr/lib64/python2.7/lib-tk/turtle.pytsetupcanvas�scCs|jS(N(R(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _getcanvas�scCs!|jd||||f�dS(Ns%dx%d%+d%+d(tgeometry(R�RpR�tstartxtstarty((s%/usr/lib64/python2.7/lib-tk/turtle.pytset_geometry�scCs|jd|�dS(NtWM_DELETE_WINDOW(twm_protocol(R�tdestroy((s%/usr/lib64/python2.7/lib-tk/turtle.pyt ondestroy�scCs |j�S(N(twinfo_screenwidth(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt win_width�scCs |j�S(N(twinfo_screenheight(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt win_height�s( R�R�R�RR<R=RARERGRI(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR7�s tTurtleScreenBasecBs[eZdZed��Zed��Zd�Zd�Zddde d�Z d�Zddde d�Zd�Z d �Zd �Zd�Zdd�Zd �Zddd�Zddd�Zddd�Zddd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z dddd�Z!d�Z"RS( s�Provide the basic graphics functionality. Interface between Tkinter and turtle.py. To port turtle.py to some different graphics toolkit a corresponding TurtleScreenBase class has to be implemented. cCs&tjdddd�}|j�|S(s$return a blank image object RpiR�(Rt PhotoImagetblank(timg((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_blankimage�s cCstjd|�S(s`return an image object containing the imagedata from a gif-file named filename. tfile(RRK(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_image�scCs�||_t|t�r3|jj}|jj}nat|jjd��}t|jjd��}|jjd|d|d|d|df�||_||_d|_|_ dS(NRpR�R&ig�?( tcvR�RR�R�R�R3R'txscaletyscale(R�RQtwth((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s 1 cCs|jjddddd�S(s<Create an invisible polygon item on canvas self.cv) iR:R�toutline(iiiiii(RQtcreate_polygon(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createpolysc Cs�g}x=|D]5\}} |j||j�|j| |j�q W|jj||�|dk r~|jj|d|�n|dk r�|jj|d|�n|dk r�|jj|d|�n|r�|jj|�ndS(s`Configure polygonitem polyitem according to provided arguments: coordlist is sequence of coordinates fill is filling color outline is outline color top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. R:RVRpN(tappendRRRSRQtcoordsR�t itemconfiguret tag_raise( R�tpolyitemt coordlistR:RVRpttoptclR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawpolyscCs.|jjdddddddddtj�S(s9Create an invisible line item on canvas self.cv) iR:R�Rpitcapstyle(RQtcreate_lineRtROUND(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createline$s$c Cs�|dk rhg}x=|D]5\}}|j||j�|j||j�qW|jj||�n|dk r�|jj|d|�n|dk r�|jj|d|�n|r�|jj|�ndS(sQConfigure lineitem according to provided arguments: coordlist is sequence of coordinates fill is drawing color width is width of drawn line. top is a boolean value, which specifies if polyitem will be put on top of the canvas' displaylist so it will not be covered by other items. R:RpN(R�RYRRRSRQRZR[R\( R�tlineitemR^R:RpR_R`R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawline*s cCs|jj|�dS(s]Delete graphics item from canvas. If item is"all" delete all graphics items. N(RQtdelete(R�titem((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_deleteAscCs|jj�dS(s(Redraw graphics items on canvas N(RQR%(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_updateGscCs|jj|�dS(s-Delay subsequent canvas actions for delay ms.N(RQtafter(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_delayLscCs=y|jj|�}t}Wntjk r8t}nX|S(sCCheck if the string color is a legal Tkinter color string. (RQt winfo_rgbR�RtTclErrorR�(R�R2trgbtok((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_iscolorstringPs cCs@|dk r,|jjd|�|j�n|jjd�SdS(sVSet canvas' backgroundcolor if color is not None, else return backgroundcolor.R�N(R�RQR'RkR3(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_bgcolorZs cCs�|\}}||j}||j}idd6dd6dd6}|jj|d|d|d ||d |d|�} |jj| �\} }}} |jj�| |dfS(s�Write txt at pos in canvas with specified font and color. Return text item and x-coord of right bottom corner of text's bounding box.tswRHR�tcentertseRWittexttanchorR:tfont(RRRSRQtcreate_textR1R%(R�RSttxttalignRyROR�R�RxRitx0ty0tx1ty1((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_writecs ' icsY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(s�Bind fun to mouse-click event on turtle. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 s<Button-%s>csK�jj|j��j�jj|j��j}}�||�dS(N(RQtcanvasxR�RRtcanvasyR�RS(R0R�R�(tfunR�(s%/usr/lib64/python2.7/lib-tk/turtle.pyteventfun~s!N(R�RQt tag_unbindttag_bind(R�RiR�tnumtaddR�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onclickuscsY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(sgBind fun to mouse-button-release event on turtle. fun must be a function with two arguments, the coordinates of the point on the canvas where mouse button is released. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. s<Button%s-ButtonRelease>csK�jj|j��j�jj|j��j}}�||�dS(N(RQR�R�RRR�R�RS(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s!N(R�RQR�R�(R�RiR�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt _onrelease�s csY�dkr&�jj|d|�n/��fd�}�jj|d|||�dS(sqBind fun to mouse-move-event (with pressed mouse button) on turtle. fun must be a function with two arguments, the coordinates of the actual mouse position on the canvas. num, the number of the mouse-button defaults to 1 Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. s<Button%s-Motion>cscyK�jj|j��j�jj|j��j}}�||�Wntk r^nXdS(N(RQR�R�RRR�R�RSR�(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s! N(R�RQR�R�(R�RiR�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_ondrag�s csS�dkr#�jjd|�n,��fd�}�jjd|||�dS(sGBind fun to mouse-click event on canvas. fun must be a function with two arguments, the coordinates of the clicked point on the canvas. num, the number of the mouse-button defaults to 1 If a turtle is clicked, first _onclick-event will be performed, then _onscreensclick-event. s<Button-%s>csK�jj|j��j�jj|j��j}}�||�dS(N(RQR�R�RRR�R�RS(R0R�R�(R�R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s!N(R�RQR5R#(R�R�R�R�R�((R�R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onscreenclick�s csP�dkr&|jjd|d�n&�fd�}|jjd||�dS(s`Bind fun to key-release event of key. Canvas must have focus. See method listen s<KeyRelease-%s>cs��dS(N((R0(R�(s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sN(R�RQR5R#(R�R�R�R�((R�s%/usr/lib64/python2.7/lib-tk/turtle.pyt_onkey�scCs|jj�dS(s=Set focus on canvas (in order to collect key-events) N(RQR6(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_listen�scCs6|dkr|jj|�n|jj||�dS(s?Install a timer, which calls fun after t milliseconds. iN(RQt after_idleRl(R�R�tt((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_ontimer�scCs|jjddd|�S(s0Create and return image item on canvas. itimage(RQtcreate_image(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_createimage�scCsN|\}}|jj|||j||jf�|jj|d|�dS(sZConfigure image item as to draw image object at position (x,y) on canvas) R�N(RQRZRRRSt itemconfig(R�RiRSR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _drawimage�s(cCs*|jj|d|�|jj|�dS(s�Configure image item as to draw image object at center of canvas. Set item to the first item in the displaylist, so it will be drawn below any other item .R�N(RQR�t tag_lower(R�RiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _setbgpic�scCs|jj|�S(sQReturn 'line' or 'polygon' or 'image' depending on type of item. (RQR�(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_type�scCsT|jj|�}gtdt|�d�D]}||||df^q+}|S(s returns list of coordinate-pairs of points of item Example (for insiders): >>> from turtle import * >>> getscreen()._pointlist(getturtle().turtle._item) [(0.0, 9.9999999999999982), (0.0, -9.9999999999999982), (9.9999999999999982, 0.0)] >>> iii(RQRZtrangetlen(R�RiR`titpl((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _pointlist�s>cCs#|jjd||||f�dS(NR&(RQR'(R�tsrx1tsry1tsrx2tsry2((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_setscrollregion�sc Cs�|jj�}x�|D]z}|jj|�}g}xF|r||d \}}|j||�|j||�|d}q7W|jj||�qWdS(Ni(RQtfind_allRZRY( R�txscalefactortyscalefactorR�RitcoordinatestnewcoordlistR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_rescales cCs�t|jt�s"|j|jfS||koD|koDdknr_|jj|jjfS|dk rw||_n|dk r�||_n|jj|||�dS(saResize the canvas the turtles are drawing on. Does not alter the drawing window. N(R�RQRR�R�R�RX(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_resizes'cCs`|jj�}|dkr+|jd}n|jj�}|dkrV|jd}n||fS(s; Return the width and height of the turtle window. iRpR�(RQR+R,(R�RpR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_window_sizesN(#R�R�R�tstaticmethodRNRPRRXR�R�RaReRgRjRkRmRrRsR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJ�s@ cBseZdZRS(s�Will be raised in TurtleScreen.update, if _RUNNING becomes False. This stops execution of a turtle graphics script. Main purpose: use in the Demo-Viewer turtle.Demo.py. (R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�,stTurtleGraphicsErrorcBseZdZRS(sSome TurtleGraphics Error (R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�5scBs&eZdZdd�Zdd�ZRS(s�Data structure modeling shapes. attribute _type is one of "polygon", "image", "compound" attribute _data is - depending on _type a poygon-tuple, an image or a list constructed using the addcomponent method. cCs�||_|dkr6t|t�r�t|�}q�ny|dkr�t|t�r�|j�jd�r�t|�r�tj |�}q�q�n%|dkr�g}nt d|��||_dS(NtpolygonR�s.giftcompoundsThere is no shape type %s(R�R�R�R�t basestringtlowertendswithRRRPR�t_data(R�ttype_tdata((s%/usr/lib64/python2.7/lib-tk/turtle.pyRAs ! cCsW|jdkr%td|j��n|dkr:|}n|jj|||g�dS(s-Add component to a shape of type compound. Arguments: poly is a polygon, i. e. a tuple of number pairs. fill is the fillcolor of the component, outline is the outline color of the component. call (for a Shapeobject namend s): -- s.addcomponent(((0,0), (10,10), (-10,10)), "red", "blue") Example: >>> poly = ((0,0),(10,-5),(0,10),(-10,-5)) >>> s = Shape("compound") >>> s.addcomponent(poly, "red", "blue") >>> # .. add more components and then use register_shape() R�s Cannot add component to %s ShapeN(R�R�R�R�RY(R�tpolyR:RV((s%/usr/lib64/python2.7/lib-tk/turtle.pytaddcomponentQs N(R�R�R�R�RR�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:stTbuffercBsJeZdZdd�Zdd�Zd�Zd�Zd�Zd�Z RS( s5Ring buffer used as undobuffer for RawTurtle objects.i cCs2||_dgg||_d|_t|_dS(Ni����(tbufsizeR�tbuffertptrR�tcumulate(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRks cCsb|dkr9xFt|j�D]}dg|j|<qWn||_dgg||_d|_dS(Ni����(R�R�R�R�R�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRXps cCs`|jdkr\|jsB|jd|j|_||j|j<q\|j|jj|�ndS(Nii(R�R�R�R�RY(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pytpushxs cCsd|jdkr`|j|j}|dkr/dSdg|j|j<|jd|j|_|SndS(Nii(R�R�R�R�(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pytpopscCs|j|jjdg�S(N(R�R�tcountR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytnr_of_items�scCst|j�dt|j�S(Nt (tstrR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sN( R�R�R�RR�RXR�R�R�R�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�is cBsOeZdZeZedededd�Zd�Zdd�Z d�Z dd�Zd �Zd �Z dd�Zd�Zd �Zd�Zddd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zddd�Zd�Zddd�Zdd�Zdd�Zdddd�ZeZ eZ!eZ"eZ#RS( s�Provides screen oriented methods like setbg etc. Only relies upon the methods of TurtleScreenBase and NOT upon components of the underlying graphics toolkit - which is Tkinter in this case. RRRcCs�itdd/d0d1f�d6tdd2d3d4d5d6d7d8d9d:d;d<d=d>d?d@dAdBdCdDdEdFdGdHdIf�d6tddJdKdLdMdNdOdPdQdRdSdTdUdVdWdXdYdZd[d\d]f�d$6tdd^d_d`daf�d%6tddbdcddf�d(6tddedfdgdhf�d)6td*|j��d+6|_id,d-6|_tj||�||_||_td.|_ g|_ |j�dS(iNR�i����ii tarrowii����ii����i����ii����i i����ii����iii����i����i����iiiR�g��Q�#@g���Q�@g�G�z. @g��Q��@g���Q��g��Q���g�G�z. �g��Q�#�g�g$�R-tsquareg�G�z�g�����'@ttriangleR�R�RLR�tnopicR(i����i(i i(ii (ii(i����i(i����i (i����i(i����i (i����i(i����i(i����i(i����i����(i����i����(i����i����(i����i����(ii����(ii����(ii����(ii����(ii����(ii(ii(i i(ii (ii(ii (ii(i i(g��Q�#@g���Q�@(g�G�z. @g��Q��@(g��Q��@g�G�z. @(g���Q�@g��Q�#@(ii (g���Q��g��Q�#@(g��Q���g�G�z. @(g�G�z. �g��Q��@(g��Q�#�g���Q�@(i����i(g��Q�#�g���Q��(g�G�z. �g��Q���(g��Q���g�G�z. �(g���Q��g��Q�#�(g�g$�(g���Q�@g��Q�#�(g��Q��@g�G�z. �(g�G�z. @g��Q���(g��Q�#@g���Q��(i i����(i i (i����i (i����i����(i g�G�z�(ig�����'@(i����g�G�z�(ii(i����i����(ii����(ii����(RRNt_shapest_bgpicsRJRt_modet_delayvalueR�t _colormodet_keysR.(R�RQRRR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s4 cCs�td|_td|_|jd�|jd�|_d|_d|_d|_g|_ |j d�xdD]}|jd|�qqWx"|j D]}|jd|�q�Wdt_dS( sqDelete all drawings and all turtles from the TurtleScreen. Reset empty TurtleScreen to its initial state: white background, no backgroundimage, no eventbindings and tracing on. No argument. Example (for a TurtleScreen instance named screen): >>> screen.clear() Note: this method is not available as function. RRtallR�R�iiR�iiN(iii(R�R�R�RjR�t_bgpict _bgpicnamet_tracingt_updatecountert_turtlesRRJR�R�RR t_pen(R�tbtnR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR.�s cCs�|dkr|jS|j�}|dkr>td|��n||_|d kr�|j|jd|jd|jd|jd�d|_|_n|j �dS( shSet turtle-mode ('standard', 'logo' or 'world') and perform reset. Optional argument: mode -- one of the strings 'standard', 'logo' or 'world' Mode 'standard' is compatible with turtle.py. Mode 'logo' is compatible with most Logo-Turtle-Graphics. Mode 'world' uses userdefined 'worldcoordinates'. *Attention*: in this mode angles appear distorted if x/y unit-ratio doesn't equal 1. If mode is not given, return the current mode. Mode Initial turtle heading positive angles ------------|-------------------------|------------------- 'standard' to the right (east) counterclockwise 'logo' upward (north) clockwise Examples: >>> mode('logo') # resets turtle heading to north >>> mode() 'logo' R�tlogotworldsNo turtle-graphics-mode %sig�?N(R�R�R�(R�R�( R�R�R�R�R�R�R�RRRSRX(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCs|j�dkr"|jd�nt||�}t||�}|j�\}}|j|d|d�|j|j} } |j||_|j||_||j}||j}|j|} |j|}|j||| |�|j |j| |j| �|j �dS(ssSet up a user defined coordinate-system. Arguments: llx -- a number, x-coordinate of lower left corner of canvas lly -- a number, y-coordinate of lower left corner of canvas urx -- a number, x-coordinate of upper right corner of canvas ury -- a number, y-coordinate of upper right corner of canvas Set up user coodinat-system and switch to mode 'world' if necessary. This performs a screen.reset. If mode 'world' is already active, all drawings are redrawn according to the new coordinates. But ATTENTION: in user-defined coordinatesystems angles may appear distorted. (see Screen.mode()) Example (for a TurtleScreen instance named screen): >>> screen.setworldcoordinates(-10,-0.5,50,1.5) >>> for _ in range(36): ... left(10) ... forward(0.5) R�iN(RR�R�RRRRSR�R�R�R�R%(R�tllxtllyturxturytxspantyspantwxtwyt oldxscalet oldyscaleR�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR!�s cCs�|dkrO|j�jd�r<td|j|��}qptdd��n!t|t�rptd|�}n||j|<dS(s�Adds a turtle shape to TurtleScreen's shapelist. Arguments: (1) name is the name of a gif-file and shape is None. Installs the corresponding image shape. !! Image-shapes DO NOT rotate when turning the turtle, !! so they do not display the heading of the turtle! (2) name is an arbitrary string and shape is a tuple of pairs of coordinates. Installs the corresponding polygon shape (3) name is an arbitrary string and shape is a (compound) Shape object. Installs the corresponding compound shape. To use a shape, you have to issue the command shape(shapename). call: register_shape("turtle.gif") --or: register_shape("tri", ((0,0), (10,10), (-10,10))) Example (for a TurtleScreen instance named screen): >>> screen.register_shape("triangle", ((5,-3),(0,5),(-5,-3))) s.gifR�s"Bad arguments for register_shape. sUse help(register_shape)R�N( R�R�R�RRPR�R�R�R�(R�tnameRc((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs cCsnt|�dkr|d}nt|t�rf|j|�sI|dkrM|Stdt|���ny|\}}}Wn-ttfk r�tdt|���nX|jdkr�g|||fD]}t d|�^q�\}}}nd|kodknoAd|ko#dknoAd|ko?dkns]td t|���nd |||fS(sReturn color string corresponding to args. Argument may be a string or a tuple of three numbers corresponding to actual colormode, i.e. in the range 0<=n<=colormode. If the argument doesn't represent a color, an error is raised. iiR�sbad color string: %ssbad color arguments: %sg�?g�o@i�sbad color sequence: %ss #%02x%02x%02x( R�R�R�RrR�R�t TypeErrorR�R�tround(R�R2R�tgtbR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _colorstrBs 8TcCs�|jd�s|St|�dkrUgdD] }t|||d!d�^q,}nSt|�dkr�g|dD]}dt||d�^qr}ntd |��tg|D]}||jd ^q��S(NR�iiiiiiisbad colorstring: %si�(iii(R�R�R�R�R�R�(R�tcstrR�R`RUR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_color]s01cCsS|dkr|jS|dkr1t|�|_n|dkrOt|�|_ndS(sqReturn the colormode or set it to 1.0 or 255. Optional argument: cmode -- one of the values 1.0 or 255 r, g, b values of colortriples have to be in range 0..cmode. Example (for a TurtleScreen instance named screen): >>> screen.colormode() 1.0 >>> screen.colormode(255) >>> pencolor(240,160,80) g�?i�N(R�R�R�R�(R�tcmode((s%/usr/lib64/python2.7/lib-tk/turtle.pyRhscCs2x+|jD] }|j|j�|j�q WdS(s�Reset all Turtles on the Screen to their initial state. No argument. Example (for a TurtleScreen instance named screen): >>> screen.reset() N(R�t_setmodeR�RX(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX}scCs|jS(s�Return the list of turtles on the screen. Example (for a TurtleScreen instance named screen): >>> screen.turtles() [<turtle.Turtle object at 0x00E11FB0>] (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR$�scGsO|r|j|�}nd}|j|�}|dk rK|j|�}n|S(s�Set or return backgroundcolor of the TurtleScreen. Arguments (if given): a color string or three numbers in the range 0..colormode or a 3-tuple of such numbers. Example (for a TurtleScreen instance named screen): >>> screen.bgcolor("orange") >>> screen.bgcolor() 'orange' >>> screen.bgcolor(0.5,0,0.5) >>> screen.bgcolor() '#800080' N(R�R�RsR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCsc|dkr|jSt|�|_d|_|dk rIt|�|_n|jr_|j�ndS(seTurns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a TurtleScreen instance named screen): >>> screen.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... fd(dist) ... rt(90) ... dist += 2 iN(R�R�R�R�R�R%(R�tnR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�s cCs&|dkr|jSt|�|_dS(s� Return or set the drawing delay in milliseconds. Optional argument: delay -- positive integer Example (for a TurtleScreen instance named screen): >>> screen.delay(15) >>> screen.delay() 15 N(R�R�R�(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCsRtjstt_t�n|jdkrN|jd7_|j|j;_ndS(sIncrement update counter.iiN(Rt_RUNNINGR�R�R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _incrementudc�s cCsT|j}t|_x(|j�D]}|j�|j�qW||_|j�dS(s'Perform a TurtleScreen update. N(R�R�R$t_update_datat_drawturtleRk(R�ttracingR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR%�s cCs|j�dS(s� Return the width of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR'�scCs|j�dS(s� Return the height of the turtle window. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR&�scCs|jS(s�Return the Canvas of this TurtleScreen. No argument. Example (for a Screen instance named screen): >>> cv = screen.getcanvas() >>> cv <turtle.ScrolledCanvas instance at 0x010742D8> (RQ(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCst|jj��S(s�Return a list of names of all currently available turtle shapes. No argument. Example (for a TurtleScreen instance named screen): >>> screen.getshapes() ['arrow', 'blank', 'circle', ... , 'turtle'] (tsortedR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs icCs|j|||�dS(sBind fun to mouse-click event on canvas. Arguments: fun -- a function with two arguments, the coordinates of the clicked point on the canvas. btn -- the number of the mouse-button, defaults to 1 Example (for a TurtleScreen instance named screen and a Turtle instance named turtle): >>> screen.onclick(goto) >>> # Subsequently clicking into the TurtleScreen will >>> # make the turtle move to the clicked point. >>> screen.onclick(None) N(R�(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJscCsg|dkr1||jkrS|jj|�qSn"||jkrS|jj|�n|j||�dS(smBind fun to key-release event of key. Arguments: fun -- a function with no arguments key -- a string: key (e.g. "a") or key-symbol (e.g. "space") In order to be able to register key-events, TurtleScreen must have focus. (See method listen.) Example (for a TurtleScreen instance named screen): >>> def f(): ... fd(50) ... lt(60) ... >>> screen.onkey(f, "Up") >>> screen.listen() Subsequently the turtle can be moved by repeatedly pressing the up-arrow key, consequently drawing a hexagon N(R�R�tremoveRYR�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#scCs|j�dS(sSet focus on TurtleScreen (in order to collect key-events) No arguments. Dummy arguments are provided in order to be able to pass listen to the onclick method. Example (for a TurtleScreen instance named screen): >>> screen.listen() N(R�(R�txdummytydummy((s%/usr/lib64/python2.7/lib-tk/turtle.pyRAs icCs|j||�dS(s�Install a timer, which calls fun after t milliseconds. Arguments: fun -- a function with no arguments. t -- a number >= 0 Example (for a TurtleScreen instance named screen): >>> running = True >>> def f(): ... if running: ... fd(50) ... lt(60) ... screen.ontimer(f, 250) ... >>> f() # makes the turtle marching around >>> running = False N(R�(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRMscCsb|dkr|jS||jkr;|j|�|j|<n|j|j|j|�||_dS(sFSet background image or return name of current backgroundimage. Optional argument: picname -- a string, name of a gif-file or "nopic". If picname is a filename, set the corresponding image as background. If picname is "nopic", delete backgroundimage, if present. If picname is None, return the filename of the current backgroundimage. Example (for a TurtleScreen instance named screen): >>> screen.bgpic() 'nopic' >>> screen.bgpic("landscape.gif") >>> screen.bgpic() 'landscape.gif' N(R�R�R�RPR�R�(R�tpicname((s%/usr/lib64/python2.7/lib-tk/turtle.pyRbscCs|j|||�S(s�Resize the canvas the turtles are drawing on. Optional arguments: canvwidth -- positive integer, new width of canvas in pixels canvheight -- positive integer, new height of canvas in pixels bg -- colorstring or color-tuple, new backgroundcolor If no arguments are given, return current (canvaswidth, canvasheight) Do not alter the drawing window. To observe hidden parts of the canvas use the scrollbars. (Can make visible those parts of a drawing, which were outside the canvas before!) Example (for a Turtle instance named turtle): >>> turtle.screensize(2000,1500) >>> # e. g. to search for an erroneously escaped turtle ;-) (R�(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRzsN($R�R�R�R�R�R�RR.R�RR!RR�R�RRXR$RR#RR�R%R'R&RRRJRRRRRRRRR(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s@ " '$ t TNavigatorcBs�eZdZiedd�d6edd�d6edd�d6ZdZdZdZed�Zd �Z d%d �Zd�Zdd �Z d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd%d�Zd�Zd�Zd�Zd%d�Zd%d�Zd�Zd �Z d%d%d!�Z!dd"�Z"d%d%d#�Z#d%d$�Z$eZ%eZ&eZ'eZ(eZ)eZ*eZ+eZ,e Z-RS(&sRNavigation part of the RawTurtle. Implements methods for turtle movement. g�?gR�R�R�iicCs[|j|_|j|_||_d|_|j�d|_|j|�t j |�dS(N(tDEFAULT_ANGLEOFFSETt_angleOffsettDEFAULT_ANGLEORIENTt_angleOrientR�R�t undobufferR3R�R�RX(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCs)tdd�|_tj|j|_dS(sXreset turtle to its initial values Will be overwritten by parent class gN(R t _positionR�tSTART_ORIENTATIONR�t_orient(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCsj|dkr|jS|d kr#dS||_|d krMd|_d|_n|jd|_d|_dS(s:Set turtle-mode to 'standard', 'world' or 'logo'. R�R�R�Niig@i����(R�R�R�(R�R�(R�R�R�R�t_fullcircle(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s cCsB||_d||_|jdkr1d|_n |d|_dS(s+Helper function for degrees() and radians()ihR�ig@N(Rt _degreesPerAUR�R�(R�t fullcircle((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_setDegreesPerAU�s g�v@cCs|j|�dS(s> Set angle measurement units to degrees. Optional argument: fullcircle - a number Set angle measurement units, i. e. set number of 'degrees' for a full circle. Dafault value is 360 degrees. Example (for a Turtle instance named turtle): >>> turtle.left(90) >>> turtle.heading() 90 Change angle measurement unit to grad (also known as gon, grade, or gradian and equals 1/100-th of the right angle.) >>> turtle.degrees(400.0) >>> turtle.heading() 100 N(R(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3�scCs|jdtj�dS(s Set the angle measurement units to radians. No arguments. Example (for a Turtle instance named turtle): >>> turtle.heading() 90 >>> turtle.radians() >>> turtle.heading() 1.5707963267948966 iN(RR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRV�scCs%|j|j|}|j|�dS(s)move turtle forward by specified distanceN(R�R�t_goto(R�R4tende((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_go�scCs&||j9}|jj|�|_dS(s=Turn turtle counterclockwise by specified angle if angle > 0.N(RR�R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_rotate�s cCs ||_dS(smove turtle to position end.N(R�(R�tend((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�scCs|j|�dS(sMove the turtle forward by the specified distance. Aliases: forward | fd Argument: distance -- a number (integer or float) Move the turtle forward by the specified distance, in the direction the turtle is headed. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.forward(25) >>> turtle.position() (25.00,0.00) >>> turtle.forward(-75) >>> turtle.position() (-50.00,0.00) N(R(R�R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR<�scCs|j|�dS(s�Move the turtle backward by distance. Aliases: back | backward | bk Argument: distance -- a number Move the turtle backward by distance ,opposite to the direction the turtle is headed. Do not change the turtle's heading. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 0.00) >>> turtle.backward(30) >>> turtle.position() (-30.00, 0.00) N(R(R�R4((s%/usr/lib64/python2.7/lib-tk/turtle.pyR(scCs|j|�dS(s�Turn turtle right by angle units. Aliases: right | rt Argument: angle -- a number (integer or float) Turn turtle right by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.right(45) >>> turtle.heading() 337.0 N(R(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRW'scCs|j|�dS(s�Turn turtle left by angle units. Aliases: left | lt Argument: angle -- a number (integer or float) Turn turtle left by angle units. (Units are by default degrees, but can be set via the degrees() and radians() functions.) Angle orientation depends on mode. (See this.) Example (for a Turtle instance named turtle): >>> turtle.heading() 22.0 >>> turtle.left(45) >>> turtle.heading() 67.0 N(R(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRH<scCs|jS(s�Return the turtle's current location (x,y), as a Vec2D-vector. Aliases: pos | position No arguments. Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 240.00) (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRSQscCs|jdS(s� Return the turtle's x coordinate. No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.xcor() 50.0 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRr^scCs|jdS(s Return the turtle's y coordinate --- No arguments. Example (for a Turtle instance named turtle): >>> reset() >>> turtle.left(60) >>> turtle.forward(100) >>> print turtle.ycor() 86.6025403784 i(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRslscCs<|dkr"|jt|��n|jt||��dS(stMove turtle to an absolute position. Aliases: setpos | setposition | goto: Arguments: x -- a number or a pair/vector of numbers y -- a number None call: goto(x, y) # two coordinates --or: goto((x, y)) # a pair (tuple) of coordinates --or: goto(vec) # e.g. as returned by pos() Move turtle to an absolute position. If the pen is down, a line will be drawn. The turtle's orientation does not change. Example (for a Turtle instance named turtle): >>> tp = turtle.pos() >>> tp (0.00, 0.00) >>> turtle.setpos(60,30) >>> turtle.pos() (60.00,30.00) >>> turtle.setpos((20,80)) >>> turtle.pos() (20.00,80.00) >>> turtle.setpos(tp) >>> turtle.pos() (0.00,0.00) N(R�RR (R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRA{scCs!|jdd�|jd�dS(s$Move turtle to the origin - coordinates (0,0). No arguments. Move turtle to the origin - coordinates (0,0) and set its heading to its start-orientation (which depends on mode). Example (for a Turtle instance named turtle): >>> turtle.home() iN(RAR\(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRD�scCs!|jt||jd��dS(s�Set the turtle's first coordinate to x Argument: x -- a number (integer or float) Set the turtle's first coordinate to x, leave second coordinate unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 240.00) >>> turtle.setx(10) >>> turtle.position() (10.00, 240.00) iN(RR R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRa�scCs!|jt|jd|��dS(s�Set the turtle's second coordinate to y Argument: y -- a number (integer or float) Set the turtle's first coordinate to x, second coordinate remains unchanged. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00, 40.00) >>> turtle.sety(-10) >>> turtle.position() (0.00, -10.00) iN(RR R�(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRb�scCs�|dk rt||�}nt|t�r6|}n9t|t�rTt|�}nt|t�ro|j}nt||j�S(s�Return the distance from the turtle to (x,y) in turtle step units. Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Example (for a Turtle instance named turtle): >>> turtle.pos() (0.00, 0.00) >>> turtle.distance(30,40) 50.0 >>> pen = Turtle() >>> pen.forward(77) >>> turtle.distance(pen) 77.0 N(R�R R�R�R�R�tabs(R�R�R�RS((s%/usr/lib64/python2.7/lib-tk/turtle.pyR4�s cCs�|dk rt||�}nt|t�r6|}n9t|t�rTt|�}nt|t�ro|j}n||j\}}ttj||�dtj d�d}||j :}|j|j||j S(sCReturn the angle of the line from the turtle's position to (x, y). Arguments: x -- a number or a pair/vector of numbers or a turtle instance y -- a number None None call: distance(x, y) # two coordinates --or: distance((x, y)) # a pair (tuple) of coordinates --or: distance(vec) # e.g. as returned by pos() --or: distance(mypen) # where mypen is another turtle Return the angle, between the line from turtle-position to position specified by x, y and the turtle's start orientation. (Depends on modes - "standard" or "logo") Example (for a Turtle instance named turtle): >>> turtle.pos() (10.00, 10.00) >>> turtle.towards(0,0) 225.0 g�f@i g�v@N(R�R R�R�R�R�R�R�RzR�RR�R�R(R�R�R�RStresult((s%/usr/lib64/python2.7/lib-tk/turtle.pyRk�s * cCs_|j\}}ttj||�dtjd�d}||j:}|j|j||jS(s� Return the turtle's current heading. No arguments. Example (for a Turtle instance named turtle): >>> turtle.left(67) >>> turtle.heading() 67.0 g�f@i g�v@( R�R�R�RzR�RR�R�R(R�R�R�R ((s%/usr/lib64/python2.7/lib-tk/turtle.pyRBs * cCsK||j�|j}|j}||d||d}|j|�dS(s�Set the orientation of the turtle to to_angle. Aliases: setheading | seth Argument: to_angle -- a number (integer or float) Set the orientation of the turtle to to_angle. Here are some common directions in degrees: standard - mode: logo-mode: -------------------|-------------------- 0 - east 0 - north 90 - north 90 - east 180 - west 180 - south 270 - south 270 - west Example (for a Turtle instance named turtle): >>> turtle.setheading(90) >>> turtle.heading() 90 g@N(RBR�RR(R�tto_angleR�tfull((s%/usr/lib64/python2.7/lib-tk/turtle.pyR\"s cCs�|jr+|jjdg�t|j_n|j�}|dkrO|j}n|dkr�t|�|j}dtt dt|�dd�|�}nd||}d|}d|t j|t jd |j �}|d kr|||}}}n|j�} |j�} |d kr:|jd d �n |jd �|j|�xHt|�D]:}|j|�|j|�|jd �|j|�qaW|j|�|d kr�|j| | �n|j|�|jr�t|j_ndS(s� Draw a circle with given radius. Arguments: radius -- a number extent (optional) -- a number steps (optional) -- an integer Draw a circle with given radius. The center is radius units left of the turtle; extent - an angle - determines which part of the circle is drawn. If extent is not given, draw the entire circle. If extent is not a full circle, one endpoint of the arc is the current pen position. Draw the arc in counterclockwise direction if radius is positive, otherwise in clockwise direction. Finally the direction of the turtle is changed by the amount of extent. As the circle is approximated by an inscribed regular polygon, steps determines the number of steps to use. If not given, it will be calculated automatically. Maybe used to draw regular polygons. call: circle(radius) # full circle --or: circle(radius, extent) # arc --or: circle(radius, extent, steps) --or: circle(radius, steps=6) # 6-sided polygon Example (for a Turtle instance named turtle): >>> turtle.circle(50) >>> turtle.circle(120, 180) # semicircle tseqiig@g�M@g�?g�?g@g�f@iN(R�R�R�R�RfR�RR R�tminR�R�R�RR#RmRR�RR�(R�tradiustextenttstepsRftfracRTtw2tlttrtdlR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR->s> . ) cCsdS(s/dummy method - to be overwritten by child classN((R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRfR�cCsdS(s/dummy method - to be overwritten by child classN((R�taR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR#�R�cCsdS(s/dummy method - to be overwritten by child classN((R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRm�R�N(.R�R�R�R R�tDEFAULT_MODER�R�RRXR�R�RR3RVRRRR<R(RWRHRSRrRsRARDRaRbR4RkRBR\R-RfR#RmR9R,R)RZRIRTR]R^R[(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sZ # # AtTPencBs eZdZedd�Zededd�Zdd�Zdd�Zd�Z d �Z d �Zdd�Zd�Z d �Zd�Zd�Zd�Zd�Zdd�Zed�Zeed�Zd�Zd�ZeZe Ze Ze Ze ZeZeZ RS(sFDrawing part of the RawTurtle. Implements drawing properties. RYcCs#||_d|_tj|�dS(N(t_resizemodeR�R�Rt_reset(R�RY((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s ROR;cCsUd|_t|_||_||_t|_d|_d|_d|_d|_ dS(Niii(ii( t_pensizeR�t_shownt _pencolort _fillcolort_drawingt_speedt_stretchfactort_tiltt _outlinewidth(R�ROR;((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s cCsB|dkr|jS|j�}|dkr>|jd|�ndS(szSet resizemode to one of the values: "auto", "user", "noresize". (Optional) Argument: rmode -- one of the strings "auto", "user", "noresize" Different resizemodes have the following effects: - "auto" adapts the appearance of the turtle corresponding to the value of pensize. - "user" adapts the appearance of the turtle according to the values of stretchfactor and outlinewidth (outline), which are set by shapesize() - "noresize" no adaption of the turtle's appearance takes place. If no argument is given, return current resizemode. resizemode("user") is called by a call of shapesize with arguments. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("noresize") >>> turtle.resizemode() 'noresize' tautotuserR�RYN(R%R&R�(R�RR�RN(R�trmode((s%/usr/lib64/python2.7/lib-tk/turtle.pyRY�s cCs'|dkr|jS|jd|�dS(s!Set or return the line thickness. Aliases: pensize | width Argument: width -- positive number Set the line thickness to width or return it. If resizemode is set to "auto" and turtleshape is a polygon, that polygon is drawn with the same line thickness. If no argument is given, current pensize is returned. Example (for a Turtle instance named turtle): >>> turtle.pensize() 1 >>> turtle.pensize(10) # from here on lines of width 10 are drawn RQN(R�RRN(R�Rp((s%/usr/lib64/python2.7/lib-tk/turtle.pyRQ�scCs!|js dS|jdt�dS(s�Pull the pen up -- no drawing when moving. Aliases: penup | pu | up No argument Example (for a Turtle instance named turtle): >>> turtle.penup() NRP(R RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRR�s cCs!|jr dS|jdt�dS(s�Pull the pen down -- drawing when moving. Aliases: pendown | pd | down No argument. Example (for a Turtle instance named turtle): >>> turtle.pendown() NRP(R RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRP�s cCs|jS(sReturn True if pen is down, False if it's up. No argument. Example (for a Turtle instance named turtle): >>> turtle.penup() >>> turtle.isdown() False >>> turtle.pendown() >>> turtle.isdown() True (R (R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRF�s cCs�idd6dd6dd6dd6d d 6}|dkr<|jS||krU||}n7d|koldknr�tt|��}nd}|jd |�dS(s� Return or set the turtle's speed. Optional argument: speed -- an integer in the range 0..10 or a speedstring (see below) Set the turtle's speed to an integer value in the range 0 .. 10. If no argument is given: return current speed. If input is a number greater than 10 or smaller than 0.5, speed is set to 0. Speedstrings are mapped to speedvalues in the following way: 'fastest' : 0 'fast' : 10 'normal' : 6 'slow' : 3 'slowest' : 1 speeds from 1 to 10 enforce increasingly faster animation of line drawing and turtle turning. Attention: speed = 0 : *no* animation takes place. forward/back makes turtle jump and likewise left/right make the turtle turn instantly. Example (for a Turtle instance named turtle): >>> turtle.speed(3) itfastesti tfastitnormalitslowitslowestg�?g%@RfN(R�R!R�R�RN(R�Rftspeeds((s%/usr/lib64/python2.7/lib-tk/turtle.pyRfs) cGs�|r�t|�}|dkr/|d}}n4|dkrJ|\}}n|dkrc|}}n|j|�}|j|�}|jd|d|�n"|j|j�|j|j�fSdS(s�Return or set the pencolor and fillcolor. Arguments: Several input formats are allowed. They use 0, 1, 2, or 3 arguments as follows: color() Return the current pencolor and the current fillcolor as a pair of color specification strings as are returned by pencolor and fillcolor. color(colorstring), color((r,g,b)), color(r,g,b) inputs as in pencolor, set both, fillcolor and pencolor, to the given value. color(colorstring1, colorstring2), color((r1,g1,b1), (r2,g2,b2)) equivalent to pencolor(colorstring1) and fillcolor(colorstring2) and analogously, if the other input format is used. If turtleshape is a polygon, outline and interior of that polygon is drawn with the newly set colors. For mor info see: pencolor, fillcolor Example (for a Turtle instance named turtle): >>> turtle.color('red', 'green') >>> turtle.color() ('red', 'green') >>> colormode(255) >>> color((40, 80, 120), (160, 200, 240)) >>> color() ('#285078', '#a0c8f0') iiiiROR;N(R�R�RNR�RR(R�R2Rtpcolortfcolor((s%/usr/lib64/python2.7/lib-tk/turtle.pyR2+s cGsO|r;|j|�}||jkr(dS|jd|�n|j|j�SdS(sZ Return or set the pencolor. Arguments: Four input formats are allowed: - pencolor() Return the current pencolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - pencolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - pencolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - pencolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the outline of that polygon is drawn with the newly set pencolor. Example (for a Turtle instance named turtle): >>> turtle.pencolor('brown') >>> tup = (0.2, 0.8, 0.55) >>> turtle.pencolor(tup) >>> turtle.pencolor() '#33cc8c' NRO(R�RRNR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyROYscGsO|r;|j|�}||jkr(dS|jd|�n|j|j�SdS(s] Return or set the fillcolor. Arguments: Four input formats are allowed: - fillcolor() Return the current fillcolor as color specification string, possibly in hex-number format (see example). May be used as input to another color/pencolor/fillcolor call. - fillcolor(colorstring) s is a Tk color specification string, such as "red" or "yellow" - fillcolor((r, g, b)) *a tuple* of r, g, and b, which represent, an RGB color, and each of r, g, and b are in the range 0..colormode, where colormode is either 1.0 or 255 - fillcolor(r, g, b) r, g, and b represent an RGB color, and each of r, g, and b are in the range 0..colormode If turtleshape is a polygon, the interior of that polygon is drawn with the newly set fillcolor. Example (for a Turtle instance named turtle): >>> turtle.fillcolor('violet') >>> col = turtle.pencolor() >>> turtle.fillcolor(col) >>> turtle.fillcolor(0, .5, 0) NR;(R�RRNR�(R�R2R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR;~scCs|jdt�dS(s�Makes the turtle visible. Aliases: showturtle | st No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> turtle.showturtle() tshownN(RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRe�scCs|jdt�dS(sYMakes the turtle invisible. Aliases: hideturtle | ht No argument. It's a good idea to do this while you're in the middle of a complicated drawing, because hiding the turtle speeds up the drawing observably. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() R0N(RNR�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRC�scCs|jS(s�Return True if the Turtle is shown, False if it's hidden. No argument. Example (for a Turtle instance named turtle): >>> turtle.hideturtle() >>> print turtle.isvisible(): False (R(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRG�s c Ks9i |jd6|jd6|jd6|jd6|jd6|jd6|jd6|jd6|jd 6|j d 6}|ps|sz|St |t�r�|}ni}|j|�i}x|D]}||||<q�W|j r�|j jd|f�nt}d|kr|j|dkrt}qnd|krxt |dt�rY|j|df�|d<n|j|dkrxt}qxnd|kr�|j|dkr�t}q�n|r�|j�nd|kr�|d|_nd|kr�|d|_nd|kr |d|_nd|krVt |dt�rF|j|df�|d<n|d|_nd|krr|d|_nd|kr�|d|_nd|kr�|d}t |tttf�r�||f}n||_nd |kr�|d |_nd|kr|d|_nd |kr+|d |_ n|j�dS( s�Return or set the pen's attributes. Arguments: pen -- a dictionary with some or all of the below listed keys. **pendict -- one or more keyword-arguments with the below listed keys as keywords. Return or set the pen's attributes in a 'pen-dictionary' with the following key/value pairs: "shown" : True/False "pendown" : True/False "pencolor" : color-string or color-tuple "fillcolor" : color-string or color-tuple "pensize" : positive number "speed" : number in range 0..10 "resizemode" : "auto" or "user" or "noresize" "stretchfactor": (positive number, positive number) "outline" : positive number "tilt" : number This dictionary can be used as argument for a subsequent pen()-call to restore the former pen-state. Moreover one or more of these attributes can be provided as keyword-arguments. This can be used to set several pen attributes in one statement. Examples (for a Turtle instance named turtle): >>> turtle.pen(fillcolor="black", pencolor="red", pensize=10) >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'black', 'stretchfactor': (1,1), 'speed': 3} >>> penstate=turtle.pen() >>> turtle.color("yellow","") >>> turtle.penup() >>> turtle.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'yellow', 'pendown': False, 'fillcolor': '', 'stretchfactor': (1,1), 'speed': 3} >>> p.pen(penstate, fillcolor="green") >>> p.pen() {'pensize': 10, 'shown': True, 'resizemode': 'auto', 'outline': 1, 'pencolor': 'red', 'pendown': True, 'fillcolor': 'green', 'stretchfactor': (1,1), 'speed': 3} R0RPROR;RQRfRYt stretchfactorRVRiRNN(RR RRRR!RR"R$R#R�tdictR%R�R�R�R�R�R�t_newLineR�R�R�Rk( R�RNtpendictt_pdtpt_p_bufR�tnewLinetsf((s%/usr/lib64/python2.7/lib-tk/turtle.pyRN�sz. cCsdS(s/dummy method - to be overwritten by child classN((R�tusePos((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3@ R�cCsdS(s/dummy method - to be overwritten by child classN((R�R�tforced((s%/usr/lib64/python2.7/lib-tk/turtle.pyRkB R�cCsdS(s/dummy method - to be overwritten by child classN((R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�D R�cCsdS(s/dummy method - to be overwritten by child classN((R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�F R�N(!R�R�R�R�RRR�RYRQRRRPRFRfR2ROR;ReRCRGRNR�R3R�RkR�R�RpRoRURMR6RgRE(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�s8 & . % $ u t_TurtleImagecBs eZdZd�Zd�ZRS(s6Helper class: Datatype to store Turtle attributes cCs#||_d|_|j|�dS(N(R�R�R�t _setshape(R�R�t shapeIndex((s%/usr/lib64/python2.7/lib-tk/turtle.pyRV s cCse|j}||_|jdko6|j|jknr?dS|jdkoc|j|jknrldS|jdkr�|j|j�n3|jdkr�x!|jD]}|j|�q�Wn|j|j|_|jdkr�|j�|_nl|jdkr#|j|jdj�|_n>|jdkrag|j|jD]}|j�^qC|_ndS(NR�R�R�RL(R�R�( R�R>R�R�Rjt_itemRXR�R�(R�R>R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyR=[ s& ))(R�R�R�RR=(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR<R s cBseZdZgZd8edededd�Zd�Zd�Zd�Z d�Z d �Zd �Zd�Z d8d8d�Zd �Zd�Zd�Zd�Zd8d�Zd8d8d8d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd8d�Zd�Zd�Zd�Z e!d�Z"d8d �Z#d!�Z$d"�Z%d8d#�Z&d$�Z'e(d%d9d)�Z)d*�Z*d+�Z+d,�Z,d-�Z-d.�Z.e.Z/d/�Z0d0�Z1d8d1�Z2d2d8d3�Z3d2d8d4�Z4d2d8d5�Z5d6�Z6d7�Z7eZ8RS(:svAnimation part of the RawTurtle. Puts RawTurtle upon a TurtleScreen and provides tools for its animation. RcR�R�cCs�t|t�r||_n�t|t�rX|tjkrLtjj|�n||_nzt|ttf�r�xbtjD]"}|j |krw||_PqwqwWt|�|_tjj|j�nt d|��|j}tj||j ��tj|�|jj|�|j�|_t||�|_d|_t|_d|_|_||_t|_|j�|_|jg|_|jg|_g|_ ||_!t"|�|_#|j$�dS(Nsbad canvas argument %s(%R�t_ScreenR�RRtscreensRYRRRQR�R�RRRR�RetdrawingLineItemR<R�R�t_polyR�t _creatingPolyt _fillitemt _fillpathRt_hidden_from_screentcurrentLineItemR�tcurrentLineR�t stampItemst_undobuffersizeR�R�Rk(R�tcanvasRcR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRx s@ cCs<tj|�tj|�|j�|j�|j�dS(s�Delete the turtle's drawings and restore its default values. No argument. , Delete the turtle's drawings from the screen, re-center the turtle and set variables to the default values. Example (for a Turtle instance named turtle): >>> turtle.position() (0.00,-22.00) >>> turtle.heading() 100.0 >>> turtle.reset() >>> turtle.position() (0.00,0.00) >>> turtle.heading() 0.0 N(R�RXRRt_clearR�Rk(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX� s cCs7|dks|dkr$d|_nt|�|_dS(s�Set or disable undobuffer. Argument: size -- an integer or None If size is an integer an empty undobuffer of given size is installed. Size gives the maximum number of turtle-actions that can be undone by the undo() function. If size is None, no undobuffer is present. Example (for a Turtle instance named turtle): >>> turtle.setundobuffer(42) iN(R�R�R�(R�tsize((s%/usr/lib64/python2.7/lib-tk/turtle.pyR`� scCs |jdkrdS|jj�S(s�Return count of entries in the undobuffer. No argument. Example (for a Turtle instance named turtle): >>> while undobufferentries(): ... undo() iN(R�R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRn� s cCs�d|_|_x!|jD]}|jj|�qW|jj�|_g|_|j rn|jj |j�n|jg|_|j�|j |j�dS(sDelete all of pen's drawingsN(R�RERFR�R�RjReRHRIR RYR�R0R`RK(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyRM� s cCs|j�|j�dS(sgDelete the turtle's drawings from the screen. Do not move turtle. No arguments. Delete the turtle's drawings from the screen. Do not move turtle. State and position of the turtle as well as drawings of other turtles are not affected. Examples (for a Turtle instance named turtle): >>> turtle.clear() N(RMRk(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR.� s cCsd|jj�|jjdkr#dSt|j�dkr`|jj|j|j|j|j�ndS(Nii( R�R�R�R�RIRgRHRR(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�� s cCs�|j}|jdkrdS|jdkr\|j�|j�|j�|j|j�nG|j�|jdkr�x|j�D]}|j�q�W|j�ndS(s&Perform a Turtle-data update. iNi( R�R�R�R�RkRmR�R�R$(R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRk� s cCs|jj||�S(smTurns turtle animation on/off and set delay for update drawings. Optional arguments: n -- nonnegative integer delay -- nonnegative integer If n is given, only each n-th regular screen update is really performed. (Can be used to accelerate the drawing of complex graphics.) Second arguments sets delay value (see RawTurtle.delay()) Example (for a Turtle instance named turtle): >>> turtle.tracer(8, 25) >>> dist = 2 >>> for i in range(200): ... turtle.fd(dist) ... turtle.rt(90) ... dist += 2 (R�R#(R�tflagR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR# scCs|jj|�S(N(R�R�(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�% scCs|jj|�S(N(R�R�(R�R2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�( scCst|t�r|Sy|\}}}Wn-ttfk rUtdt|���nX|jjdkr�g|||fD]}td|�^qx\}}}nd|ko�dkno�d|ko�dkno�d|ko�dkns tdt|���nd|||fS(s,Convert colortriples to hexstrings. sbad color arguments: %sg�?g�o@ii�sbad color sequence: %ss #%02x%02x%02x( R�R�R�R�R�R�R�R�R�(R�R2R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_cc+ s8TcCsI|j}|j|j�|j}d|_d|_t|�}||_||_||_t||jj�|_|jj |�|j |jjj}|dkr�|j�|j_ nr|dkr�|j|j dj�|j_ nD|dkr,g|j |jjjD]}|j�^q|j_ n|j�|_|j�|S(sCreate and return a clone of the turtle. No argument. Create and return a clone of the turtle with same position, heading and turtle properties. Example (for a Turtle instance named mick): mick = Turtle() joe = mick.clone() R�R�RLR�N(R�R3R R�R�RR<R>R�RYR�R�RXR?R�R�ReRHRk(R�R�R�tqtttypeRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyR1: s, "5 cCs\|dkr|jjS||jj�kr>td|��n|jj|�|j�dS(s�Set turtle shape to shape with given name / return current shapename. Optional argument: name -- a string, which is a valid shapename Set turtle shape to shape with given name or, if name is not given, return name of current shape. Shape with name must exist in the TurtleScreen's shape dictionary. Initially there are the following polygon shapes: 'arrow', 'turtle', 'circle', 'square', 'triangle', 'classic'. To learn about how to deal with shapes see Screen-method register_shape. Example (for a Turtle instance named turtle): >>> turtle.shape() 'arrow' >>> turtle.shape("turtle") >>> turtle.shape() 'turtle' sThere is no shape named %sN(R�R�R>R�RR�R=Rk(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRcb s cCs�||ko"|ko"dknrF|j\}}|||jfS|dk r||dkrm||f}q�||f}n+|dk r�|jd|f}n |j}|dkr�|j}n|jddd|d|�dS(sOSet/return turtle's stretchfactors/outline. Set resizemode to "user". Optional arguments: stretch_wid : positive number stretch_len : positive number outline : positive number Return or set the pen's attributes x/y-stretchfactors and/or outline. Set resizemode to "user". If and only if resizemode is set to "user", the turtle will be displayed stretched according to its stretchfactors: stretch_wid is stretchfactor perpendicular to orientation stretch_len is stretchfactor in direction of turtles orientation. outline determines the width of the shapes's outline. Examples (for a Turtle instance named turtle): >>> turtle.resizemode("user") >>> turtle.shapesize(5, 5, 12) >>> turtle.shapesize(outline=8) iRYR&R1RVN(R�R"R$RN(R�tstretch_widtstretch_lenRVR1((s%/usr/lib64/python2.7/lib-tk/turtle.pyRd} s' cCsK||j|j}|tjddtj}|jddd|�dS(sZRotate the turtleshape to point in the specified direction Optional argument: angle -- number Rotate the turtleshape to point in the direction specified by angle, regardless of its current tilt-angle. DO NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.settiltangle(45) >>> stamp() >>> turtle.fd(50) >>> turtle.settiltangle(-45) >>> stamp() >>> turtle.fd(50) g�f@iRYR&RiN(RR�R�R�RN(R�R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyR_� scCs.|jdtj|j}||j|jS(s�Return the current tilt-angle. No argument. Return the current tilt-angle, i. e. the angle between the orientation of the turtleshape and the heading of the turtle (its direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(45) >>> turtle.tiltangle() g�f@(R#R�R�R�RR(R�Ri((s%/usr/lib64/python2.7/lib-tk/turtle.pyRj� scCs|j||j��dS(s�Rotate the turtleshape by angle. Argument: angle - a number Rotate the turtleshape by angle from its current tilt-angle, but do NOT change the turtle's heading (direction of movement). Examples (for a Turtle instance named turtle): >>> turtle.shape("circle") >>> turtle.shapesize(5,2) >>> turtle.tilt(30) >>> turtle.fd(50) >>> turtle.tilt(30) >>> turtle.fd(50) N(R_Rj(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRi� sc Cs�|j}|j\}}|j\}}t|||j|j�}dt|�|\}}g|D]G\}} ||||| |j||||| |jf^qeS(slComputes transformed polygon shapes from a shape according to current position and heading. g�?(R�R�R�R RSRRR ( R�R�R�tp0tp1te0te1R~R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _polytrafo� s cCs}|j}|j|jj}|j}|jj}|jr�|jdkr�|jdkr�t |_ |j}|dkr�|jdkr�d}|}n�|jdkr�t d|jd�}}|j}d} n3|jdkr|j\}}|j}|j} ng|D] \} }|| ||f^q }tj| �tj| �}} g|D]1\} }| | |||| | |f^qU}|j|�}|j|j}}|j||d|d |d |dt�qy|dkr�|j||j|�qy|d kry|j\}}|j}x�t||�D]�\}\}}}g|D] \} }|| ||f^qN}|j|�}|j||d|j|�d |j|�d |dt�q2Wqyn�|j r�dS|dkr|j|dddfdd�nn|dkr1|j||j|jdj�n?|d krpx0|D]%}|j|dddfdd�qDWnt|_ dS(spManages the correct rendering of the turtle with respect to its shape, resizemode, stretch and tilt etc.iR�R�iR%g@R&R:RVRpR_R�R�NR�RL(ii(ii(ii(ii(ii(ii(R�R�R�R>R�R?RR�R�R�RGR�RtmaxRR"R$R#R�R�R|RYRRRaR�R�R�tzipRP(R�R�RcRRttitemttshapeRTtlxtlyRjR�R�tt0tt1tfctocRiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�� s^ ' -> %-& " &cCs |j}|j|jj}|j}|j}|dkr�|j�}|jdkrdd}|}n�|jdkr�td|j d�}}|j }d} n3|jdkr�|j \}}|j}|j} ng|D] \} }|| ||f^q�}t j| �t j| �}} g|D]1\} }| | |||| | |f^q%}|j|�}|j|j}}|j||d|d |d |dt�n6|dkr�|jd �}|j||j|�n|dkr�g}x'|D]}|j�}|j|�q�Wt|�}|j \}}|j}x�t||�D]�\}\}}}g|D] \} }|| ||f^qi}|j|�}|j||d|j|�d |j|�d |dt�qMWn|jj|�|jjd|f�|S(s�Stamp a copy of the turtleshape onto the canvas and return its id. No argument. Stamp a copy of the turtle shape onto the canvas at the current turtle position. Return a stamp_id for that stamp, which can be used to delete it by calling clearstamp(stamp_id). Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> turtle.stamp() 13 >>> turtle.fd(50) R�R�iR%g@iR&R:RVRpR_R�R�R�Rh(R�R�R�R>R�R�RXRRZRR"R$R#R�R�R|RYRRRaR�R�R�R�RYR�R[RPRJR�R�(R�R�RcRRR]tstitemRTR^R_RjR�R�R`RaRbRctelementRiR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRh$sV -> %-#cCs||jkret|t�rBx1|D]}|jj|�q%Wn|jj|�|jj|�nd|f}|j}||jkr�dS|jj|�}|jj|�||j kr�|j d|j |_ n|jj|j d|j dg�dS(s9does the work for clearstamp() and clearstamps() RhNi( RJR�R�R�RjR�R�R�tindexR�R�tinsertR�(R�tstampidtsubitemRitbufRf((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_clearstamp`s cCs|j|�|j�dS(sDDelete stamp with given stampid Argument: stampid - an integer, must be return value of previous stamp() call. Example (for a Turtle instance named turtle): >>> turtle.color("blue") >>> astamp = turtle.stamp() >>> turtle.fd(50) >>> turtle.clearstamp(astamp) N(RkRk(R�Rh((s%/usr/lib64/python2.7/lib-tk/turtle.pyR/vs cCsn|dkr|j}n)|dkr5|j| }n |j|}x|D]}|j|�qIW|j�dS(s�Delete all or first/last n of turtle's stamps. Optional argument: n -- an integer If n is None, delete all of pen's stamps, else if n > 0 delete first n stamps else if n < 0 delete last n stamps. Example (for a Turtle instance named turtle): >>> for i in range(8): ... turtle.stamp(); turtle.fd(30) ... >>> turtle.clearstamps(2) >>> turtle.clearstamps(-2) >>> turtle.clearstamps() iN(R�RJRkRk(R�R�ttoDeleteRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyR0�s cCsf|j|j|jt|jt�f}|j}d|j|||j|j |j |j�|jff}|jr�|jj |�n|j}|jr�|jdkr�||}|d|jd|d|jd}dt|ddd|j|j�}|d|} x�td|�D]s} | dkr=t}nt}|| | |_|jr�|j|j||jf|j|j|�n|j�q"W|jr�|j|jddfd d d|j�q�n|jr�|j j|�nt|jt�r|jj|�n||_|jr6|jj|�nt|j �dkrX|j�n|j�d S(s�Move the pen to the point end, thereby drawing a line if pen is down. All other methods for turtle movement depend on this one. tgoiiig�?ig�������?g�?R:R�Rpi*N(ii(ii(R RRR�RFR�R�R�RHRIR�R�R�R�R!R�RRRSR�R�R�R�RgRBRkRYRDRCR�R3(R�Rtgo_modesR�t undo_entrytstarttdifftdiffsqtnhopstdeltaR�R_((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�sR (* cCs|\}}}}|\}}}} |\} }}} |j}t|j|�dkr`dGHn| |_||_|ddgkr�d}n|}|j| |d|d|�g|jD]-}|| kr�|j|�dkr�|^q�}x+|D]#}|j|�|jj |�q�W|}|j rQ|jdkrQ||}|d|jd |d|j d }dt|dd d|j |j �}|d|}x{td|�D]j}|dkr�t}nt}||||_|r|j|j||jf|||�n|j�q�W|rQ|j|jddfddd|�qQn||_|jr�t|j�dkr�|jj�n|jgkr�t|_d|_q�n| r�|jgkr�d|_d GHq�|jdk r�|jj�q�n|j�dS(s)Reverse a _goto. Used for undo() g�?s$undogoto: HALLO-DA-STIMMT-WAS-NICHT!iR�R:RpR�iiig�������?g�?sUnwahrscheinlich in _undogoto!N(ii(ii(ii(ii(R�R R�RHRIRgR�R�RjR�R!R�RRRSR�R�R�R�RBRkRDR�RCR�R�RF(R�tentrytoldtnewRntcoodatatdrawingtpctpstfillingtcLItcLR�R�R�tusepcR�ttodeleteRpRqRrRsRtR�R_((s%/usr/lib64/python2.7/lib-tk/turtle.pyt _undogoto�sd ! (* cCs�|jr(|jjd||jf�n||j9}|jj|�}|jj}|dkr�|jdkr�d|j}dtt |�|�}d||}x6t |�D]%}|jj|�|_|j�q�Wn||_|j�dS(s&Turns pen clockwise by angle. trotiig@g�?N(R�R�RR�R�R�R�R!R�R R�Rk(R�R�t neworientR�tanglevelRRtR�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRs cCs�t|j�dkrb|jj|j|j|j|j�|jj�|_|jj |j�n|jj|jdt �g|_|r�|jg|_ndS(s�Closes current line item and starts a new one. Remark: if current line became too long, animation performance (via _drawline) slowed down considerably. iR_N(R�RIR�RgRHRRReR�RYR�R�(R�R:((s%/usr/lib64/python2.7/lib-tk/turtle.pyR3)s cCsmt|jt�}|dkr"|S|j}d}}|r�t|j�dkr�|jj|j|jd|j�d|jf}q�n|r�|jj �|_|j j|j�|jg|_d|jf}|j �nd|_|_|jr_|dkr$|d kr\|jj|�q\q_|d krC|jj|�q_|jjd||g�n|j�dS(s�Call fill(True) before drawing a shape to fill, fill(False) when done. Optional argument: flag -- True/False (or 1/0 respectively) Call fill(True) before drawing the shape you want to fill, and fill(False) when done. When used without argument: return fillstate (True if filling, False else) Example (for a Turtle instance named turtle): >>> turtle.fill(True) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.fill(False) iR:tdofillt beginfillR N(((((R�RFR�R�R�R�RaRERRXR�RYR�R3R�R�Rk(R�ROR|R�tentry1tentry2((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:9s2 cCs|jt�dS(s�Called just before drawing a shape to be filled. No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() N(R:R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR*lscCs|jt�dS(s�Fill the shape drawn after the call begin_fill(). No argument. Example (for a Turtle instance named turtle): >>> turtle.begin_fill() >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.left(90) >>> turtle.forward(100) >>> turtle.end_fill() N(R:R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR7~scGs�|stt|ttf�rF|j|�}|jt|jd�}q�|j}|s�|jt|jd�}q�n7|dkr�|jt|jd�}n|j|�}t|j d�r |j j |j||�}|jj |�|jr�|jjd|f�q�n�|j�}|jrD|jjdg�t|j_nzT|j�dkrf|j�n|j�|j|�|j|�|jd�Wd|j|�X|jr�t|j_ndS(s�Draw a dot with diameter size, using color. Optional arguments: size -- an integer >= 1 (if given) color -- a colorstring or a numeric color tuple Draw a circular dot with diameter size, using color. If size is not given, the maximum of pensize+4 and 2*pensize is used. Example (for a Turtle instance named turtle): >>> turtle.dot() >>> turtle.fd(50); turtle.dot(20, "blue"); turtle.fd(50) it_dotR5R R%iN(R�R�R�R�RRZRR�thasattrR�R�R�R�RYR�R�RNR�R�RYRERPRQROR<R�(R�RNR2RiRN((s%/usr/lib64/python2.7/lib-tk/turtle.pyR5�s: cCs`|jj|j||||j�\}}|jj|�|jr\|jjd|f�n|S(s)Performs the writing for write() twri(R�R�R�RR�RYR�R�(R�R{R|RyRiR((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��s RHtArialiR*cCs�|jr+|jjdg�t|j_n|jt|�|j�|�}|rw|j�\}}|j||�n|jr�t |j_ndS(s�Write text at the current turtle position. Arguments: arg -- info, which is to be written to the TurtleScreen move (optional) -- True/False align (optional) -- one of the strings "left", "center" or right" font (optional) -- a triple (fontname, fontsize, fonttype) Write text - the string representation of arg - at the current turtle position according to align ("left", "center" or right") and with the given font. If move is True, the pen is moved to the bottom-right corner of the text. By default, move is False. Example (for a Turtle instance named turtle): >>> turtle.write('Home = ', True, align="center") >>> turtle.write((0,0), True) R N( R�R�R�R�R�R�R�RSR]R�(R�targtmoveR|RyRR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRq�s ! cCs|jg|_t|_dS(sStart recording the vertices of a polygon. No argument. Start recording the vertices of a polygon. Current turtle position is first point of polygon. Example (for a Turtle instance named turtle): >>> turtle.begin_poly() N(R�RCR�RD(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR+�scCs t|_dS(s7Stop recording the vertices of a polygon. No argument. Stop recording the vertices of a polygon. Current turtle position is last point of polygon. This will be connected with the first point. Example (for a Turtle instance named turtle): >>> turtle.end_poly() N(R�RD(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR8�scCs |jdk rt|j�SdS(s�Return the lastly recorded polygon. No argument. Example (for a Turtle instance named turtle): >>> p = turtle.get_poly() >>> turtle.register_shape("myFavouriteShape", p) N(RCR�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR= s cCs|jS(s�Return the TurtleScreen object, the turtle is drawing on. No argument. Return the TurtleScreen object, the turtle is drawing on. So TurtleScreen-methods can be called for that object. Example (for a Turtle instance named turtle): >>> ts = turtle.getscreen() >>> ts <turtle.TurtleScreen object at 0x0106B770> >>> ts.bgcolor("pink") (R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR? scCs|S(sUReturn the Turtleobject itself. No argument. Only reasonable use: as a function to return the 'anonymous turtle': Example: >>> pet = getturtle() >>> pet.fd(50) >>> pet <turtle.Turtle object at 0x0187D810> >>> turtles() [<turtle.Turtle object at 0x0187D810>] ((R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR@" scCs|jj�dS(s� Returns the width of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_width() 640 i(R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR': s cCs|jj�dS(s� Return the height of the turtle window. No argument. Example (for a TurtleScreen instance named screen): >>> screen.window_height() 480 i(R�R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR&E s cCs|jj|�S(sDSet delay value which determines speed of turtle animation. (R�R(R�R((s%/usr/lib64/python2.7/lib-tk/turtle.pyRmP sicCs-|jj|jj|||�|j�dS(s�Bind fun to mouse-click event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). add -- True or False. If True, new binding will be added, otherwise it will replace a former binding. Example for the anonymous turtle, i. e. the procedural way: >>> def turn(x, y): ... left(360) ... >>> onclick(turn) # Now clicking into the turtle will turn it. >>> onclick(None) # event-binding will be removed N(R�R�R�R?Rk(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRJW scCs-|jj|jj|||�|j�dS(s�Bind fun to mouse-button-release event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Example (for a MyTurtle instance named joe): >>> class MyTurtle(Turtle): ... def glow(self,x,y): ... self.fillcolor("red") ... def unglow(self,x,y): ... self.fillcolor("") ... >>> joe = MyTurtle() >>> joe.onclick(joe.glow) >>> joe.onrelease(joe.unglow) Clicking on joe turns fillcolor red, unclicking turns it to transparent. N(R�R�R�R?Rk(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRLl scCs#|jj|jj|||�dS(s�Bind fun to mouse-move event on this turtle on canvas. Arguments: fun -- a function with two arguments, to which will be assigned the coordinates of the clicked point on the canvas. btn -- number of the mouse-button defaults to 1 (left mouse button). Every sequence of mouse-move-events on a turtle is preceded by a mouse-click event on that turtle. Example (for a Turtle instance named turtle): >>> turtle.ondrag(turtle.goto) Subsequently clicking and dragging a Turtle will move it across the screen thereby producing handdrawings (if pen is down). N(R�R�R�R?(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRK� scCs�|jdkrdS|dkrV|\}}|j|||j�|jj�}n5|dkr||d}|j|�n|dkr�|j|�n�|dkr�|d}|jj|�|j j |�n�|dkr|d}|jj|dddfd d dd �ny|dkr[|d}d|_|_ |jj|�|j j |�n0|d kr�tj||d�|jj�ndS(s2Does the main part of the work for undo() NR�RhiRmR�R5R�R:R�RVR�RN(R�R5(ii(ii(ii(R�R�RRR�R/R�R�RjR�R�RaRERFRRN(R�tactionR�R�tdegPAUtdummyRdRi((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_undo� s6 cCs�|jdkrdS|jj�}|d}|d}|dkrvxA|rr|j�}|j|d|d�qEWn|j||�dS(s�undo (repeatedly) the last turtle action. No argument. undo (repeatedly) the last turtle action. Number of available undo actions is determined by the size of the undobuffer. Example (for a Turtle instance named turtle): >>> for i in range(4): ... turtle.fd(50); turtle.lt(80) ... >>> for i in range(8): ... turtle.undo() ... NiiR (R�R�R�R�(R�RiR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRm� s N(R�iR*(9R�R�R�RAR�R�RRXR`RnRMR.R�RkR#R�R�RPR1RcRdR_RjRiRYR�RhRkR/R0RR�RR�R3R:R*R7R5R�R�RqR+R8R=R?R@R>R'R&RmRJRLRKR�RmRl(((s%/usr/lib64/python2.7/lib-tk/turtle.pyRq sl% (& 7 < 5 A 3 3 cCs%tjdkrt�t_ntjS(s�Return the singleton screen object. If none exists at the moment, create a new one and return it, else return the existing one.N(R t_screenR�R@(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR� sR@cBspeZdZdZedZd�Zededededd�Zd�Z d�Z d �Zd �ZRS(R"cCs�tjdkrKt�t_|_|jjtj�|jj|j�ntjdkr�t d}t d}t d}t d}t d}t d}|jj ||||�|jj�t_tj |tj�|j||||�ndS(NRpR�R�R�R�R�(R@t_rootR�R7R"t_titleREt_destroyRR�R<R=RRR (R�RpR�R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyR� s RpR�R�R�cCst|jd�sdS|jj�}|jj�}t|t�rld|koZdknrl||}n|dkr�||d}nt|t�r�d|ko�dknr�||}n|dkr�||d}n|jj||||�|j�dS(s Set the size and position of the main window. Arguments: width: as integer a size in pixels, as float a fraction of the screen. Default is 50% of screen. height: as integer the height in pixels, as float a fraction of the screen. Default is 75% of screen. startx: if positive, starting position in pixels from the left edge of the screen, if negative from the right edge Default, startx=None is to center window horizontally. starty: if positive, starting position in pixels from the top edge of the screen, if negative from the bottom edge Default, starty=None is to center window vertically. Examples (for a Screen instance named screen): >>> screen.setup (width=200, height=200, startx=0, starty=0) sets window to 200x200 pixels, in upper left of screen >>> screen.setup(width=.75, height=0.5, startx=None, starty=None) sets window to 75% of screen by 50% of screen and centers RANiii( R�R�RGRIR�R�R�RAR%(R�RpR�R?R@Rttsh((s%/usr/lib64/python2.7/lib-tk/turtle.pyR s+ + cCs/tjdk r"tjj|�n|t_dS(sqSet title of turtle-window Argument: titlestring -- a string, to appear in the titlebar of the turtle graphics window. This is a method of Screen-class. Not available for TurtleScreen- objects. Example (for a Screen instance named screen): >>> screen.title("Welcome to the turtle-zoo!") N(R@R�R�R"R�(R�ttitlestring((s%/usr/lib64/python2.7/lib-tk/turtle.pyR"(s cCsV|j}|tjkr?dt_dt_dt_dt_ntt_ |j �dS(N(R�R@R�R R�R�RR�RR�RD(R�troot((s%/usr/lib64/python2.7/lib-tk/turtle.pyR�9s cCs|j�dS(s~Shut the turtlegraphics window. Example (for a TurtleScreen instance named screen): >>> screen.bye() N(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRCscsW�fd�}�j|�tdr*dSyt�Wntk rRtd�nXdS(slGo into mainloop until the mouse is clicked. No arguments. Bind bye() method to mouseclick on TurtleScreen. If "using_IDLE" - value in configuration dictionary is False (default value), enter mainloop. If IDLE with -n switch (no subprocess) is used, this value should be set to True in turtle.cfg. In this case IDLE's mainloop is active also for the client script. This is a method of the Screen-class and not available for TurtleScreen instances. Example (for a Screen instance named screen): >>> screen.exitonclick() cs�j�dS(s&Screen.bye() with two dummy-parametersN(R(R�R�(R�(s%/usr/lib64/python2.7/lib-tk/turtle.pytexitGracefully^sR�Ni(RJR�RvtAttributeErrortexit(R�R�((R�s%/usr/lib64/python2.7/lib-tk/turtle.pyRKs N( R�R�R�R�RR�R�RR R"R�RR(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR@� s ' cBs8eZdZdZdZedededd�ZRS(s�RawTurtle auto-creating (scrolled) canvas. When a Turtle object is created or a function derived from some Turtle method is called a TurtleScreen object is automatically created. RcR�R�c CsGtjdkrt�t_ntj|tjd|d|d|�dS(NRcR�R�(R R�R�RRR(R�RcR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRrsN(R�R�R�R�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR istturtle_docstringdictcCsRi}x+tD]#}d|}t|�j||<q Wx+tD]#}d|}t|�j||<q;Wtd|d�}tg|j�D]%}|jd�dtkr�|^q��}|j d�x>|d D]2}|j d t |��|j d ||�q�W|d}|j d t |��|j d||�|j d�|j�d S(s�Create and write docstring-dictionary to file. Optional argument: filename -- a string, used as filename default value is turtle_docstringdict Has to be called explicitly, (not used by the turtle-graphics classes) The docstring dictionary will be written to the Python script <filname>.py It is intended to serve as a template for translation of the docstrings into different languages. s_Screen.sTurtle.s%s.pyRTR�isdocsdict = { i����s%s : s """%s """, s """%s """ s} N(t_tg_screen_functionsR�R�t_tg_turtle_functionsR�R�R�Rt_alias_listRqtreprR�(R�tdocsdictt methodnameR�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRts& ( cCsxdi|j�d6}t|�}|j}xE|D]=}y||t|�j_Wq3tk rod|GHq3Xq3WdS(s�Read in docstrings from lang-specific docstring dictionary. Transfer docstrings, translated to lang, from a dictionary-file to the methods of classes Screen and Turtle and - in revised form - to the corresponding functions. s!turtle_docstringdict_%(language)sR�sBad docstring-entry: %sN(R�t __import__R�R�tim_funcR�R�(tlangtmodnametmoduleR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytread_docstrings�s sCannot find docsdict fors;Unknown Error when trying to import %s-docstring-dictionaryc Cs�d}}t|�tjkr1|j}d}n|}d}t|�tjtjgkr�yg|jj}t|jj ||!�}|jj ||!}|j p�g}ttd�|��}dgt|�t|�|}td�||�} |jj d@rF| jd|jj |�|jd|jj |�|d7}n|jj d@r�| jd |jj |�|jd |jj |�nd j| �}d|}d j|�}d|}Wq�q�Xn||fS(s9Get strings describing the arguments for the given objectR�iicSsdt|�S(Ns=%s(R�(R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt<lambda>�R�cSs||S(N((R�tdflt((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��R�iRis**s, s(%s)(R�R�t MethodTypeR�R�t LambdaTypet func_codetco_argcountR�tco_varnamest func_defaultstmapR�tco_flagsRYR( tobtargText1targText2tfobt argOffsettcountertitems2trealArgstdefaultstitems1((s%/usr/lib64/python2.7/lib-tk/turtle.pytgetmethparlist�s: ! cCseddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S(s<To reduce docstrings from RawTurtle class for functions i����NR�s%s.R�s \(.+ %s\):t:(treR�R�treplacetcompiletsub(tdocstrR�t turtlenamet newdocstrtparexp((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_turtle_docrevise�s cCseddl}|dkrdStd}|jd|d�}|jd|�}|jd|�}|S(s?To reduce docstrings from TurtleScreen class for functions i����NR�s%s.R�s \(.+ %s\):R�(R�R�R�R�R�R�(R�R�t screennameR�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_screen_docrevise�s srdef {name}{paramslist}: if {obj} is None: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator {obj} = {init} try: return {obj}.{name}{argslist} except TK.TclError: if not TurtleScreen._RUNNING: TurtleScreen._RUNNING = True raise Terminator raise c Bs�x�|D]�}e||�}e|�\}}|dkrMdG|G|GHqnejd|d|d|d|d|�} | e�U||j�e�|_qWdS(NR�s>>>>>>tobjtinitR�t paramslisttargslist(tgetattrR�t__func_bodytformattglobalsR�( t functionsR�R�R�t docreviseR�R�tpl1tpl2tdefstr((s%/usr/lib64/python2.7/lib-tk/turtle.pyt_make_global_funcss sTurtle._screensScreen()sTurtle._pensTurtle()t__main__cCst�rt�nt�dS(N(RFRURM(((s%/usr/lib64/python2.7/lib-tk/turtle.pyt switchpen#s cCs�t�tt�t�td�t�td�x�td�D]�}|dkr_td�nx(td�D]}t d�t d�qlW|dkr�td�td �nt�t d �t�q@Wtd�td�tt�t�t d�t d�t d�t d�t d�t�td d�tdd�td�x<td�D].}t d�t d�t d�t d�qXWtt�td�x<td�D].}t d�t d�t d�t d�q�Wtd �dS(sDemo of old turtle.py - moduleidiiiiiiZtmarooniiR�i�t startstartustarttrediN(RXR#R�RoR)R6RpR�R:R<RHR2R�RWRq(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytdemo1)sX cCsOtd�t�td�ttdd��tdd�d}td�x(td�D]}t�t |d�qXWt d�xt�r�t�q�Wt �td�td �d}td �td�td�x�tdd �D]�}|dkrt�td d|dd|�nx(td�D]}t|�td�q+W|d7}td�tt�dd�q�Wt�td�t�td�td�t�tdd�td�td�x?td�D]1}t dd�td�td�td�q�Wtd�td�t�td�t�td�t�}|jd�t�}|jd�|jd�|j �|jd�|jd�|j�|jdd�|jd�|j �|jd�|jdd�|jd�|jd�tt|��d}x�|j|�dkr�|jd �|jd!�|j|j|��|jd�|d"dkr�|j!�|j!�t�n|d7}q W|j d#d$d/d'd(�|jd)�|jd*�d+�}t"j#d�x!t�r|j�|j�q�W|jd�|j d,d$d0�|j$|d�d.S(1sDemo of some new features.iiig@iZii swait a moment...i�tgreeni�i����iiixiiFiR�tyellowii2R�R%uautoii(itblueuorangeig@g333333�?isCAUGHT! RyR�tboldR|urightR�uredcSst�t�dS(N(RR(R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytbaba�ss Click me!tCourierN(R�iR�(R�iR�(%RfRgRQR\RkR4RZR�R�R-RqRnRmRXRIRROR*R;R9R7RURMR2R:RcR@RYR RHRoRAR6RhttimetsleepRJ(RR�tlaengeR�ttriR�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pytdemo2^s� (HR�t_vertTkinterRR�R�R�tostos.pathRRRtcopyRt_tg_classesR�R�t _tg_utilitiest_math_functionst__all__R�R�R�R�R�R�R�R�R�R R�R�R�R�RRRR8R7tobjectRJt ExceptionR�R�RR�RR�RR<RR RR@R RRtR�t _LANGUAGEtImportErrorR�R�R�R�R�RvRuR�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyt<module>es� ! % 4 c �K /&����������k �" $ 5 bCanvas.py000064400000016447151703463030006347 0ustar00# This module exports classes for the various canvas item types # NOTE: This module was an experiment and is now obsolete. # It's best to use the Tkinter.Canvas class directly. from warnings import warnpy3k warnpy3k("the Canvas module has been removed in Python 3.0", stacklevel=2) del warnpy3k from Tkinter import Canvas, _cnfmerge, _flatten class CanvasItem: def __init__(self, canvas, itemType, *args, **kw): self.canvas = canvas self.id = canvas._create(itemType, args, kw) if not hasattr(canvas, 'items'): canvas.items = {} canvas.items[self.id] = self def __str__(self): return str(self.id) def __repr__(self): return '<%s, id=%d>' % (self.__class__.__name__, self.id) def delete(self): del self.canvas.items[self.id] self.canvas.delete(self.id) def __getitem__(self, key): v = self.canvas.tk.split(self.canvas.tk.call( self.canvas._w, 'itemconfigure', self.id, '-' + key)) return v[4] cget = __getitem__ def __setitem__(self, key, value): self.canvas.itemconfig(self.id, {key: value}) def keys(self): if not hasattr(self, '_keys'): self._keys = map(lambda x, tk=self.canvas.tk: tk.splitlist(x)[0][1:], self.canvas.tk.splitlist( self.canvas._do( 'itemconfigure', (self.id,)))) return self._keys def has_key(self, key): return key in self.keys() def __contains__(self, key): return key in self.keys() def addtag(self, tag, option='withtag'): self.canvas.addtag(tag, option, self.id) def bbox(self): x1, y1, x2, y2 = self.canvas.bbox(self.id) return (x1, y1), (x2, y2) def bind(self, sequence=None, command=None, add=None): return self.canvas.tag_bind(self.id, sequence, command, add) def unbind(self, sequence, funcid=None): self.canvas.tag_unbind(self.id, sequence, funcid) def config(self, cnf={}, **kw): return self.canvas.itemconfig(self.id, _cnfmerge((cnf, kw))) def coords(self, pts = ()): flat = () for x, y in pts: flat = flat + (x, y) return self.canvas.coords(self.id, *flat) def dchars(self, first, last=None): self.canvas.dchars(self.id, first, last) def dtag(self, ttd): self.canvas.dtag(self.id, ttd) def focus(self): self.canvas.focus(self.id) def gettags(self): return self.canvas.gettags(self.id) def icursor(self, index): self.canvas.icursor(self.id, index) def index(self, index): return self.canvas.index(self.id, index) def insert(self, beforethis, string): self.canvas.insert(self.id, beforethis, string) def lower(self, belowthis=None): self.canvas.tag_lower(self.id, belowthis) def move(self, xamount, yamount): self.canvas.move(self.id, xamount, yamount) def tkraise(self, abovethis=None): self.canvas.tag_raise(self.id, abovethis) raise_ = tkraise # BW compat def scale(self, xorigin, yorigin, xscale, yscale): self.canvas.scale(self.id, xorigin, yorigin, xscale, yscale) def type(self): return self.canvas.type(self.id) class Arc(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'arc', *args, **kw) class Bitmap(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'bitmap', *args, **kw) class ImageItem(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'image', *args, **kw) class Line(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'line', *args, **kw) class Oval(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'oval', *args, **kw) class Polygon(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'polygon', *args, **kw) class Rectangle(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'rectangle', *args, **kw) # XXX "Text" is taken by the Text widget... class CanvasText(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'text', *args, **kw) class Window(CanvasItem): def __init__(self, canvas, *args, **kw): CanvasItem.__init__(self, canvas, 'window', *args, **kw) class Group: def __init__(self, canvas, tag=None): if not tag: tag = 'Group%d' % id(self) self.tag = self.id = tag self.canvas = canvas self.canvas.dtag(self.tag) def str(self): return self.tag __str__ = str def _do(self, cmd, *args): return self.canvas._do(cmd, (self.tag,) + _flatten(args)) def addtag_above(self, tagOrId): self._do('addtag', 'above', tagOrId) def addtag_all(self): self._do('addtag', 'all') def addtag_below(self, tagOrId): self._do('addtag', 'below', tagOrId) def addtag_closest(self, x, y, halo=None, start=None): self._do('addtag', 'closest', x, y, halo, start) def addtag_enclosed(self, x1, y1, x2, y2): self._do('addtag', 'enclosed', x1, y1, x2, y2) def addtag_overlapping(self, x1, y1, x2, y2): self._do('addtag', 'overlapping', x1, y1, x2, y2) def addtag_withtag(self, tagOrId): self._do('addtag', 'withtag', tagOrId) def bbox(self): return self.canvas._getints(self._do('bbox')) def bind(self, sequence=None, command=None, add=None): return self.canvas.tag_bind(self.id, sequence, command, add) def unbind(self, sequence, funcid=None): self.canvas.tag_unbind(self.id, sequence, funcid) def coords(self, *pts): return self._do('coords', pts) def dchars(self, first, last=None): self._do('dchars', first, last) def delete(self): self._do('delete') def dtag(self, tagToDelete=None): self._do('dtag', tagToDelete) def focus(self): self._do('focus') def gettags(self): return self.canvas.tk.splitlist(self._do('gettags', self.tag)) def icursor(self, index): return self._do('icursor', index) def index(self, index): return self.canvas.tk.getint(self._do('index', index)) def insert(self, beforeThis, string): self._do('insert', beforeThis, string) def config(self, cnf={}, **kw): return self.canvas.itemconfigure(self.tag, _cnfmerge((cnf,kw))) def lower(self, belowThis=None): self._do('lower', belowThis) def move(self, xAmount, yAmount): self._do('move', xAmount, yAmount) def tkraise(self, aboveThis=None): self._do('raise', aboveThis) lift = tkraise def scale(self, xOrigin, yOrigin, xScale, yScale): self._do('scale', xOrigin, yOrigin, xScale, yScale) def select_adjust(self, index): self.canvas._do('select', ('adjust', self.tag, index)) def select_from(self, index): self.canvas._do('select', ('from', self.tag, index)) def select_to(self, index): self.canvas._do('select', ('to', self.tag, index)) def type(self): return self._do('type') Canvas.pyc000064400000036314151703463030006505 0ustar00� zfc@s/ddlmZeddd�[ddlmZmZmZddd��YZdefd ��YZd efd��YZdefd ��YZ defd��YZ defd��YZdefd��YZdefd��YZ defd��YZdefd��YZddd��YZdS(i����(twarnpy3ks0the Canvas module has been removed in Python 3.0t stackleveli(tCanvast _cnfmerget_flattent CanvasItemcBs%eZd�Zd�Zd�Zd�Zd�ZeZd�Zd�Z d�Z d�Zd d �Zd�Z dddd�Zdd �Zid�Zdd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zdd�ZeZd�Zd�ZRS(cOsP||_|j|||�|_t|d�s<i|_n||j|j<dS(Ntitems(tcanvast_createtidthasattrR(tselfRtitemTypetargstkw((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__init__s cCs t|j�S(N(tstrR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__str__scCsd|jj|jfS(Ns<%s, id=%d>(t __class__t__name__R (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__repr__scCs'|jj|j=|jj|j�dS(N(RRR tdelete(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRscCsB|jjj|jjj|jjd|jd|��}|dS(Nt itemconfiguret-i(Rttktsplittcallt_wR (Rtkeytv((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__getitem__scCs!|jj|ji||6�dS(N(Rt itemconfigR (RRtvalue((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__setitem__!scCs[t|d�sTt|jjd�|jjj|jjd|jf���|_n|jS(Nt_keyscSs|j|�ddS(Nii(t splitlist(txR((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt<lambda>%sR(R tmapRRR#t_doR R"(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pytkeys#s cCs||j�kS(N(R((RR((s%/usr/lib64/python2.7/lib-tk/Canvas.pythas_key,scCs||j�kS(N(R((RR((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__contains__.stwithtagcCs|jj|||j�dS(N(RtaddtagR (Rttagtoption((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR,0scCs7|jj|j�\}}}}||f||ffS(N(RtbboxR (Rtx1ty1tx2ty2((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR/2s!cCs|jj|j|||�S(N(Rttag_bindR (Rtsequencetcommandtadd((s%/usr/lib64/python2.7/lib-tk/Canvas.pytbind5scCs|jj|j||�dS(N(Rt tag_unbindR (RR5tfuncid((s%/usr/lib64/python2.7/lib-tk/Canvas.pytunbind7scKs"|jj|jt||f��S(N(RRR R(RtcnfR((s%/usr/lib64/python2.7/lib-tk/Canvas.pytconfig9scCsCd}x$|D]\}}|||f}q W|jj|j|�S(N((RtcoordsR (RtptstflatR$ty((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR>;scCs|jj|j||�dS(N(RtdcharsR (Rtfirsttlast((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRB?scCs|jj|j|�dS(N(RtdtagR (Rtttd((s%/usr/lib64/python2.7/lib-tk/Canvas.pyREAscCs|jj|j�dS(N(RtfocusR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRGCscCs|jj|j�S(N(RtgettagsR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRHEscCs|jj|j|�dS(N(RticursorR (Rtindex((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRIGscCs|jj|j|�S(N(RRJR (RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRJIscCs|jj|j||�dS(N(RtinsertR (Rt beforethiststring((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRKKscCs|jj|j|�dS(N(Rt tag_lowerR (Rt belowthis((s%/usr/lib64/python2.7/lib-tk/Canvas.pytlowerMscCs|jj|j||�dS(N(RtmoveR (Rtxamounttyamount((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRQOscCs|jj|j|�dS(N(Rt tag_raiseR (Rt abovethis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyttkraiseQscCs#|jj|j||||�dS(N(RtscaleR (Rtxorigintyorigintxscaletyscale((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRWTscCs|jj|j�S(N(RttypeR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR\VsN(( Rt __module__RRRRRtcgetR!R(R)R*R,R/tNoneR8R;R=R>RBRERGRHRIRJRKRPRQRVtraise_RWR\(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR s: tArccBseZd�ZRS(cOstj||d||�dS(Ntarc(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRZs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRaYstBitmapcBseZd�ZRS(cOstj||d||�dS(Ntbitmap(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR^s(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRc]st ImageItemcBseZd�ZRS(cOstj||d||�dS(Ntimage(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRbs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyReastLinecBseZd�ZRS(cOstj||d||�dS(Ntline(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRfs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRgestOvalcBseZd�ZRS(cOstj||d||�dS(Ntoval(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRjs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRiistPolygoncBseZd�ZRS(cOstj||d||�dS(Ntpolygon(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRns(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRkmst RectanglecBseZd�ZRS(cOstj||d||�dS(Nt rectangle(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRrs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRmqst CanvasTextcBseZd�ZRS(cOstj||d||�dS(Nttext(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRws(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRovstWindowcBseZd�ZRS(cOstj||d||�dS(Ntwindow(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR{s(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRqzstGroupcBsOeZdd�Zd�ZeZd�Zd�Zd�Zd�Z ddd�Z d�Zd�Zd �Z d �Zdddd�Zdd�Zd �Zdd�Zd�Zdd�Zd�Zd�Zd�Zd�Zd�Zid�Zdd�Zd�Zdd�ZeZd�Zd�Z d�Z!d�Z"d�Z#RS( cCsI|sdt|�}n||_|_||_|jj|j�dS(NsGroup%d(R R-RRE(RRR-((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRs cCs|jS(N(R-(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR�scGs#|jj||jft|��S(N(RR'R-R(RtcmdR ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR'�scCs|jdd|�dS(NR,tabove(R'(RttagOrId((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_above�scCs|jdd�dS(NR,tall(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt addtag_all�scCs|jdd|�dS(NR,tbelow(R'(RRv((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_below�scCs |jdd||||�dS(NR,tclosest(R'(RR$RAthalotstart((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_closest�scCs |jdd||||�dS(NR,tenclosed(R'(RR0R1R2R3((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_enclosed�scCs |jdd||||�dS(NR,toverlapping(R'(RR0R1R2R3((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_overlapping�scCs|jdd|�dS(NR,R+(R'(RRv((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_withtag�scCs|jj|jd��S(NR/(Rt_getintsR'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR/�scCs|jj|j|||�S(N(RR4R (RR5R6R7((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR8�scCs|jj|j||�dS(N(RR9R (RR5R:((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR;�scGs|jd|�S(NR>(R'(RR?((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR>�scCs|jd||�dS(NRB(R'(RRCRD((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRB�scCs|jd�dS(NR(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR�scCs|jd|�dS(NRE(R'(RttagToDelete((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRE�scCs|jd�dS(NRG(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRG�scCs"|jjj|jd|j��S(NRH(RRR#R'R-(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRH�scCs|jd|�S(NRI(R'(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRI�scCs|jjj|jd|��S(NRJ(RRtgetintR'(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRJ�scCs|jd||�dS(NRK(R'(Rt beforeThisRM((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRK�scKs"|jj|jt||f��S(N(RRR-R(RR<R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR=�scCs|jd|�dS(NRP(R'(Rt belowThis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRP�scCs|jd||�dS(NRQ(R'(RtxAmounttyAmount((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRQ�scCs|jd|�dS(Ntraise(R'(Rt aboveThis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRV�scCs|jd||||�dS(NRW(R'(RtxOrigintyOrigintxScaletyScale((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRW�scCs#|jjdd|j|f�dS(Ntselecttadjust(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt select_adjust�scCs#|jjdd|j|f�dS(NR�tfrom(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pytselect_from�scCs#|jjdd|j|f�dS(NR�tto(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt select_to�scCs |jd�S(NR\(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR\�sN($RR]R_RRRR'RwRyR{RR�R�R�R/R8R;R>RBRRERGRHRIRJRKR=RPRQRVtliftRWR�R�R�R\(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRs~sB N(((twarningsRtTkinterRRRRRaRcReRgRiRkRmRoRqRs(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt<module>sLCanvas.pyo000064400000036314151703463030006521 0ustar00� zfc@s/ddlmZeddd�[ddlmZmZmZddd��YZdefd ��YZd efd��YZdefd ��YZ defd��YZ defd��YZdefd��YZdefd��YZ defd��YZdefd��YZddd��YZdS(i����(twarnpy3ks0the Canvas module has been removed in Python 3.0t stackleveli(tCanvast _cnfmerget_flattent CanvasItemcBs%eZd�Zd�Zd�Zd�Zd�ZeZd�Zd�Z d�Z d�Zd d �Zd�Z dddd�Zdd �Zid�Zdd�Zdd�Zd�Zd�Zd�Zd�Zd�Zd�Zdd�Zd�Zdd�ZeZd�Zd�ZRS(cOsP||_|j|||�|_t|d�s<i|_n||j|j<dS(Ntitems(tcanvast_createtidthasattrR(tselfRtitemTypetargstkw((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__init__s cCs t|j�S(N(tstrR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__str__scCsd|jj|jfS(Ns<%s, id=%d>(t __class__t__name__R (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__repr__scCs'|jj|j=|jj|j�dS(N(RRR tdelete(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRscCsB|jjj|jjj|jjd|jd|��}|dS(Nt itemconfiguret-i(Rttktsplittcallt_wR (Rtkeytv((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__getitem__scCs!|jj|ji||6�dS(N(Rt itemconfigR (RRtvalue((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__setitem__!scCs[t|d�sTt|jjd�|jjj|jjd|jf���|_n|jS(Nt_keyscSs|j|�ddS(Nii(t splitlist(txR((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt<lambda>%sR(R tmapRRR#t_doR R"(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pytkeys#s cCs||j�kS(N(R((RR((s%/usr/lib64/python2.7/lib-tk/Canvas.pythas_key,scCs||j�kS(N(R((RR((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt__contains__.stwithtagcCs|jj|||j�dS(N(RtaddtagR (Rttagtoption((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR,0scCs7|jj|j�\}}}}||f||ffS(N(RtbboxR (Rtx1ty1tx2ty2((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR/2s!cCs|jj|j|||�S(N(Rttag_bindR (Rtsequencetcommandtadd((s%/usr/lib64/python2.7/lib-tk/Canvas.pytbind5scCs|jj|j||�dS(N(Rt tag_unbindR (RR5tfuncid((s%/usr/lib64/python2.7/lib-tk/Canvas.pytunbind7scKs"|jj|jt||f��S(N(RRR R(RtcnfR((s%/usr/lib64/python2.7/lib-tk/Canvas.pytconfig9scCsCd}x$|D]\}}|||f}q W|jj|j|�S(N((RtcoordsR (RtptstflatR$ty((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR>;scCs|jj|j||�dS(N(RtdcharsR (Rtfirsttlast((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRB?scCs|jj|j|�dS(N(RtdtagR (Rtttd((s%/usr/lib64/python2.7/lib-tk/Canvas.pyREAscCs|jj|j�dS(N(RtfocusR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRGCscCs|jj|j�S(N(RtgettagsR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRHEscCs|jj|j|�dS(N(RticursorR (Rtindex((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRIGscCs|jj|j|�S(N(RRJR (RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRJIscCs|jj|j||�dS(N(RtinsertR (Rt beforethiststring((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRKKscCs|jj|j|�dS(N(Rt tag_lowerR (Rt belowthis((s%/usr/lib64/python2.7/lib-tk/Canvas.pytlowerMscCs|jj|j||�dS(N(RtmoveR (Rtxamounttyamount((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRQOscCs|jj|j|�dS(N(Rt tag_raiseR (Rt abovethis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyttkraiseQscCs#|jj|j||||�dS(N(RtscaleR (Rtxorigintyorigintxscaletyscale((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRWTscCs|jj|j�S(N(RttypeR (R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR\VsN(( Rt __module__RRRRRtcgetR!R(R)R*R,R/tNoneR8R;R=R>RBRERGRHRIRJRKRPRQRVtraise_RWR\(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR s: tArccBseZd�ZRS(cOstj||d||�dS(Ntarc(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRZs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRaYstBitmapcBseZd�ZRS(cOstj||d||�dS(Ntbitmap(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR^s(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRc]st ImageItemcBseZd�ZRS(cOstj||d||�dS(Ntimage(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRbs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyReastLinecBseZd�ZRS(cOstj||d||�dS(Ntline(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRfs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRgestOvalcBseZd�ZRS(cOstj||d||�dS(Ntoval(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRjs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRiistPolygoncBseZd�ZRS(cOstj||d||�dS(Ntpolygon(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRns(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRkmst RectanglecBseZd�ZRS(cOstj||d||�dS(Nt rectangle(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRrs(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRmqst CanvasTextcBseZd�ZRS(cOstj||d||�dS(Nttext(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRws(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRovstWindowcBseZd�ZRS(cOstj||d||�dS(Ntwindow(RR(RRR R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR{s(RR]R(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRqzstGroupcBsOeZdd�Zd�ZeZd�Zd�Zd�Zd�Z ddd�Z d�Zd�Zd �Z d �Zdddd�Zdd�Zd �Zdd�Zd�Zdd�Zd�Zd�Zd�Zd�Zd�Zid�Zdd�Zd�Zdd�ZeZd�Zd�Z d�Z!d�Z"d�Z#RS( cCsI|sdt|�}n||_|_||_|jj|j�dS(NsGroup%d(R R-RRE(RRR-((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRs cCs|jS(N(R-(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR�scGs#|jj||jft|��S(N(RR'R-R(RtcmdR ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR'�scCs|jdd|�dS(NR,tabove(R'(RttagOrId((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_above�scCs|jdd�dS(NR,tall(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt addtag_all�scCs|jdd|�dS(NR,tbelow(R'(RRv((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_below�scCs |jdd||||�dS(NR,tclosest(R'(RR$RAthalotstart((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_closest�scCs |jdd||||�dS(NR,tenclosed(R'(RR0R1R2R3((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_enclosed�scCs |jdd||||�dS(NR,toverlapping(R'(RR0R1R2R3((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_overlapping�scCs|jdd|�dS(NR,R+(R'(RRv((s%/usr/lib64/python2.7/lib-tk/Canvas.pytaddtag_withtag�scCs|jj|jd��S(NR/(Rt_getintsR'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR/�scCs|jj|j|||�S(N(RR4R (RR5R6R7((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR8�scCs|jj|j||�dS(N(RR9R (RR5R:((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR;�scGs|jd|�S(NR>(R'(RR?((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR>�scCs|jd||�dS(NRB(R'(RRCRD((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRB�scCs|jd�dS(NR(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR�scCs|jd|�dS(NRE(R'(RttagToDelete((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRE�scCs|jd�dS(NRG(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRG�scCs"|jjj|jd|j��S(NRH(RRR#R'R-(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRH�scCs|jd|�S(NRI(R'(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRI�scCs|jjj|jd|��S(NRJ(RRtgetintR'(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRJ�scCs|jd||�dS(NRK(R'(Rt beforeThisRM((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRK�scKs"|jj|jt||f��S(N(RRR-R(RR<R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR=�scCs|jd|�dS(NRP(R'(Rt belowThis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRP�scCs|jd||�dS(NRQ(R'(RtxAmounttyAmount((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRQ�scCs|jd|�dS(Ntraise(R'(Rt aboveThis((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRV�scCs|jd||||�dS(NRW(R'(RtxOrigintyOrigintxScaletyScale((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRW�scCs#|jjdd|j|f�dS(Ntselecttadjust(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt select_adjust�scCs#|jjdd|j|f�dS(NR�tfrom(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pytselect_from�scCs#|jjdd|j|f�dS(NR�tto(RR'R-(RRJ((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt select_to�scCs |jd�S(NR\(R'(R((s%/usr/lib64/python2.7/lib-tk/Canvas.pyR\�sN($RR]R_RRRR'RwRyR{RR�R�R�R/R8R;R>RBRRERGRHRIRJRKR=RPRQRVtliftRWR�R�R�R\(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyRs~sB N(((twarningsRtTkinterRRRRRaRcReRgRiRkRmRoRqRs(((s%/usr/lib64/python2.7/lib-tk/Canvas.pyt<module>sLDialog.py000064400000003037151703463030006322 0ustar00# dialog.py -- Tkinter interface to the tk_dialog script. from Tkinter import * from Tkinter import _cnfmerge if TkVersion <= 3.6: DIALOG_ICON = 'warning' else: DIALOG_ICON = 'questhead' class Dialog(Widget): def __init__(self, master=None, cnf={}, **kw): cnf = _cnfmerge((cnf, kw)) self.widgetName = '__dialog__' Widget._setup(self, master, cnf) self.num = self.tk.getint( self.tk.call( 'tk_dialog', self._w, cnf['title'], cnf['text'], cnf['bitmap'], cnf['default'], *cnf['strings'])) try: Widget.destroy(self) except TclError: pass def destroy(self): pass def _test(): d = Dialog(None, {'title': 'File Modified', 'text': 'File "Python.h" has been modified' ' since the last time it was saved.' ' Do you want to save it before' ' exiting the application.', 'bitmap': DIALOG_ICON, 'default': 0, 'strings': ('Save File', 'Discard Changes', 'Return to Editor')}) print d.num if __name__ == '__main__': t = Button(None, {'text': 'Test', 'command': _test, Pack: {}}) q = Button(None, {'text': 'Quit', 'command': t.quit, Pack: {}}) t.mainloop() Dialog.pyc000064400000003600151703463030006461 0ustar00� zfc@s�ddlTddlmZedkr/dZndZdefd��YZd�Zed kr�edid d6ed6ie 6�Zedid d6ejd6ie 6�Z ej�ndS(i����(t*(t _cnfmergeg������@twarningt questheadtDialogcBs eZdid�Zd�ZRS(c Ks�t||f�}d|_tj|||�|jj|jjd|j|d|d|d|d|d��|_ytj |�Wnt k r�nXdS(Nt __dialog__t tk_dialogttitlettexttbitmaptdefaulttstrings(Rt widgetNametWidgett_setupttktgetinttcallt_wtnumtdestroytTclError(tselftmastertcnftkw((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt__init__ s cCsdS(N((R((s%/usr/lib64/python2.7/lib-tk/Dialog.pyRtN(t__name__t __module__tNoneRR(((s%/usr/lib64/python2.7/lib-tk/Dialog.pyRscCs>tdidd6dd6td6dd6dd6�}|jGHdS( Ns File ModifiedRszFile "Python.h" has been modified since the last time it was saved. Do you want to save it before exiting the application.RR iR s Save FilesDiscard ChangessReturn to EditorR(s Save FilesDiscard ChangessReturn to Editor(RRtDIALOG_ICONR(td((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt_tests t__main__tTestRtcommandtQuitN(tTkinterRt TkVersionRR RR!RtButtonRtPacktttquittqtmainloop(((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt<module>s Dialog.pyo000064400000003600151703463030006475 0ustar00� zfc@s�ddlTddlmZedkr/dZndZdefd��YZd�Zed kr�edid d6ed6ie 6�Zedid d6ejd6ie 6�Z ej�ndS(i����(t*(t _cnfmergeg������@twarningt questheadtDialogcBs eZdid�Zd�ZRS(c Ks�t||f�}d|_tj|||�|jj|jjd|j|d|d|d|d|d��|_ytj |�Wnt k r�nXdS(Nt __dialog__t tk_dialogttitlettexttbitmaptdefaulttstrings(Rt widgetNametWidgett_setupttktgetinttcallt_wtnumtdestroytTclError(tselftmastertcnftkw((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt__init__ s cCsdS(N((R((s%/usr/lib64/python2.7/lib-tk/Dialog.pyRtN(t__name__t __module__tNoneRR(((s%/usr/lib64/python2.7/lib-tk/Dialog.pyRscCs>tdidd6dd6td6dd6dd6�}|jGHdS( Ns File ModifiedRszFile "Python.h" has been modified since the last time it was saved. Do you want to save it before exiting the application.RR iR s Save FilesDiscard ChangessReturn to EditorR(s Save FilesDiscard ChangessReturn to Editor(RRtDIALOG_ICONR(td((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt_tests t__main__tTestRtcommandtQuitN(tTkinterRt TkVersionRR RR!RtButtonRtPacktttquittqtmainloop(((s%/usr/lib64/python2.7/lib-tk/Dialog.pyt<module>s FileDialog.py000064400000021177151703463030007127 0ustar00"""File selection dialog classes. Classes: - FileDialog - LoadFileDialog - SaveFileDialog """ from Tkinter import * from Dialog import Dialog import os import fnmatch dialogstates = {} class FileDialog: """Standard file selection dialog -- no checks on selected file. Usage: d = FileDialog(master) fname = d.go(dir_or_file, pattern, default, key) if fname is None: ...canceled... else: ...open file... All arguments to go() are optional. The 'key' argument specifies a key in the global dictionary 'dialogstates', which keeps track of the values for the directory and pattern arguments, overriding the values passed in (it does not keep track of the default argument!). If no key is specified, the dialog keeps no memory of previous state. Note that memory is kept even when the dialog is canceled. (All this emulates the behavior of the Macintosh file selection dialogs.) """ title = "File Selection Dialog" def __init__(self, master, title=None): if title is None: title = self.title self.master = master self.directory = None self.top = Toplevel(master) self.top.title(title) self.top.iconname(title) self.botframe = Frame(self.top) self.botframe.pack(side=BOTTOM, fill=X) self.selection = Entry(self.top) self.selection.pack(side=BOTTOM, fill=X) self.selection.bind('<Return>', self.ok_event) self.filter = Entry(self.top) self.filter.pack(side=TOP, fill=X) self.filter.bind('<Return>', self.filter_command) self.midframe = Frame(self.top) self.midframe.pack(expand=YES, fill=BOTH) self.filesbar = Scrollbar(self.midframe) self.filesbar.pack(side=RIGHT, fill=Y) self.files = Listbox(self.midframe, exportselection=0, yscrollcommand=(self.filesbar, 'set')) self.files.pack(side=RIGHT, expand=YES, fill=BOTH) btags = self.files.bindtags() self.files.bindtags(btags[1:] + btags[:1]) self.files.bind('<ButtonRelease-1>', self.files_select_event) self.files.bind('<Double-ButtonRelease-1>', self.files_double_event) self.filesbar.config(command=(self.files, 'yview')) self.dirsbar = Scrollbar(self.midframe) self.dirsbar.pack(side=LEFT, fill=Y) self.dirs = Listbox(self.midframe, exportselection=0, yscrollcommand=(self.dirsbar, 'set')) self.dirs.pack(side=LEFT, expand=YES, fill=BOTH) self.dirsbar.config(command=(self.dirs, 'yview')) btags = self.dirs.bindtags() self.dirs.bindtags(btags[1:] + btags[:1]) self.dirs.bind('<ButtonRelease-1>', self.dirs_select_event) self.dirs.bind('<Double-ButtonRelease-1>', self.dirs_double_event) self.ok_button = Button(self.botframe, text="OK", command=self.ok_command) self.ok_button.pack(side=LEFT) self.filter_button = Button(self.botframe, text="Filter", command=self.filter_command) self.filter_button.pack(side=LEFT, expand=YES) self.cancel_button = Button(self.botframe, text="Cancel", command=self.cancel_command) self.cancel_button.pack(side=RIGHT) self.top.protocol('WM_DELETE_WINDOW', self.cancel_command) # XXX Are the following okay for a general audience? self.top.bind('<Alt-w>', self.cancel_command) self.top.bind('<Alt-W>', self.cancel_command) def go(self, dir_or_file=os.curdir, pattern="*", default="", key=None): if key and key in dialogstates: self.directory, pattern = dialogstates[key] else: dir_or_file = os.path.expanduser(dir_or_file) if os.path.isdir(dir_or_file): self.directory = dir_or_file else: self.directory, default = os.path.split(dir_or_file) self.set_filter(self.directory, pattern) self.set_selection(default) self.filter_command() self.selection.focus_set() self.top.wait_visibility() # window needs to be visible for the grab self.top.grab_set() self.how = None self.master.mainloop() # Exited by self.quit(how) if key: directory, pattern = self.get_filter() if self.how: directory = os.path.dirname(self.how) dialogstates[key] = directory, pattern self.top.destroy() return self.how def quit(self, how=None): self.how = how self.master.quit() # Exit mainloop() def dirs_double_event(self, event): self.filter_command() def dirs_select_event(self, event): dir, pat = self.get_filter() subdir = self.dirs.get('active') dir = os.path.normpath(os.path.join(self.directory, subdir)) self.set_filter(dir, pat) def files_double_event(self, event): self.ok_command() def files_select_event(self, event): file = self.files.get('active') self.set_selection(file) def ok_event(self, event): self.ok_command() def ok_command(self): self.quit(self.get_selection()) def filter_command(self, event=None): dir, pat = self.get_filter() try: names = os.listdir(dir) except os.error: self.master.bell() return self.directory = dir self.set_filter(dir, pat) names.sort() subdirs = [os.pardir] matchingfiles = [] for name in names: fullname = os.path.join(dir, name) if os.path.isdir(fullname): subdirs.append(name) elif fnmatch.fnmatch(name, pat): matchingfiles.append(name) self.dirs.delete(0, END) for name in subdirs: self.dirs.insert(END, name) self.files.delete(0, END) for name in matchingfiles: self.files.insert(END, name) head, tail = os.path.split(self.get_selection()) if tail == os.curdir: tail = '' self.set_selection(tail) def get_filter(self): filter = self.filter.get() filter = os.path.expanduser(filter) if filter[-1:] == os.sep or os.path.isdir(filter): filter = os.path.join(filter, "*") return os.path.split(filter) def get_selection(self): file = self.selection.get() file = os.path.expanduser(file) return file def cancel_command(self, event=None): self.quit() def set_filter(self, dir, pat): if not os.path.isabs(dir): try: pwd = os.getcwd() except os.error: pwd = None if pwd: dir = os.path.join(pwd, dir) dir = os.path.normpath(dir) self.filter.delete(0, END) self.filter.insert(END, os.path.join(dir or os.curdir, pat or "*")) def set_selection(self, file): self.selection.delete(0, END) self.selection.insert(END, os.path.join(self.directory, file)) class LoadFileDialog(FileDialog): """File selection dialog which checks that the file exists.""" title = "Load File Selection Dialog" def ok_command(self): file = self.get_selection() if not os.path.isfile(file): self.master.bell() else: self.quit(file) class SaveFileDialog(FileDialog): """File selection dialog which checks that the file may be created.""" title = "Save File Selection Dialog" def ok_command(self): file = self.get_selection() if os.path.exists(file): if os.path.isdir(file): self.master.bell() return d = Dialog(self.top, title="Overwrite Existing File Question", text="Overwrite existing file %r?" % (file,), bitmap='questhead', default=1, strings=("Yes", "Cancel")) if d.num != 0: return else: head, tail = os.path.split(file) if not os.path.isdir(head): self.master.bell() return self.quit(file) def test(): """Simple test program.""" root = Tk() root.withdraw() fd = LoadFileDialog(root) loadfile = fd.go(key="test") fd = SaveFileDialog(root) savefile = fd.go(key="test") print loadfile, savefile if __name__ == '__main__': test() FileDialog.pyc000064400000022766151703463030007277 0ustar00� zfc@s�dZddlTddlmZddlZddlZiZdd d��YZdefd��YZd efd ��YZd�Z e dkr�e �ndS(sZFile selection dialog classes. Classes: - FileDialog - LoadFileDialog - SaveFileDialog i����(t*(tDialogNt FileDialogcBs�eZdZdZdd�Zejdddd�Zdd�Z d�Z d�Zd �Zd �Z d�Zd�Zdd �Zd�Zd�Zdd�Zd�Zd�ZRS(s�Standard file selection dialog -- no checks on selected file. Usage: d = FileDialog(master) fname = d.go(dir_or_file, pattern, default, key) if fname is None: ...canceled... else: ...open file... All arguments to go() are optional. The 'key' argument specifies a key in the global dictionary 'dialogstates', which keeps track of the values for the directory and pattern arguments, overriding the values passed in (it does not keep track of the default argument!). If no key is specified, the dialog keeps no memory of previous state. Note that memory is kept even when the dialog is canceled. (All this emulates the behavior of the Macintosh file selection dialogs.) sFile Selection DialogcCs�|dkr|j}n||_d|_t|�|_|jj|�|jj|�t|j�|_|jj dt dt�t|j�|_ |j j dt dt�|j jd|j�t|j�|_|jj dtdt�|jjd|j�t|j�|_|jj dtdt�t|j�|_|jj dtdt�t|jddd|jdf�|_|jj dtdtdt�|jj�}|jj|d |d �|jjd |j�|jjd|j�|jjd|jd f�t|j�|_ |j j dt!dt�t|jddd|j df�|_"|j"j dt!dtdt�|j jd|j"d f�|j"j�}|j"j|d |d �|j"jd |j#�|j"jd|j$�t%|jddd|j&�|_'|j'j dt!�t%|jddd|j�|_(|j(j dt!dt�t%|jddd|j)�|_*|j*j dt�|jj+d|j)�|jjd|j)�|jjd|j)�dS(Ntsidetfills<Return>texpandtexportselectionityscrollcommandtsetis<ButtonRelease-1>s<Double-ButtonRelease-1>tcommandtyviewttexttOKtFiltertCanceltWM_DELETE_WINDOWs<Alt-w>s<Alt-W>(,tNonettitletmastert directorytToplevelttopticonnametFrametbotframetpacktBOTTOMtXtEntryt selectiontbindtok_eventtfiltertTOPtfilter_commandtmidframetYEStBOTHt ScrollbartfilesbartRIGHTtYtListboxtfilestbindtagstfiles_select_eventtfiles_double_eventtconfigtdirsbartLEFTtdirstdirs_select_eventtdirs_double_eventtButtont ok_commandt ok_buttont filter_buttontcancel_commandt cancel_buttontprotocol(tselfRRtbtags((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyt__init__.sh RtcCs:|r(|tkr(t|\|_}nKtjj|�}tjj|�rX||_ntjj|�\|_}|j|j|�|j|�|j �|j j�|jj �|jj�d|_|jj�|r&|j�\}}|jrtjj|j�}n||ft|<n|jj�|jS(N(tdialogstatesRtostpatht expandusertisdirtsplitt set_filtert set_selectionR"Rt focus_setRtwait_visibilitytgrab_setRthowRtmainloopt get_filtertdirnametdestroy(R<tdir_or_filetpatterntdefaulttkeyR((s)/usr/lib64/python2.7/lib-tk/FileDialog.pytgoms* cCs||_|jj�dS(N(RKRtquit(R<RK((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRU�s cCs|j�dS(N(R"(R<tevent((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR4�scCs\|j�\}}|jjd�}tjjtjj|j|��}|j||�dS(Ntactive( RMR2tgetRARBtnormpathtjoinRRF(R<RVtdirtpattsubdir((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR3�s$cCs|j�dS(N(R6(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR.�scCs#|jjd�}|j|�dS(NRW(R+RXRG(R<RVtfile((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR-�scCs|j�dS(N(R6(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR�scCs|j|j��dS(N(RUt get_selection(R<((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�scCs�|j�\}}ytj|�}Wn"tjk rI|jj�dSX||_|j||�|j�tj g}g}xg|D]_}tj j||�}tj j|�r�|j |�q�tj||�r�|j |�q�q�W|jjdt�x!|D]}|jjt|�qW|jjdt�x!|D]}|jjt|�q:Wtj j|j��\} } | tjkr�d} n|j| �dS(NiR?(RMRAtlistdirterrorRtbellRRFtsorttpardirRBRZRDtappendtfnmatchR2tdeletetENDtinsertR+RER_tcurdirRG(R<RVR[R\tnamestsubdirst matchingfilestnametfullnametheadttail((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR"�s6 cCsn|jj�}tjj|�}|dtjksFtjj|�r^tjj|d�}ntjj|�S(Ni����R( R RXRARBRCtsepRDRZRE(R<R ((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRM�s %cCs%|jj�}tjj|�}|S(N(RRXRARBRC(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR_�scCs|j�dS(N(RU(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR9�scCs�tjj|�srytj�}Wntjk r>d}nX|rrtjj||�}tjj|�}qrn|jj dt �|jjt tjj|p�tj|p�d��dS(NiR( RARBtisabstgetcwdRaRRZRYR RgRhRiRj(R<R[R\tpwd((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRF�s cCs<|jjdt�|jjttjj|j|��dS(Ni(RRgRhRiRARBRZR(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRG�sN(t__name__t __module__t__doc__RRR>RARjRTRUR4R3R.R-RR6R"RMR_R9RFRG(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRs"? tLoadFileDialogcBseZdZdZd�ZRS(s8File selection dialog which checks that the file exists.sLoad File Selection DialogcCs?|j�}tjj|�s.|jj�n |j|�dS(N(R_RARBtisfileRRbRU(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�s(RvRwRxRR6(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRy�stSaveFileDialogcBseZdZdZd�ZRS(s@File selection dialog which checks that the file may be created.sSave File Selection Dialogc Cs�|j�}tjj|�r�tjj|�rA|jj�dSt|jdddd|fddddd d �}|j dkr�dSn;tjj |�\}}tjj|�s�|jj�dS|j|�dS(NRs Overwrite Existing File QuestionRsOverwrite existing file %r?tbitmapt questheadRRitstringstYesRi(RR(R_RARBtexistsRDRRbRRtnumRERU(R<R^tdRpRq((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�s$ (RvRwRxRR6(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR{�scCs\t�}|j�t|�}|jdd�}t|�}|jdd�}|G|GHdS(sSimple test program.RSttestN(tTktwithdrawRyRTR{(troottfdtloadfiletsavefile((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR�s t__main__((RxtTkinterRRARfR@RRyR{R�Rv(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyt<module> s � FileDialog.pyo000064400000022766151703463030007313 0ustar00� zfc@s�dZddlTddlmZddlZddlZiZdd d��YZdefd��YZd efd ��YZd�Z e dkr�e �ndS(sZFile selection dialog classes. Classes: - FileDialog - LoadFileDialog - SaveFileDialog i����(t*(tDialogNt FileDialogcBs�eZdZdZdd�Zejdddd�Zdd�Z d�Z d�Zd �Zd �Z d�Zd�Zdd �Zd�Zd�Zdd�Zd�Zd�ZRS(s�Standard file selection dialog -- no checks on selected file. Usage: d = FileDialog(master) fname = d.go(dir_or_file, pattern, default, key) if fname is None: ...canceled... else: ...open file... All arguments to go() are optional. The 'key' argument specifies a key in the global dictionary 'dialogstates', which keeps track of the values for the directory and pattern arguments, overriding the values passed in (it does not keep track of the default argument!). If no key is specified, the dialog keeps no memory of previous state. Note that memory is kept even when the dialog is canceled. (All this emulates the behavior of the Macintosh file selection dialogs.) sFile Selection DialogcCs�|dkr|j}n||_d|_t|�|_|jj|�|jj|�t|j�|_|jj dt dt�t|j�|_ |j j dt dt�|j jd|j�t|j�|_|jj dtdt�|jjd|j�t|j�|_|jj dtdt�t|j�|_|jj dtdt�t|jddd|jdf�|_|jj dtdtdt�|jj�}|jj|d |d �|jjd |j�|jjd|j�|jjd|jd f�t|j�|_ |j j dt!dt�t|jddd|j df�|_"|j"j dt!dtdt�|j jd|j"d f�|j"j�}|j"j|d |d �|j"jd |j#�|j"jd|j$�t%|jddd|j&�|_'|j'j dt!�t%|jddd|j�|_(|j(j dt!dt�t%|jddd|j)�|_*|j*j dt�|jj+d|j)�|jjd|j)�|jjd|j)�dS(Ntsidetfills<Return>texpandtexportselectionityscrollcommandtsetis<ButtonRelease-1>s<Double-ButtonRelease-1>tcommandtyviewttexttOKtFiltertCanceltWM_DELETE_WINDOWs<Alt-w>s<Alt-W>(,tNonettitletmastert directorytToplevelttopticonnametFrametbotframetpacktBOTTOMtXtEntryt selectiontbindtok_eventtfiltertTOPtfilter_commandtmidframetYEStBOTHt ScrollbartfilesbartRIGHTtYtListboxtfilestbindtagstfiles_select_eventtfiles_double_eventtconfigtdirsbartLEFTtdirstdirs_select_eventtdirs_double_eventtButtont ok_commandt ok_buttont filter_buttontcancel_commandt cancel_buttontprotocol(tselfRRtbtags((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyt__init__.sh RtcCs:|r(|tkr(t|\|_}nKtjj|�}tjj|�rX||_ntjj|�\|_}|j|j|�|j|�|j �|j j�|jj �|jj�d|_|jj�|r&|j�\}}|jrtjj|j�}n||ft|<n|jj�|jS(N(tdialogstatesRtostpatht expandusertisdirtsplitt set_filtert set_selectionR"Rt focus_setRtwait_visibilitytgrab_setRthowRtmainloopt get_filtertdirnametdestroy(R<tdir_or_filetpatterntdefaulttkeyR((s)/usr/lib64/python2.7/lib-tk/FileDialog.pytgoms* cCs||_|jj�dS(N(RKRtquit(R<RK((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRU�s cCs|j�dS(N(R"(R<tevent((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR4�scCs\|j�\}}|jjd�}tjjtjj|j|��}|j||�dS(Ntactive( RMR2tgetRARBtnormpathtjoinRRF(R<RVtdirtpattsubdir((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR3�s$cCs|j�dS(N(R6(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR.�scCs#|jjd�}|j|�dS(NRW(R+RXRG(R<RVtfile((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR-�scCs|j�dS(N(R6(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR�scCs|j|j��dS(N(RUt get_selection(R<((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�scCs�|j�\}}ytj|�}Wn"tjk rI|jj�dSX||_|j||�|j�tj g}g}xg|D]_}tj j||�}tj j|�r�|j |�q�tj||�r�|j |�q�q�W|jjdt�x!|D]}|jjt|�qW|jjdt�x!|D]}|jjt|�q:Wtj j|j��\} } | tjkr�d} n|j| �dS(NiR?(RMRAtlistdirterrorRtbellRRFtsorttpardirRBRZRDtappendtfnmatchR2tdeletetENDtinsertR+RER_tcurdirRG(R<RVR[R\tnamestsubdirst matchingfilestnametfullnametheadttail((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR"�s6 cCsn|jj�}tjj|�}|dtjksFtjj|�r^tjj|d�}ntjj|�S(Ni����R( R RXRARBRCtsepRDRZRE(R<R ((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRM�s %cCs%|jj�}tjj|�}|S(N(RRXRARBRC(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR_�scCs|j�dS(N(RU(R<RV((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR9�scCs�tjj|�srytj�}Wntjk r>d}nX|rrtjj||�}tjj|�}qrn|jj dt �|jjt tjj|p�tj|p�d��dS(NiR( RARBtisabstgetcwdRaRRZRYR RgRhRiRj(R<R[R\tpwd((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRF�s cCs<|jjdt�|jjttjj|j|��dS(Ni(RRgRhRiRARBRZR(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRG�sN(t__name__t __module__t__doc__RRR>RARjRTRUR4R3R.R-RR6R"RMR_R9RFRG(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRs"? tLoadFileDialogcBseZdZdZd�ZRS(s8File selection dialog which checks that the file exists.sLoad File Selection DialogcCs?|j�}tjj|�s.|jj�n |j|�dS(N(R_RARBtisfileRRbRU(R<R^((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�s(RvRwRxRR6(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyRy�stSaveFileDialogcBseZdZdZd�ZRS(s@File selection dialog which checks that the file may be created.sSave File Selection Dialogc Cs�|j�}tjj|�r�tjj|�rA|jj�dSt|jdddd|fddddd d �}|j dkr�dSn;tjj |�\}}tjj|�s�|jj�dS|j|�dS(NRs Overwrite Existing File QuestionRsOverwrite existing file %r?tbitmapt questheadRRitstringstYesRi(RR(R_RARBtexistsRDRRbRRtnumRERU(R<R^tdRpRq((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR6�s$ (RvRwRxRR6(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR{�scCs\t�}|j�t|�}|jdd�}t|�}|jdd�}|G|GHdS(sSimple test program.RSttestN(tTktwithdrawRyRTR{(troottfdtloadfiletsavefile((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyR�s t__main__((RxtTkinterRRARfR@RRyR{R�Rv(((s)/usr/lib64/python2.7/lib-tk/FileDialog.pyt<module> s � FixTk.py000064400000005712151703463030006152 0ustar00import sys, os # Delay import _tkinter until we have set TCL_LIBRARY, # so that Tcl_FindExecutable has a chance to locate its # encoding directory. # Unfortunately, we cannot know the TCL_LIBRARY directory # if we don't know the tcl version, which we cannot find out # without import Tcl. Fortunately, Tcl will itself look in # <TCL_LIBRARY>\..\tcl<TCL_VERSION>, so anything close to # the real Tcl library will do. # Expand symbolic links on Vista try: import ctypes ctypes.windll.kernel32.GetFinalPathNameByHandleW except (ImportError, AttributeError): def convert_path(s): return s else: def convert_path(s): assert isinstance(s, str) # sys.prefix contains only bytes udir = s.decode("mbcs") hdir = ctypes.windll.kernel32.\ CreateFileW(udir, 0x80, # FILE_READ_ATTRIBUTES 1, # FILE_SHARE_READ None, 3, # OPEN_EXISTING 0x02000000, # FILE_FLAG_BACKUP_SEMANTICS None) if hdir == -1: # Cannot open directory, give up return s buf = ctypes.create_unicode_buffer(u"", 32768) res = ctypes.windll.kernel32.\ GetFinalPathNameByHandleW(hdir, buf, len(buf), 0) # VOLUME_NAME_DOS ctypes.windll.kernel32.CloseHandle(hdir) if res == 0: # Conversion failed (e.g. network location) return s s = buf[:res].encode("mbcs") # Ignore leading \\?\ if s.startswith("\\\\?\\"): s = s[4:] if s.startswith("UNC"): s = "\\" + s[3:] return s prefix = os.path.join(sys.prefix,"tcl") if not os.path.exists(prefix): # devdir/externals/tcltk/lib tcltk = 'tcltk' if sys.maxsize > 2**31 - 1: tcltk = 'tcltk64' prefix = os.path.join(sys.prefix, "externals", tcltk, "lib") prefix = os.path.abspath(prefix) # if this does not exist, no further search is needed if os.path.exists(prefix): prefix = convert_path(prefix) if "TCL_LIBRARY" not in os.environ: for name in os.listdir(prefix): if name.startswith("tcl"): tcldir = os.path.join(prefix,name) if os.path.isdir(tcldir): os.environ["TCL_LIBRARY"] = tcldir # Compute TK_LIBRARY, knowing that it has the same version # as Tcl import _tkinter ver = str(_tkinter.TCL_VERSION) if "TK_LIBRARY" not in os.environ: v = os.path.join(prefix, 'tk'+ver) if os.path.exists(os.path.join(v, "tclIndex")): os.environ['TK_LIBRARY'] = v # We don't know the Tix version, so we must search the entire # directory if "TIX_LIBRARY" not in os.environ: for name in os.listdir(prefix): if name.startswith("tix"): tixdir = os.path.join(prefix,name) if os.path.isdir(tixdir): os.environ["TIX_LIBRARY"] = tixdir FixTk.pyc000064400000004054151703463030006313 0ustar00� zfc@sbddlZddlZyddlZejjjWn eefk rWd�Zn Xd�Zej j ejd�Zej je�s�dZ ejdkr�d Z nej j ejd e d�Zej je�Znej je�r^ee�Zdejkroxceje�D]OZejd�rej j ee�Zej je�rheejd<qhqqWnddlZeej�Zd ejkr�ej j ede�Zej jej j ed��r�eejd <q�ndejkr^xceje�D]OZejd�rej j ee�Zej je�rTeejd<qTqqWq^ndS(i����NcCs|S(N((ts((s$/usr/lib64/python2.7/lib-tk/FixTk.pytconvert_pathscCst|t�st�|jd�}tjjj|dddddd�}|dkr[|Stj dd�}tjjj ||t|�d �}tjjj|�|d kr�|S|| j d�}|jd �r�|d}n|jd�rd |d}n|S(Ntmbcsi�iiii����ui�is\\?\itUNCs\(t isinstancetstrtAssertionErrortdecodetctypestwindlltkernel32tCreateFileWtNonetcreate_unicode_buffertGetFinalPathNameByHandleWtlentCloseHandletencodet startswith(Rtudirthdirtbuftres((s$/usr/lib64/python2.7/lib-tk/FixTk.pyRs. ttclttcltkiiittcltk64t externalstlibtTCL_LIBRARYt TK_LIBRARYttkttclIndextTIX_LIBRARYttixI�i���(tsystosRR R RtImportErrortAttributeErrorRtpathtjointprefixtexistsRtmaxsizetabspathtenvirontlistdirtnameRttcldirtisdirt_tkinterRtTCL_VERSIONtvertvttixdir(((s$/usr/lib64/python2.7/lib-tk/FixTk.pyt<module>sB !FixTk.pyo000064400000003756151703463030006337 0ustar00� zfc@sbddlZddlZyddlZejjjWn eefk rWd�Zn Xd�Zej j ejd�Zej je�s�dZ ejdkr�d Z nej j ejd e d�Zej je�Znej je�r^ee�Zdejkroxceje�D]OZejd�rej j ee�Zej je�rheejd<qhqqWnddlZeej�Zd ejkr�ej j ede�Zej jej j ed��r�eejd <q�ndejkr^xceje�D]OZejd�rej j ee�Zej je�rTeejd<qTqqWq^ndS(i����NcCs|S(N((ts((s$/usr/lib64/python2.7/lib-tk/FixTk.pytconvert_pathscCs�|jd�}tjjj|dddddd�}|dkrF|Stjdd�}tjjj||t|�d �}tjjj |�|d kr�|S|| j d�}|jd �r�|d}n|jd�r�d |d}n|S(Ntmbcsi�iiii����ui�is\\?\itUNCs\(tdecodetctypestwindlltkernel32tCreateFileWtNonetcreate_unicode_buffertGetFinalPathNameByHandleWtlentCloseHandletencodet startswith(Rtudirthdirtbuftres((s$/usr/lib64/python2.7/lib-tk/FixTk.pyRs, ttclttcltkiiittcltk64t externalstlibtTCL_LIBRARYt TK_LIBRARYttkttclIndextTIX_LIBRARYttixI�i���(tsystosRRRRtImportErrortAttributeErrorRtpathtjointprefixtexistsRtmaxsizetabspathtenvirontlistdirtnameRttcldirtisdirt_tkintertstrtTCL_VERSIONtvertvttixdir(((s$/usr/lib64/python2.7/lib-tk/FixTk.pyt<module>sB !ScrolledText.py000064400000003454151703463030007542 0ustar00"""A ScrolledText widget feels like a text widget but also has a vertical scroll bar on its right. (Later, options may be added to add a horizontal bar as well, to make the bars disappear automatically when not needed, to move them to the other side of the window, etc.) Configuration options are passed to the Text widget. A Frame widget is inserted between the master and the text, to hold the Scrollbar widget. Most methods calls are inherited from the Text widget; Pack, Grid and Place methods are redirected to the Frame widget however. """ __all__ = ['ScrolledText'] from Tkinter import Frame, Text, Scrollbar, Pack, Grid, Place from Tkconstants import RIGHT, LEFT, Y, BOTH class ScrolledText(Text): def __init__(self, master=None, **kw): self.frame = Frame(master) self.vbar = Scrollbar(self.frame) self.vbar.pack(side=RIGHT, fill=Y) kw.update({'yscrollcommand': self.vbar.set}) Text.__init__(self, self.frame, **kw) self.pack(side=LEFT, fill=BOTH, expand=True) self.vbar['command'] = self.yview # Copy geometry methods of self.frame without overriding Text # methods -- hack! text_meths = vars(Text).keys() methods = vars(Pack).keys() + vars(Grid).keys() + vars(Place).keys() methods = set(methods).difference(text_meths) for m in methods: if m[0] != '_' and m != 'config' and m != 'configure': setattr(self, m, getattr(self.frame, m)) def __str__(self): return str(self.frame) def example(): import __main__ from Tkconstants import END stext = ScrolledText(bg='white', height=10) stext.insert(END, __main__.__doc__) stext.pack(fill=BOTH, side=LEFT, expand=True) stext.focus_set() stext.mainloop() if __name__ == "__main__": example() ScrolledText.pyc000064400000005150151703463030007700 0ustar00� zfc@s�dZdgZddlmZmZmZmZmZmZddl m Z mZmZm Z defd��YZd�Zedkr�e�ndS( sA ScrolledText widget feels like a text widget but also has a vertical scroll bar on its right. (Later, options may be added to add a horizontal bar as well, to make the bars disappear automatically when not needed, to move them to the other side of the window, etc.) Configuration options are passed to the Text widget. A Frame widget is inserted between the master and the text, to hold the Scrollbar widget. Most methods calls are inherited from the Text widget; Pack, Grid and Place methods are redirected to the Frame widget however. tScrolledTexti����(tFrametTextt ScrollbartPacktGridtPlace(tRIGHTtLEFTtYtBOTHcBseZdd�Zd�ZRS(cKsKt|�|_t|j�|_|jjdtdt�|ji|jjd6�t j ||j|�|jdtdtdt �|j|jd<tt �j�}tt�j�tt�j�tt�j�}t|�j|�}xU|D]M}|ddkr�|dkr�|d kr�t||t|j|��q�q�WdS( Ntsidetfilltyscrollcommandtexpandtcommandit_tconfigt configure(RtframeRtvbartpackRR tupdatetsetRt__init__RR tTruetyviewtvarstkeysRRRt differencetsetattrtgetattr(tselftmastertkwt text_methstmethodstm((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyRs2 (cCs t|j�S(N(tstrR(R ((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyt__str__(sN(t__name__t __module__tNoneRR'(((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyRscCsxddl}ddlm}tdddd�}|j||j�|jdtdtd t �|j �|j�dS( Ni����(tENDtbgtwhitetheighti RRR(t__main__tTkconstantsR+Rtinsertt__doc__RR RRt focus_settmainloop(R/R+tstext((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pytexample,s R/N(R2t__all__tTkinterRRRRRRR0RRR R RR6R((((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyt<module>s ." ScrolledText.pyo000064400000005150151703463030007714 0ustar00� zfc@s�dZdgZddlmZmZmZmZmZmZddl m Z mZmZm Z defd��YZd�Zedkr�e�ndS( sA ScrolledText widget feels like a text widget but also has a vertical scroll bar on its right. (Later, options may be added to add a horizontal bar as well, to make the bars disappear automatically when not needed, to move them to the other side of the window, etc.) Configuration options are passed to the Text widget. A Frame widget is inserted between the master and the text, to hold the Scrollbar widget. Most methods calls are inherited from the Text widget; Pack, Grid and Place methods are redirected to the Frame widget however. tScrolledTexti����(tFrametTextt ScrollbartPacktGridtPlace(tRIGHTtLEFTtYtBOTHcBseZdd�Zd�ZRS(cKsKt|�|_t|j�|_|jjdtdt�|ji|jjd6�t j ||j|�|jdtdtdt �|j|jd<tt �j�}tt�j�tt�j�tt�j�}t|�j|�}xU|D]M}|ddkr�|dkr�|d kr�t||t|j|��q�q�WdS( Ntsidetfilltyscrollcommandtexpandtcommandit_tconfigt configure(RtframeRtvbartpackRR tupdatetsetRt__init__RR tTruetyviewtvarstkeysRRRt differencetsetattrtgetattr(tselftmastertkwt text_methstmethodstm((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyRs2 (cCs t|j�S(N(tstrR(R ((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyt__str__(sN(t__name__t __module__tNoneRR'(((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyRscCsxddl}ddlm}tdddd�}|j||j�|jdtdtd t �|j �|j�dS( Ni����(tENDtbgtwhitetheighti RRR(t__main__tTkconstantsR+Rtinsertt__doc__RR RRt focus_settmainloop(R/R+tstext((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pytexample,s R/N(R2t__all__tTkinterRRRRRRR0RRR R RR6R((((s+/usr/lib64/python2.7/lib-tk/ScrolledText.pyt<module>s ." SimpleDialog.py000064400000007220151703463030007472 0ustar00"""A simple but flexible modal dialog box.""" from Tkinter import * class SimpleDialog: def __init__(self, master, text='', buttons=[], default=None, cancel=None, title=None, class_=None): if class_: self.root = Toplevel(master, class_=class_) else: self.root = Toplevel(master) if title: self.root.title(title) self.root.iconname(title) self.message = Message(self.root, text=text, aspect=400) self.message.pack(expand=1, fill=BOTH) self.frame = Frame(self.root) self.frame.pack() self.num = default self.cancel = cancel self.default = default self.root.bind('<Return>', self.return_event) for num in range(len(buttons)): s = buttons[num] b = Button(self.frame, text=s, command=(lambda self=self, num=num: self.done(num))) if num == default: b.config(relief=RIDGE, borderwidth=8) b.pack(side=LEFT, fill=BOTH, expand=1) self.root.protocol('WM_DELETE_WINDOW', self.wm_delete_window) self._set_transient(master) def _set_transient(self, master, relx=0.5, rely=0.3): widget = self.root widget.withdraw() # Remain invisible while we figure out the geometry widget.transient(master) widget.update_idletasks() # Actualize geometry information if master.winfo_ismapped(): m_width = master.winfo_width() m_height = master.winfo_height() m_x = master.winfo_rootx() m_y = master.winfo_rooty() else: m_width = master.winfo_screenwidth() m_height = master.winfo_screenheight() m_x = m_y = 0 w_width = widget.winfo_reqwidth() w_height = widget.winfo_reqheight() x = m_x + (m_width - w_width) * relx y = m_y + (m_height - w_height) * rely if x+w_width > master.winfo_screenwidth(): x = master.winfo_screenwidth() - w_width elif x < 0: x = 0 if y+w_height > master.winfo_screenheight(): y = master.winfo_screenheight() - w_height elif y < 0: y = 0 widget.geometry("+%d+%d" % (x, y)) widget.deiconify() # Become visible at the desired location def go(self): self.root.wait_visibility() self.root.grab_set() self.root.mainloop() self.root.destroy() return self.num def return_event(self, event): if self.default is None: self.root.bell() else: self.done(self.default) def wm_delete_window(self): if self.cancel is None: self.root.bell() else: self.done(self.cancel) def done(self, num): self.num = num self.root.quit() if __name__ == '__main__': def test(): root = Tk() def doit(root=root): d = SimpleDialog(root, text="This is a test dialog. " "Would this have been an actual dialog, " "the buttons below would have been glowing " "in soft pink light.\n" "Do you believe this?", buttons=["Yes", "No", "Cancel"], default=0, cancel=2, title="Test Dialog") print d.go() t = Button(root, text='Test', command=doit) t.pack() q = Button(root, text='Quit', command=t.quit) q.pack() t.mainloop() test() SimpleDialog.pyc000064400000010363151703463030007637 0ustar00� zfc@sFdZddlTddd��YZedkrBd�Ze�ndS( s'A simple but flexible modal dialog box.i����(t*tSimpleDialogcBsVeZdgd d d d d�Zddd�Zd�Zd�Zd�Zd�ZRS( tc Cs�|rt|d|�|_nt|�|_|rV|jj|�|jj|�nt|jd|dd�|_|jjdddt�t|j�|_ |j j�||_ ||_||_|jj d|j�x�tt|��D]u}||} t|j d| d ||d ��} ||krI| jdtdd �n| jdtdtdd�q�W|jjd|j�|j|�dS(Ntclass_ttexttaspecti�texpanditfills<Return>tcommandcSs |j|�S(N(tdone(tselftnum((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt<lambda>RtrelieftborderwidthitsidetWM_DELETE_WINDOW(tTopleveltrootttitleticonnametMessagetmessagetpacktBOTHtFrametframeRtcanceltdefaulttbindtreturn_eventtrangetlentButtontconfigtRIDGEtLEFTtprotocoltwm_delete_windowt_set_transient(R tmasterRtbuttonsRRRRRtstb((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt__init__ s. g�?g333333�?c Csh|j}|j�|j|�|j�|j�ri|j�}|j�}|j�}|j�}n"|j �}|j �}d}}|j�} |j�} ||| |}||| |}|| |j �kr�|j �| }n|dkrd}n|| |j �kr.|j �| }n|dkrCd}n|j d||f�|j�dS(Nis+%d+%d(Rtwithdrawt transienttupdate_idletaskstwinfo_ismappedtwinfo_widthtwinfo_heighttwinfo_rootxtwinfo_rootytwinfo_screenwidthtwinfo_screenheighttwinfo_reqwidthtwinfo_reqheighttgeometryt deiconify( R R(trelxtrelytwidgettm_widthtm_heighttm_xtm_ytw_widthtw_heighttxty((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR'%s4 cCs;|jj�|jj�|jj�|jj�|jS(N(Rtwait_visibilitytgrab_settmainlooptdestroyR(R ((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pytgoBs cCs3|jdkr|jj�n|j|j�dS(N(RtNoneRtbellR (R tevent((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyRIscCs3|jdkr|jj�n|j|j�dS(N(RRKRRLR (R ((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR&OscCs||_|jj�dS(N(RRtquit(R R((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR Us N( t__name__t __module__RKR,R'RJRR&R (((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyRs t__main__cCsjt�}|d�}t|ddd|�}|j�t|ddd|j�}|j�|j�dS(NcSsBt|ddddddgddd d dd�}|j�GHdS( NRs�This is a test dialog. Would this have been an actual dialog, the buttons below would have been glowing in soft pink light. Do you believe this?R)tYestNotCancelRiRiRsTest Dialog(RRJ(Rtd((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pytdoit^s RtTestRtQuit(tTkR!RRNRH(RRVtttq((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyttest\s N((t__doc__tTkinterRROR\(((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt<module>s S SimpleDialog.pyo000064400000010363151703463030007653 0ustar00� zfc@sFdZddlTddd��YZedkrBd�Ze�ndS( s'A simple but flexible modal dialog box.i����(t*tSimpleDialogcBsVeZdgd d d d d�Zddd�Zd�Zd�Zd�Zd�ZRS( tc Cs�|rt|d|�|_nt|�|_|rV|jj|�|jj|�nt|jd|dd�|_|jjdddt�t|j�|_ |j j�||_ ||_||_|jj d|j�x�tt|��D]u}||} t|j d| d ||d ��} ||krI| jdtdd �n| jdtdtdd�q�W|jjd|j�|j|�dS(Ntclass_ttexttaspecti�texpanditfills<Return>tcommandcSs |j|�S(N(tdone(tselftnum((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt<lambda>RtrelieftborderwidthitsidetWM_DELETE_WINDOW(tTopleveltrootttitleticonnametMessagetmessagetpacktBOTHtFrametframeRtcanceltdefaulttbindtreturn_eventtrangetlentButtontconfigtRIDGEtLEFTtprotocoltwm_delete_windowt_set_transient(R tmasterRtbuttonsRRRRRtstb((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt__init__ s. g�?g333333�?c Csh|j}|j�|j|�|j�|j�ri|j�}|j�}|j�}|j�}n"|j �}|j �}d}}|j�} |j�} ||| |}||| |}|| |j �kr�|j �| }n|dkrd}n|| |j �kr.|j �| }n|dkrCd}n|j d||f�|j�dS(Nis+%d+%d(Rtwithdrawt transienttupdate_idletaskstwinfo_ismappedtwinfo_widthtwinfo_heighttwinfo_rootxtwinfo_rootytwinfo_screenwidthtwinfo_screenheighttwinfo_reqwidthtwinfo_reqheighttgeometryt deiconify( R R(trelxtrelytwidgettm_widthtm_heighttm_xtm_ytw_widthtw_heighttxty((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR'%s4 cCs;|jj�|jj�|jj�|jj�|jS(N(Rtwait_visibilitytgrab_settmainlooptdestroyR(R ((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pytgoBs cCs3|jdkr|jj�n|j|j�dS(N(RtNoneRtbellR (R tevent((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyRIscCs3|jdkr|jj�n|j|j�dS(N(RRKRRLR (R ((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR&OscCs||_|jj�dS(N(RRtquit(R R((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyR Us N( t__name__t __module__RKR,R'RJRR&R (((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyRs t__main__cCsjt�}|d�}t|ddd|�}|j�t|ddd|j�}|j�|j�dS(NcSsBt|ddddddgddd d dd�}|j�GHdS( NRs�This is a test dialog. Would this have been an actual dialog, the buttons below would have been glowing in soft pink light. Do you believe this?R)tYestNotCancelRiRiRsTest Dialog(RRJ(Rtd((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pytdoit^s RtTestRtQuit(tTkR!RRNRH(RRVtttq((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyttest\s N((t__doc__tTkinterRROR\(((s+/usr/lib64/python2.7/lib-tk/SimpleDialog.pyt<module>s S Tix.py000064400000226637151703463030005704 0ustar00# Tix.py -- Tix widget wrappers. # # For Tix, see http://tix.sourceforge.net # # - Sudhir Shenoy (sshenoy@gol.com), Dec. 1995. # based on an idea of Jean-Marc Lugrin (lugrin@ms.com) # # NOTE: In order to minimize changes to Tkinter.py, some of the code here # (TixWidget.__init__) has been taken from Tkinter (Widget.__init__) # and will break if there are major changes in Tkinter. # # The Tix widgets are represented by a class hierarchy in python with proper # inheritance of base classes. # # As a result after creating a 'w = StdButtonBox', I can write # w.ok['text'] = 'Who Cares' # or w.ok['bg'] = w['bg'] # or even w.ok.invoke() # etc. # # Compare the demo tixwidgets.py to the original Tcl program and you will # appreciate the advantages. # import os import Tkinter from Tkinter import * from Tkinter import _flatten, _cnfmerge # WARNING - TkVersion is a limited precision floating point number if TkVersion < 3.999: raise ImportError, "This version of Tix.py requires Tk 4.0 or higher" import _tkinter # If this fails your Python may not be configured for Tk # Some more constants (for consistency with Tkinter) WINDOW = 'window' TEXT = 'text' STATUS = 'status' IMMEDIATE = 'immediate' IMAGE = 'image' IMAGETEXT = 'imagetext' BALLOON = 'balloon' AUTO = 'auto' ACROSSTOP = 'acrosstop' # A few useful constants for the Grid widget ASCII = 'ascii' CELL = 'cell' COLUMN = 'column' DECREASING = 'decreasing' INCREASING = 'increasing' INTEGER = 'integer' MAIN = 'main' MAX = 'max' REAL = 'real' ROW = 'row' S_REGION = 's-region' X_REGION = 'x-region' Y_REGION = 'y-region' # Some constants used by Tkinter dooneevent() TCL_DONT_WAIT = 1 << 1 TCL_WINDOW_EVENTS = 1 << 2 TCL_FILE_EVENTS = 1 << 3 TCL_TIMER_EVENTS = 1 << 4 TCL_IDLE_EVENTS = 1 << 5 TCL_ALL_EVENTS = 0 # BEWARE - this is implemented by copying some code from the Widget class # in Tkinter (to override Widget initialization) and is therefore # liable to break. # Could probably add this to Tkinter.Misc class tixCommand: """The tix commands provide access to miscellaneous elements of Tix's internal state and the Tix application context. Most of the information manipulated by these commands pertains to the application as a whole, or to a screen or display, rather than to a particular window. This is a mixin class, assumed to be mixed to Tkinter.Tk that supports the self.tk.call method. """ def tix_addbitmapdir(self, directory): """Tix maintains a list of directories under which the tix_getimage and tix_getbitmap commands will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The addbitmapdir command adds directory into this list. By using this command, the image files of an applications can also be located using the tix_getimage or tix_getbitmap command. """ return self.tk.call('tix', 'addbitmapdir', directory) def tix_cget(self, option): """Returns the current value of the configuration option given by option. Option may be any of the options described in the CONFIGURATION OPTIONS section. """ return self.tk.call('tix', 'cget', option) def tix_configure(self, cnf=None, **kw): """Query or modify the configuration options of the Tix application context. If no option is specified, returns a dictionary all of the available options. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given option(s) to have the given value(s); in this case the command returns an empty string. Option may be any of the configuration options. """ # Copied from Tkinter.py if kw: cnf = _cnfmerge((cnf, kw)) elif cnf: cnf = _cnfmerge(cnf) if cnf is None: return self._getconfigure('tix', 'configure') if isinstance(cnf, StringType): return self._getconfigure1('tix', 'configure', '-'+cnf) return self.tk.call(('tix', 'configure') + self._options(cnf)) def tix_filedialog(self, dlgclass=None): """Returns the file selection dialog that may be shared among different calls from this application. This command will create a file selection dialog widget when it is called the first time. This dialog will be returned by all subsequent calls to tix_filedialog. An optional dlgclass parameter can be passed to specified what type of file selection dialog widget is desired. Possible options are tix FileSelectDialog or tixExFileSelectDialog. """ if dlgclass is not None: return self.tk.call('tix', 'filedialog', dlgclass) else: return self.tk.call('tix', 'filedialog') def tix_getbitmap(self, name): """Locates a bitmap file of the name name.xpm or name in one of the bitmap directories (see the tix_addbitmapdir command above). By using tix_getbitmap, you can avoid hard coding the pathnames of the bitmap files in your application. When successful, it returns the complete pathname of the bitmap file, prefixed with the character '@'. The returned value can be used to configure the -bitmap option of the TK and Tix widgets. """ return self.tk.call('tix', 'getbitmap', name) def tix_getimage(self, name): """Locates an image file of the name name.xpm, name.xbm or name.ppm in one of the bitmap directories (see the addbitmapdir command above). If more than one file with the same name (but different extensions) exist, then the image type is chosen according to the depth of the X display: xbm images are chosen on monochrome displays and color images are chosen on color displays. By using tix_ getimage, you can avoid hard coding the pathnames of the image files in your application. When successful, this command returns the name of the newly created image, which can be used to configure the -image option of the Tk and Tix widgets. """ return self.tk.call('tix', 'getimage', name) def tix_option_get(self, name): """Gets the options maintained by the Tix scheme mechanism. Available options include: active_bg active_fg bg bold_font dark1_bg dark1_fg dark2_bg dark2_fg disabled_fg fg fixed_font font inactive_bg inactive_fg input1_bg input2_bg italic_font light1_bg light1_fg light2_bg light2_fg menu_font output1_bg output2_bg select_bg select_fg selector """ # could use self.tk.globalgetvar('tixOption', name) return self.tk.call('tix', 'option', 'get', name) def tix_resetoptions(self, newScheme, newFontSet, newScmPrio=None): """Resets the scheme and fontset of the Tix application to newScheme and newFontSet, respectively. This affects only those widgets created after this call. Therefore, it is best to call the resetoptions command before the creation of any widgets in a Tix application. The optional parameter newScmPrio can be given to reset the priority level of the Tk options set by the Tix schemes. Because of the way Tk handles the X option database, after Tix has been has imported and inited, it is not possible to reset the color schemes and font sets using the tix config command. Instead, the tix_resetoptions command must be used. """ if newScmPrio is not None: return self.tk.call('tix', 'resetoptions', newScheme, newFontSet, newScmPrio) else: return self.tk.call('tix', 'resetoptions', newScheme, newFontSet) class Tk(Tkinter.Tk, tixCommand): """Toplevel widget of Tix which represents mostly the main window of an application. It has an associated Tcl interpreter.""" def __init__(self, screenName=None, baseName=None, className='Tix'): Tkinter.Tk.__init__(self, screenName, baseName, className) tixlib = os.environ.get('TIX_LIBRARY') self.tk.eval('global auto_path; lappend auto_path [file dir [info nameof]]') if tixlib is not None: self.tk.eval('global auto_path; lappend auto_path {%s}' % tixlib) self.tk.eval('global tcl_pkgPath; lappend tcl_pkgPath {%s}' % tixlib) # Load Tix - this should work dynamically or statically # If it's static, tcl/tix8.1/pkgIndex.tcl should have # 'load {} Tix' # If it's dynamic under Unix, tcl/tix8.1/pkgIndex.tcl should have # 'load libtix8.1.8.3.so Tix' self.tk.eval('package require Tix') def destroy(self): # For safety, remove the delete_window binding before destroy self.protocol("WM_DELETE_WINDOW", "") Tkinter.Tk.destroy(self) # The Tix 'tixForm' geometry manager class Form: """The Tix Form geometry manager Widgets can be arranged by specifying attachments to other widgets. See Tix documentation for complete details""" def config(self, cnf={}, **kw): self.tk.call('tixForm', self._w, *self._options(cnf, kw)) form = config def __setitem__(self, key, value): Form.form(self, {key: value}) def check(self): return self.tk.call('tixForm', 'check', self._w) def forget(self): self.tk.call('tixForm', 'forget', self._w) def grid(self, xsize=0, ysize=0): if (not xsize) and (not ysize): x = self.tk.call('tixForm', 'grid', self._w) y = self.tk.splitlist(x) z = () for x in y: z = z + (self.tk.getint(x),) return z return self.tk.call('tixForm', 'grid', self._w, xsize, ysize) def info(self, option=None): if not option: return self.tk.call('tixForm', 'info', self._w) if option[0] != '-': option = '-' + option return self.tk.call('tixForm', 'info', self._w, option) def slaves(self): return map(self._nametowidget, self.tk.splitlist( self.tk.call( 'tixForm', 'slaves', self._w))) Tkinter.Widget.__bases__ = Tkinter.Widget.__bases__ + (Form,) class TixWidget(Tkinter.Widget): """A TixWidget class is used to package all (or most) Tix widgets. Widget initialization is extended in two ways: 1) It is possible to give a list of options which must be part of the creation command (so called Tix 'static' options). These cannot be given as a 'config' command later. 2) It is possible to give the name of an existing TK widget. These are child widgets created automatically by a Tix mega-widget. The Tk call to create these widgets is therefore bypassed in TixWidget.__init__ Both options are for use by subclasses only. """ def __init__ (self, master=None, widgetName=None, static_options=None, cnf={}, kw={}): # Merge keywords and dictionary arguments if kw: cnf = _cnfmerge((cnf, kw)) else: cnf = _cnfmerge(cnf) # Move static options into extra. static_options must be # a list of keywords (or None). extra=() # 'options' is always a static option if static_options: static_options.append('options') else: static_options = ['options'] for k,v in cnf.items()[:]: if k in static_options: extra = extra + ('-' + k, v) del cnf[k] self.widgetName = widgetName Widget._setup(self, master, cnf) # If widgetName is None, this is a dummy creation call where the # corresponding Tk widget has already been created by Tix if widgetName: self.tk.call(widgetName, self._w, *extra) # Non-static options - to be done via a 'config' command if cnf: Widget.config(self, cnf) # Dictionary to hold subwidget names for easier access. We can't # use the children list because the public Tix names may not be the # same as the pathname component self.subwidget_list = {} # We set up an attribute access function so that it is possible to # do w.ok['text'] = 'Hello' rather than w.subwidget('ok')['text'] = 'Hello' # when w is a StdButtonBox. # We can even do w.ok.invoke() because w.ok is subclassed from the # Button class if you go through the proper constructors def __getattr__(self, name): if name in self.subwidget_list: return self.subwidget_list[name] raise AttributeError, name def set_silent(self, value): """Set a variable without calling its action routine""" self.tk.call('tixSetSilent', self._w, value) def subwidget(self, name): """Return the named subwidget (which must have been created by the sub-class).""" n = self._subwidget_name(name) if not n: raise TclError, "Subwidget " + name + " not child of " + self._name # Remove header of name and leading dot n = n[len(self._w)+1:] return self._nametowidget(n) def subwidgets_all(self): """Return all subwidgets.""" names = self._subwidget_names() if not names: return [] retlist = [] for name in names: name = name[len(self._w)+1:] try: retlist.append(self._nametowidget(name)) except: # some of the widgets are unknown e.g. border in LabelFrame pass return retlist def _subwidget_name(self,name): """Get a subwidget name (returns a String, not a Widget !)""" try: return self.tk.call(self._w, 'subwidget', name) except TclError: return None def _subwidget_names(self): """Return the name of all subwidgets.""" try: x = self.tk.call(self._w, 'subwidgets', '-all') return self.tk.splitlist(x) except TclError: return None def config_all(self, option, value): """Set configuration options for all subwidgets (and self).""" if option == '': return elif not isinstance(option, StringType): option = repr(option) if not isinstance(value, StringType): value = repr(value) names = self._subwidget_names() for name in names: self.tk.call(name, 'configure', '-' + option, value) # These are missing from Tkinter def image_create(self, imgtype, cnf={}, master=None, **kw): if not master: master = Tkinter._default_root if not master: raise RuntimeError, 'Too early to create image' if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw options = () for k, v in cnf.items(): if hasattr(v, '__call__'): v = self._register(v) options = options + ('-'+k, v) return master.tk.call(('image', 'create', imgtype,) + options) def image_delete(self, imgname): try: self.tk.call('image', 'delete', imgname) except TclError: # May happen if the root was destroyed pass # Subwidgets are child widgets created automatically by mega-widgets. # In python, we have to create these subwidgets manually to mirror their # existence in Tk/Tix. class TixSubWidget(TixWidget): """Subwidget class. This is used to mirror child widgets automatically created by Tix/Tk as part of a mega-widget in Python (which is not informed of this)""" def __init__(self, master, name, destroy_physically=1, check_intermediate=1): if check_intermediate: path = master._subwidget_name(name) try: path = path[len(master._w)+1:] plist = path.split('.') except: plist = [] if not check_intermediate: # immediate descendant TixWidget.__init__(self, master, None, None, {'name' : name}) else: # Ensure that the intermediate widgets exist parent = master for i in range(len(plist) - 1): n = '.'.join(plist[:i+1]) try: w = master._nametowidget(n) parent = w except KeyError: # Create the intermediate widget parent = TixSubWidget(parent, plist[i], destroy_physically=0, check_intermediate=0) # The Tk widget name is in plist, not in name if plist: name = plist[-1] TixWidget.__init__(self, parent, None, None, {'name' : name}) self.destroy_physically = destroy_physically def destroy(self): # For some widgets e.g., a NoteBook, when we call destructors, # we must be careful not to destroy the frame widget since this # also destroys the parent NoteBook thus leading to an exception # in Tkinter when it finally calls Tcl to destroy the NoteBook for c in self.children.values(): c.destroy() if self._name in self.master.children: del self.master.children[self._name] if self._name in self.master.subwidget_list: del self.master.subwidget_list[self._name] if self.destroy_physically: # This is bypassed only for a few widgets self.tk.call('destroy', self._w) # Useful class to create a display style - later shared by many items. # Contributed by Steffen Kremser class DisplayStyle: """DisplayStyle - handle configuration options shared by (multiple) Display Items""" def __init__(self, itemtype, cnf={}, **kw): if 'refwindow' in kw: master = kw['refwindow'] elif 'refwindow' in cnf: master = cnf['refwindow'] else: master = Tkinter._default_root if not master: raise RuntimeError("Too early to create display style: no root window") self.tk = master.tk self.stylename = self.tk.call('tixDisplayStyle', itemtype, *self._options(cnf,kw) ) def __str__(self): return self.stylename def _options(self, cnf, kw): if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw opts = () for k, v in cnf.items(): opts = opts + ('-'+k, v) return opts def delete(self): self.tk.call(self.stylename, 'delete') def __setitem__(self,key,value): self.tk.call(self.stylename, 'configure', '-%s'%key, value) def config(self, cnf={}, **kw): return self._getconfigure( self.stylename, 'configure', *self._options(cnf,kw)) def __getitem__(self,key): return self.tk.call(self.stylename, 'cget', '-%s'%key) ###################################################### ### The Tix Widget classes - in alphabetical order ### ###################################################### class Balloon(TixWidget): """Balloon help widget. Subwidget Class --------- ----- label Label message Message""" # FIXME: It should inherit -superclass tixShell def __init__(self, master=None, cnf={}, **kw): # static seem to be -installcolormap -initwait -statusbar -cursor static = ['options', 'installcolormap', 'initwait', 'statusbar', 'cursor'] TixWidget.__init__(self, master, 'tixBalloon', static, cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label', destroy_physically=0) self.subwidget_list['message'] = _dummyLabel(self, 'message', destroy_physically=0) def bind_widget(self, widget, cnf={}, **kw): """Bind balloon widget to another. One balloon widget may be bound to several widgets at the same time""" self.tk.call(self._w, 'bind', widget._w, *self._options(cnf, kw)) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) class ButtonBox(TixWidget): """ButtonBox - A container for pushbuttons. Subwidgets are the buttons added with the add method. """ def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixButtonBox', ['orientation', 'options'], cnf, kw) def add(self, name, cnf={}, **kw): """Add a button with given name to box.""" btn = self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return btn def invoke(self, name): if name in self.subwidget_list: self.tk.call(self._w, 'invoke', name) class ComboBox(TixWidget): """ComboBox - an Entry field with a dropdown menu. The user can select a choice by either typing in the entry subwidget or selecting from the listbox subwidget. Subwidget Class --------- ----- entry Entry arrow Button slistbox ScrolledListBox tick Button cross Button : present if created with the fancy option""" # FIXME: It should inherit -superclass tixLabelWidget def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixComboBox', ['editable', 'dropdown', 'fancy', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 'slistbox') try: self.subwidget_list['tick'] = _dummyButton(self, 'tick') self.subwidget_list['cross'] = _dummyButton(self, 'cross') except TypeError: # unavailable when -fancy not specified pass # align def add_history(self, str): self.tk.call(self._w, 'addhistory', str) def append_history(self, str): self.tk.call(self._w, 'appendhistory', str) def insert(self, index, str): self.tk.call(self._w, 'insert', index, str) def pick(self, index): self.tk.call(self._w, 'pick', index) class Control(TixWidget): """Control - An entry field with value change arrows. The user can adjust the value by pressing the two arrow buttons or by entering the value directly into the entry. The new value will be checked against the user-defined upper and lower limits. Subwidget Class --------- ----- incr Button decr Button entry Entry label Label""" # FIXME: It should inherit -superclass tixLabelWidget def __init__ (self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixControl', ['options'], cnf, kw) self.subwidget_list['incr'] = _dummyButton(self, 'incr') self.subwidget_list['decr'] = _dummyButton(self, 'decr') self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def decrement(self): self.tk.call(self._w, 'decr') def increment(self): self.tk.call(self._w, 'incr') def invoke(self): self.tk.call(self._w, 'invoke') def update(self): self.tk.call(self._w, 'update') class DirList(TixWidget): """DirList - displays a list view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" # FIXME: It should inherit -superclass tixScrolledHList def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirList', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') def chdir(self, dir): self.tk.call(self._w, 'chdir', dir) class DirTree(TixWidget): """DirTree - Directory Listing in a hierarchical view. Displays a tree view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb Scrollbar""" # FIXME: It should inherit -superclass tixScrolledHList def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirTree', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') def chdir(self, dir): self.tk.call(self._w, 'chdir', dir) class DirSelectBox(TixWidget): """DirSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirSelectBox', ['options'], cnf, kw) self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') class ExFileSelectBox(TixWidget): """ExFileSelectBox - MS Windows style file select box. It provides a convenient method for the user to select files. Subwidget Class --------- ----- cancel Button ok Button hidden Checkbutton types ComboBox dir ComboBox file ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectBox', ['options'], cnf, kw) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') def filter(self): self.tk.call(self._w, 'filter') def invoke(self): self.tk.call(self._w, 'invoke') # Should inherit from a Dialog class class DirSelectDialog(TixWidget): """The DirSelectDialog widget presents the directories in the file system in a dialog window. The user can use this dialog window to navigate through the file system to select the desired directory. Subwidgets Class ---------- ----- dirbox DirSelectDialog""" # FIXME: It should inherit -superclass tixDialogShell def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixDirSelectDialog', ['options'], cnf, kw) self.subwidget_list['dirbox'] = _dummyDirSelectBox(self, 'dirbox') # cancel and ok buttons are missing def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') # Should inherit from a Dialog class class ExFileSelectDialog(TixWidget): """ExFileSelectDialog - MS Windows style file select dialog. It provides a convenient method for the user to select files. Subwidgets Class ---------- ----- fsbox ExFileSelectBox""" # FIXME: It should inherit -superclass tixDialogShell def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixExFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['fsbox'] = _dummyExFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') class FileSelectBox(TixWidget): """ExFileSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBox""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectBox', ['options'], cnf, kw) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') def apply_filter(self): # name of subwidget is same as command self.tk.call(self._w, 'filter') def invoke(self): self.tk.call(self._w, 'invoke') # Should inherit from a Dialog class class FileSelectDialog(TixWidget): """FileSelectDialog - Motif style file select dialog. Subwidgets Class ---------- ----- btns StdButtonBox fsbox FileSelectBox""" # FIXME: It should inherit -superclass tixStdDialogShell def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileSelectDialog', ['options'], cnf, kw) self.subwidget_list['btns'] = _dummyStdButtonBox(self, 'btns') self.subwidget_list['fsbox'] = _dummyFileSelectBox(self, 'fsbox') def popup(self): self.tk.call(self._w, 'popup') def popdown(self): self.tk.call(self._w, 'popdown') class FileEntry(TixWidget): """FileEntry - Entry field with button that invokes a FileSelectDialog. The user can type in the filename manually. Alternatively, the user can press the button widget that sits next to the entry, which will bring up a file selection dialog. Subwidgets Class ---------- ----- button Button entry Entry""" # FIXME: It should inherit -superclass tixLabelWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixFileEntry', ['dialogtype', 'options'], cnf, kw) self.subwidget_list['button'] = _dummyButton(self, 'button') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') def invoke(self): self.tk.call(self._w, 'invoke') def file_dialog(self): # FIXME: return python object pass class HList(TixWidget, XView, YView): """HList - Hierarchy display widget can be used to display any data that have a hierarchical structure, for example, file system directory trees. The list entries are indented and connected by branch lines according to their places in the hierarchy. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixHList', ['columns', 'options'], cnf, kw) def add(self, entry, cnf={}, **kw): return self.tk.call(self._w, 'add', entry, *self._options(cnf, kw)) def add_child(self, parent=None, cnf={}, **kw): if not parent: parent = '' return self.tk.call( self._w, 'addchild', parent, *self._options(cnf, kw)) def anchor_set(self, entry): self.tk.call(self._w, 'anchor', 'set', entry) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def column_width(self, col=0, width=None, chars=None): if not chars: return self.tk.call(self._w, 'column', 'width', col, width) else: return self.tk.call(self._w, 'column', 'width', col, '-char', chars) def delete_all(self): self.tk.call(self._w, 'delete', 'all') def delete_entry(self, entry): self.tk.call(self._w, 'delete', 'entry', entry) def delete_offsprings(self, entry): self.tk.call(self._w, 'delete', 'offsprings', entry) def delete_siblings(self, entry): self.tk.call(self._w, 'delete', 'siblings', entry) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def header_create(self, col, cnf={}, **kw): self.tk.call(self._w, 'header', 'create', col, *self._options(cnf, kw)) def header_configure(self, col, cnf={}, **kw): if cnf is None: return self._getconfigure(self._w, 'header', 'configure', col) self.tk.call(self._w, 'header', 'configure', col, *self._options(cnf, kw)) def header_cget(self, col, opt): return self.tk.call(self._w, 'header', 'cget', col, opt) def header_exists(self, col): # A workaround to Tix library bug (issue #25464). # The documented command is "exists", but only erroneous "exist" is # accepted. return self.tk.getboolean(self.tk.call(self._w, 'header', 'exist', col)) header_exist = header_exists def header_delete(self, col): self.tk.call(self._w, 'header', 'delete', col) def header_size(self, col): return self.tk.call(self._w, 'header', 'size', col) def hide_entry(self, entry): self.tk.call(self._w, 'hide', 'entry', entry) def indicator_create(self, entry, cnf={}, **kw): self.tk.call( self._w, 'indicator', 'create', entry, *self._options(cnf, kw)) def indicator_configure(self, entry, cnf={}, **kw): if cnf is None: return self._getconfigure( self._w, 'indicator', 'configure', entry) self.tk.call( self._w, 'indicator', 'configure', entry, *self._options(cnf, kw)) def indicator_cget(self, entry, opt): return self.tk.call(self._w, 'indicator', 'cget', entry, opt) def indicator_exists(self, entry): return self.tk.call (self._w, 'indicator', 'exists', entry) def indicator_delete(self, entry): self.tk.call(self._w, 'indicator', 'delete', entry) def indicator_size(self, entry): return self.tk.call(self._w, 'indicator', 'size', entry) def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_bbox(self, entry): return self._getints( self.tk.call(self._w, 'info', 'bbox', entry)) or None def info_children(self, entry=None): c = self.tk.call(self._w, 'info', 'children', entry) return self.tk.splitlist(c) def info_data(self, entry): return self.tk.call(self._w, 'info', 'data', entry) def info_dragsite(self): return self.tk.call(self._w, 'info', 'dragsite') def info_dropsite(self): return self.tk.call(self._w, 'info', 'dropsite') def info_exists(self, entry): return self.tk.call(self._w, 'info', 'exists', entry) def info_hidden(self, entry): return self.tk.call(self._w, 'info', 'hidden', entry) def info_next(self, entry): return self.tk.call(self._w, 'info', 'next', entry) def info_parent(self, entry): return self.tk.call(self._w, 'info', 'parent', entry) def info_prev(self, entry): return self.tk.call(self._w, 'info', 'prev', entry) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def item_cget(self, entry, col, opt): return self.tk.call(self._w, 'item', 'cget', entry, col, opt) def item_configure(self, entry, col, cnf={}, **kw): if cnf is None: return self._getconfigure(self._w, 'item', 'configure', entry, col) self.tk.call(self._w, 'item', 'configure', entry, col, *self._options(cnf, kw)) def item_create(self, entry, col, cnf={}, **kw): self.tk.call( self._w, 'item', 'create', entry, col, *self._options(cnf, kw)) def item_exists(self, entry, col): return self.tk.call(self._w, 'item', 'exists', entry, col) def item_delete(self, entry, col): self.tk.call(self._w, 'item', 'delete', entry, col) def entrycget(self, entry, opt): return self.tk.call(self._w, 'entrycget', entry, opt) def entryconfigure(self, entry, cnf={}, **kw): if cnf is None: return self._getconfigure(self._w, 'entryconfigure', entry) self.tk.call(self._w, 'entryconfigure', entry, *self._options(cnf, kw)) def nearest(self, y): return self.tk.call(self._w, 'nearest', y) def see(self, entry): self.tk.call(self._w, 'see', entry) def selection_clear(self, cnf={}, **kw): self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) def selection_includes(self, entry): return self.tk.call(self._w, 'selection', 'includes', entry) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) def show_entry(self, entry): return self.tk.call(self._w, 'show', 'entry', entry) class InputOnly(TixWidget): """InputOnly - Invisible widget. Unix only. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixInputOnly', None, cnf, kw) class LabelEntry(TixWidget): """LabelEntry - Entry field with label. Packages an entry widget and a label into one mega widget. It can be used to simplify the creation of ``entry-form'' type of interface. Subwidgets Class ---------- ----- label Label entry Entry""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelEntry', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') class LabelFrame(TixWidget): """LabelFrame - Labelled Frame container. Packages a frame widget and a label into one mega widget. To create widgets inside a LabelFrame widget, one creates the new widgets relative to the frame subwidget and manage them inside the frame subwidget. Subwidgets Class ---------- ----- label Label frame Frame""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixLabelFrame', ['labelside','options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['frame'] = _dummyFrame(self, 'frame') class ListNoteBook(TixWidget): """A ListNoteBook widget is very similar to the TixNoteBook widget: it can be used to display many windows in a limited space using a notebook metaphor. The notebook is divided into a stack of pages (windows). At one time only one of these pages can be shown. The user can navigate through these pages by choosing the name of the desired page in the hlist subwidget.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixListNoteBook', ['options'], cnf, kw) # Is this necessary? It's not an exposed subwidget in Tix. self.subwidget_list['pane'] = _dummyPanedWindow(self, 'pane', destroy_physically=0) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['shlist'] = _dummyScrolledHList(self, 'shlist') def add(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) self.subwidget_list[name] = TixSubWidget(self, name) return self.subwidget_list[name] def page(self, name): return self.subwidget(name) def pages(self): # Can't call subwidgets_all directly because we don't want .nbframe names = self.tk.split(self.tk.call(self._w, 'pages')) ret = [] for x in names: ret.append(self.subwidget(x)) return ret def raise_page(self, name): # raise is a python keyword self.tk.call(self._w, 'raise', name) class Meter(TixWidget): """The Meter widget can be used to show the progress of a background job which may take a long time to execute. """ def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixMeter', ['options'], cnf, kw) class NoteBook(TixWidget): """NoteBook - Multi-page container widget (tabbed notebook metaphor). Subwidgets Class ---------- ----- nbframe NoteBookFrame <pages> page widgets added dynamically with the add method""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self,master,'tixNoteBook', ['options'], cnf, kw) self.subwidget_list['nbframe'] = TixSubWidget(self, 'nbframe', destroy_physically=0) def add(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) self.subwidget_list[name] = TixSubWidget(self, name) return self.subwidget_list[name] def delete(self, name): self.tk.call(self._w, 'delete', name) self.subwidget_list[name].destroy() del self.subwidget_list[name] def page(self, name): return self.subwidget(name) def pages(self): # Can't call subwidgets_all directly because we don't want .nbframe names = self.tk.split(self.tk.call(self._w, 'pages')) ret = [] for x in names: ret.append(self.subwidget(x)) return ret def raise_page(self, name): # raise is a python keyword self.tk.call(self._w, 'raise', name) def raised(self): return self.tk.call(self._w, 'raised') class NoteBookFrame(TixWidget): # FIXME: This is dangerous to expose to be called on its own. pass class OptionMenu(TixWidget): """OptionMenu - creates a menu button of options. Subwidget Class --------- ----- menubutton Menubutton menu Menu""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixOptionMenu', ['labelside', 'options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def add_command(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', 'command', name, *self._options(cnf, kw)) def add_separator(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', 'separator', name, *self._options(cnf, kw)) def delete(self, name): self.tk.call(self._w, 'delete', name) def disable(self, name): self.tk.call(self._w, 'disable', name) def enable(self, name): self.tk.call(self._w, 'enable', name) class PanedWindow(TixWidget): """PanedWindow - Multi-pane container widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally.The user changes the sizes of the panes by dragging the resize handle between two panes. Subwidgets Class ---------- ----- <panes> g/p widgets added dynamically with the add method.""" def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPanedWindow', ['orientation', 'options'], cnf, kw) # add delete forget panecget paneconfigure panes setsize def add(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) self.subwidget_list[name] = TixSubWidget(self, name, check_intermediate=0) return self.subwidget_list[name] def delete(self, name): self.tk.call(self._w, 'delete', name) self.subwidget_list[name].destroy() del self.subwidget_list[name] def forget(self, name): self.tk.call(self._w, 'forget', name) def panecget(self, entry, opt): return self.tk.call(self._w, 'panecget', entry, opt) def paneconfigure(self, entry, cnf={}, **kw): if cnf is None: return self._getconfigure(self._w, 'paneconfigure', entry) self.tk.call(self._w, 'paneconfigure', entry, *self._options(cnf, kw)) def panes(self): names = self.tk.splitlist(self.tk.call(self._w, 'panes')) return [self.subwidget(x) for x in names] class PopupMenu(TixWidget): """PopupMenu widget can be used as a replacement of the tk_popup command. The advantage of the Tix PopupMenu widget is it requires less application code to manipulate. Subwidgets Class ---------- ----- menubutton Menubutton menu Menu""" # FIXME: It should inherit -superclass tixShell def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixPopupMenu', ['options'], cnf, kw) self.subwidget_list['menubutton'] = _dummyMenubutton(self, 'menubutton') self.subwidget_list['menu'] = _dummyMenu(self, 'menu') def bind_widget(self, widget): self.tk.call(self._w, 'bind', widget._w) def unbind_widget(self, widget): self.tk.call(self._w, 'unbind', widget._w) def post_widget(self, widget, x, y): self.tk.call(self._w, 'post', widget._w, x, y) class ResizeHandle(TixWidget): """Internal widget to draw resize handles on Scrolled widgets.""" def __init__(self, master, cnf={}, **kw): # There seems to be a Tix bug rejecting the configure method # Let's try making the flags -static flags = ['options', 'command', 'cursorfg', 'cursorbg', 'handlesize', 'hintcolor', 'hintwidth', 'x', 'y'] # In fact, x y height width are configurable TixWidget.__init__(self, master, 'tixResizeHandle', flags, cnf, kw) def attach_widget(self, widget): self.tk.call(self._w, 'attachwidget', widget._w) def detach_widget(self, widget): self.tk.call(self._w, 'detachwidget', widget._w) def hide(self, widget): self.tk.call(self._w, 'hide', widget._w) def show(self, widget): self.tk.call(self._w, 'show', widget._w) class ScrolledHList(TixWidget): """ScrolledHList - HList with automatic scrollbars.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledHList', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledListBox(TixWidget): """ScrolledListBox - Listbox with automatic scrollbars.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledListBox', ['options'], cnf, kw) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledText(TixWidget): """ScrolledText - Text with automatic scrollbars.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledText', ['options'], cnf, kw) self.subwidget_list['text'] = _dummyText(self, 'text') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledTList(TixWidget): """ScrolledTList - TList with automatic scrollbars.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledTList', ['options'], cnf, kw) self.subwidget_list['tlist'] = _dummyTList(self, 'tlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class ScrolledWindow(TixWidget): """ScrolledWindow - Window with automatic scrollbars.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixScrolledWindow', ['options'], cnf, kw) self.subwidget_list['window'] = _dummyFrame(self, 'window') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class Select(TixWidget): """Select - Container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user. Subwidgets are buttons added dynamically using the add method.""" # FIXME: It should inherit -superclass tixLabelWidget def __init__(self, master, cnf={}, **kw): TixWidget.__init__(self, master, 'tixSelect', ['allowzero', 'radio', 'orientation', 'labelside', 'options'], cnf, kw) self.subwidget_list['label'] = _dummyLabel(self, 'label') def add(self, name, cnf={}, **kw): self.tk.call(self._w, 'add', name, *self._options(cnf, kw)) self.subwidget_list[name] = _dummyButton(self, name) return self.subwidget_list[name] def invoke(self, name): self.tk.call(self._w, 'invoke', name) class Shell(TixWidget): """Toplevel window. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixShell', ['options', 'title'], cnf, kw) class DialogShell(TixWidget): """Toplevel window, with popup popdown and center methods. It tells the window manager that it is a dialog window and should be treated specially. The exact treatment depends on the treatment of the window manager. Subwidgets - None""" # FIXME: It should inherit from Shell def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixDialogShell', ['options', 'title', 'mapped', 'minheight', 'minwidth', 'parent', 'transient'], cnf, kw) def popdown(self): self.tk.call(self._w, 'popdown') def popup(self): self.tk.call(self._w, 'popup') def center(self): self.tk.call(self._w, 'center') class StdButtonBox(TixWidget): """StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) """ def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixStdButtonBox', ['orientation', 'options'], cnf, kw) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') def invoke(self, name): if name in self.subwidget_list: self.tk.call(self._w, 'invoke', name) class TList(TixWidget, XView, YView): """TList - Hierarchy display widget which can be used to display data in a tabular format. The list entries of a TList widget are similar to the entries in the Tk listbox widget. The main differences are (1) the TList widget can display the list entries in a two dimensional format and (2) you can use graphical images as well as multiple colors and fonts for the list entries. Subwidgets - None""" def __init__ (self,master=None,cnf={}, **kw): TixWidget.__init__(self, master, 'tixTList', ['options'], cnf, kw) def active_set(self, index): self.tk.call(self._w, 'active', 'set', index) def active_clear(self): self.tk.call(self._w, 'active', 'clear') def anchor_set(self, index): self.tk.call(self._w, 'anchor', 'set', index) def anchor_clear(self): self.tk.call(self._w, 'anchor', 'clear') def delete(self, from_, to=None): self.tk.call(self._w, 'delete', from_, to) def dragsite_set(self, index): self.tk.call(self._w, 'dragsite', 'set', index) def dragsite_clear(self): self.tk.call(self._w, 'dragsite', 'clear') def dropsite_set(self, index): self.tk.call(self._w, 'dropsite', 'set', index) def dropsite_clear(self): self.tk.call(self._w, 'dropsite', 'clear') def insert(self, index, cnf={}, **kw): self.tk.call(self._w, 'insert', index, *self._options(cnf, kw)) def info_active(self): return self.tk.call(self._w, 'info', 'active') def info_anchor(self): return self.tk.call(self._w, 'info', 'anchor') def info_down(self, index): return self.tk.call(self._w, 'info', 'down', index) def info_left(self, index): return self.tk.call(self._w, 'info', 'left', index) def info_right(self, index): return self.tk.call(self._w, 'info', 'right', index) def info_selection(self): c = self.tk.call(self._w, 'info', 'selection') return self.tk.splitlist(c) def info_size(self): return self.tk.call(self._w, 'info', 'size') def info_up(self, index): return self.tk.call(self._w, 'info', 'up', index) def nearest(self, x, y): return self.tk.call(self._w, 'nearest', x, y) def see(self, index): self.tk.call(self._w, 'see', index) def selection_clear(self, cnf={}, **kw): self.tk.call(self._w, 'selection', 'clear', *self._options(cnf, kw)) def selection_includes(self, index): return self.tk.call(self._w, 'selection', 'includes', index) def selection_set(self, first, last=None): self.tk.call(self._w, 'selection', 'set', first, last) class Tree(TixWidget): """Tree - The tixTree widget can be used to display hierarchical data in a tree form. The user can adjust the view of the tree by opening or closing parts of the tree.""" # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixTree', ['options'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') def autosetmode(self): '''This command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.''' self.tk.call(self._w, 'autosetmode') def close(self, entrypath): '''Close the entry given by entryPath if its mode is close.''' self.tk.call(self._w, 'close', entrypath) def getmode(self, entrypath): '''Returns the current mode of the entry given by entryPath.''' return self.tk.call(self._w, 'getmode', entrypath) def open(self, entrypath): '''Open the entry given by entryPath if its mode is open.''' self.tk.call(self._w, 'open', entrypath) def setmode(self, entrypath, mode='none'): '''This command is used to indicate whether the entry given by entryPath has children entries and whether the children are visible. mode must be one of open, close or none. If mode is set to open, a (+) indicator is drawn next to the entry. If mode is set to close, a (-) indicator is drawn next to the entry. If mode is set to none, no indicators will be drawn for this entry. The default mode is none. The open mode indicates the entry has hidden children and this entry can be opened by the user. The close mode indicates that all the children of the entry are now visible and the entry can be closed by the user.''' self.tk.call(self._w, 'setmode', entrypath, mode) # Could try subclassing Tree for CheckList - would need another arg to init class CheckList(TixWidget): """The CheckList widget displays a list of items to be selected by the user. CheckList acts similarly to the Tk checkbutton or radiobutton widgets, except it is capable of handling many more items than checkbuttons or radiobuttons. """ # FIXME: It should inherit -superclass tixTree def __init__(self, master=None, cnf={}, **kw): TixWidget.__init__(self, master, 'tixCheckList', ['options', 'radio'], cnf, kw) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') def autosetmode(self): '''This command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.''' self.tk.call(self._w, 'autosetmode') def close(self, entrypath): '''Close the entry given by entryPath if its mode is close.''' self.tk.call(self._w, 'close', entrypath) def getmode(self, entrypath): '''Returns the current mode of the entry given by entryPath.''' return self.tk.call(self._w, 'getmode', entrypath) def open(self, entrypath): '''Open the entry given by entryPath if its mode is open.''' self.tk.call(self._w, 'open', entrypath) def getselection(self, mode='on'): '''Returns a list of items whose status matches status. If status is not specified, the list of items in the "on" status will be returned. Mode can be on, off, default''' c = self.tk.split(self.tk.call(self._w, 'getselection', mode)) return self.tk.splitlist(c) def getstatus(self, entrypath): '''Returns the current status of entryPath.''' return self.tk.call(self._w, 'getstatus', entrypath) def setstatus(self, entrypath, mode='on'): '''Sets the status of entryPath to be status. A bitmap will be displayed next to the entry its status is on, off or default.''' self.tk.call(self._w, 'setstatus', entrypath, mode) ########################################################################### ### The subclassing below is used to instantiate the subwidgets in each ### ### mega widget. This allows us to access their methods directly. ### ########################################################################### class _dummyButton(Button, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyCheckbutton(Checkbutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyEntry(Entry, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyFrame(Frame, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyLabel(Label, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyListbox(Listbox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenu(Menu, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyMenubutton(Menubutton, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrollbar(Scrollbar, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyText(Text, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrolledListBox(ScrolledListBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['listbox'] = _dummyListbox(self, 'listbox') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class _dummyHList(HList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyScrolledHList(ScrolledHList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class _dummyTList(TList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyComboBox(ComboBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, ['fancy',destroy_physically]) self.subwidget_list['label'] = _dummyLabel(self, 'label') self.subwidget_list['entry'] = _dummyEntry(self, 'entry') self.subwidget_list['arrow'] = _dummyButton(self, 'arrow') self.subwidget_list['slistbox'] = _dummyScrolledListBox(self, 'slistbox') try: self.subwidget_list['tick'] = _dummyButton(self, 'tick') #cross Button : present if created with the fancy option self.subwidget_list['cross'] = _dummyButton(self, 'cross') except TypeError: # unavailable when -fancy not specified pass class _dummyDirList(DirList, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['hlist'] = _dummyHList(self, 'hlist') self.subwidget_list['vsb'] = _dummyScrollbar(self, 'vsb') self.subwidget_list['hsb'] = _dummyScrollbar(self, 'hsb') class _dummyDirSelectBox(DirSelectBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['dirlist'] = _dummyDirList(self, 'dirlist') self.subwidget_list['dircbx'] = _dummyFileComboBox(self, 'dircbx') class _dummyExFileSelectBox(ExFileSelectBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['hidden'] = _dummyCheckbutton(self, 'hidden') self.subwidget_list['types'] = _dummyComboBox(self, 'types') self.subwidget_list['dir'] = _dummyComboBox(self, 'dir') self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['file'] = _dummyComboBox(self, 'file') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') class _dummyFileSelectBox(FileSelectBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['dirlist'] = _dummyScrolledListBox(self, 'dirlist') self.subwidget_list['filelist'] = _dummyScrolledListBox(self, 'filelist') self.subwidget_list['filter'] = _dummyComboBox(self, 'filter') self.subwidget_list['selection'] = _dummyComboBox(self, 'selection') class _dummyFileComboBox(ComboBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['dircbx'] = _dummyComboBox(self, 'dircbx') class _dummyStdButtonBox(StdButtonBox, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) self.subwidget_list['ok'] = _dummyButton(self, 'ok') self.subwidget_list['apply'] = _dummyButton(self, 'apply') self.subwidget_list['cancel'] = _dummyButton(self, 'cancel') self.subwidget_list['help'] = _dummyButton(self, 'help') class _dummyNoteBookFrame(NoteBookFrame, TixSubWidget): def __init__(self, master, name, destroy_physically=0): TixSubWidget.__init__(self, master, name, destroy_physically) class _dummyPanedWindow(PanedWindow, TixSubWidget): def __init__(self, master, name, destroy_physically=1): TixSubWidget.__init__(self, master, name, destroy_physically) ######################## ### Utility Routines ### ######################## #mike Should tixDestroy be exposed as a wrapper? - but not for widgets. def OptionName(widget): '''Returns the qualified path name for the widget. Normally used to set default options for subwidgets. See tixwidgets.py''' return widget.tk.call('tixOptionName', widget._w) # Called with a dictionary argument of the form # {'*.c':'C source files', '*.txt':'Text Files', '*':'All files'} # returns a string which can be used to configure the fsbox file types # in an ExFileSelectBox. i.e., # '{{*} {* - All files}} {{*.c} {*.c - C source files}} {{*.txt} {*.txt - Text Files}}' def FileTypeList(dict): s = '' for type in dict.keys(): s = s + '{{' + type + '} {' + type + ' - ' + dict[type] + '}} ' return s # Still to be done: # tixIconView class CObjView(TixWidget): """This file implements the Canvas Object View widget. This is a base class of IconView. It implements automatic placement/adjustment of the scrollbars according to the canvas objects inside the canvas subwidget. The scrollbars are adjusted so that the canvas is just large enough to see all the objects. """ # FIXME: It should inherit -superclass tixScrolledWidget pass class Grid(TixWidget, XView, YView): '''The Tix Grid command creates a new window and makes it into a tixGrid widget. Additional options, may be specified on the command line or in the option database to configure aspects such as its cursor and relief. A Grid widget displays its contents in a two dimensional grid of cells. Each cell may contain one Tix display item, which may be in text, graphics or other formats. See the DisplayStyle class for more information about Tix display items. Individual cells, or groups of cells, can be formatted with a wide range of attributes, such as its color, relief and border. Subwidgets - None''' # valid specific resources as of Tk 8.4 # editdonecmd, editnotifycmd, floatingcols, floatingrows, formatcmd, # highlightbackground, highlightcolor, leftmargin, itemtype, selectmode, # selectunit, topmargin, def __init__(self, master=None, cnf={}, **kw): static= [] self.cnf= cnf TixWidget.__init__(self, master, 'tixGrid', static, cnf, kw) # valid options as of Tk 8.4 # anchor, bdtype, cget, configure, delete, dragsite, dropsite, entrycget, # edit, entryconfigure, format, geometryinfo, info, index, move, nearest, # selection, set, size, unset, xview, yview def anchor_clear(self): """Removes the selection anchor.""" self.tk.call(self, 'anchor', 'clear') def anchor_get(self): "Get the (x,y) coordinate of the current anchor cell" return self._getints(self.tk.call(self, 'anchor', 'get')) def anchor_set(self, x, y): """Set the selection anchor to the cell at (x, y).""" self.tk.call(self, 'anchor', 'set', x, y) def delete_row(self, from_, to=None): """Delete rows between from_ and to inclusive. If to is not provided, delete only row at from_""" if to is None: self.tk.call(self, 'delete', 'row', from_) else: self.tk.call(self, 'delete', 'row', from_, to) def delete_column(self, from_, to=None): """Delete columns between from_ and to inclusive. If to is not provided, delete only column at from_""" if to is None: self.tk.call(self, 'delete', 'column', from_) else: self.tk.call(self, 'delete', 'column', from_, to) def edit_apply(self): """If any cell is being edited, de-highlight the cell and applies the changes.""" self.tk.call(self, 'edit', 'apply') def edit_set(self, x, y): """Highlights the cell at (x, y) for editing, if the -editnotify command returns True for this cell.""" self.tk.call(self, 'edit', 'set', x, y) def entrycget(self, x, y, option): "Get the option value for cell at (x,y)" if option and option[0] != '-': option = '-' + option return self.tk.call(self, 'entrycget', x, y, option) def entryconfigure(self, x, y, cnf=None, **kw): return self._configure(('entryconfigure', x, y), cnf, kw) # def format # def index def info_exists(self, x, y): "Return True if display item exists at (x,y)" return self._getboolean(self.tk.call(self, 'info', 'exists', x, y)) def info_bbox(self, x, y): # This seems to always return '', at least for 'text' displayitems return self.tk.call(self, 'info', 'bbox', x, y) def move_column(self, from_, to, offset): """Moves the range of columns from position FROM through TO by the distance indicated by OFFSET. For example, move_column(2, 4, 1) moves the columns 2,3,4 to columns 3,4,5.""" self.tk.call(self, 'move', 'column', from_, to, offset) def move_row(self, from_, to, offset): """Moves the range of rows from position FROM through TO by the distance indicated by OFFSET. For example, move_row(2, 4, 1) moves the rows 2,3,4 to rows 3,4,5.""" self.tk.call(self, 'move', 'row', from_, to, offset) def nearest(self, x, y): "Return coordinate of cell nearest pixel coordinate (x,y)" return self._getints(self.tk.call(self, 'nearest', x, y)) # def selection adjust # def selection clear # def selection includes # def selection set # def selection toggle def set(self, x, y, itemtype=None, **kw): args= self._options(self.cnf, kw) if itemtype is not None: args= ('-itemtype', itemtype) + args self.tk.call(self, 'set', x, y, *args) def size_column(self, index, **kw): """Queries or sets the size of the column given by INDEX. INDEX may be any non-negative integer that gives the position of a given column. INDEX can also be the string "default"; in this case, this command queries or sets the default size of all columns. When no option-value pair is given, this command returns a tuple containing the current size setting of the given column. When option-value pairs are given, the corresponding options of the size setting of the given column are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the left of a column. pad1 pixels Specifies the paddings to the right of a column. size val Specifies the width of a column. Val may be: "auto" -- the width of the column is set to the width of the widest cell in the column; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the width of the column to the given number of characters.""" return self.tk.split(self.tk.call(self._w, 'size', 'column', index, *self._options({}, kw))) def size_row(self, index, **kw): """Queries or sets the size of the row given by INDEX. INDEX may be any non-negative integer that gives the position of a given row . INDEX can also be the string "default"; in this case, this command queries or sets the default size of all rows. When no option-value pair is given, this command returns a list con- taining the current size setting of the given row . When option-value pairs are given, the corresponding options of the size setting of the given row are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the top of a row. pad1 pixels Specifies the paddings to the bottom of a row. size val Specifies the height of a row. Val may be: "auto" -- the height of the row is set to the height of the highest cell in the row; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the height of the row to the given number of characters.""" return self.tk.split(self.tk.call( self, 'size', 'row', index, *self._options({}, kw))) def unset(self, x, y): """Clears the cell at (x, y) by removing its display item.""" self.tk.call(self._w, 'unset', x, y) class ScrolledGrid(Grid): '''Scrolled Grid widgets''' # FIXME: It should inherit -superclass tixScrolledWidget def __init__(self, master=None, cnf={}, **kw): static= [] self.cnf= cnf TixWidget.__init__(self, master, 'tixScrolledGrid', static, cnf, kw) Tix.pyc000064400000273532151703463030006043 0ustar00� zfc@sxddlZddlZddlTddlmZmZedkrPed�nddlZdZdZdZ d Z d ZdZdZ d ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd�Zd�Zd�Zd�Z d�Z!d!Z"d"d�d#��YZ#d$ej$e#fd%��YZ$d&d�d'��YZ%ej&j'e%fej&_'d(ej&fd)��YZ(d*e(fd+��YZ)d,d�d-��YZ*d.e(fd/��YZ+d0e(fd1��YZ,d2e(fd3��YZ-d4e(fd5��YZ.d6e(fd7��YZ/d8e(fd9��YZ0d:e(fd;��YZ1d<e(fd=��YZ2d>e(fd?��YZ3d@e(fdA��YZ4dBe(fdC��YZ5dDe(fdE��YZ6dFe(fdG��YZ7dHe(e8e9fdI��YZ:dJe(fdK��YZ;dLe(fdM��YZ<dNe(fdO��YZ=dPe(fdQ��YZ>dRe(fdS��YZ?dTe(fdU��YZ@dVe(fdW��YZAdXe(fdY��YZBdZe(fd[��YZCd\e(fd]��YZDd^e(fd_��YZEd`e(fda��YZFdbe(fdc��YZGdde(fde��YZHdfe(fdg��YZIdhe(fdi��YZJdje(fdk��YZKdle(fdm��YZLdne(fdo��YZMdpe(fdq��YZNdre(e8e9fds��YZOdte(fdu��YZPdve(fdw��YZQdxeRe)fdy��YZSdzeTe)fd{��YZUd|eVe)fd}��YZWd~eXe)fd��YZYd�eZe)fd���YZ[d�e\e)fd���YZ]d�e^e)fd���YZ_d�e`e)fd���YZad�ebe)fd���YZcd�ede)fd���YZed�eGe)fd���YZfd�e:e)fd���YZgd�eFe)fd���YZhd�eOe)fd���YZid�e-e)fd���YZjd�e/e)fd���YZkd�e1e)fd���YZld�e2e)fd���YZmd�e5e)fd���YZnd�e-e)fd���YZod�eNe)fd���YZpd�eAe)fd���YZqd�eCe)fd���YZrd��Zsd��Ztd�e(fd���YZud�e(e8e9fd���YZvd�evfd���YZwdS(�i����N(t*(t_flattent _cnfmergegˡE��@s0This version of Tix.py requires Tk 4.0 or highertwindowttexttstatust immediatetimaget imagetexttballoontautot acrosstoptasciitcelltcolumnt decreasingt increasingtintegertmaintmaxtrealtrowss-regionsx-regionsy-regioniiiiiit tixCommandcBs_eZdZd�Zd�Zd d�Zd d�Zd�Zd�Z d�Z d d�ZRS( s�The tix commands provide access to miscellaneous elements of Tix's internal state and the Tix application context. Most of the information manipulated by these commands pertains to the application as a whole, or to a screen or display, rather than to a particular window. This is a mixin class, assumed to be mixed to Tkinter.Tk that supports the self.tk.call method. cCs|jjdd|�S(s�Tix maintains a list of directories under which the tix_getimage and tix_getbitmap commands will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The addbitmapdir command adds directory into this list. By using this command, the image files of an applications can also be located using the tix_getimage or tix_getbitmap command. ttixtaddbitmapdir(ttktcall(tselft directory((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_addbitmapdirVs cCs|jjdd|�S(s�Returns the current value of the configuration option given by option. Option may be any of the options described in the CONFIGURATION OPTIONS section. Rtcget(RR(Rtoption((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_cgetbscKs�|rt||f�}n|r0t|�}n|dkrL|jdd�St|t�rr|jddd|�S|jjd|j|��S(s�Query or modify the configuration options of the Tix application context. If no option is specified, returns a dictionary all of the available options. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given option(s) to have the given value(s); in this case the command returns an empty string. Option may be any of the configuration options. Rt configuret-N(RR!( RtNonet _getconfiguret isinstancet StringTypet_getconfigure1RRt_options(Rtcnftkw((s"/usr/lib64/python2.7/lib-tk/Tix.pyt tix_configureiscCs9|dk r"|jjdd|�S|jjdd�SdS(s�Returns the file selection dialog that may be shared among different calls from this application. This command will create a file selection dialog widget when it is called the first time. This dialog will be returned by all subsequent calls to tix_filedialog. An optional dlgclass parameter can be passed to specified what type of file selection dialog widget is desired. Possible options are tix FileSelectDialog or tixExFileSelectDialog. Rt filedialogN(R#RR(Rtdlgclass((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_filedialogs cCs|jjdd|�S(s�Locates a bitmap file of the name name.xpm or name in one of the bitmap directories (see the tix_addbitmapdir command above). By using tix_getbitmap, you can avoid hard coding the pathnames of the bitmap files in your application. When successful, it returns the complete pathname of the bitmap file, prefixed with the character '@'. The returned value can be used to configure the -bitmap option of the TK and Tix widgets. Rt getbitmap(RR(Rtname((s"/usr/lib64/python2.7/lib-tk/Tix.pyt tix_getbitmap�s cCs|jjdd|�S(s�Locates an image file of the name name.xpm, name.xbm or name.ppm in one of the bitmap directories (see the addbitmapdir command above). If more than one file with the same name (but different extensions) exist, then the image type is chosen according to the depth of the X display: xbm images are chosen on monochrome displays and color images are chosen on color displays. By using tix_ getimage, you can avoid hard coding the pathnames of the image files in your application. When successful, this command returns the name of the newly created image, which can be used to configure the -image option of the Tk and Tix widgets. Rtgetimage(RR(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_getimage�scCs|jjddd|�S(s@Gets the options maintained by the Tix scheme mechanism. Available options include: active_bg active_fg bg bold_font dark1_bg dark1_fg dark2_bg dark2_fg disabled_fg fg fixed_font font inactive_bg inactive_fg input1_bg input2_bg italic_font light1_bg light1_fg light2_bg light2_fg menu_font output1_bg output2_bg select_bg select_fg selector RRtget(RR(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_option_get�scCsE|dk r(|jjdd|||�S|jjdd||�SdS(s�Resets the scheme and fontset of the Tix application to newScheme and newFontSet, respectively. This affects only those widgets created after this call. Therefore, it is best to call the resetoptions command before the creation of any widgets in a Tix application. The optional parameter newScmPrio can be given to reset the priority level of the Tk options set by the Tix schemes. Because of the way Tk handles the X option database, after Tix has been has imported and inited, it is not possible to reset the color schemes and font sets using the tix config command. Instead, the tix_resetoptions command must be used. RtresetoptionsN(R#RR(Rt newSchemet newFontSett newScmPrio((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_resetoptions�sN(t__name__t __module__t__doc__RR R#R+R.R1R3R5R:(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRKs tTkcBs)eZdZdddd�Zd�ZRS(s{Toplevel widget of Tix which represents mostly the main window of an application. It has an associated Tcl interpreter.tTixcCs�tjj||||�tjjd�}|jjd�|dk rr|jjd|�|jjd|�n|jjd�dS(NtTIX_LIBRARYs<global auto_path; lappend auto_path [file dir [info nameof]]s(global auto_path; lappend auto_path {%s}s,global tcl_pkgPath; lappend tcl_pkgPath {%s}spackage require Tix( tTkinterR>t__init__tostenvironR4RtevalR#(Rt screenNametbaseNamet classNamettixlib((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs$|jdd�tjj|�dS(NtWM_DELETE_WINDOWt(tprotocolRAR>tdestroy(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRM�sN(R;R<R=R#RBRM(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR>�stFormcBs_eZdZid�ZeZd�Zd�Zd�Zddd�Zd d�Z d�ZRS( s�The Tix Form geometry manager Widgets can be arranged by specifying attachments to other widgets. See Tix documentation for complete detailscKs)|jjd|j|j||��dS(NttixForm(RRt_wR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytconfig�scCstj|i||6�dS(N(RNtform(Rtkeytvalue((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__setitem__�scCs|jjdd|j�S(NROtcheck(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRV�scCs|jjdd|j�dS(NROtforget(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRW�sicCs�|ro|ro|jjdd|j�}|jj|�}d}x'|D]}||jj|�f}qHW|S|jjdd|j||�S(NROtgrid((RRRPt splitlisttgetint(Rtxsizetysizetxtytz((s"/usr/lib64/python2.7/lib-tk/Tix.pyRX�s cCsX|s|jjdd|j�S|ddkr<d|}n|jjdd|j|�S(NROtinfoiR"(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyR`s cCs1t|j|jj|jjdd|j���S(NROtslaves(tmapt _nametowidgetRRYRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRas N(R;R<R=RQRRRURVRWRXR#R`Ra(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRN�s t TixWidgetcBs}eZdZdddiid�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zidd �Zd �Z RS(sQA TixWidget class is used to package all (or most) Tix widgets. Widget initialization is extended in two ways: 1) It is possible to give a list of options which must be part of the creation command (so called Tix 'static' options). These cannot be given as a 'config' command later. 2) It is possible to give the name of an existing TK widget. These are child widgets created automatically by a Tix mega-widget. The Tk call to create these widgets is therefore bypassed in TixWidget.__init__ Both options are for use by subclasses only. c Cs�|rt||f�}nt|�}d}|rC|jd�n dg}xE|j�D]6\}}||krZ|d||f}||=qZqZW||_tj|||�|r�|jj||j|�n|r�tj ||�ni|_ dS(NtoptionsR"((Rtappendtitemst widgetNametWidgett_setupRRRPRQtsubwidget_list( RtmasterRhtstatic_optionsR)R*textratktv((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs$ cCs'||jkr|j|St|�dS(N(RktAttributeError(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__getattr__KscCs|jjd|j|�dS(s1Set a variable without calling its action routinettixSetSilentN(RRRP(RRT((s"/usr/lib64/python2.7/lib-tk/Tix.pyt set_silentPscCsT|j|�}|s0td|d|j�n|t|j�d}|j|�S(sSReturn the named subwidget (which must have been created by the sub-class).s Subwidget s not child of i(t_subwidget_nametTclErrort_nametlenRPRc(RR0tn((s"/usr/lib64/python2.7/lib-tk/Tix.pyt subwidgetTs cCsl|j�}|sgSg}xI|D]A}|t|j�d}y|j|j|��Wq#q#Xq#W|S(sReturn all subwidgets.i(t_subwidget_namesRxRPRfRc(RtnamestretlistR0((s"/usr/lib64/python2.7/lib-tk/Tix.pytsubwidgets_all^s cCs6y|jj|jd|�SWntk r1dSXdS(s7Get a subwidget name (returns a String, not a Widget !)RzN(RRRPRvR#(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRums cCsHy/|jj|jdd�}|jj|�SWntk rCdSXdS(s"Return the name of all subwidgets.t subwidgetss-allN(RRRPRYRvR#(RR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyR{ts cCs�|dkrdSt|t�s.t|�}nt|t�sLt|�}n|j�}x+|D]#}|jj|dd||�q_WdS(s8Set configuration options for all subwidgets (and self).RKNR!R"(R%R&treprR{RR(RRRTR|R0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt config_all|s cKs�|s$tj}|s$td�q$n|rE|rEt||f�}n|rT|}nd}xO|j�D]A\}}t|d�r�|j|�}n|d||f}qgW|jjdd|f|�S(NsToo early to create imaget__call__R"Rtcreate(( RAt _default_roottRuntimeErrorRRgthasattrt _registerRR(RtimgtypeR)RlR*ReRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_create�s cCs2y|jjdd|�Wntk r-nXdS(NRtdelete(RRRv(Rtimgname((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_delete�s N(R;R<R=R#RBRrRtRzR~RuR{R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRds, tTixSubWidgetcBs&eZdZddd�Zd�ZRS(s�Subwidget class. This is used to mirror child widgets automatically created by Tix/Tk as part of a mega-widget in Python (which is not informed of this)icCsE|rR|j|�}y*|t|j�d}|jd�}WqRg}qRXn|s{tj||ddi|d6�n�|}x�tt|�d�D]i}dj||d �} y|j | �} | }Wq�t k rt|||dddd�}q�Xq�W|r|d}ntj||ddi|d6�||_dS(Nit.R0tdestroy_physicallyitcheck_intermediatei����( RuRxRPtsplitRdRBR#trangetjoinRctKeyErrorR�R�(RRlR0R�R�tpathtplisttparenttiRytw((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s. # cCs�x!|jj�D]}|j�qW|j|jjkrL|jj|j=n|j|jjkrt|jj|j=n|jr�|jjd|j �ndS(NRM( tchildrentvaluesRMRwRlRkR�RRRP(Rtc((s"/usr/lib64/python2.7/lib-tk/Tix.pyRM�s (R;R<R=RBRM(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stDisplayStylecBsSeZdZid�Zd�Zd�Zd�Zd�Zid�Zd�Z RS(sRDisplayStyle - handle configuration options shared by (multiple) Display ItemscKs�d|kr|d}n7d|kr2|d}ntj}|sPtd��n|j|_|jjd||j||��|_dS(Nt refwindows1Too early to create display style: no root windowttixDisplayStyle(RAR�R�RRR(t stylename(RtitemtypeR)R*Rl((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs|jS(N(R�(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__str__�scCsk|r!|r!t||f�}n|r0|}nd}x.|j�D] \}}|d||f}qCW|S(NR"((RRg(RR)R*toptsRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pyR(�s cCs|jj|jd�dS(NR�(RRR�(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs$|jj|jdd||�dS(NR!s-%s(RRR�(RRSRT((s"/usr/lib64/python2.7/lib-tk/Tix.pyRU�scKs"|j|jd|j||��S(NR!(R$R�R((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRQ�scCs|jj|jdd|�S(NRs-%s(RRR�(RRS((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__getitem__�s( R;R<R=RBR�R(R�RURQR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tBallooncBs2eZdZdid�Zid�Zd�ZRS(sBalloon help widget. Subwidget Class --------- ----- label Label message MessagecKsmdddddg}tj||d|||�t|ddd �|jd<t|d dd �|jd <dS(NRetinstallcolormaptinitwaitt statusbartcursort tixBalloontlabelR�itmessage(RdRBt_dummyLabelRk(RRlR)R*tstatic((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cKs/|jj|jd|j|j||��dS(skBind balloon widget to another. One balloon widget may be bound to several widgets at the same timetbindN(RRRPR((RtwidgetR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytbind_widgetscCs |jj|jd|j�dS(Ntunbind(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt unbind_widgetsN(R;R<R=R#RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s t ButtonBoxcBs2eZdZdid�Zid�Zd�ZRS(sgButtonBox - A container for pushbuttons. Subwidgets are the buttons added with the add method. cKs&tj||dddg||�dS(NttixButtonBoxtorientationRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB&scKsD|jj|jd||j||��}t||�|j|<|S(s$Add a button with given name to box.tadd(RRRPR(t_dummyButtonRk(RR0R)R*tbtn((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�*s*cCs/||jkr+|jj|jd|�ndS(Ntinvoke(RkRRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�1sN(R;R<R=R#RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�"stComboBoxcBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(s�ComboBox - an Entry field with a dropdown menu. The user can select a choice by either typing in the entry subwidget or selecting from the listbox subwidget. Subwidget Class --------- ----- entry Entry arrow Button slistbox ScrolledListBox tick Button cross Button : present if created with the fancy optioncKs�tj||dddddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d �|jd <y0t|d �|jd <t|d�|jd<Wntk r�nXdS(NttixComboBoxteditabletdropdowntfancyReR�tentrytarrowtslistboxtticktcross(RdRBR�Rkt_dummyEntryR�t_dummyScrolledListBoxt TypeError(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBCs cCs|jj|jd|�dS(Nt addhistory(RRRP(Rtstr((s"/usr/lib64/python2.7/lib-tk/Tix.pytadd_historyUscCs|jj|jd|�dS(Nt appendhistory(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytappend_historyXscCs |jj|jd||�dS(Ntinsert(RRRP(RtindexR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�[scCs|jj|jd|�dS(Ntpick(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�^sN( R;R<R=R#RBR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�5s tControlcBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(s�Control - An entry field with value change arrows. The user can adjust the value by pressing the two arrow buttons or by entering the value directly into the entry. The new value will be checked against the user-defined upper and lower limits. Subwidget Class --------- ----- incr Button decr Button entry Entry label LabelcKs{tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixControlRetincrtdecrR�R�(RdRBR�RkR�R�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt decrementvscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt incrementyscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�|scCs|jj|jd�dS(Ntupdate(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�sN( R;R<R=R#RBR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�as tDirListcBs#eZdZid�Zd�ZRS(sRDirList - displays a list view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb ScrollbarcKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixDirListRethlisttvsbthsb(RdRBt_dummyHListRkt_dummyScrollbar(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd|�dS(Ntchdir(RRRP(Rtdir((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirTreecBs#eZdZid�Zd�ZRS(s�DirTree - Directory Listing in a hierarchical view. Displays a tree view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb ScrollbarcKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixDirTreeReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd|�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirSelectBoxcBseZdZid�ZRS(s�DirSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixDirSelectBoxRetdirlisttdircbx(RdRBt _dummyDirListRkt_dummyFileComboBox(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stExFileSelectBoxcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectBox - MS Windows style file select box. It provides a convenient method for the user to select files. Subwidget Class --------- ----- cancel Button ok Button hidden Checkbutton types ComboBox dir ComboBox file ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKs�tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d �|jd <t|d �|jd <dS(NttixExFileSelectBoxRetcanceltokthiddenttypesR�R�tfiletfilelist(RdRBR�Rkt_dummyCheckbuttont_dummyComboBoxR�R�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd�dS(Ntfilter(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s#The DirSelectDialog widget presents the directories in the file system in a dialog window. The user can use this dialog window to navigate through the file system to select the desired directory. Subwidgets Class ---------- ----- dirbox DirSelectDialogcKs9tj||ddg||�t|d�|jd<dS(NttixDirSelectDialogRetdirbox(RdRBt_dummyDirSelectBoxRk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd�dS(Ntpopup(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd�dS(Ntpopdown(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tExFileSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectDialog - MS Windows style file select dialog. It provides a convenient method for the user to select files. Subwidgets Class ---------- ----- fsbox ExFileSelectBoxcKs9tj||ddg||�t|d�|jd<dS(NttixExFileSelectDialogRetfsbox(RdRBt_dummyExFileSelectBoxRk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t FileSelectBoxcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKs{tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixFileSelectBoxReR�R�R�t selection(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytapply_filter#scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�&s(R;R<R=RBRR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s tFileSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s�FileSelectDialog - Motif style file select dialog. Subwidgets Class ---------- ----- btns StdButtonBox fsbox FileSelectBoxcKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixFileSelectDialogRetbtnsR�(RdRBt_dummyStdButtonBoxRkt_dummyFileSelectBox(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB3scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�9scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�<s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR*s t FileEntrycBs,eZdZid�Zd�Zd�ZRS(s_FileEntry - Entry field with button that invokes a FileSelectDialog. The user can type in the filename manually. Alternatively, the user can press the button widget that sits next to the entry, which will bring up a file selection dialog. Subwidgets Class ---------- ----- button Button entry EntrycKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(NttixFileEntryt dialogtypeRetbuttonR�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBKscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�QscCsdS(N((R((s"/usr/lib64/python2.7/lib-tk/Tix.pytfile_dialogTs(R;R<R=RBR�R (((s"/usr/lib64/python2.7/lib-tk/Tix.pyR?s tHListcBseZdZd6id�Zid�Zd6id�Zd�Zd�Zdd6d6d�Z d�Z d �Zd �Zd�Z d�Zd �Zd�Zd�Zid�Zid�Zd�Zd�ZeZd�Zd�Zd�Zid�Zid�Zd�Zd�Zd�Zd�Zd�Z d�Z!d6d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,id*�Z-id+�Z.d,�Z/d-�Z0d.�Z1id/�Z2d0�Z3d1�Z4id2�Z5d3�Z6d6d4�Z7d5�Z8RS(7sHList - Hierarchy display widget can be used to display any data that have a hierarchical structure, for example, file system directory trees. The list entries are indented and connected by branch lines according to their places in the hierarchy. Subwidgets - NonecKs&tj||dddg||�dS(NttixHListtcolumnsRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB`scKs(|jj|jd||j||��S(NR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�dscKs7|sd}n|jj|jd||j||��S(NRKtaddchild(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt add_childgs cCs |jj|jdd|�dS(Ntanchortset(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt anchor_setmscCs|jj|jdd�dS(NRtclear(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytanchor_clearpsicCsK|s%|jj|jdd||�S|jj|jdd|d|�SdS(NRtwidths-char(RRRP(RtcolRtchars((s"/usr/lib64/python2.7/lib-tk/Tix.pytcolumn_widthsscCs|jj|jdd�dS(NR�tall(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_allzscCs |jj|jdd|�dS(NR�R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_entry}scCs |jj|jdd|�dS(NR�t offsprings(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_offsprings�scCs |jj|jdd|�dS(NR�tsiblings(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_siblings�scCs |jj|jdd|�dS(NtdragsiteR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdragsite_set�scCs|jj|jdd�dS(NR R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytdragsite_clear�scCs |jj|jdd|�dS(NtdropsiteR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdropsite_set�scCs|jj|jdd�dS(NR#R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytdropsite_clear�scKs/|jj|jdd||j||��dS(NtheaderR�(RRRPR((RRR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_create�scKsT|dkr%|j|jdd|�S|jj|jdd||j||��dS(NR&R!(R#R$RPRRR((RRR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_configure�scCs|jj|jdd||�S(NR&R(RRRP(RRtopt((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_cget�scCs(|jj|jj|jdd|��S(NR&texist(Rt getbooleanRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_exists�scCs |jj|jdd|�dS(NR&R�(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_delete�scCs|jj|jdd|�S(NR&tsize(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_size�scCs |jj|jdd|�dS(NthideR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt hide_entry�scKs/|jj|jdd||j||��dS(Nt indicatorR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_create�s cKsT|dkr%|j|jdd|�S|jj|jdd||j||��dS(NR3R!(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_configure�s cCs|jj|jdd||�S(NR3R(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_cget�scCs|jj|jdd|�S(NR3texists(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_exists�scCs |jj|jdd|�dS(NR3R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_delete�scCs|jj|jdd|�S(NR3R/(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_size�scCs|jj|jdd�S(NR`R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_anchor�scCs+|j|jj|jdd|��p*dS(NR`tbbox(t_getintsRRRPR#(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_bbox�scCs.|jj|jdd|�}|jj|�S(NR`R�(RRRPRY(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_children�scCs|jj|jdd|�S(NR`tdata(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_data�scCs|jj|jdd�S(NR`R (RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_dragsite�scCs|jj|jdd�S(NR`R#(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_dropsite�scCs|jj|jdd|�S(NR`R7(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_exists�scCs|jj|jdd|�S(NR`R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_hidden�scCs|jj|jdd|�S(NR`tnext(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_next�scCs|jj|jdd|�S(NR`R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_parent�scCs|jj|jdd|�S(NR`tprev(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_prev�scCs+|jj|jdd�}|jj|�S(NR`R�(RRRPRY(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_selection�scCs"|jj|jdd|||�S(NtitemR(RRRP(RR�RR)((s"/usr/lib64/python2.7/lib-tk/Tix.pyt item_cget�sc KsZ|dkr(|j|jdd||�S|jj|jdd|||j||��dS(NRLR!(R#R$RPRRR((RR�RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_configure�sc Ks2|jj|jdd|||j||��dS(NRLR�(RRRPR((RR�RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_create�s cCs|jj|jdd||�S(NRLR7(RRRP(RR�R((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_exists�scCs#|jj|jdd||�dS(NRLR�(RRRP(RR�R((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_delete�scCs|jj|jd||�S(Nt entrycget(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pyRR�scKsN|dkr"|j|jd|�S|jj|jd||j||��dS(Ntentryconfigure(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRSscCs|jj|jd|�S(Ntnearest(RRRP(RR^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRTscCs|jj|jd|�dS(Ntsee(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRUscKs,|jj|jdd|j||��dS(NR�R(RRRPR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytselection_clearscCs|jj|jdd|�S(NR�tincludes(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytselection_includesscCs#|jj|jdd||�dS(NR�R(RRRP(Rtfirsttlast((s"/usr/lib64/python2.7/lib-tk/Tix.pyt selection_setscCs|jj|jdd|�S(NtshowR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt show_entrysN(9R;R<R=R#RBR�RRRRRRRRR!R"R$R%R'R(R*R-theader_existR.R0R2R4R5R6R8R9R:R;R>R?RARBRCRDRERGRHRJRKRMRNRORPRQRRRSRTRURVRXR[R](((s"/usr/lib64/python2.7/lib-tk/Tix.pyRXsl t InputOnlycBseZdZdid�ZRS(s?InputOnly - Invisible widget. Unix only. Subwidgets - NonecKs tj||dd||�dS(NttixInputOnly(RdRBR#(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR_st LabelEntrycBseZdZdid�ZRS(sLabelEntry - Entry field with label. Packages an entry widget and a label into one mega widget. It can be used to simplify the creation of ``entry-form'' type of interface. Subwidgets Class ---------- ----- label Label entry EntrycKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixLabelEntryt labelsideReR�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB,sN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRa"st LabelFramecBseZdZdid�ZRS(seLabelFrame - Labelled Frame container. Packages a frame widget and a label into one mega widget. To create widgets inside a LabelFrame widget, one creates the new widgets relative to the frame subwidget and manage them inside the frame subwidget. Subwidgets Class ---------- ----- label Label frame FramecKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixLabelFrameRcReR�tframe(RdRBR�Rkt_dummyFrame(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB=sN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRd2s tListNoteBookcBsAeZdZid�Zid�Zd�Zd�Zd�ZRS(sA ListNoteBook widget is very similar to the TixNoteBook widget: it can be used to display many windows in a limited space using a notebook metaphor. The notebook is divided into a stack of pages (windows). At one time only one of these pages can be shown. The user can navigate through these pages by choosing the name of the desired page in the hlist subwidget.cKsktj||ddg||�t|ddd�|jd<t|d�|jd<t|d�|jd<dS(NttixListNoteBookRetpaneR�iR�tshlist(RdRBt_dummyPanedWindowRkR�t_dummyScrolledHList(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBLs cKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�Ts(cCs |j|�S(N(Rz(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pytpageYscCsU|jj|jj|jd��}g}x$|D]}|j|j|��q1W|S(Ntpages(RR�RRPRfRz(RR|tretR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyRo\s $ cCs|jj|jd|�dS(Ntraise(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt raise_pageds(R;R<R=RBR�RnRoRr(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRhDs tMetercBseZdZdid�ZRS(suThe Meter widget can be used to show the progress of a background job which may take a long time to execute. cKs#tj||ddg||�dS(NttixMeterRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBlsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRsgstNoteBookcBsVeZdZdid�Zid�Zd�Zd�Zd�Zd�Z d�Z RS( s�NoteBook - Multi-page container widget (tabbed notebook metaphor). Subwidgets Class ---------- ----- nbframe NoteBookFrame <pages> page widgets added dynamically with the add methodcKs?tj||ddg||�t|ddd�|jd<dS(NttixNoteBookRetnbframeR�i(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBxscKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�}s(cCs8|jj|jd|�|j|j�|j|=dS(NR�(RRRPRkRM(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |j|�S(N(Rz(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRn�scCsU|jj|jj|jd��}g}x$|D]}|j|j|��q1W|S(NRo(RR�RRPRfRz(RR|RpR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyRo�s $ cCs|jj|jd|�dS(NRq(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRr�scCs|jj|jd�S(Ntraised(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRx�sN(R;R<R=R#RBR�R�RnRoRrRx(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRups t NoteBookFramecBseZRS((R;R<(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRy�st OptionMenucBsMeZdZid�Zid�Zid�Zd�Zd�Zd�ZRS(s�OptionMenu - creates a menu button of options. Subwidget Class --------- ----- menubutton Menubutton menu MenucKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixOptionMenuRcRet menubuttontmenu(RdRBt_dummyMenubuttonRkt _dummyMenu(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scKs/|jj|jdd||j||��dS(NR�tcommand(RRRPR((RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytadd_command�scKs/|jj|jdd||j||��dS(NR�t separator(RRRPR((RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt add_separator�scCs|jj|jd|�dS(NR�(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(Ntdisable(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(Ntenable(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s( R;R<R=RBR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRz�s tPanedWindowcBsVeZdZid�Zid�Zd�Zd�Zd�Zid�Zd�Z RS(s�PanedWindow - Multi-pane container widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally.The user changes the sizes of the panes by dragging the resize handle between two panes. Subwidgets Class ---------- ----- <panes> g/p widgets added dynamically with the add method.cKs&tj||dddg||�dS(NttixPanedWindowR�Re(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scKsO|jj|jd||j||��t||dd�|j|<|j|S(NR�R�i(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(cCs8|jj|jd|�|j|j�|j|=dS(NR�(RRRPRkRM(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(NRW(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRW�scCs|jj|jd||�S(Ntpanecget(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scKsN|dkr"|j|jd|�S|jj|jd||j||��dS(Nt paneconfigure(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCsD|jj|jj|jd��}g|D]}|j|�^q+S(Ntpanes(RRYRRPRz(RR|R]((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s$( R;R<R=RBR�R�RWR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t PopupMenucBs5eZdZid�Zd�Zd�Zd�ZRS(sPopupMenu widget can be used as a replacement of the tk_popup command. The advantage of the Tix PopupMenu widget is it requires less application code to manipulate. Subwidgets Class ---------- ----- menubutton Menubutton menu MenucKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixPopupMenuReR|R}(RdRBR~RkR(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs |jj|jd|j�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |jj|jd|j�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs&|jj|jd|j||�dS(Ntpost(RRRP(RR�R]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pytpost_widget�s(R;R<R=RBR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tResizeHandlecBs>eZdZid�Zd�Zd�Zd�Zd�ZRS(s;Internal widget to draw resize handles on Scrolled widgets.c KsAddddddddd g }tj||d |||�dS(NReR�tcursorfgtcursorbgt handlesizet hintcolort hintwidthR]R^ttixResizeHandle(RdRB(RRlR)R*tflags((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs |jj|jd|j�dS(Ntattachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt attach_widgetscCs |jj|jd|j�dS(Ntdetachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt detach_widgetscCs |jj|jd|j�dS(NR1(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR1scCs |jj|jd|j�dS(NR\(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR\s(R;R<R=RBR�R�R1R\(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t ScrolledHListcBseZdZid�ZRS(s0ScrolledHList - HList with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledHListReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs (R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stScrolledListBoxcBseZdZid�ZRS(s4ScrolledListBox - Listbox with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledListBoxRetlistboxR�R�(RdRBt _dummyListboxRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB#s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stScrolledTextcBseZdZid�ZRS(s.ScrolledText - Text with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledTextReRR�R�(RdRBt _dummyTextRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB-s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�)st ScrolledTListcBseZdZid�ZRS(s0ScrolledTList - TList with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledTListRettlistR�R�(RdRBt_dummyTListRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB7s (R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�3stScrolledWindowcBseZdZid�ZRS(s2ScrolledWindow - Window with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledWindowReRR�R�(RdRBRgRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBBs(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�>stSelectcBs/eZdZid�Zid�Zd�ZRS(s�Select - Container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user. Subwidgets are buttons added dynamically using the add method.c KsEtj||ddddddg||�t|d�|jd<dS(Nt tixSelectt allowzerotradioR�RcReR�(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBOs cKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�Vs(cCs|jj|jd|�dS(NR�(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�[s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�HstShellcBseZdZdid�ZRS(s'Toplevel window. Subwidgets - NonecKs&tj||dddg||�dS(NttixShellRettitle(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBcsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�^stDialogShellcBs8eZdZdid�Zd�Zd�Zd�ZRS(s�Toplevel window, with popup popdown and center methods. It tells the window manager that it is a dialog window and should be treated specially. The exact treatment depends on the treatment of the window manager. Subwidgets - NonecKs5tj||ddddddddg||�dS( NttixDialogShellReR�tmappedt minheighttminwidthR�t transient(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�vscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�yscCs|jj|jd�dS(Ntcenter(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�|sN(R;R<R=R#RBR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�fs tStdButtonBoxcBs&eZdZdid�Zd�ZRS(s@StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) cKs~tj||dddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixStdButtonBoxR�ReR�tapplyR�thelp(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs/||jkr+|jj|jd|�ndS(NR�(RkRRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sN(R;R<R=R#RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stTListcBs�eZdZdid�Zd�Zd�Zd�Zd�Zdd�Z d�Z d�Zd �Zd �Z id�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zid�Zd�Zdd�ZRS(s�TList - Hierarchy display widget which can be used to display data in a tabular format. The list entries of a TList widget are similar to the entries in the Tk listbox widget. The main differences are (1) the TList widget can display the list entries in a two dimensional format and (2) you can use graphical images as well as multiple colors and fonts for the list entries. Subwidgets - NonecKs#tj||ddg||�dS(NttixTListRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs |jj|jdd|�dS(NtactiveR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt active_set�scCs|jj|jdd�dS(NR�R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytactive_clear�scCs |jj|jdd|�dS(NRR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jdd�dS(NRR(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs |jj|jd||�dS(NR�(RRRP(Rtfrom_tto((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |jj|jdd|�dS(NR R(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR!�scCs|jj|jdd�dS(NR R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR"�scCs |jj|jdd|�dS(NR#R(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR$�scCs|jj|jdd�dS(NR#R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR%�scKs,|jj|jd||j||��dS(NR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jdd�S(NR`R�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_active�scCs|jj|jdd�S(NR`R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR;�scCs|jj|jdd|�S(NR`tdown(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_down�scCs|jj|jdd|�S(NR`tleft(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_left�scCs|jj|jdd|�S(NR`tright(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_right�scCs+|jj|jdd�}|jj|�S(NR`R�(RRRPRY(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRK�scCs|jj|jdd�S(NR`R/(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_size�scCs|jj|jdd|�S(NR`tup(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_up�scCs|jj|jd||�S(NRT(RRRP(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRT�scCs|jj|jd|�dS(NRU(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRU�scKs,|jj|jdd|j||��dS(NR�R(RRRPR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRV�scCs|jj|jdd|�S(NR�RW(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRX�scCs#|jj|jdd||�dS(NR�R(RRRP(RRYRZ((s"/usr/lib64/python2.7/lib-tk/Tix.pyR[�sN(R;R<R=R#RBR�R�RRR�R!R"R$R%R�R�R;R�R�R�RKR�R�RTRURVRXR[(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s2 tTreecBsMeZdZdid�Zd�Zd�Zd�Zd�Zdd�Z RS( s�Tree - The tixTree widget can be used to display hierarchical data in a tree form. The user can adjust the view of the tree by opening or closing parts of the tree.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixTreeReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs|jj|jd�dS(sThis command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.tautosetmodeN(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(s8Close the entry given by entryPath if its mode is close.tcloseN(RRRP(Rt entrypath((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�S(s9Returns the current mode of the entry given by entryPath.tgetmode(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(s6Open the entry given by entryPath if its mode is open.topenN(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stnonecCs |jj|jd||�dS(s�This command is used to indicate whether the entry given by entryPath has children entries and whether the children are visible. mode must be one of open, close or none. If mode is set to open, a (+) indicator is drawn next to the entry. If mode is set to close, a (-) indicator is drawn next to the entry. If mode is set to none, no indicators will be drawn for this entry. The default mode is none. The open mode indicates the entry has hidden children and this entry can be opened by the user. The close mode indicates that all the children of the entry are now visible and the entry can be closed by the user.tsetmodeN(RRRP(RR�tmode((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s N( R;R<R=R#RBR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t CheckListcBsbeZdZd id�Zd�Zd�Zd�Zd�Zdd�Z d�Z dd �ZRS(s�The CheckList widget displays a list of items to be selected by the user. CheckList acts similarly to the Tk checkbutton or radiobutton widgets, except it is capable of handling many more items than checkbuttons or radiobuttons. cKshtj||dddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixCheckListReR�R�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|jd�dS(sThis command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.R�N(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jd|�dS(s8Close the entry given by entryPath if its mode is close.R�N(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�$scCs|jj|jd|�S(s9Returns the current mode of the entry given by entryPath.R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�(scCs|jj|jd|�dS(s6Open the entry given by entryPath if its mode is open.R�N(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�,stoncCs7|jj|jj|jd|��}|jj|�S(s�Returns a list of items whose status matches status. If status is not specified, the list of items in the "on" status will be returned. Mode can be on, off, defaulttgetselection(RR�RRPRY(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�0s'cCs|jj|jd|�S(s(Returns the current status of entryPath.t getstatus(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�7scCs |jj|jd||�dS(s~Sets the status of entryPath to be status. A bitmap will be displayed next to the entry its status is on, off or default.t setstatusN(RRRP(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�;sN(R;R<R=R#RBR�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s R�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBGs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�FsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBKs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�JsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBOs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�NsRgcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBSs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRgRsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBWs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�VsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB[s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�ZsRcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB_s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR^sR~cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBcs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR~bsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBgs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�fsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBks(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�jsR�cBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�nsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBvs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�usRmcBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBzs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRmysR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs�tj|||d|g�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<y0t|d�|jd<t|d�|jd<Wntk r�nXdS(NR�R�R�R�R�R�R�(R�RBR�RkR�R�R�R�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCsFtj||||�t|d�|jd<t|d�|jd<dS(NR�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs�tj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS( NR�R�R�R�R�R�R�R�(R�RBR�RkR�R�R�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRcBseZdd�ZRS(icCsrtj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�sR�cBseZdd�ZRS(icCs0tj||||�t|d�|jd<dS(NR�(R�RBR�Rk(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRcBseZdd�ZRS(icCsrtj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�R�(R�RBR�Rk(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�st_dummyNoteBookFramecBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRlcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRl�scCs|jjd|j�S(szReturns the qualified path name for the widget. Normally used to set default options for subwidgets. See tixwidgets.pyt tixOptionName(RRRP(R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt OptionName�scCsGd}x:|j�D],}|d|d|d||d}qW|S(NRKs{{s} {s - s}} (tkeys(tdicttsttype((s"/usr/lib64/python2.7/lib-tk/Tix.pytFileTypeList�s*tCObjViewcBseZdZRS(sBThis file implements the Canvas Object View widget. This is a base class of IconView. It implements automatic placement/adjustment of the scrollbars according to the canvas objects inside the canvas subwidget. The scrollbars are adjusted so that the canvas is just large enough to see all the objects. (R;R<R=(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stGridcBs�eZdZdid�Zd�Zd�Zd�Zdd�Zdd�Z d�Z d�Zd �Zdd �Z d�Zd�Zd �Zd�Zd�Zdd�Zd�Zd�Zd�ZRS(s}The Tix Grid command creates a new window and makes it into a tixGrid widget. Additional options, may be specified on the command line or in the option database to configure aspects such as its cursor and relief. A Grid widget displays its contents in a two dimensional grid of cells. Each cell may contain one Tix display item, which may be in text, graphics or other formats. See the DisplayStyle class for more information about Tix display items. Individual cells, or groups of cells, can be formatted with a wide range of attributes, such as its color, relief and border. Subwidgets - NonecKs/g}||_tj||d|||�dS(NttixGrid(R)RdRB(RRlR)R*R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|dd�dS(sRemoves the selection anchor.RRN(RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR scCs|j|jj|dd��S(s3Get the (x,y) coordinate of the current anchor cellRR4(R=RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt anchor_get scCs |jj|dd||�dS(s/Set the selection anchor to the cell at (x, y).RRN(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRscCsH|dkr(|jj|dd|�n|jj|dd||�dS(sdDelete rows between from_ and to inclusive. If to is not provided, delete only row at from_R�RN(R#RR(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_rowscCsH|dkr(|jj|dd|�n|jj|dd||�dS(sjDelete columns between from_ and to inclusive. If to is not provided, delete only column at from_R�RN(R#RR(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_columnscCs|jj|dd�dS(sUIf any cell is being edited, de-highlight the cell and applies the changes.teditR�N(RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt edit_apply%scCs |jj|dd||�dS(smHighlights the cell at (x, y) for editing, if the -editnotify command returns True for this cell.R�RN(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pytedit_set*scCs?|r#|ddkr#d|}n|jj|d|||�S(s&Get the option value for cell at (x,y)iR"RR(RR(RR]R^R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRR/s cKs|jd||f||�S(NRS(t _configure(RR]R^R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRS5scCs%|j|jj|dd||��S(s+Return True if display item exists at (x,y)R`R7(t_getbooleanRR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRD;scCs|jj|dd||�S(NR`R<(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyR>?scCs#|jj|dd|||�dS(s�Moves the range of columns from position FROM through TO by the distance indicated by OFFSET. For example, move_column(2, 4, 1) moves the columns 2,3,4 to columns 3,4,5.tmoveRN(RR(RR�R�toffset((s"/usr/lib64/python2.7/lib-tk/Tix.pytmove_columnCscCs#|jj|dd|||�dS(s�Moves the range of rows from position FROM through TO by the distance indicated by OFFSET. For example, move_row(2, 4, 1) moves the rows 2,3,4 to rows 3,4,5.R�RN(RR(RR�R�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pytmove_rowIscCs"|j|jj|d||��S(s8Return coordinate of cell nearest pixel coordinate (x,y)RT(R=RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRTOscKsT|j|j|�}|dk r4d|f|}n|jj|d|||�dS(Ns -itemtypeR(R(R)R#RR(RR]R^R�R*targs((s"/usr/lib64/python2.7/lib-tk/Tix.pyRYsc Ks7|jj|jj|jdd||ji|���S(s�Queries or sets the size of the column given by INDEX. INDEX may be any non-negative integer that gives the position of a given column. INDEX can also be the string "default"; in this case, this command queries or sets the default size of all columns. When no option-value pair is given, this command returns a tuple containing the current size setting of the given column. When option-value pairs are given, the corresponding options of the size setting of the given column are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the left of a column. pad1 pixels Specifies the paddings to the right of a column. size val Specifies the width of a column. Val may be: "auto" -- the width of the column is set to the width of the widest cell in the column; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the width of the column to the given number of characters.R/R(RR�RRPR((RR�R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytsize_column_s!c Ks4|jj|jj|dd||ji|���S(s�Queries or sets the size of the row given by INDEX. INDEX may be any non-negative integer that gives the position of a given row . INDEX can also be the string "default"; in this case, this command queries or sets the default size of all rows. When no option-value pair is given, this command returns a list con- taining the current size setting of the given row . When option-value pairs are given, the corresponding options of the size setting of the given row are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the top of a row. pad1 pixels Specifies the paddings to the bottom of a row. size val Specifies the height of a row. Val may be: "auto" -- the height of the row is set to the height of the highest cell in the row; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the height of the row to the given number of characters.R/R(RR�RR((RR�R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytsize_rowyscCs |jj|jd||�dS(s7Clears the cell at (x, y) by removing its display item.tunsetN(RRRP(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sN(R;R<R=R#RBRR�RR�R�R�R�RRRSRDR>R�R�RTRR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s( tScrolledGridcBseZdZdid�ZRS(sScrolled Grid widgetscKs/g}||_tj||d|||�dS(NttixScrolledGrid(R)RdRB(RRlR)R*R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s N(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��siiiii ((((xRCRARRt TkVersiontImportErrort_tkintertWINDOWtTEXTtSTATUSt IMMEDIATEtIMAGEt IMAGETEXTtBALLOONtAUTOt ACROSSTOPtASCIItCELLtCOLUMNt DECREASINGt INCREASINGtINTEGERtMAINtMAXtREALtROWtS_REGIONtX_REGIONtY_REGIONt TCL_DONT_WAITtTCL_WINDOW_EVENTStTCL_FILE_EVENTStTCL_TIMER_EVENTStTCL_IDLE_EVENTStTCL_ALL_EVENTSRR>RNRit __bases__RdR�R�R�R�R�R�R�R�R�R�R�R�R�RRtXViewtYViewRR_RaRdRhRsRuRyRzR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tButtonR�tCheckbuttonR�tEntryR�tFrameRgtLabelR�tListboxR�tMenuRt MenubuttonR~t ScrollbarR�tTextR�R�R�RmR�R�R�R�R�RR�RR�RlR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyt<module>s� �-�80,!"�# () S.7 �Tix.pyo000064400000273532151703463030006057 0ustar00� zfc@sxddlZddlZddlTddlmZmZedkrPed�nddlZdZdZdZ d Z d ZdZdZ d ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZd�Zd�Zd�Zd�Z d�Z!d!Z"d"d�d#��YZ#d$ej$e#fd%��YZ$d&d�d'��YZ%ej&j'e%fej&_'d(ej&fd)��YZ(d*e(fd+��YZ)d,d�d-��YZ*d.e(fd/��YZ+d0e(fd1��YZ,d2e(fd3��YZ-d4e(fd5��YZ.d6e(fd7��YZ/d8e(fd9��YZ0d:e(fd;��YZ1d<e(fd=��YZ2d>e(fd?��YZ3d@e(fdA��YZ4dBe(fdC��YZ5dDe(fdE��YZ6dFe(fdG��YZ7dHe(e8e9fdI��YZ:dJe(fdK��YZ;dLe(fdM��YZ<dNe(fdO��YZ=dPe(fdQ��YZ>dRe(fdS��YZ?dTe(fdU��YZ@dVe(fdW��YZAdXe(fdY��YZBdZe(fd[��YZCd\e(fd]��YZDd^e(fd_��YZEd`e(fda��YZFdbe(fdc��YZGdde(fde��YZHdfe(fdg��YZIdhe(fdi��YZJdje(fdk��YZKdle(fdm��YZLdne(fdo��YZMdpe(fdq��YZNdre(e8e9fds��YZOdte(fdu��YZPdve(fdw��YZQdxeRe)fdy��YZSdzeTe)fd{��YZUd|eVe)fd}��YZWd~eXe)fd��YZYd�eZe)fd���YZ[d�e\e)fd���YZ]d�e^e)fd���YZ_d�e`e)fd���YZad�ebe)fd���YZcd�ede)fd���YZed�eGe)fd���YZfd�e:e)fd���YZgd�eFe)fd���YZhd�eOe)fd���YZid�e-e)fd���YZjd�e/e)fd���YZkd�e1e)fd���YZld�e2e)fd���YZmd�e5e)fd���YZnd�e-e)fd���YZod�eNe)fd���YZpd�eAe)fd���YZqd�eCe)fd���YZrd��Zsd��Ztd�e(fd���YZud�e(e8e9fd���YZvd�evfd���YZwdS(�i����N(t*(t_flattent _cnfmergegˡE��@s0This version of Tix.py requires Tk 4.0 or highertwindowttexttstatust immediatetimaget imagetexttballoontautot acrosstoptasciitcelltcolumnt decreasingt increasingtintegertmaintmaxtrealtrowss-regionsx-regionsy-regioniiiiiit tixCommandcBs_eZdZd�Zd�Zd d�Zd d�Zd�Zd�Z d�Z d d�ZRS( s�The tix commands provide access to miscellaneous elements of Tix's internal state and the Tix application context. Most of the information manipulated by these commands pertains to the application as a whole, or to a screen or display, rather than to a particular window. This is a mixin class, assumed to be mixed to Tkinter.Tk that supports the self.tk.call method. cCs|jjdd|�S(s�Tix maintains a list of directories under which the tix_getimage and tix_getbitmap commands will search for image files. The standard bitmap directory is $TIX_LIBRARY/bitmaps. The addbitmapdir command adds directory into this list. By using this command, the image files of an applications can also be located using the tix_getimage or tix_getbitmap command. ttixtaddbitmapdir(ttktcall(tselft directory((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_addbitmapdirVs cCs|jjdd|�S(s�Returns the current value of the configuration option given by option. Option may be any of the options described in the CONFIGURATION OPTIONS section. Rtcget(RR(Rtoption((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_cgetbscKs�|rt||f�}n|r0t|�}n|dkrL|jdd�St|t�rr|jddd|�S|jjd|j|��S(s�Query or modify the configuration options of the Tix application context. If no option is specified, returns a dictionary all of the available options. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given option(s) to have the given value(s); in this case the command returns an empty string. Option may be any of the configuration options. Rt configuret-N(RR!( RtNonet _getconfiguret isinstancet StringTypet_getconfigure1RRt_options(Rtcnftkw((s"/usr/lib64/python2.7/lib-tk/Tix.pyt tix_configureiscCs9|dk r"|jjdd|�S|jjdd�SdS(s�Returns the file selection dialog that may be shared among different calls from this application. This command will create a file selection dialog widget when it is called the first time. This dialog will be returned by all subsequent calls to tix_filedialog. An optional dlgclass parameter can be passed to specified what type of file selection dialog widget is desired. Possible options are tix FileSelectDialog or tixExFileSelectDialog. Rt filedialogN(R#RR(Rtdlgclass((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_filedialogs cCs|jjdd|�S(s�Locates a bitmap file of the name name.xpm or name in one of the bitmap directories (see the tix_addbitmapdir command above). By using tix_getbitmap, you can avoid hard coding the pathnames of the bitmap files in your application. When successful, it returns the complete pathname of the bitmap file, prefixed with the character '@'. The returned value can be used to configure the -bitmap option of the TK and Tix widgets. Rt getbitmap(RR(Rtname((s"/usr/lib64/python2.7/lib-tk/Tix.pyt tix_getbitmap�s cCs|jjdd|�S(s�Locates an image file of the name name.xpm, name.xbm or name.ppm in one of the bitmap directories (see the addbitmapdir command above). If more than one file with the same name (but different extensions) exist, then the image type is chosen according to the depth of the X display: xbm images are chosen on monochrome displays and color images are chosen on color displays. By using tix_ getimage, you can avoid hard coding the pathnames of the image files in your application. When successful, this command returns the name of the newly created image, which can be used to configure the -image option of the Tk and Tix widgets. Rtgetimage(RR(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_getimage�scCs|jjddd|�S(s@Gets the options maintained by the Tix scheme mechanism. Available options include: active_bg active_fg bg bold_font dark1_bg dark1_fg dark2_bg dark2_fg disabled_fg fg fixed_font font inactive_bg inactive_fg input1_bg input2_bg italic_font light1_bg light1_fg light2_bg light2_fg menu_font output1_bg output2_bg select_bg select_fg selector RRtget(RR(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_option_get�scCsE|dk r(|jjdd|||�S|jjdd||�SdS(s�Resets the scheme and fontset of the Tix application to newScheme and newFontSet, respectively. This affects only those widgets created after this call. Therefore, it is best to call the resetoptions command before the creation of any widgets in a Tix application. The optional parameter newScmPrio can be given to reset the priority level of the Tk options set by the Tix schemes. Because of the way Tk handles the X option database, after Tix has been has imported and inited, it is not possible to reset the color schemes and font sets using the tix config command. Instead, the tix_resetoptions command must be used. RtresetoptionsN(R#RR(Rt newSchemet newFontSett newScmPrio((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_resetoptions�sN(t__name__t __module__t__doc__RR R#R+R.R1R3R5R:(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRKs tTkcBs)eZdZdddd�Zd�ZRS(s{Toplevel widget of Tix which represents mostly the main window of an application. It has an associated Tcl interpreter.tTixcCs�tjj||||�tjjd�}|jjd�|dk rr|jjd|�|jjd|�n|jjd�dS(NtTIX_LIBRARYs<global auto_path; lappend auto_path [file dir [info nameof]]s(global auto_path; lappend auto_path {%s}s,global tcl_pkgPath; lappend tcl_pkgPath {%s}spackage require Tix( tTkinterR>t__init__tostenvironR4RtevalR#(Rt screenNametbaseNamet classNamettixlib((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs$|jdd�tjj|�dS(NtWM_DELETE_WINDOWt(tprotocolRAR>tdestroy(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRM�sN(R;R<R=R#RBRM(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR>�stFormcBs_eZdZid�ZeZd�Zd�Zd�Zddd�Zd d�Z d�ZRS( s�The Tix Form geometry manager Widgets can be arranged by specifying attachments to other widgets. See Tix documentation for complete detailscKs)|jjd|j|j||��dS(NttixForm(RRt_wR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytconfig�scCstj|i||6�dS(N(RNtform(Rtkeytvalue((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__setitem__�scCs|jjdd|j�S(NROtcheck(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRV�scCs|jjdd|j�dS(NROtforget(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRW�sicCs�|ro|ro|jjdd|j�}|jj|�}d}x'|D]}||jj|�f}qHW|S|jjdd|j||�S(NROtgrid((RRRPt splitlisttgetint(Rtxsizetysizetxtytz((s"/usr/lib64/python2.7/lib-tk/Tix.pyRX�s cCsX|s|jjdd|j�S|ddkr<d|}n|jjdd|j|�S(NROtinfoiR"(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyR`s cCs1t|j|jj|jjdd|j���S(NROtslaves(tmapt _nametowidgetRRYRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRas N(R;R<R=RQRRRURVRWRXR#R`Ra(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRN�s t TixWidgetcBs}eZdZdddiid�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zidd �Zd �Z RS(sQA TixWidget class is used to package all (or most) Tix widgets. Widget initialization is extended in two ways: 1) It is possible to give a list of options which must be part of the creation command (so called Tix 'static' options). These cannot be given as a 'config' command later. 2) It is possible to give the name of an existing TK widget. These are child widgets created automatically by a Tix mega-widget. The Tk call to create these widgets is therefore bypassed in TixWidget.__init__ Both options are for use by subclasses only. c Cs�|rt||f�}nt|�}d}|rC|jd�n dg}xE|j�D]6\}}||krZ|d||f}||=qZqZW||_tj|||�|r�|jj||j|�n|r�tj ||�ni|_ dS(NtoptionsR"((Rtappendtitemst widgetNametWidgett_setupRRRPRQtsubwidget_list( RtmasterRhtstatic_optionsR)R*textratktv((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs$ cCs'||jkr|j|St|�dS(N(RktAttributeError(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__getattr__KscCs|jjd|j|�dS(s1Set a variable without calling its action routinettixSetSilentN(RRRP(RRT((s"/usr/lib64/python2.7/lib-tk/Tix.pyt set_silentPscCsT|j|�}|s0td|d|j�n|t|j�d}|j|�S(sSReturn the named subwidget (which must have been created by the sub-class).s Subwidget s not child of i(t_subwidget_nametTclErrort_nametlenRPRc(RR0tn((s"/usr/lib64/python2.7/lib-tk/Tix.pyt subwidgetTs cCsl|j�}|sgSg}xI|D]A}|t|j�d}y|j|j|��Wq#q#Xq#W|S(sReturn all subwidgets.i(t_subwidget_namesRxRPRfRc(RtnamestretlistR0((s"/usr/lib64/python2.7/lib-tk/Tix.pytsubwidgets_all^s cCs6y|jj|jd|�SWntk r1dSXdS(s7Get a subwidget name (returns a String, not a Widget !)RzN(RRRPRvR#(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRums cCsHy/|jj|jdd�}|jj|�SWntk rCdSXdS(s"Return the name of all subwidgets.t subwidgetss-allN(RRRPRYRvR#(RR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyR{ts cCs�|dkrdSt|t�s.t|�}nt|t�sLt|�}n|j�}x+|D]#}|jj|dd||�q_WdS(s8Set configuration options for all subwidgets (and self).RKNR!R"(R%R&treprR{RR(RRRTR|R0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt config_all|s cKs�|s$tj}|s$td�q$n|rE|rEt||f�}n|rT|}nd}xO|j�D]A\}}t|d�r�|j|�}n|d||f}qgW|jjdd|f|�S(NsToo early to create imaget__call__R"Rtcreate(( RAt _default_roottRuntimeErrorRRgthasattrt _registerRR(RtimgtypeR)RlR*ReRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_create�s cCs2y|jjdd|�Wntk r-nXdS(NRtdelete(RRRv(Rtimgname((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_delete�s N(R;R<R=R#RBRrRtRzR~RuR{R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRds, tTixSubWidgetcBs&eZdZddd�Zd�ZRS(s�Subwidget class. This is used to mirror child widgets automatically created by Tix/Tk as part of a mega-widget in Python (which is not informed of this)icCsE|rR|j|�}y*|t|j�d}|jd�}WqRg}qRXn|s{tj||ddi|d6�n�|}x�tt|�d�D]i}dj||d �} y|j | �} | }Wq�t k rt|||dddd�}q�Xq�W|r|d}ntj||ddi|d6�||_dS(Nit.R0tdestroy_physicallyitcheck_intermediatei����( RuRxRPtsplitRdRBR#trangetjoinRctKeyErrorR�R�(RRlR0R�R�tpathtplisttparenttiRytw((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s. # cCs�x!|jj�D]}|j�qW|j|jjkrL|jj|j=n|j|jjkrt|jj|j=n|jr�|jjd|j �ndS(NRM( tchildrentvaluesRMRwRlRkR�RRRP(Rtc((s"/usr/lib64/python2.7/lib-tk/Tix.pyRM�s (R;R<R=RBRM(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stDisplayStylecBsSeZdZid�Zd�Zd�Zd�Zd�Zid�Zd�Z RS(sRDisplayStyle - handle configuration options shared by (multiple) Display ItemscKs�d|kr|d}n7d|kr2|d}ntj}|sPtd��n|j|_|jjd||j||��|_dS(Nt refwindows1Too early to create display style: no root windowttixDisplayStyle(RAR�R�RRR(t stylename(RtitemtypeR)R*Rl((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs|jS(N(R�(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__str__�scCsk|r!|r!t||f�}n|r0|}nd}x.|j�D] \}}|d||f}qCW|S(NR"((RRg(RR)R*toptsRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pyR(�s cCs|jj|jd�dS(NR�(RRR�(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs$|jj|jdd||�dS(NR!s-%s(RRR�(RRSRT((s"/usr/lib64/python2.7/lib-tk/Tix.pyRU�scKs"|j|jd|j||��S(NR!(R$R�R((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRQ�scCs|jj|jdd|�S(NRs-%s(RRR�(RRS((s"/usr/lib64/python2.7/lib-tk/Tix.pyt__getitem__�s( R;R<R=RBR�R(R�RURQR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tBallooncBs2eZdZdid�Zid�Zd�ZRS(sBalloon help widget. Subwidget Class --------- ----- label Label message MessagecKsmdddddg}tj||d|||�t|ddd �|jd<t|d dd �|jd <dS(NRetinstallcolormaptinitwaitt statusbartcursort tixBalloontlabelR�itmessage(RdRBt_dummyLabelRk(RRlR)R*tstatic((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cKs/|jj|jd|j|j||��dS(skBind balloon widget to another. One balloon widget may be bound to several widgets at the same timetbindN(RRRPR((RtwidgetR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytbind_widgetscCs |jj|jd|j�dS(Ntunbind(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt unbind_widgetsN(R;R<R=R#RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s t ButtonBoxcBs2eZdZdid�Zid�Zd�ZRS(sgButtonBox - A container for pushbuttons. Subwidgets are the buttons added with the add method. cKs&tj||dddg||�dS(NttixButtonBoxtorientationRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB&scKsD|jj|jd||j||��}t||�|j|<|S(s$Add a button with given name to box.tadd(RRRPR(t_dummyButtonRk(RR0R)R*tbtn((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�*s*cCs/||jkr+|jj|jd|�ndS(Ntinvoke(RkRRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�1sN(R;R<R=R#RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�"stComboBoxcBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(s�ComboBox - an Entry field with a dropdown menu. The user can select a choice by either typing in the entry subwidget or selecting from the listbox subwidget. Subwidget Class --------- ----- entry Entry arrow Button slistbox ScrolledListBox tick Button cross Button : present if created with the fancy optioncKs�tj||dddddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d �|jd <y0t|d �|jd <t|d�|jd<Wntk r�nXdS(NttixComboBoxteditabletdropdowntfancyReR�tentrytarrowtslistboxtticktcross(RdRBR�Rkt_dummyEntryR�t_dummyScrolledListBoxt TypeError(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBCs cCs|jj|jd|�dS(Nt addhistory(RRRP(Rtstr((s"/usr/lib64/python2.7/lib-tk/Tix.pytadd_historyUscCs|jj|jd|�dS(Nt appendhistory(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytappend_historyXscCs |jj|jd||�dS(Ntinsert(RRRP(RtindexR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�[scCs|jj|jd|�dS(Ntpick(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�^sN( R;R<R=R#RBR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�5s tControlcBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(s�Control - An entry field with value change arrows. The user can adjust the value by pressing the two arrow buttons or by entering the value directly into the entry. The new value will be checked against the user-defined upper and lower limits. Subwidget Class --------- ----- incr Button decr Button entry Entry label LabelcKs{tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixControlRetincrtdecrR�R�(RdRBR�RkR�R�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt decrementvscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt incrementyscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�|scCs|jj|jd�dS(Ntupdate(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�sN( R;R<R=R#RBR�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�as tDirListcBs#eZdZid�Zd�ZRS(sRDirList - displays a list view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb ScrollbarcKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixDirListRethlisttvsbthsb(RdRBt_dummyHListRkt_dummyScrollbar(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd|�dS(Ntchdir(RRRP(Rtdir((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirTreecBs#eZdZid�Zd�ZRS(s�DirTree - Directory Listing in a hierarchical view. Displays a tree view of a directory, its previous directories and its sub-directories. The user can choose one of the directories displayed in the list or change to another directory. Subwidget Class --------- ----- hlist HList hsb Scrollbar vsb ScrollbarcKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(Nt tixDirTreeReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd|�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirSelectBoxcBseZdZid�ZRS(s�DirSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixDirSelectBoxRetdirlisttdircbx(RdRBt _dummyDirListRkt_dummyFileComboBox(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stExFileSelectBoxcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectBox - MS Windows style file select box. It provides a convenient method for the user to select files. Subwidget Class --------- ----- cancel Button ok Button hidden Checkbutton types ComboBox dir ComboBox file ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKs�tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d �|jd <t|d �|jd <dS(NttixExFileSelectBoxRetcanceltokthiddenttypesR�R�tfiletfilelist(RdRBR�Rkt_dummyCheckbuttont_dummyComboBoxR�R�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd�dS(Ntfilter(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tDirSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s#The DirSelectDialog widget presents the directories in the file system in a dialog window. The user can use this dialog window to navigate through the file system to select the desired directory. Subwidgets Class ---------- ----- dirbox DirSelectDialogcKs9tj||ddg||�t|d�|jd<dS(NttixDirSelectDialogRetdirbox(RdRBt_dummyDirSelectBoxRk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs|jj|jd�dS(Ntpopup(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd�dS(Ntpopdown(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tExFileSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectDialog - MS Windows style file select dialog. It provides a convenient method for the user to select files. Subwidgets Class ---------- ----- fsbox ExFileSelectBoxcKs9tj||ddg||�t|d�|jd<dS(NttixExFileSelectDialogRetfsbox(RdRBt_dummyExFileSelectBoxRk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t FileSelectBoxcBs,eZdZid�Zd�Zd�ZRS(s�ExFileSelectBox - Motif style file select box. It is generally used for the user to choose a file. FileSelectBox stores the files mostly recently selected into a ComboBox widget so that they can be quickly selected again. Subwidget Class --------- ----- selection ComboBox filter ComboBox dirlist ScrolledListBox filelist ScrolledListBoxcKs{tj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixFileSelectBoxReR�R�R�t selection(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytapply_filter#scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�&s(R;R<R=RBRR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s tFileSelectDialogcBs,eZdZid�Zd�Zd�ZRS(s�FileSelectDialog - Motif style file select dialog. Subwidgets Class ---------- ----- btns StdButtonBox fsbox FileSelectBoxcKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixFileSelectDialogRetbtnsR�(RdRBt_dummyStdButtonBoxRkt_dummyFileSelectBox(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB3scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�9scCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�<s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR*s t FileEntrycBs,eZdZid�Zd�Zd�ZRS(s_FileEntry - Entry field with button that invokes a FileSelectDialog. The user can type in the filename manually. Alternatively, the user can press the button widget that sits next to the entry, which will bring up a file selection dialog. Subwidgets Class ---------- ----- button Button entry EntrycKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(NttixFileEntryt dialogtypeRetbuttonR�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBKscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�QscCsdS(N((R((s"/usr/lib64/python2.7/lib-tk/Tix.pytfile_dialogTs(R;R<R=RBR�R (((s"/usr/lib64/python2.7/lib-tk/Tix.pyR?s tHListcBseZdZd6id�Zid�Zd6id�Zd�Zd�Zdd6d6d�Z d�Z d �Zd �Zd�Z d�Zd �Zd�Zd�Zid�Zid�Zd�Zd�ZeZd�Zd�Zd�Zid�Zid�Zd�Zd�Zd�Zd�Zd�Z d�Z!d6d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,id*�Z-id+�Z.d,�Z/d-�Z0d.�Z1id/�Z2d0�Z3d1�Z4id2�Z5d3�Z6d6d4�Z7d5�Z8RS(7sHList - Hierarchy display widget can be used to display any data that have a hierarchical structure, for example, file system directory trees. The list entries are indented and connected by branch lines according to their places in the hierarchy. Subwidgets - NonecKs&tj||dddg||�dS(NttixHListtcolumnsRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB`scKs(|jj|jd||j||��S(NR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�dscKs7|sd}n|jj|jd||j||��S(NRKtaddchild(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt add_childgs cCs |jj|jdd|�dS(Ntanchortset(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt anchor_setmscCs|jj|jdd�dS(NRtclear(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytanchor_clearpsicCsK|s%|jj|jdd||�S|jj|jdd|d|�SdS(NRtwidths-char(RRRP(RtcolRtchars((s"/usr/lib64/python2.7/lib-tk/Tix.pytcolumn_widthsscCs|jj|jdd�dS(NR�tall(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_allzscCs |jj|jdd|�dS(NR�R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_entry}scCs |jj|jdd|�dS(NR�t offsprings(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_offsprings�scCs |jj|jdd|�dS(NR�tsiblings(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdelete_siblings�scCs |jj|jdd|�dS(NtdragsiteR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdragsite_set�scCs|jj|jdd�dS(NR R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytdragsite_clear�scCs |jj|jdd|�dS(NtdropsiteR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytdropsite_set�scCs|jj|jdd�dS(NR#R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytdropsite_clear�scKs/|jj|jdd||j||��dS(NtheaderR�(RRRPR((RRR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_create�scKsT|dkr%|j|jdd|�S|jj|jdd||j||��dS(NR&R!(R#R$RPRRR((RRR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_configure�scCs|jj|jdd||�S(NR&R(RRRP(RRtopt((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_cget�scCs(|jj|jj|jdd|��S(NR&texist(Rt getbooleanRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_exists�scCs |jj|jdd|�dS(NR&R�(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pyt header_delete�scCs|jj|jdd|�S(NR&tsize(RRRP(RR((s"/usr/lib64/python2.7/lib-tk/Tix.pytheader_size�scCs |jj|jdd|�dS(NthideR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt hide_entry�scKs/|jj|jdd||j||��dS(Nt indicatorR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_create�s cKsT|dkr%|j|jdd|�S|jj|jdd||j||��dS(NR3R!(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_configure�s cCs|jj|jdd||�S(NR3R(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_cget�scCs|jj|jdd|�S(NR3texists(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_exists�scCs |jj|jdd|�dS(NR3R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_delete�scCs|jj|jdd|�S(NR3R/(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytindicator_size�scCs|jj|jdd�S(NR`R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_anchor�scCs+|j|jj|jdd|��p*dS(NR`tbbox(t_getintsRRRPR#(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_bbox�scCs.|jj|jdd|�}|jj|�S(NR`R�(RRRPRY(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_children�scCs|jj|jdd|�S(NR`tdata(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_data�scCs|jj|jdd�S(NR`R (RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_dragsite�scCs|jj|jdd�S(NR`R#(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_dropsite�scCs|jj|jdd|�S(NR`R7(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_exists�scCs|jj|jdd|�S(NR`R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_hidden�scCs|jj|jdd|�S(NR`tnext(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_next�scCs|jj|jdd|�S(NR`R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_parent�scCs|jj|jdd|�S(NR`tprev(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_prev�scCs+|jj|jdd�}|jj|�S(NR`R�(RRRPRY(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_selection�scCs"|jj|jdd|||�S(NtitemR(RRRP(RR�RR)((s"/usr/lib64/python2.7/lib-tk/Tix.pyt item_cget�sc KsZ|dkr(|j|jdd||�S|jj|jdd|||j||��dS(NRLR!(R#R$RPRRR((RR�RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_configure�sc Ks2|jj|jdd|||j||��dS(NRLR�(RRRPR((RR�RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_create�s cCs|jj|jdd||�S(NRLR7(RRRP(RR�R((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_exists�scCs#|jj|jdd||�dS(NRLR�(RRRP(RR�R((s"/usr/lib64/python2.7/lib-tk/Tix.pytitem_delete�scCs|jj|jd||�S(Nt entrycget(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pyRR�scKsN|dkr"|j|jd|�S|jj|jd||j||��dS(Ntentryconfigure(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRSscCs|jj|jd|�S(Ntnearest(RRRP(RR^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRTscCs|jj|jd|�dS(Ntsee(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRUscKs,|jj|jdd|j||��dS(NR�R(RRRPR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytselection_clearscCs|jj|jdd|�S(NR�tincludes(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytselection_includesscCs#|jj|jdd||�dS(NR�R(RRRP(Rtfirsttlast((s"/usr/lib64/python2.7/lib-tk/Tix.pyt selection_setscCs|jj|jdd|�S(NtshowR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt show_entrysN(9R;R<R=R#RBR�RRRRRRRRR!R"R$R%R'R(R*R-theader_existR.R0R2R4R5R6R8R9R:R;R>R?RARBRCRDRERGRHRJRKRMRNRORPRQRRRSRTRURVRXR[R](((s"/usr/lib64/python2.7/lib-tk/Tix.pyRXsl t InputOnlycBseZdZdid�ZRS(s?InputOnly - Invisible widget. Unix only. Subwidgets - NonecKs tj||dd||�dS(NttixInputOnly(RdRBR#(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR_st LabelEntrycBseZdZdid�ZRS(sLabelEntry - Entry field with label. Packages an entry widget and a label into one mega widget. It can be used to simplify the creation of ``entry-form'' type of interface. Subwidgets Class ---------- ----- label Label entry EntrycKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixLabelEntryt labelsideReR�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB,sN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRa"st LabelFramecBseZdZdid�ZRS(seLabelFrame - Labelled Frame container. Packages a frame widget and a label into one mega widget. To create widgets inside a LabelFrame widget, one creates the new widgets relative to the frame subwidget and manage them inside the frame subwidget. Subwidgets Class ---------- ----- label Label frame FramecKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixLabelFrameRcReR�tframe(RdRBR�Rkt_dummyFrame(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB=sN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRd2s tListNoteBookcBsAeZdZid�Zid�Zd�Zd�Zd�ZRS(sA ListNoteBook widget is very similar to the TixNoteBook widget: it can be used to display many windows in a limited space using a notebook metaphor. The notebook is divided into a stack of pages (windows). At one time only one of these pages can be shown. The user can navigate through these pages by choosing the name of the desired page in the hlist subwidget.cKsktj||ddg||�t|ddd�|jd<t|d�|jd<t|d�|jd<dS(NttixListNoteBookRetpaneR�iR�tshlist(RdRBt_dummyPanedWindowRkR�t_dummyScrolledHList(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBLs cKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�Ts(cCs |j|�S(N(Rz(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pytpageYscCsU|jj|jj|jd��}g}x$|D]}|j|j|��q1W|S(Ntpages(RR�RRPRfRz(RR|tretR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyRo\s $ cCs|jj|jd|�dS(Ntraise(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyt raise_pageds(R;R<R=RBR�RnRoRr(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRhDs tMetercBseZdZdid�ZRS(suThe Meter widget can be used to show the progress of a background job which may take a long time to execute. cKs#tj||ddg||�dS(NttixMeterRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBlsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRsgstNoteBookcBsVeZdZdid�Zid�Zd�Zd�Zd�Zd�Z d�Z RS( s�NoteBook - Multi-page container widget (tabbed notebook metaphor). Subwidgets Class ---------- ----- nbframe NoteBookFrame <pages> page widgets added dynamically with the add methodcKs?tj||ddg||�t|ddd�|jd<dS(NttixNoteBookRetnbframeR�i(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBxscKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�}s(cCs8|jj|jd|�|j|j�|j|=dS(NR�(RRRPRkRM(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |j|�S(N(Rz(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRn�scCsU|jj|jj|jd��}g}x$|D]}|j|j|��q1W|S(NRo(RR�RRPRfRz(RR|RpR]((s"/usr/lib64/python2.7/lib-tk/Tix.pyRo�s $ cCs|jj|jd|�dS(NRq(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRr�scCs|jj|jd�S(Ntraised(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRx�sN(R;R<R=R#RBR�R�RnRoRrRx(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRups t NoteBookFramecBseZRS((R;R<(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRy�st OptionMenucBsMeZdZid�Zid�Zid�Zd�Zd�Zd�ZRS(s�OptionMenu - creates a menu button of options. Subwidget Class --------- ----- menubutton Menubutton menu MenucKsRtj||dddg||�t|d�|jd<t|d�|jd<dS(Nt tixOptionMenuRcRet menubuttontmenu(RdRBt_dummyMenubuttonRkt _dummyMenu(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scKs/|jj|jdd||j||��dS(NR�tcommand(RRRPR((RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytadd_command�scKs/|jj|jdd||j||��dS(NR�t separator(RRRPR((RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyt add_separator�scCs|jj|jd|�dS(NR�(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(Ntdisable(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(Ntenable(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s( R;R<R=RBR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRz�s tPanedWindowcBsVeZdZid�Zid�Zd�Zd�Zd�Zid�Zd�Z RS(s�PanedWindow - Multi-pane container widget allows the user to interactively manipulate the sizes of several panes. The panes can be arranged either vertically or horizontally.The user changes the sizes of the panes by dragging the resize handle between two panes. Subwidgets Class ---------- ----- <panes> g/p widgets added dynamically with the add method.cKs&tj||dddg||�dS(NttixPanedWindowR�Re(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scKsO|jj|jd||j||��t||dd�|j|<|j|S(NR�R�i(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s(cCs8|jj|jd|�|j|j�|j|=dS(NR�(RRRPRkRM(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(NRW(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyRW�scCs|jj|jd||�S(Ntpanecget(RRRP(RR�R)((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scKsN|dkr"|j|jd|�S|jj|jd||j||��dS(Nt paneconfigure(R#R$RPRRR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCsD|jj|jj|jd��}g|D]}|j|�^q+S(Ntpanes(RRYRRPRz(RR|R]((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s$( R;R<R=RBR�R�RWR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t PopupMenucBs5eZdZid�Zd�Zd�Zd�ZRS(sPopupMenu widget can be used as a replacement of the tk_popup command. The advantage of the Tix PopupMenu widget is it requires less application code to manipulate. Subwidgets Class ---------- ----- menubutton Menubutton menu MenucKsOtj||ddg||�t|d�|jd<t|d�|jd<dS(NttixPopupMenuReR|R}(RdRBR~RkR(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs |jj|jd|j�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |jj|jd|j�dS(NR�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs&|jj|jd|j||�dS(Ntpost(RRRP(RR�R]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pytpost_widget�s(R;R<R=RBR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s tResizeHandlecBs>eZdZid�Zd�Zd�Zd�Zd�ZRS(s;Internal widget to draw resize handles on Scrolled widgets.c KsAddddddddd g }tj||d |||�dS(NReR�tcursorfgtcursorbgt handlesizet hintcolort hintwidthR]R^ttixResizeHandle(RdRB(RRlR)R*tflags((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs |jj|jd|j�dS(Ntattachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt attach_widgetscCs |jj|jd|j�dS(Ntdetachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt detach_widgetscCs |jj|jd|j�dS(NR1(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR1scCs |jj|jd|j�dS(NR\(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR\s(R;R<R=RBR�R�R1R\(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t ScrolledHListcBseZdZid�ZRS(s0ScrolledHList - HList with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledHListReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs (R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stScrolledListBoxcBseZdZid�ZRS(s4ScrolledListBox - Listbox with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledListBoxRetlistboxR�R�(RdRBt _dummyListboxRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB#s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stScrolledTextcBseZdZid�ZRS(s.ScrolledText - Text with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledTextReRR�R�(RdRBt _dummyTextRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB-s(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�)st ScrolledTListcBseZdZid�ZRS(s0ScrolledTList - TList with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledTListRettlistR�R�(RdRBt_dummyTListRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB7s (R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�3stScrolledWindowcBseZdZid�ZRS(s2ScrolledWindow - Window with automatic scrollbars.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixScrolledWindowReRR�R�(RdRBRgRkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBBs(R;R<R=RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�>stSelectcBs/eZdZid�Zid�Zd�ZRS(s�Select - Container of button subwidgets. It can be used to provide radio-box or check-box style of selection options for the user. Subwidgets are buttons added dynamically using the add method.c KsEtj||ddddddg||�t|d�|jd<dS(Nt tixSelectt allowzerotradioR�RcReR�(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBOs cKsI|jj|jd||j||��t||�|j|<|j|S(NR�(RRRPR(R�Rk(RR0R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�Vs(cCs|jj|jd|�dS(NR�(RRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�[s(R;R<R=RBR�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�HstShellcBseZdZdid�ZRS(s'Toplevel window. Subwidgets - NonecKs&tj||dddg||�dS(NttixShellRettitle(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBcsN(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�^stDialogShellcBs8eZdZdid�Zd�Zd�Zd�ZRS(s�Toplevel window, with popup popdown and center methods. It tells the window manager that it is a dialog window and should be treated specially. The exact treatment depends on the treatment of the window manager. Subwidgets - NonecKs5tj||ddddddddg||�dS( NttixDialogShellReR�tmappedt minheighttminwidthR�t transient(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos cCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�vscCs|jj|jd�dS(NR�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�yscCs|jj|jd�dS(Ntcenter(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�|sN(R;R<R=R#RBR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�fs tStdButtonBoxcBs&eZdZdid�Zd�ZRS(s@StdButtonBox - Standard Button Box (OK, Apply, Cancel and Help) cKs~tj||dddg||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixStdButtonBoxR�ReR�tapplyR�thelp(RdRBR�Rk(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs/||jkr+|jj|jd|�ndS(NR�(RkRRRP(RR0((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sN(R;R<R=R#RBR�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�stTListcBs�eZdZdid�Zd�Zd�Zd�Zd�Zdd�Z d�Z d�Zd �Zd �Z id�Zd�Zd �Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zid�Zd�Zdd�ZRS(s�TList - Hierarchy display widget which can be used to display data in a tabular format. The list entries of a TList widget are similar to the entries in the Tk listbox widget. The main differences are (1) the TList widget can display the list entries in a two dimensional format and (2) you can use graphical images as well as multiple colors and fonts for the list entries. Subwidgets - NonecKs#tj||ddg||�dS(NttixTListRe(RdRB(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�scCs |jj|jdd|�dS(NtactiveR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt active_set�scCs|jj|jdd�dS(NR�R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytactive_clear�scCs |jj|jdd|�dS(NRR(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jdd�dS(NRR(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs |jj|jd||�dS(NR�(RRRP(Rtfrom_tto((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs |jj|jdd|�dS(NR R(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR!�scCs|jj|jdd�dS(NR R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR"�scCs |jj|jdd|�dS(NR#R(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR$�scCs|jj|jdd�dS(NR#R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR%�scKs,|jj|jd||j||��dS(NR�(RRRPR((RR�R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jdd�S(NR`R�(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_active�scCs|jj|jdd�S(NR`R(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR;�scCs|jj|jdd|�S(NR`tdown(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_down�scCs|jj|jdd|�S(NR`tleft(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_left�scCs|jj|jdd|�S(NR`tright(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_right�scCs+|jj|jdd�}|jj|�S(NR`R�(RRRPRY(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRK�scCs|jj|jdd�S(NR`R/(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt info_size�scCs|jj|jdd|�S(NR`tup(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pytinfo_up�scCs|jj|jd||�S(NRT(RRRP(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRT�scCs|jj|jd|�dS(NRU(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRU�scKs,|jj|jdd|j||��dS(NR�R(RRRPR((RR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRV�scCs|jj|jdd|�S(NR�RW(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRX�scCs#|jj|jdd||�dS(NR�R(RRRP(RRYRZ((s"/usr/lib64/python2.7/lib-tk/Tix.pyR[�sN(R;R<R=R#RBR�R�RRR�R!R"R$R%R�R�R;R�R�R�RKR�R�RTRURVRXR[(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s2 tTreecBsMeZdZdid�Zd�Zd�Zd�Zd�Zdd�Z RS( s�Tree - The tixTree widget can be used to display hierarchical data in a tree form. The user can adjust the view of the tree by opening or closing parts of the tree.cKsetj||ddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixTreeReR�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s cCs|jj|jd�dS(sThis command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.tautosetmodeN(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(s8Close the entry given by entryPath if its mode is close.tcloseN(RRRP(Rt entrypath((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�S(s9Returns the current mode of the entry given by entryPath.tgetmode(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��scCs|jj|jd|�dS(s6Open the entry given by entryPath if its mode is open.topenN(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stnonecCs |jj|jd||�dS(s�This command is used to indicate whether the entry given by entryPath has children entries and whether the children are visible. mode must be one of open, close or none. If mode is set to open, a (+) indicator is drawn next to the entry. If mode is set to close, a (-) indicator is drawn next to the entry. If mode is set to none, no indicators will be drawn for this entry. The default mode is none. The open mode indicates the entry has hidden children and this entry can be opened by the user. The close mode indicates that all the children of the entry are now visible and the entry can be closed by the user.tsetmodeN(RRRP(RR�tmode((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s N( R;R<R=R#RBR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s t CheckListcBsbeZdZd id�Zd�Zd�Zd�Zd�Zdd�Z d�Z dd �ZRS(s�The CheckList widget displays a list of items to be selected by the user. CheckList acts similarly to the Tk checkbutton or radiobutton widgets, except it is capable of handling many more items than checkbuttons or radiobuttons. cKshtj||dddg||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NttixCheckListReR�R�R�R�(RdRBR�RkR�(RRlR)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|jd�dS(sThis command calls the setmode method for all the entries in this Tree widget: if an entry has no child entries, its mode is set to none. Otherwise, if the entry has any hidden child entries, its mode is set to open; otherwise its mode is set to close.R�N(RRRP(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�scCs|jj|jd|�dS(s8Close the entry given by entryPath if its mode is close.R�N(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�$scCs|jj|jd|�S(s9Returns the current mode of the entry given by entryPath.R�(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�(scCs|jj|jd|�dS(s6Open the entry given by entryPath if its mode is open.R�N(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�,stoncCs7|jj|jj|jd|��}|jj|�S(s�Returns a list of items whose status matches status. If status is not specified, the list of items in the "on" status will be returned. Mode can be on, off, defaulttgetselection(RR�RRPRY(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�0s'cCs|jj|jd|�S(s(Returns the current status of entryPath.t getstatus(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�7scCs |jj|jd||�dS(s~Sets the status of entryPath to be status. A bitmap will be displayed next to the entry its status is on, off or default.t setstatusN(RRRP(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�;sN(R;R<R=R#RBR�R�R�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�s R�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBGs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�FsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBKs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�JsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBOs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�NsRgcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBSs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRgRsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBWs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�VsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB[s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�ZsRcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB_s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR^sR~cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBcs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR~bsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBgs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�fsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBks(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�jsR�cBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBos(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�nsR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBvs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�usRmcBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBzs(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRmysR�cBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs�tj|||d|g�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<y0t|d�|jd<t|d�|jd<Wntk r�nXdS(NR�R�R�R�R�R�R�(R�RBR�RkR�R�R�R�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs\tj||||�t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCsFtj||||�t|d�|jd<t|d�|jd<dS(NR�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sR�cBseZdd�ZRS(icCs�tj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS( NR�R�R�R�R�R�R�R�(R�RBR�RkR�R�R�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRcBseZdd�ZRS(icCsrtj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�R�(R�RBR�RkR�(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�sR�cBseZdd�ZRS(icCs0tj||||�t|d�|jd<dS(NR�(R�RBR�Rk(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRcBseZdd�ZRS(icCsrtj||||�t|d�|jd<t|d�|jd<t|d�|jd<t|d�|jd<dS(NR�R�R�R�(R�RBR�Rk(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s (R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR�st_dummyNoteBookFramecBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sRlcBseZdd�ZRS(icCstj||||�dS(N(R�RB(RRlR0R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s(R;R<RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRl�scCs|jjd|j�S(szReturns the qualified path name for the widget. Normally used to set default options for subwidgets. See tixwidgets.pyt tixOptionName(RRRP(R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt OptionName�scCsGd}x:|j�D],}|d|d|d||d}qW|S(NRKs{{s} {s - s}} (tkeys(tdicttsttype((s"/usr/lib64/python2.7/lib-tk/Tix.pytFileTypeList�s*tCObjViewcBseZdZRS(sBThis file implements the Canvas Object View widget. This is a base class of IconView. It implements automatic placement/adjustment of the scrollbars according to the canvas objects inside the canvas subwidget. The scrollbars are adjusted so that the canvas is just large enough to see all the objects. (R;R<R=(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��stGridcBs�eZdZdid�Zd�Zd�Zd�Zdd�Zdd�Z d�Z d�Zd �Zdd �Z d�Zd�Zd �Zd�Zd�Zdd�Zd�Zd�Zd�ZRS(s}The Tix Grid command creates a new window and makes it into a tixGrid widget. Additional options, may be specified on the command line or in the option database to configure aspects such as its cursor and relief. A Grid widget displays its contents in a two dimensional grid of cells. Each cell may contain one Tix display item, which may be in text, graphics or other formats. See the DisplayStyle class for more information about Tix display items. Individual cells, or groups of cells, can be formatted with a wide range of attributes, such as its color, relief and border. Subwidgets - NonecKs/g}||_tj||d|||�dS(NttixGrid(R)RdRB(RRlR)R*R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRBs cCs|jj|dd�dS(sRemoves the selection anchor.RRN(RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyR scCs|j|jj|dd��S(s3Get the (x,y) coordinate of the current anchor cellRR4(R=RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt anchor_get scCs |jj|dd||�dS(s/Set the selection anchor to the cell at (x, y).RRN(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRscCsH|dkr(|jj|dd|�n|jj|dd||�dS(sdDelete rows between from_ and to inclusive. If to is not provided, delete only row at from_R�RN(R#RR(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_rowscCsH|dkr(|jj|dd|�n|jj|dd||�dS(sjDelete columns between from_ and to inclusive. If to is not provided, delete only column at from_R�RN(R#RR(RR�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt delete_columnscCs|jj|dd�dS(sUIf any cell is being edited, de-highlight the cell and applies the changes.teditR�N(RR(R((s"/usr/lib64/python2.7/lib-tk/Tix.pyt edit_apply%scCs |jj|dd||�dS(smHighlights the cell at (x, y) for editing, if the -editnotify command returns True for this cell.R�RN(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pytedit_set*scCs?|r#|ddkr#d|}n|jj|d|||�S(s&Get the option value for cell at (x,y)iR"RR(RR(RR]R^R((s"/usr/lib64/python2.7/lib-tk/Tix.pyRR/s cKs|jd||f||�S(NRS(t _configure(RR]R^R)R*((s"/usr/lib64/python2.7/lib-tk/Tix.pyRS5scCs%|j|jj|dd||��S(s+Return True if display item exists at (x,y)R`R7(t_getbooleanRR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRD;scCs|jj|dd||�S(NR`R<(RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyR>?scCs#|jj|dd|||�dS(s�Moves the range of columns from position FROM through TO by the distance indicated by OFFSET. For example, move_column(2, 4, 1) moves the columns 2,3,4 to columns 3,4,5.tmoveRN(RR(RR�R�toffset((s"/usr/lib64/python2.7/lib-tk/Tix.pytmove_columnCscCs#|jj|dd|||�dS(s�Moves the range of rows from position FROM through TO by the distance indicated by OFFSET. For example, move_row(2, 4, 1) moves the rows 2,3,4 to rows 3,4,5.R�RN(RR(RR�R�R�((s"/usr/lib64/python2.7/lib-tk/Tix.pytmove_rowIscCs"|j|jj|d||��S(s8Return coordinate of cell nearest pixel coordinate (x,y)RT(R=RR(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyRTOscKsT|j|j|�}|dk r4d|f|}n|jj|d|||�dS(Ns -itemtypeR(R(R)R#RR(RR]R^R�R*targs((s"/usr/lib64/python2.7/lib-tk/Tix.pyRYsc Ks7|jj|jj|jdd||ji|���S(s�Queries or sets the size of the column given by INDEX. INDEX may be any non-negative integer that gives the position of a given column. INDEX can also be the string "default"; in this case, this command queries or sets the default size of all columns. When no option-value pair is given, this command returns a tuple containing the current size setting of the given column. When option-value pairs are given, the corresponding options of the size setting of the given column are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the left of a column. pad1 pixels Specifies the paddings to the right of a column. size val Specifies the width of a column. Val may be: "auto" -- the width of the column is set to the width of the widest cell in the column; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the width of the column to the given number of characters.R/R(RR�RRPR((RR�R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytsize_column_s!c Ks4|jj|jj|dd||ji|���S(s�Queries or sets the size of the row given by INDEX. INDEX may be any non-negative integer that gives the position of a given row . INDEX can also be the string "default"; in this case, this command queries or sets the default size of all rows. When no option-value pair is given, this command returns a list con- taining the current size setting of the given row . When option-value pairs are given, the corresponding options of the size setting of the given row are changed. Options may be one of the follwing: pad0 pixels Specifies the paddings to the top of a row. pad1 pixels Specifies the paddings to the bottom of a row. size val Specifies the height of a row. Val may be: "auto" -- the height of the row is set to the height of the highest cell in the row; a valid Tk screen distance unit; or a real number following by the word chars (e.g. 3.4chars) that sets the height of the row to the given number of characters.R/R(RR�RR((RR�R*((s"/usr/lib64/python2.7/lib-tk/Tix.pytsize_rowyscCs |jj|jd||�dS(s7Clears the cell at (x, y) by removing its display item.tunsetN(RRRP(RR]R^((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��sN(R;R<R=R#RBRR�RR�R�R�R�RRRSRDR>R�R�RTRR�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��s( tScrolledGridcBseZdZdid�ZRS(sScrolled Grid widgetscKs/g}||_tj||d|||�dS(NttixScrolledGrid(R)RdRB(RRlR)R*R�((s"/usr/lib64/python2.7/lib-tk/Tix.pyRB�s N(R;R<R=R#RB(((s"/usr/lib64/python2.7/lib-tk/Tix.pyR��siiiii ((((xRCRARRt TkVersiontImportErrort_tkintertWINDOWtTEXTtSTATUSt IMMEDIATEtIMAGEt IMAGETEXTtBALLOONtAUTOt ACROSSTOPtASCIItCELLtCOLUMNt DECREASINGt INCREASINGtINTEGERtMAINtMAXtREALtROWtS_REGIONtX_REGIONtY_REGIONt TCL_DONT_WAITtTCL_WINDOW_EVENTStTCL_FILE_EVENTStTCL_TIMER_EVENTStTCL_IDLE_EVENTStTCL_ALL_EVENTSRR>RNRit __bases__RdR�R�R�R�R�R�R�R�R�R�R�R�R�RRtXViewtYViewRR_RaRdRhRsRuRyRzR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tButtonR�tCheckbuttonR�tEntryR�tFrameRgtLabelR�tListboxR�tMenuRt MenubuttonR~t ScrollbarR�tTextR�R�R�RmR�R�R�R�R�RR�RR�RlR�R�R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyt<module>s� �-�80,!"�# () S.7 �Tkconstants.py000064400000002725151703463030007441 0ustar00# Symbolic constants for Tk # Booleans NO=FALSE=OFF=0 YES=TRUE=ON=1 # -anchor and -sticky N='n' S='s' W='w' E='e' NW='nw' SW='sw' NE='ne' SE='se' NS='ns' EW='ew' NSEW='nsew' CENTER='center' # -fill NONE='none' X='x' Y='y' BOTH='both' # -side LEFT='left' TOP='top' RIGHT='right' BOTTOM='bottom' # -relief RAISED='raised' SUNKEN='sunken' FLAT='flat' RIDGE='ridge' GROOVE='groove' SOLID = 'solid' # -orient HORIZONTAL='horizontal' VERTICAL='vertical' # -tabs NUMERIC='numeric' # -wrap CHAR='char' WORD='word' # -align BASELINE='baseline' # -bordermode INSIDE='inside' OUTSIDE='outside' # Special tags, marks and insert positions SEL='sel' SEL_FIRST='sel.first' SEL_LAST='sel.last' END='end' INSERT='insert' CURRENT='current' ANCHOR='anchor' ALL='all' # e.g. Canvas.delete(ALL) # Text widget and button states NORMAL='normal' DISABLED='disabled' ACTIVE='active' # Canvas state HIDDEN='hidden' # Menu item types CASCADE='cascade' CHECKBUTTON='checkbutton' COMMAND='command' RADIOBUTTON='radiobutton' SEPARATOR='separator' # Selection modes for list boxes SINGLE='single' BROWSE='browse' MULTIPLE='multiple' EXTENDED='extended' # Activestyle for list boxes # NONE='none' is also valid DOTBOX='dotbox' UNDERLINE='underline' # Various canvas styles PIESLICE='pieslice' CHORD='chord' ARC='arc' FIRST='first' LAST='last' BUTT='butt' PROJECTING='projecting' ROUND='round' BEVEL='bevel' MITER='miter' # Arguments to xview/yview MOVETO='moveto' SCROLL='scroll' UNITS='units' PAGES='pages' Tkconstants.pyc000064400000004306151703463030007601 0ustar00� zfc@s�dZZZdZZZdZdZdZdZ dZ dZdZd Z d ZdZdZd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6Z:d7Z;d8Z<d9Z=d:Z>d;Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFdCZGdDZHdEZIdFZJdGZKdHZLdIS(Jiitntstwtetnwtswtnetsetnstewtnsewtcentertnonetxtytbothtleftttoptrighttbottomtraisedtsunkentflattridgetgroovetsolidt horizontaltverticaltnumerictchartwordtbaselinetinsidetoutsidetsels sel.firstssel.lasttendtinserttcurrenttanchortalltnormaltdisabledtactivethiddentcascadetcheckbuttontcommandtradiobuttont separatortsingletbrowsetmultipletextendedtdotboxt underlinetpieslicetchordtarctfirsttlasttbuttt projectingtroundtbeveltmitertmovetotscrolltunitstpagesN(MtNOtFALSEtOFFtYEStTRUEtONtNtStWtEtNWtSWtNEtSEtNStEWtNSEWtCENTERtNONEtXtYtBOTHtLEFTtTOPtRIGHTtBOTTOMtRAISEDtSUNKENtFLATtRIDGEtGROOVEtSOLIDt HORIZONTALtVERTICALtNUMERICtCHARtWORDtBASELINEtINSIDEtOUTSIDEtSELt SEL_FIRSTtSEL_LASTtENDtINSERTtCURRENTtANCHORtALLtNORMALtDISABLEDtACTIVEtHIDDENtCASCADEtCHECKBUTTONtCOMMANDtRADIOBUTTONt SEPARATORtSINGLEtBROWSEtMULTIPLEtEXTENDEDtDOTBOXt UNDERLINEtPIESLICEtCHORDtARCtFIRSTtLASTtBUTTt PROJECTINGtROUNDtBEVELtMITERtMOVETOtSCROLLtUNITStPAGES(((s*/usr/lib64/python2.7/lib-tk/Tkconstants.pyt<module>s�Tkconstants.pyo000064400000004306151703463030007615 0ustar00� zfc@s�dZZZdZZZdZdZdZdZ dZ dZdZd Z d ZdZdZd ZdZdZdZdZdZdZdZdZdZdZdZdZdZdZdZ dZ!dZ"dZ#d Z$d!Z%d"Z&d#Z'd$Z(d%Z)d&Z*d'Z+d(Z,d)Z-d*Z.d+Z/d,Z0d-Z1d.Z2d/Z3d0Z4d1Z5d2Z6d3Z7d4Z8d5Z9d6Z:d7Z;d8Z<d9Z=d:Z>d;Z?d<Z@d=ZAd>ZBd?ZCd@ZDdAZEdBZFdCZGdDZHdEZIdFZJdGZKdHZLdIS(Jiitntstwtetnwtswtnetsetnstewtnsewtcentertnonetxtytbothtleftttoptrighttbottomtraisedtsunkentflattridgetgroovetsolidt horizontaltverticaltnumerictchartwordtbaselinetinsidetoutsidetsels sel.firstssel.lasttendtinserttcurrenttanchortalltnormaltdisabledtactivethiddentcascadetcheckbuttontcommandtradiobuttont separatortsingletbrowsetmultipletextendedtdotboxt underlinetpieslicetchordtarctfirsttlasttbuttt projectingtroundtbeveltmitertmovetotscrolltunitstpagesN(MtNOtFALSEtOFFtYEStTRUEtONtNtStWtEtNWtSWtNEtSEtNStEWtNSEWtCENTERtNONEtXtYtBOTHtLEFTtTOPtRIGHTtBOTTOMtRAISEDtSUNKENtFLATtRIDGEtGROOVEtSOLIDt HORIZONTALtVERTICALtNUMERICtCHARtWORDtBASELINEtINSIDEtOUTSIDEtSELt SEL_FIRSTtSEL_LASTtENDtINSERTtCURRENTtANCHORtALLtNORMALtDISABLEDtACTIVEtHIDDENtCASCADEtCHECKBUTTONtCOMMANDtRADIOBUTTONt SEPARATORtSINGLEtBROWSEtMULTIPLEtEXTENDEDtDOTBOXt UNDERLINEtPIESLICEtCHORDtARCtFIRSTtLASTtBUTTt PROJECTINGtROUNDtBEVELtMITERtMOVETOtSCROLLtUNITStPAGES(((s*/usr/lib64/python2.7/lib-tk/Tkconstants.pyt<module>s�Tkdnd.py000064400000026340151703463030006171 0ustar00"""Drag-and-drop support for Tkinter. This is very preliminary. I currently only support dnd *within* one application, between different windows (or within the same window). I am trying to make this as generic as possible -- not dependent on the use of a particular widget or icon type, etc. I also hope that this will work with Pmw. To enable an object to be dragged, you must create an event binding for it that starts the drag-and-drop process. Typically, you should bind <ButtonPress> to a callback function that you write. The function should call Tkdnd.dnd_start(source, event), where 'source' is the object to be dragged, and 'event' is the event that invoked the call (the argument to your callback function). Even though this is a class instantiation, the returned instance should not be stored -- it will be kept alive automatically for the duration of the drag-and-drop. When a drag-and-drop is already in process for the Tk interpreter, the call is *ignored*; this normally averts starting multiple simultaneous dnd processes, e.g. because different button callbacks all dnd_start(). The object is *not* necessarily a widget -- it can be any application-specific object that is meaningful to potential drag-and-drop targets. Potential drag-and-drop targets are discovered as follows. Whenever the mouse moves, and at the start and end of a drag-and-drop move, the Tk widget directly under the mouse is inspected. This is the target widget (not to be confused with the target object, yet to be determined). If there is no target widget, there is no dnd target object. If there is a target widget, and it has an attribute dnd_accept, this should be a function (or any callable object). The function is called as dnd_accept(source, event), where 'source' is the object being dragged (the object passed to dnd_start() above), and 'event' is the most recent event object (generally a <Motion> event; it can also be <ButtonPress> or <ButtonRelease>). If the dnd_accept() function returns something other than None, this is the new dnd target object. If dnd_accept() returns None, or if the target widget has no dnd_accept attribute, the target widget's parent is considered as the target widget, and the search for a target object is repeated from there. If necessary, the search is repeated all the way up to the root widget. If none of the target widgets can produce a target object, there is no target object (the target object is None). The target object thus produced, if any, is called the new target object. It is compared with the old target object (or None, if there was no old target widget). There are several cases ('source' is the source object, and 'event' is the most recent event object): - Both the old and new target objects are None. Nothing happens. - The old and new target objects are the same object. Its method dnd_motion(source, event) is called. - The old target object was None, and the new target object is not None. The new target object's method dnd_enter(source, event) is called. - The new target object is None, and the old target object is not None. The old target object's method dnd_leave(source, event) is called. - The old and new target objects differ and neither is None. The old target object's method dnd_leave(source, event), and then the new target object's method dnd_enter(source, event) is called. Once this is done, the new target object replaces the old one, and the Tk mainloop proceeds. The return value of the methods mentioned above is ignored; if they raise an exception, the normal exception handling mechanisms take over. The drag-and-drop processes can end in two ways: a final target object is selected, or no final target object is selected. When a final target object is selected, it will always have been notified of the potential drop by a call to its dnd_enter() method, as described above, and possibly one or more calls to its dnd_motion() method; its dnd_leave() method has not been called since the last call to dnd_enter(). The target is notified of the drop by a call to its method dnd_commit(source, event). If no final target object is selected, and there was an old target object, its dnd_leave(source, event) method is called to complete the dnd sequence. Finally, the source object is notified that the drag-and-drop process is over, by a call to source.dnd_end(target, event), specifying either the selected target object, or None if no target object was selected. The source object can use this to implement the commit action; this is sometimes simpler than to do it in the target's dnd_commit(). The target's dnd_commit() method could then simply be aliased to dnd_leave(). At any time during a dnd sequence, the application can cancel the sequence by calling the cancel() method on the object returned by dnd_start(). This will call dnd_leave() if a target is currently active; it will never call dnd_commit(). """ import Tkinter # The factory function def dnd_start(source, event): h = DndHandler(source, event) if h.root: return h else: return None # The class that does the work class DndHandler: root = None def __init__(self, source, event): if event.num > 5: return root = event.widget._root() try: root.__dnd return # Don't start recursive dnd except AttributeError: root.__dnd = self self.root = root self.source = source self.target = None self.initial_button = button = event.num self.initial_widget = widget = event.widget self.release_pattern = "<B%d-ButtonRelease-%d>" % (button, button) self.save_cursor = widget['cursor'] or "" widget.bind(self.release_pattern, self.on_release) widget.bind("<Motion>", self.on_motion) widget['cursor'] = "hand2" def __del__(self): root = self.root self.root = None if root: try: del root.__dnd except AttributeError: pass def on_motion(self, event): x, y = event.x_root, event.y_root target_widget = self.initial_widget.winfo_containing(x, y) source = self.source new_target = None while target_widget: try: attr = target_widget.dnd_accept except AttributeError: pass else: new_target = attr(source, event) if new_target: break target_widget = target_widget.master old_target = self.target if old_target is new_target: if old_target: old_target.dnd_motion(source, event) else: if old_target: self.target = None old_target.dnd_leave(source, event) if new_target: new_target.dnd_enter(source, event) self.target = new_target def on_release(self, event): self.finish(event, 1) def cancel(self, event=None): self.finish(event, 0) def finish(self, event, commit=0): target = self.target source = self.source widget = self.initial_widget root = self.root try: del root.__dnd self.initial_widget.unbind(self.release_pattern) self.initial_widget.unbind("<Motion>") widget['cursor'] = self.save_cursor self.target = self.source = self.initial_widget = self.root = None if target: if commit: target.dnd_commit(source, event) else: target.dnd_leave(source, event) finally: source.dnd_end(target, event) # ---------------------------------------------------------------------- # The rest is here for testing and demonstration purposes only! class Icon: def __init__(self, name): self.name = name self.canvas = self.label = self.id = None def attach(self, canvas, x=10, y=10): if canvas is self.canvas: self.canvas.coords(self.id, x, y) return if self.canvas: self.detach() if not canvas: return label = Tkinter.Label(canvas, text=self.name, borderwidth=2, relief="raised") id = canvas.create_window(x, y, window=label, anchor="nw") self.canvas = canvas self.label = label self.id = id label.bind("<ButtonPress>", self.press) def detach(self): canvas = self.canvas if not canvas: return id = self.id label = self.label self.canvas = self.label = self.id = None canvas.delete(id) label.destroy() def press(self, event): if dnd_start(self, event): # where the pointer is relative to the label widget: self.x_off = event.x self.y_off = event.y # where the widget is relative to the canvas: self.x_orig, self.y_orig = self.canvas.coords(self.id) def move(self, event): x, y = self.where(self.canvas, event) self.canvas.coords(self.id, x, y) def putback(self): self.canvas.coords(self.id, self.x_orig, self.y_orig) def where(self, canvas, event): # where the corner of the canvas is relative to the screen: x_org = canvas.winfo_rootx() y_org = canvas.winfo_rooty() # where the pointer is relative to the canvas widget: x = event.x_root - x_org y = event.y_root - y_org # compensate for initial pointer offset return x - self.x_off, y - self.y_off def dnd_end(self, target, event): pass class Tester: def __init__(self, root): self.top = Tkinter.Toplevel(root) self.canvas = Tkinter.Canvas(self.top, width=100, height=100) self.canvas.pack(fill="both", expand=1) self.canvas.dnd_accept = self.dnd_accept def dnd_accept(self, source, event): return self def dnd_enter(self, source, event): self.canvas.focus_set() # Show highlight border x, y = source.where(self.canvas, event) x1, y1, x2, y2 = source.canvas.bbox(source.id) dx, dy = x2-x1, y2-y1 self.dndid = self.canvas.create_rectangle(x, y, x+dx, y+dy) self.dnd_motion(source, event) def dnd_motion(self, source, event): x, y = source.where(self.canvas, event) x1, y1, x2, y2 = self.canvas.bbox(self.dndid) self.canvas.move(self.dndid, x-x1, y-y1) def dnd_leave(self, source, event): self.top.focus_set() # Hide highlight border self.canvas.delete(self.dndid) self.dndid = None def dnd_commit(self, source, event): self.dnd_leave(source, event) x, y = source.where(self.canvas, event) source.attach(self.canvas, x, y) def test(): root = Tkinter.Tk() root.geometry("+1+1") Tkinter.Button(command=root.quit, text="Quit").pack() t1 = Tester(root) t1.top.geometry("+1+60") t2 = Tester(root) t2.top.geometry("+120+60") t3 = Tester(root) t3.top.geometry("+240+60") i1 = Icon("ICON1") i2 = Icon("ICON2") i3 = Icon("ICON3") i1.attach(t1.canvas) i2.attach(t2.canvas) i3.attach(t3.canvas) root.mainloop() if __name__ == '__main__': test() Tkdnd.pyc000064400000031031151703463030006325 0ustar00� zfc@swdZddlZd�Zddd��YZdd d��YZddd ��YZd �Zedkrse�ndS(sFDrag-and-drop support for Tkinter. This is very preliminary. I currently only support dnd *within* one application, between different windows (or within the same window). I am trying to make this as generic as possible -- not dependent on the use of a particular widget or icon type, etc. I also hope that this will work with Pmw. To enable an object to be dragged, you must create an event binding for it that starts the drag-and-drop process. Typically, you should bind <ButtonPress> to a callback function that you write. The function should call Tkdnd.dnd_start(source, event), where 'source' is the object to be dragged, and 'event' is the event that invoked the call (the argument to your callback function). Even though this is a class instantiation, the returned instance should not be stored -- it will be kept alive automatically for the duration of the drag-and-drop. When a drag-and-drop is already in process for the Tk interpreter, the call is *ignored*; this normally averts starting multiple simultaneous dnd processes, e.g. because different button callbacks all dnd_start(). The object is *not* necessarily a widget -- it can be any application-specific object that is meaningful to potential drag-and-drop targets. Potential drag-and-drop targets are discovered as follows. Whenever the mouse moves, and at the start and end of a drag-and-drop move, the Tk widget directly under the mouse is inspected. This is the target widget (not to be confused with the target object, yet to be determined). If there is no target widget, there is no dnd target object. If there is a target widget, and it has an attribute dnd_accept, this should be a function (or any callable object). The function is called as dnd_accept(source, event), where 'source' is the object being dragged (the object passed to dnd_start() above), and 'event' is the most recent event object (generally a <Motion> event; it can also be <ButtonPress> or <ButtonRelease>). If the dnd_accept() function returns something other than None, this is the new dnd target object. If dnd_accept() returns None, or if the target widget has no dnd_accept attribute, the target widget's parent is considered as the target widget, and the search for a target object is repeated from there. If necessary, the search is repeated all the way up to the root widget. If none of the target widgets can produce a target object, there is no target object (the target object is None). The target object thus produced, if any, is called the new target object. It is compared with the old target object (or None, if there was no old target widget). There are several cases ('source' is the source object, and 'event' is the most recent event object): - Both the old and new target objects are None. Nothing happens. - The old and new target objects are the same object. Its method dnd_motion(source, event) is called. - The old target object was None, and the new target object is not None. The new target object's method dnd_enter(source, event) is called. - The new target object is None, and the old target object is not None. The old target object's method dnd_leave(source, event) is called. - The old and new target objects differ and neither is None. The old target object's method dnd_leave(source, event), and then the new target object's method dnd_enter(source, event) is called. Once this is done, the new target object replaces the old one, and the Tk mainloop proceeds. The return value of the methods mentioned above is ignored; if they raise an exception, the normal exception handling mechanisms take over. The drag-and-drop processes can end in two ways: a final target object is selected, or no final target object is selected. When a final target object is selected, it will always have been notified of the potential drop by a call to its dnd_enter() method, as described above, and possibly one or more calls to its dnd_motion() method; its dnd_leave() method has not been called since the last call to dnd_enter(). The target is notified of the drop by a call to its method dnd_commit(source, event). If no final target object is selected, and there was an old target object, its dnd_leave(source, event) method is called to complete the dnd sequence. Finally, the source object is notified that the drag-and-drop process is over, by a call to source.dnd_end(target, event), specifying either the selected target object, or None if no target object was selected. The source object can use this to implement the commit action; this is sometimes simpler than to do it in the target's dnd_commit(). The target's dnd_commit() method could then simply be aliased to dnd_leave(). At any time during a dnd sequence, the application can cancel the sequence by calling the cancel() method on the object returned by dnd_start(). This will call dnd_leave() if a target is currently active; it will never call dnd_commit(). i����NcCs$t||�}|jr|SdSdS(N(t DndHandlertroottNone(tsourceteventth((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt dnd_startls RcBsJeZdZd�Zd�Zd�Zd�Zdd�Zdd�Z RS(cCs�|jdkrdS|jj�}y|jdSWn#tk rV||_||_nX||_d|_|j|_ }|j|_ }d||f|_|dp�d|_|j |j|j�|j d|j�d|d<dS(Nis<B%d-ButtonRelease-%d>tcursorts<Motion>thand2(tnumtwidgett_roott_DndHandler__dndtAttributeErrorRRRttargettinitial_buttontinitial_widgettrelease_patterntsave_cursortbindt on_releaset on_motion(tselfRRRtbuttonR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt__init__zs$ cCs=|j}d|_|r9y |`Wq9tk r5q9XndS(N(RRR R(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt__del__�s c Cs|j|j}}|jj||�}|j}d}xM|r�y |j}Wntk r`nX|||�}|rzPn|j}q:W|j }||kr�|r�|j ||�q�nD|r�d|_ |j||�n|r�|j||�||_ ndS(N( tx_rootty_rootRtwinfo_containingRRt dnd_acceptRtmasterRt dnd_motiont dnd_leavet dnd_enter( RRtxtyt target_widgetRt new_targettattrt old_target((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�s. cCs|j|d�dS(Ni(tfinish(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�scCs|j|d�dS(Ni(R)(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytcancel�sicCs�|j}|j}|j}|j}z�|`|jj|j�|jjd�|j|d<d|_|_|_|_|r�|r�|j ||�q�|j ||�nWd|j||�XdS(Ns<Motion>R(RRRRR tunbindRRRt dnd_commitR!tdnd_end(RRtcommitRRRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR)�s N( t__name__t __module__RRRRRRR*R)(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRvs tIconcBsVeZd�Zddd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS( cCs$||_d|_|_|_dS(N(tnameRtcanvastlabeltid(RR2((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�s i cCs�||jkr,|jj|j||�dS|jrB|j�n|sLdStj|d|jdddd�}|j||d|dd�}||_||_||_|j d |j �dS( Nttexttborderwidthitrelieftraisedtwindowtanchortnws <ButtonPress>(R3tcoordsR5tdetachtTkintertLabelR2t create_windowR4Rtpress(RR3R#R$R4R5((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytattach�s cCsW|j}|sdS|j}|j}d|_|_|_|j|�|j�dS(N(R3R5R4Rtdeletetdestroy(RR3R5R4((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR>�s cCsOt||�rK|j|_|j|_|jj|j�\|_|_ ndS(N( RR#tx_offR$ty_offR3R=R5tx_origty_orig(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRB�scCs8|j|j|�\}}|jj|j||�dS(N(twhereR3R=R5(RRR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytmove�scCs#|jj|j|j|j�dS(N(R3R=R5RHRI(R((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytputback�scCsJ|j�}|j�}|j|}|j|}||j||jfS(N(twinfo_rootxtwinfo_rootyRRRFRG(RR3Rtx_orgty_orgR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRJ�s cCsdS(N((RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR- s( R/R0RRCR>RBRKRLRJR-(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR1�s tTestercBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs_tj|�|_tj|jdddd�|_|jjdddd�|j|j_dS(Ntwidthidtheighttfilltbothtexpandi(R?tToplevelttoptCanvasR3tpackR(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRs!cCs|S(N((RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRscCs�|jj�|j|j|�\}}|jj|j�\}}}}||||} } |jj|||| || �|_|j||�dS(N(R3t focus_setRJtbboxR5tcreate_rectangletdndidR (RRRR#R$tx1ty1tx2ty2tdxtdy((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR"s !&c Csa|j|j|�\}}|jj|j�\}}}}|jj|j||||�dS(N(RJR3R\R^RK( RRRR#R$R_R`RaRb((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR s!cCs-|jj�|jj|j�d|_dS(N(RXR[R3RDR^R(RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR!$s cCsE|j||�|j|j|�\}}|j|j||�dS(N(R!RJR3RC(RRRR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR,)s(R/R0RRR"R R!R,(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRQs cCs�tj�}|jd�tjd|jdd�j�t|�}|jjd�t|�}|jjd�t|�}|jjd�td�}td �}td �}|j |j �|j |j �|j |j �|j�dS(Ns+1+1tcommandR6tQuits+1+60s+120+60s+240+60tICON1tICON2tICON3(R?tTktgeometrytButtontquitRZRQRXR1RCR3tmainloop(Rtt1tt2tt3ti1ti2ti3((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyttest.s t__main__((((t__doc__R?RRR1RQRuR/(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt<module>ds Z<" Tkdnd.pyo000064400000031031151703463030006341 0ustar00� zfc@swdZddlZd�Zddd��YZdd d��YZddd ��YZd �Zedkrse�ndS(sFDrag-and-drop support for Tkinter. This is very preliminary. I currently only support dnd *within* one application, between different windows (or within the same window). I am trying to make this as generic as possible -- not dependent on the use of a particular widget or icon type, etc. I also hope that this will work with Pmw. To enable an object to be dragged, you must create an event binding for it that starts the drag-and-drop process. Typically, you should bind <ButtonPress> to a callback function that you write. The function should call Tkdnd.dnd_start(source, event), where 'source' is the object to be dragged, and 'event' is the event that invoked the call (the argument to your callback function). Even though this is a class instantiation, the returned instance should not be stored -- it will be kept alive automatically for the duration of the drag-and-drop. When a drag-and-drop is already in process for the Tk interpreter, the call is *ignored*; this normally averts starting multiple simultaneous dnd processes, e.g. because different button callbacks all dnd_start(). The object is *not* necessarily a widget -- it can be any application-specific object that is meaningful to potential drag-and-drop targets. Potential drag-and-drop targets are discovered as follows. Whenever the mouse moves, and at the start and end of a drag-and-drop move, the Tk widget directly under the mouse is inspected. This is the target widget (not to be confused with the target object, yet to be determined). If there is no target widget, there is no dnd target object. If there is a target widget, and it has an attribute dnd_accept, this should be a function (or any callable object). The function is called as dnd_accept(source, event), where 'source' is the object being dragged (the object passed to dnd_start() above), and 'event' is the most recent event object (generally a <Motion> event; it can also be <ButtonPress> or <ButtonRelease>). If the dnd_accept() function returns something other than None, this is the new dnd target object. If dnd_accept() returns None, or if the target widget has no dnd_accept attribute, the target widget's parent is considered as the target widget, and the search for a target object is repeated from there. If necessary, the search is repeated all the way up to the root widget. If none of the target widgets can produce a target object, there is no target object (the target object is None). The target object thus produced, if any, is called the new target object. It is compared with the old target object (or None, if there was no old target widget). There are several cases ('source' is the source object, and 'event' is the most recent event object): - Both the old and new target objects are None. Nothing happens. - The old and new target objects are the same object. Its method dnd_motion(source, event) is called. - The old target object was None, and the new target object is not None. The new target object's method dnd_enter(source, event) is called. - The new target object is None, and the old target object is not None. The old target object's method dnd_leave(source, event) is called. - The old and new target objects differ and neither is None. The old target object's method dnd_leave(source, event), and then the new target object's method dnd_enter(source, event) is called. Once this is done, the new target object replaces the old one, and the Tk mainloop proceeds. The return value of the methods mentioned above is ignored; if they raise an exception, the normal exception handling mechanisms take over. The drag-and-drop processes can end in two ways: a final target object is selected, or no final target object is selected. When a final target object is selected, it will always have been notified of the potential drop by a call to its dnd_enter() method, as described above, and possibly one or more calls to its dnd_motion() method; its dnd_leave() method has not been called since the last call to dnd_enter(). The target is notified of the drop by a call to its method dnd_commit(source, event). If no final target object is selected, and there was an old target object, its dnd_leave(source, event) method is called to complete the dnd sequence. Finally, the source object is notified that the drag-and-drop process is over, by a call to source.dnd_end(target, event), specifying either the selected target object, or None if no target object was selected. The source object can use this to implement the commit action; this is sometimes simpler than to do it in the target's dnd_commit(). The target's dnd_commit() method could then simply be aliased to dnd_leave(). At any time during a dnd sequence, the application can cancel the sequence by calling the cancel() method on the object returned by dnd_start(). This will call dnd_leave() if a target is currently active; it will never call dnd_commit(). i����NcCs$t||�}|jr|SdSdS(N(t DndHandlertroottNone(tsourceteventth((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt dnd_startls RcBsJeZdZd�Zd�Zd�Zd�Zdd�Zdd�Z RS(cCs�|jdkrdS|jj�}y|jdSWn#tk rV||_||_nX||_d|_|j|_ }|j|_ }d||f|_|dp�d|_|j |j|j�|j d|j�d|d<dS(Nis<B%d-ButtonRelease-%d>tcursorts<Motion>thand2(tnumtwidgett_roott_DndHandler__dndtAttributeErrorRRRttargettinitial_buttontinitial_widgettrelease_patterntsave_cursortbindt on_releaset on_motion(tselfRRRtbuttonR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt__init__zs$ cCs=|j}d|_|r9y |`Wq9tk r5q9XndS(N(RRR R(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt__del__�s c Cs|j|j}}|jj||�}|j}d}xM|r�y |j}Wntk r`nX|||�}|rzPn|j}q:W|j }||kr�|r�|j ||�q�nD|r�d|_ |j||�n|r�|j||�||_ ndS(N( tx_rootty_rootRtwinfo_containingRRt dnd_acceptRtmasterRt dnd_motiont dnd_leavet dnd_enter( RRtxtyt target_widgetRt new_targettattrt old_target((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�s. cCs|j|d�dS(Ni(tfinish(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�scCs|j|d�dS(Ni(R)(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytcancel�sicCs�|j}|j}|j}|j}z�|`|jj|j�|jjd�|j|d<d|_|_|_|_|r�|r�|j ||�q�|j ||�nWd|j||�XdS(Ns<Motion>R(RRRRR tunbindRRRt dnd_commitR!tdnd_end(RRtcommitRRRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR)�s N( t__name__t __module__RRRRRRR*R)(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRvs tIconcBsVeZd�Zddd�Zd�Zd�Zd�Zd�Zd�Zd�Z RS( cCs$||_d|_|_|_dS(N(tnameRtcanvastlabeltid(RR2((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR�s i cCs�||jkr,|jj|j||�dS|jrB|j�n|sLdStj|d|jdddd�}|j||d|dd�}||_||_||_|j d |j �dS( Nttexttborderwidthitrelieftraisedtwindowtanchortnws <ButtonPress>(R3tcoordsR5tdetachtTkintertLabelR2t create_windowR4Rtpress(RR3R#R$R4R5((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytattach�s cCsW|j}|sdS|j}|j}d|_|_|_|j|�|j�dS(N(R3R5R4Rtdeletetdestroy(RR3R5R4((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR>�s cCsOt||�rK|j|_|j|_|jj|j�\|_|_ ndS(N( RR#tx_offR$ty_offR3R=R5tx_origty_orig(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRB�scCs8|j|j|�\}}|jj|j||�dS(N(twhereR3R=R5(RRR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytmove�scCs#|jj|j|j|j�dS(N(R3R=R5RHRI(R((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pytputback�scCsJ|j�}|j�}|j|}|j|}||j||jfS(N(twinfo_rootxtwinfo_rootyRRRFRG(RR3Rtx_orgty_orgR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRJ�s cCsdS(N((RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR- s( R/R0RRCR>RBRKRLRJR-(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR1�s tTestercBs>eZd�Zd�Zd�Zd�Zd�Zd�ZRS(cCs_tj|�|_tj|jdddd�|_|jjdddd�|j|j_dS(Ntwidthidtheighttfilltbothtexpandi(R?tToplevelttoptCanvasR3tpackR(RR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRs!cCs|S(N((RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRscCs�|jj�|j|j|�\}}|jj|j�\}}}}||||} } |jj|||| || �|_|j||�dS(N(R3t focus_setRJtbboxR5tcreate_rectangletdndidR (RRRR#R$tx1ty1tx2ty2tdxtdy((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR"s !&c Csa|j|j|�\}}|jj|j�\}}}}|jj|j||||�dS(N(RJR3R\R^RK( RRRR#R$R_R`RaRb((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR s!cCs-|jj�|jj|j�d|_dS(N(RXR[R3RDR^R(RRR((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR!$s cCsE|j||�|j|j|�\}}|j|j||�dS(N(R!RJR3RC(RRRR#R$((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyR,)s(R/R0RRR"R R!R,(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyRQs cCs�tj�}|jd�tjd|jdd�j�t|�}|jjd�t|�}|jjd�t|�}|jjd�td�}td �}td �}|j |j �|j |j �|j |j �|j�dS(Ns+1+1tcommandR6tQuits+1+60s+120+60s+240+60tICON1tICON2tICON3(R?tTktgeometrytButtontquitRZRQRXR1RCR3tmainloop(Rtt1tt2tt3ti1ti2ti3((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyttest.s t__main__((((t__doc__R?RRR1RQRuR/(((s$/usr/lib64/python2.7/lib-tk/Tkdnd.pyt<module>ds Z<" Tkinter.py000064400000471553151703463030006557 0ustar00"""Wrapper functions for Tcl/Tk. Tkinter provides classes which allow the display, positioning and control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, Checkbutton, Scale, Listbox, Scrollbar, OptionMenu, Spinbox LabelFrame and PanedWindow. Properties of the widgets are specified with keyword arguments. Keyword arguments have the same name as the corresponding resource under Tk. Widgets are positioned with one of the geometry managers Place, Pack or Grid. These managers can be called with methods place, pack, grid available in every Widget. Actions are bound to events by resources (e.g. keyword argument command) or with the method bind. Example (Hello, World): import Tkinter from Tkconstants import * tk = Tkinter.Tk() frame = Tkinter.Frame(tk, relief=RIDGE, borderwidth=2) frame.pack(fill=BOTH,expand=1) label = Tkinter.Label(frame, text="Hello, World") label.pack(fill=X, expand=1) button = Tkinter.Button(frame,text="Exit",command=tk.destroy) button.pack(side=BOTTOM) tk.mainloop() """ __version__ = "$Revision: 81008 $" import sys if sys.platform == "win32": # Attempt to configure Tcl/Tk without requiring PATH import FixTk import _tkinter # If this fails your Python may not be configured for Tk tkinter = _tkinter # b/w compat for export TclError = _tkinter.TclError from types import * from Tkconstants import * import re wantobjects = 1 TkVersion = float(_tkinter.TK_VERSION) TclVersion = float(_tkinter.TCL_VERSION) READABLE = _tkinter.READABLE WRITABLE = _tkinter.WRITABLE EXCEPTION = _tkinter.EXCEPTION # These are not always defined, e.g. not on Win32 with Tk 8.0 :-( try: _tkinter.createfilehandler except AttributeError: _tkinter.createfilehandler = None try: _tkinter.deletefilehandler except AttributeError: _tkinter.deletefilehandler = None _magic_re = re.compile(r'([\\{}])') _space_re = re.compile(r'([\s])') def _join(value): """Internal function.""" return ' '.join(map(_stringify, value)) def _stringify(value): """Internal function.""" if isinstance(value, (list, tuple)): if len(value) == 1: value = _stringify(value[0]) if _magic_re.search(value): value = '{%s}' % value else: value = '{%s}' % _join(value) else: if isinstance(value, str): value = unicode(value, 'utf-8') elif not isinstance(value, unicode): value = str(value) if not value: value = '{}' elif _magic_re.search(value): # add '\' before special characters and spaces value = _magic_re.sub(r'\\\1', value) value = value.replace('\n', r'\n') value = _space_re.sub(r'\\\1', value) if value[0] == '"': value = '\\' + value elif value[0] == '"' or _space_re.search(value): value = '{%s}' % value return value def _flatten(tuple): """Internal function.""" res = () for item in tuple: if type(item) in (TupleType, ListType): res = res + _flatten(item) elif item is not None: res = res + (item,) return res try: _flatten = _tkinter._flatten except AttributeError: pass def _cnfmerge(cnfs): """Internal function.""" if type(cnfs) is DictionaryType: return cnfs elif type(cnfs) in (NoneType, StringType): return cnfs else: cnf = {} for c in _flatten(cnfs): try: cnf.update(c) except (AttributeError, TypeError), msg: print "_cnfmerge: fallback due to:", msg for k, v in c.items(): cnf[k] = v return cnf try: _cnfmerge = _tkinter._cnfmerge except AttributeError: pass def _splitdict(tk, v, cut_minus=True, conv=None): """Return a properly formatted dict built from Tcl list pairs. If cut_minus is True, the supposed '-' prefix will be removed from keys. If conv is specified, it is used to convert values. Tcl list is expected to contain an even number of elements. """ t = tk.splitlist(v) if len(t) % 2: raise RuntimeError('Tcl list representing a dict is expected ' 'to contain an even number of elements') it = iter(t) dict = {} for key, value in zip(it, it): key = str(key) if cut_minus and key[0] == '-': key = key[1:] if conv: value = conv(value) dict[key] = value return dict class Event: """Container for the properties of an event. Instances of this type are generated if one of the following events occurs: KeyPress, KeyRelease - for keyboard events ButtonPress, ButtonRelease, Motion, Enter, Leave, MouseWheel - for mouse events Visibility, Unmap, Map, Expose, FocusIn, FocusOut, Circulate, Colormap, Gravity, Reparent, Property, Destroy, Activate, Deactivate - for window events. If a callback function for one of these events is registered using bind, bind_all, bind_class, or tag_bind, the callback is called with an Event as first argument. It will have the following attributes (in braces are the event types for which the attribute is valid): serial - serial number of event num - mouse button pressed (ButtonPress, ButtonRelease) focus - whether the window has the focus (Enter, Leave) height - height of the exposed window (Configure, Expose) width - width of the exposed window (Configure, Expose) keycode - keycode of the pressed key (KeyPress, KeyRelease) state - state of the event as a number (ButtonPress, ButtonRelease, Enter, KeyPress, KeyRelease, Leave, Motion) state - state as a string (Visibility) time - when the event occurred x - x-position of the mouse y - y-position of the mouse x_root - x-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) y_root - y-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) char - pressed character (KeyPress, KeyRelease) send_event - see X/Windows documentation keysym - keysym of the event as a string (KeyPress, KeyRelease) keysym_num - keysym of the event as a number (KeyPress, KeyRelease) type - type of the event as a number widget - widget in which the event occurred delta - delta of wheel movement (MouseWheel) """ pass _support_default_root = 1 _default_root = None def NoDefaultRoot(): """Inhibit setting of default root window. Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. """ global _support_default_root _support_default_root = 0 global _default_root _default_root = None del _default_root def _tkerror(err): """Internal function.""" pass def _exit(code=0): """Internal function. Calling it will raise the exception SystemExit.""" try: code = int(code) except ValueError: pass raise SystemExit, code _varnum = 0 class Variable: """Class to define value holders for e.g. buttons. Subclasses StringVar, IntVar, DoubleVar, BooleanVar are specializations that constrain the type of the value returned from get().""" _default = "" _tclCommands = None def __init__(self, master=None, value=None, name=None): """Construct a variable MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. """ global _varnum if not master: master = _default_root self._root = master._root() self._tk = master.tk if name: self._name = name else: self._name = 'PY_VAR' + repr(_varnum) _varnum += 1 if value is not None: self.set(value) elif not self._tk.getboolean(self._tk.call("info", "exists", self._name)): self.set(self._default) def __del__(self): """Unset the variable in Tcl.""" if self._tk is None: return if self._tk.getboolean(self._tk.call("info", "exists", self._name)): self._tk.globalunsetvar(self._name) if self._tclCommands is not None: for name in self._tclCommands: #print '- Tkinter: deleted command', name self._tk.deletecommand(name) self._tclCommands = None def __str__(self): """Return the name of the variable in Tcl.""" return self._name def set(self, value): """Set the variable to VALUE.""" return self._tk.globalsetvar(self._name, value) def get(self): """Return value of variable.""" return self._tk.globalgetvar(self._name) def trace_variable(self, mode, callback): """Define a trace callback for the variable. MODE is one of "r", "w", "u" for read, write, undefine. CALLBACK must be a function which is called when the variable is read, written or undefined. Return the name of the callback. """ f = CallWrapper(callback, None, self._root).__call__ cbname = repr(id(f)) try: callback = callback.im_func except AttributeError: pass try: cbname = cbname + callback.__name__ except AttributeError: pass self._tk.createcommand(cbname, f) if self._tclCommands is None: self._tclCommands = [] self._tclCommands.append(cbname) self._tk.call("trace", "variable", self._name, mode, cbname) return cbname trace = trace_variable def trace_vdelete(self, mode, cbname): """Delete the trace callback for a variable. MODE is one of "r", "w", "u" for read, write, undefine. CBNAME is the name of the callback returned from trace_variable or trace. """ self._tk.call("trace", "vdelete", self._name, mode, cbname) cbname = self._tk.splitlist(cbname)[0] for m, ca in self.trace_vinfo(): if self._tk.splitlist(ca)[0] == cbname: break else: self._tk.deletecommand(cbname) try: self._tclCommands.remove(cbname) except ValueError: pass def trace_vinfo(self): """Return all trace callback information.""" return map(self._tk.splitlist, self._tk.splitlist( self._tk.call("trace", "vinfo", self._name))) def __eq__(self, other): """Comparison for equality (==). Note: if the Variable's master matters to behavior also compare self._master == other._master """ return self.__class__.__name__ == other.__class__.__name__ \ and self._name == other._name class StringVar(Variable): """Value holder for strings variables.""" _default = "" def __init__(self, master=None, value=None, name=None): """Construct a string variable. MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. """ Variable.__init__(self, master, value, name) def get(self): """Return value of variable as string.""" value = self._tk.globalgetvar(self._name) if isinstance(value, basestring): return value return str(value) class IntVar(Variable): """Value holder for integer variables.""" _default = 0 def __init__(self, master=None, value=None, name=None): """Construct an integer variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. """ Variable.__init__(self, master, value, name) def set(self, value): """Set the variable to value, converting booleans to integers.""" if isinstance(value, bool): value = int(value) return Variable.set(self, value) def get(self): """Return the value of the variable as an integer.""" return getint(self._tk.globalgetvar(self._name)) class DoubleVar(Variable): """Value holder for float variables.""" _default = 0.0 def __init__(self, master=None, value=None, name=None): """Construct a float variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0.0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. """ Variable.__init__(self, master, value, name) def get(self): """Return the value of the variable as a float.""" return getdouble(self._tk.globalgetvar(self._name)) class BooleanVar(Variable): """Value holder for boolean variables.""" _default = False def __init__(self, master=None, value=None, name=None): """Construct a boolean variable. MASTER can be given as master widget. VALUE is an optional value (defaults to False) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. """ Variable.__init__(self, master, value, name) def set(self, value): """Set the variable to VALUE.""" return self._tk.globalsetvar(self._name, self._tk.getboolean(value)) def get(self): """Return the value of the variable as a bool.""" return self._tk.getboolean(self._tk.globalgetvar(self._name)) def mainloop(n=0): """Run the main loop of Tcl.""" _default_root.tk.mainloop(n) getint = int getdouble = float def getboolean(s): """Convert true and false to integer values 1 and 0.""" return _default_root.tk.getboolean(s) # Methods defined on both toplevel and interior widgets class Misc: """Internal class. Base class which defines methods common for interior widgets.""" # XXX font command? _tclCommands = None def destroy(self): """Internal function. Delete all Tcl commands created for this widget in the Tcl interpreter.""" if self._tclCommands is not None: for name in self._tclCommands: #print '- Tkinter: deleted command', name self.tk.deletecommand(name) self._tclCommands = None def deletecommand(self, name): """Internal function. Delete the Tcl command provided in NAME.""" #print '- Tkinter: deleted command', name self.tk.deletecommand(name) try: self._tclCommands.remove(name) except ValueError: pass def tk_strictMotif(self, boolean=None): """Set Tcl internal variable, whether the look and feel should adhere to Motif. A parameter of 1 means adhere to Motif (e.g. no color change if mouse passes over slider). Returns the set value.""" return self.tk.getboolean(self.tk.call( 'set', 'tk_strictMotif', boolean)) def tk_bisque(self): """Change the color scheme to light brown as used in Tk 3.6 and before.""" self.tk.call('tk_bisque') def tk_setPalette(self, *args, **kw): """Set a new color scheme for all widget elements. A single color as argument will cause that all colors of Tk widget elements are derived from this. Alternatively several keyword parameters and its associated colors can be given. The following keywords are valid: activeBackground, foreground, selectColor, activeForeground, highlightBackground, selectBackground, background, highlightColor, selectForeground, disabledForeground, insertBackground, troughColor.""" self.tk.call(('tk_setPalette',) + _flatten(args) + _flatten(kw.items())) def tk_menuBar(self, *args): """Do not use. Needed in Tk 3.6 and earlier.""" # obsolete since Tk 4.0 import warnings warnings.warn('tk_menuBar() does nothing and will be removed in 3.6', DeprecationWarning, stacklevel=2) def wait_variable(self, name='PY_VAR'): """Wait until the variable is modified. A parameter of type IntVar, StringVar, DoubleVar or BooleanVar must be given.""" self.tk.call('tkwait', 'variable', name) waitvar = wait_variable # XXX b/w compat def wait_window(self, window=None): """Wait until a WIDGET is destroyed. If no parameter is given self is used.""" if window is None: window = self self.tk.call('tkwait', 'window', window._w) def wait_visibility(self, window=None): """Wait until the visibility of a WIDGET changes (e.g. it appears). If no parameter is given self is used.""" if window is None: window = self self.tk.call('tkwait', 'visibility', window._w) def setvar(self, name='PY_VAR', value='1'): """Set Tcl variable NAME to VALUE.""" self.tk.setvar(name, value) def getvar(self, name='PY_VAR'): """Return value of Tcl variable NAME.""" return self.tk.getvar(name) getint = int getdouble = float def getboolean(self, s): """Return a boolean value for Tcl boolean values true and false given as parameter.""" return self.tk.getboolean(s) def focus_set(self): """Direct input focus to this widget. If the application currently does not have the focus this widget will get the focus if the application gets the focus through the window manager.""" self.tk.call('focus', self._w) focus = focus_set # XXX b/w compat? def focus_force(self): """Direct input focus to this widget even if the application does not have the focus. Use with caution!""" self.tk.call('focus', '-force', self._w) def focus_get(self): """Return the widget which has currently the focus in the application. Use focus_displayof to allow working with several displays. Return None if application does not have the focus.""" name = self.tk.call('focus') if name == 'none' or not name: return None return self._nametowidget(name) def focus_displayof(self): """Return the widget which has currently the focus on the display where this widget is located. Return None if the application does not have the focus.""" name = self.tk.call('focus', '-displayof', self._w) if name == 'none' or not name: return None return self._nametowidget(name) def focus_lastfor(self): """Return the widget which would have the focus if top level for this widget gets the focus from the window manager.""" name = self.tk.call('focus', '-lastfor', self._w) if name == 'none' or not name: return None return self._nametowidget(name) def tk_focusFollowsMouse(self): """The widget under mouse will get automatically focus. Can not be disabled easily.""" self.tk.call('tk_focusFollowsMouse') def tk_focusNext(self): """Return the next widget in the focus order which follows widget which has currently the focus. The focus order first goes to the next child, then to the children of the child recursively and then to the next sibling which is higher in the stacking order. A widget is omitted if it has the takefocus resource set to 0.""" name = self.tk.call('tk_focusNext', self._w) if not name: return None return self._nametowidget(name) def tk_focusPrev(self): """Return previous widget in the focus order. See tk_focusNext for details.""" name = self.tk.call('tk_focusPrev', self._w) if not name: return None return self._nametowidget(name) def after(self, ms, func=None, *args): """Call function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel.""" if not func: # I'd rather use time.sleep(ms*0.001) self.tk.call('after', ms) return None else: def callit(): try: func(*args) finally: try: self.deletecommand(name) except TclError: pass callit.__name__ = func.__name__ name = self._register(callit) return self.tk.call('after', ms, name) def after_idle(self, func, *args): """Call FUNC once if the Tcl main loop has no event to process. Return an identifier to cancel the scheduling with after_cancel.""" return self.after('idle', func, *args) def after_cancel(self, id): """Cancel scheduling of function identified with ID. Identifier returned by after or after_idle must be given as first parameter. """ if not id: raise ValueError('id must be a valid identifier returned from ' 'after or after_idle') try: data = self.tk.call('after', 'info', id) script = self.tk.splitlist(data)[0] self.deletecommand(script) except TclError: pass self.tk.call('after', 'cancel', id) def bell(self, displayof=0): """Ring a display's bell.""" self.tk.call(('bell',) + self._displayof(displayof)) # Clipboard handling: def clipboard_get(self, **kw): """Retrieve data from the clipboard on window's display. The window keyword defaults to the root window of the Tkinter application. The type keyword specifies the form in which the data is to be returned and should be an atom name such as STRING or FILE_NAME. Type defaults to STRING, except on X11, where the default is to try UTF8_STRING and fall back to STRING. This command is equivalent to: selection_get(CLIPBOARD) """ if 'type' not in kw and self._windowingsystem == 'x11': try: kw['type'] = 'UTF8_STRING' return self.tk.call(('clipboard', 'get') + self._options(kw)) except TclError: del kw['type'] return self.tk.call(('clipboard', 'get') + self._options(kw)) def clipboard_clear(self, **kw): """Clear the data in the Tk clipboard. A widget specified for the optional displayof keyword argument specifies the target display.""" if 'displayof' not in kw: kw['displayof'] = self._w self.tk.call(('clipboard', 'clear') + self._options(kw)) def clipboard_append(self, string, **kw): """Append STRING to the Tk clipboard. A widget specified at the optional displayof keyword argument specifies the target display. The clipboard can be retrieved with selection_get.""" if 'displayof' not in kw: kw['displayof'] = self._w self.tk.call(('clipboard', 'append') + self._options(kw) + ('--', string)) # XXX grab current w/o window argument def grab_current(self): """Return widget which has currently the grab in this application or None.""" name = self.tk.call('grab', 'current', self._w) if not name: return None return self._nametowidget(name) def grab_release(self): """Release grab for this widget if currently set.""" self.tk.call('grab', 'release', self._w) def grab_set(self): """Set grab for this widget. A grab directs all events to this and descendant widgets in the application.""" self.tk.call('grab', 'set', self._w) def grab_set_global(self): """Set global grab for this widget. A global grab directs all events to this and descendant widgets on the display. Use with caution - other applications do not get events anymore.""" self.tk.call('grab', 'set', '-global', self._w) def grab_status(self): """Return None, "local" or "global" if this widget has no, a local or a global grab.""" status = self.tk.call('grab', 'status', self._w) if status == 'none': status = None return status def option_add(self, pattern, value, priority = None): """Set a VALUE (second parameter) for an option PATTERN (first parameter). An optional third parameter gives the numeric priority (defaults to 80).""" self.tk.call('option', 'add', pattern, value, priority) def option_clear(self): """Clear the option database. It will be reloaded if option_add is called.""" self.tk.call('option', 'clear') def option_get(self, name, className): """Return the value for an option NAME for this widget with CLASSNAME. Values with higher priority override lower values.""" return self.tk.call('option', 'get', self._w, name, className) def option_readfile(self, fileName, priority = None): """Read file FILENAME into the option database. An optional second parameter gives the numeric priority.""" self.tk.call('option', 'readfile', fileName, priority) def selection_clear(self, **kw): """Clear the current X selection.""" if 'displayof' not in kw: kw['displayof'] = self._w self.tk.call(('selection', 'clear') + self._options(kw)) def selection_get(self, **kw): """Return the contents of the current X selection. A keyword parameter selection specifies the name of the selection and defaults to PRIMARY. A keyword parameter displayof specifies a widget on the display to use. A keyword parameter type specifies the form of data to be fetched, defaulting to STRING except on X11, where UTF8_STRING is tried before STRING.""" if 'displayof' not in kw: kw['displayof'] = self._w if 'type' not in kw and self._windowingsystem == 'x11': try: kw['type'] = 'UTF8_STRING' return self.tk.call(('selection', 'get') + self._options(kw)) except TclError: del kw['type'] return self.tk.call(('selection', 'get') + self._options(kw)) def selection_handle(self, command, **kw): """Specify a function COMMAND to call if the X selection owned by this widget is queried by another application. This function must return the contents of the selection. The function will be called with the arguments OFFSET and LENGTH which allows the chunking of very long selections. The following keyword parameters can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).""" name = self._register(command) self.tk.call(('selection', 'handle') + self._options(kw) + (self._w, name)) def selection_own(self, **kw): """Become owner of X selection. A keyword parameter selection specifies the name of the selection (default PRIMARY).""" self.tk.call(('selection', 'own') + self._options(kw) + (self._w,)) def selection_own_get(self, **kw): """Return owner of X selection. The following keyword parameter can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).""" if 'displayof' not in kw: kw['displayof'] = self._w name = self.tk.call(('selection', 'own') + self._options(kw)) if not name: return None return self._nametowidget(name) def send(self, interp, cmd, *args): """Send Tcl command CMD to different interpreter INTERP to be executed.""" return self.tk.call(('send', interp, cmd) + args) def lower(self, belowThis=None): """Lower this widget in the stacking order.""" self.tk.call('lower', self._w, belowThis) def tkraise(self, aboveThis=None): """Raise this widget in the stacking order.""" self.tk.call('raise', self._w, aboveThis) lift = tkraise def colormodel(self, value=None): """Useless. Not implemented in Tk.""" return self.tk.call('tk', 'colormodel', self._w, value) def winfo_atom(self, name, displayof=0): """Return integer which represents atom NAME.""" args = ('winfo', 'atom') + self._displayof(displayof) + (name,) return getint(self.tk.call(args)) def winfo_atomname(self, id, displayof=0): """Return name of atom with identifier ID.""" args = ('winfo', 'atomname') \ + self._displayof(displayof) + (id,) return self.tk.call(args) def winfo_cells(self): """Return number of cells in the colormap for this widget.""" return getint( self.tk.call('winfo', 'cells', self._w)) def winfo_children(self): """Return a list of all widgets which are children of this widget.""" result = [] for child in self.tk.splitlist( self.tk.call('winfo', 'children', self._w)): try: # Tcl sometimes returns extra windows, e.g. for # menus; those need to be skipped result.append(self._nametowidget(child)) except KeyError: pass return result def winfo_class(self): """Return window class name of this widget.""" return self.tk.call('winfo', 'class', self._w) def winfo_colormapfull(self): """Return true if at the last color request the colormap was full.""" return self.tk.getboolean( self.tk.call('winfo', 'colormapfull', self._w)) def winfo_containing(self, rootX, rootY, displayof=0): """Return the widget which is at the root coordinates ROOTX, ROOTY.""" args = ('winfo', 'containing') \ + self._displayof(displayof) + (rootX, rootY) name = self.tk.call(args) if not name: return None return self._nametowidget(name) def winfo_depth(self): """Return the number of bits per pixel.""" return getint(self.tk.call('winfo', 'depth', self._w)) def winfo_exists(self): """Return true if this widget exists.""" return getint( self.tk.call('winfo', 'exists', self._w)) def winfo_fpixels(self, number): """Return the number of pixels for the given distance NUMBER (e.g. "3c") as float.""" return getdouble(self.tk.call( 'winfo', 'fpixels', self._w, number)) def winfo_geometry(self): """Return geometry string for this widget in the form "widthxheight+X+Y".""" return self.tk.call('winfo', 'geometry', self._w) def winfo_height(self): """Return height of this widget.""" return getint( self.tk.call('winfo', 'height', self._w)) def winfo_id(self): """Return identifier ID for this widget.""" return int(self.tk.call('winfo', 'id', self._w), 0) def winfo_interps(self, displayof=0): """Return the name of all Tcl interpreters for this display.""" args = ('winfo', 'interps') + self._displayof(displayof) return self.tk.splitlist(self.tk.call(args)) def winfo_ismapped(self): """Return true if this widget is mapped.""" return getint( self.tk.call('winfo', 'ismapped', self._w)) def winfo_manager(self): """Return the window manager name for this widget.""" return self.tk.call('winfo', 'manager', self._w) def winfo_name(self): """Return the name of this widget.""" return self.tk.call('winfo', 'name', self._w) def winfo_parent(self): """Return the name of the parent of this widget.""" return self.tk.call('winfo', 'parent', self._w) def winfo_pathname(self, id, displayof=0): """Return the pathname of the widget given by ID.""" args = ('winfo', 'pathname') \ + self._displayof(displayof) + (id,) return self.tk.call(args) def winfo_pixels(self, number): """Rounded integer value of winfo_fpixels.""" return getint( self.tk.call('winfo', 'pixels', self._w, number)) def winfo_pointerx(self): """Return the x coordinate of the pointer on the root window.""" return getint( self.tk.call('winfo', 'pointerx', self._w)) def winfo_pointerxy(self): """Return a tuple of x and y coordinates of the pointer on the root window.""" return self._getints( self.tk.call('winfo', 'pointerxy', self._w)) def winfo_pointery(self): """Return the y coordinate of the pointer on the root window.""" return getint( self.tk.call('winfo', 'pointery', self._w)) def winfo_reqheight(self): """Return requested height of this widget.""" return getint( self.tk.call('winfo', 'reqheight', self._w)) def winfo_reqwidth(self): """Return requested width of this widget.""" return getint( self.tk.call('winfo', 'reqwidth', self._w)) def winfo_rgb(self, color): """Return tuple of decimal values for red, green, blue for COLOR in this widget.""" return self._getints( self.tk.call('winfo', 'rgb', self._w, color)) def winfo_rootx(self): """Return x coordinate of upper left corner of this widget on the root window.""" return getint( self.tk.call('winfo', 'rootx', self._w)) def winfo_rooty(self): """Return y coordinate of upper left corner of this widget on the root window.""" return getint( self.tk.call('winfo', 'rooty', self._w)) def winfo_screen(self): """Return the screen name of this widget.""" return self.tk.call('winfo', 'screen', self._w) def winfo_screencells(self): """Return the number of the cells in the colormap of the screen of this widget.""" return getint( self.tk.call('winfo', 'screencells', self._w)) def winfo_screendepth(self): """Return the number of bits per pixel of the root window of the screen of this widget.""" return getint( self.tk.call('winfo', 'screendepth', self._w)) def winfo_screenheight(self): """Return the number of pixels of the height of the screen of this widget in pixel.""" return getint( self.tk.call('winfo', 'screenheight', self._w)) def winfo_screenmmheight(self): """Return the number of pixels of the height of the screen of this widget in mm.""" return getint( self.tk.call('winfo', 'screenmmheight', self._w)) def winfo_screenmmwidth(self): """Return the number of pixels of the width of the screen of this widget in mm.""" return getint( self.tk.call('winfo', 'screenmmwidth', self._w)) def winfo_screenvisual(self): """Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the default colormodel of this screen.""" return self.tk.call('winfo', 'screenvisual', self._w) def winfo_screenwidth(self): """Return the number of pixels of the width of the screen of this widget in pixel.""" return getint( self.tk.call('winfo', 'screenwidth', self._w)) def winfo_server(self): """Return information of the X-Server of the screen of this widget in the form "XmajorRminor vendor vendorVersion".""" return self.tk.call('winfo', 'server', self._w) def winfo_toplevel(self): """Return the toplevel widget of this widget.""" return self._nametowidget(self.tk.call( 'winfo', 'toplevel', self._w)) def winfo_viewable(self): """Return true if the widget and all its higher ancestors are mapped.""" return getint( self.tk.call('winfo', 'viewable', self._w)) def winfo_visual(self): """Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the colormodel of this widget.""" return self.tk.call('winfo', 'visual', self._w) def winfo_visualid(self): """Return the X identifier for the visual for this widget.""" return self.tk.call('winfo', 'visualid', self._w) def winfo_visualsavailable(self, includeids=0): """Return a list of all visuals available for the screen of this widget. Each item in the list consists of a visual name (see winfo_visual), a depth and if INCLUDEIDS=1 is given also the X identifier.""" data = self.tk.split( self.tk.call('winfo', 'visualsavailable', self._w, includeids and 'includeids' or None)) if type(data) is StringType: data = [self.tk.split(data)] return map(self.__winfo_parseitem, data) def __winfo_parseitem(self, t): """Internal function.""" return t[:1] + tuple(map(self.__winfo_getint, t[1:])) def __winfo_getint(self, x): """Internal function.""" return int(x, 0) def winfo_vrootheight(self): """Return the height of the virtual root window associated with this widget in pixels. If there is no virtual root window return the height of the screen.""" return getint( self.tk.call('winfo', 'vrootheight', self._w)) def winfo_vrootwidth(self): """Return the width of the virtual root window associated with this widget in pixel. If there is no virtual root window return the width of the screen.""" return getint( self.tk.call('winfo', 'vrootwidth', self._w)) def winfo_vrootx(self): """Return the x offset of the virtual root relative to the root window of the screen of this widget.""" return getint( self.tk.call('winfo', 'vrootx', self._w)) def winfo_vrooty(self): """Return the y offset of the virtual root relative to the root window of the screen of this widget.""" return getint( self.tk.call('winfo', 'vrooty', self._w)) def winfo_width(self): """Return the width of this widget.""" return getint( self.tk.call('winfo', 'width', self._w)) def winfo_x(self): """Return the x coordinate of the upper left corner of this widget in the parent.""" return getint( self.tk.call('winfo', 'x', self._w)) def winfo_y(self): """Return the y coordinate of the upper left corner of this widget in the parent.""" return getint( self.tk.call('winfo', 'y', self._w)) def update(self): """Enter event loop until all pending events have been processed by Tcl.""" self.tk.call('update') def update_idletasks(self): """Enter event loop until all idle callbacks have been called. This will update the display of windows but not process events caused by the user.""" self.tk.call('update', 'idletasks') def bindtags(self, tagList=None): """Set or get the list of bindtags for this widget. With no argument return the list of all bindtags associated with this widget. With a list of strings as argument the bindtags are set to this list. The bindtags determine in which order events are processed (see bind).""" if tagList is None: return self.tk.splitlist( self.tk.call('bindtags', self._w)) else: self.tk.call('bindtags', self._w, tagList) def _bind(self, what, sequence, func, add, needcleanup=1): """Internal function.""" if type(func) is StringType: self.tk.call(what + (sequence, func)) elif func: funcid = self._register(func, self._substitute, needcleanup) cmd = ('%sif {"[%s %s]" == "break"} break\n' % (add and '+' or '', funcid, self._subst_format_str)) self.tk.call(what + (sequence, cmd)) return funcid elif sequence: return self.tk.call(what + (sequence,)) else: return self.tk.splitlist(self.tk.call(what)) def bind(self, sequence=None, func=None, add=None): """Bind to this widget at event SEQUENCE a call to function FUNC. SEQUENCE is a string of concatenated event patterns. An event pattern is of the form <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4, Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3, B3, Alt, Button4, B4, Double, Button5, B5 Triple, Mod1, M1. TYPE is one of Activate, Enter, Map, ButtonPress, Button, Expose, Motion, ButtonRelease FocusIn, MouseWheel, Circulate, FocusOut, Property, Colormap, Gravity Reparent, Configure, KeyPress, Key, Unmap, Deactivate, KeyRelease Visibility, Destroy, Leave and DETAIL is the button number for ButtonPress, ButtonRelease and DETAIL is the Keysym for KeyPress and KeyRelease. Examples are <Control-Button-1> for pressing Control and mouse button 1 or <Alt-A> for pressing A and the Alt key (KeyPress can be omitted). An event pattern can also be a virtual event of the form <<AString>> where AString can be arbitrary. This event can be generated by event_generate. If events are concatenated they must appear shortly after each other. FUNC will be called if the event sequence occurs with an instance of Event as argument. If the return value of FUNC is "break" no further bound function is invoked. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. Bind will return an identifier to allow deletion of the bound function with unbind without memory leak. If FUNC or SEQUENCE is omitted the bound function or list of bound events are returned.""" return self._bind(('bind', self._w), sequence, func, add) def unbind(self, sequence, funcid=None): """Unbind for this widget for event SEQUENCE the function identified with FUNCID.""" self.tk.call('bind', self._w, sequence, '') if funcid: self.deletecommand(funcid) def bind_all(self, sequence=None, func=None, add=None): """Bind to all widgets at an event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.""" return self._bind(('bind', 'all'), sequence, func, add, 0) def unbind_all(self, sequence): """Unbind for all widgets for event SEQUENCE all functions.""" self.tk.call('bind', 'all' , sequence, '') def bind_class(self, className, sequence=None, func=None, add=None): """Bind to widgets with bindtag CLASSNAME at event SEQUENCE a call of function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.""" return self._bind(('bind', className), sequence, func, add, 0) def unbind_class(self, className, sequence): """Unbind for all widgets with bindtag CLASSNAME for event SEQUENCE all functions.""" self.tk.call('bind', className , sequence, '') def mainloop(self, n=0): """Call the mainloop of Tk.""" self.tk.mainloop(n) def quit(self): """Quit the Tcl interpreter. All widgets will be destroyed.""" self.tk.quit() def _getints(self, string): """Internal function.""" if string: return tuple(map(getint, self.tk.splitlist(string))) def _getdoubles(self, string): """Internal function.""" if string: return tuple(map(getdouble, self.tk.splitlist(string))) def _getboolean(self, string): """Internal function.""" if string: return self.tk.getboolean(string) def _displayof(self, displayof): """Internal function.""" if displayof: return ('-displayof', displayof) if displayof is None: return ('-displayof', self._w) return () @property def _windowingsystem(self): """Internal function.""" try: return self._root()._windowingsystem_cached except AttributeError: ws = self._root()._windowingsystem_cached = \ self.tk.call('tk', 'windowingsystem') return ws def _options(self, cnf, kw = None): """Internal function.""" if kw: cnf = _cnfmerge((cnf, kw)) else: cnf = _cnfmerge(cnf) res = () for k, v in cnf.items(): if v is not None: if k[-1] == '_': k = k[:-1] if hasattr(v, '__call__'): v = self._register(v) elif isinstance(v, (tuple, list)): nv = [] for item in v: if not isinstance(item, (basestring, int, long)): break elif isinstance(item, (int, long)): nv.append('%d' % item) else: # format it to proper Tcl code if it contains space nv.append(_stringify(item)) else: v = ' '.join(nv) res = res + ('-'+k, v) return res def nametowidget(self, name): """Return the Tkinter instance of a widget identified by its Tcl name NAME.""" name = str(name).split('.') w = self if not name[0]: w = w._root() name = name[1:] for n in name: if not n: break w = w.children[n] return w _nametowidget = nametowidget def _register(self, func, subst=None, needcleanup=1): """Return a newly created Tcl function. If this function is called, the Python function FUNC will be executed. An optional function SUBST can be given which will be executed before FUNC.""" f = CallWrapper(func, subst, self).__call__ name = repr(id(f)) try: func = func.im_func except AttributeError: pass try: name = name + func.__name__ except AttributeError: pass self.tk.createcommand(name, f) if needcleanup: if self._tclCommands is None: self._tclCommands = [] self._tclCommands.append(name) return name register = _register def _root(self): """Internal function.""" w = self while w.master: w = w.master return w _subst_format = ('%#', '%b', '%f', '%h', '%k', '%s', '%t', '%w', '%x', '%y', '%A', '%E', '%K', '%N', '%W', '%T', '%X', '%Y', '%D') _subst_format_str = " ".join(_subst_format) def _substitute(self, *args): """Internal function.""" if len(args) != len(self._subst_format): return args getboolean = self.tk.getboolean getint = int def getint_event(s): """Tk changed behavior in 8.4.2, returning "??" rather more often.""" try: return int(s) except ValueError: return s nsign, b, f, h, k, s, t, w, x, y, A, E, K, N, W, T, X, Y, D = args # Missing: (a, c, d, m, o, v, B, R) e = Event() # serial field: valid for all events # number of button: ButtonPress and ButtonRelease events only # height field: Configure, ConfigureRequest, Create, # ResizeRequest, and Expose events only # keycode field: KeyPress and KeyRelease events only # time field: "valid for events that contain a time field" # width field: Configure, ConfigureRequest, Create, ResizeRequest, # and Expose events only # x field: "valid for events that contain an x field" # y field: "valid for events that contain a y field" # keysym as decimal: KeyPress and KeyRelease events only # x_root, y_root fields: ButtonPress, ButtonRelease, KeyPress, # KeyRelease, and Motion events e.serial = getint(nsign) e.num = getint_event(b) try: e.focus = getboolean(f) except TclError: pass e.height = getint_event(h) e.keycode = getint_event(k) e.state = getint_event(s) e.time = getint_event(t) e.width = getint_event(w) e.x = getint_event(x) e.y = getint_event(y) e.char = A try: e.send_event = getboolean(E) except TclError: pass e.keysym = K e.keysym_num = getint_event(N) e.type = T try: e.widget = self._nametowidget(W) except KeyError: e.widget = W e.x_root = getint_event(X) e.y_root = getint_event(Y) try: e.delta = getint(D) except ValueError: e.delta = 0 return (e,) def _report_exception(self): """Internal function.""" import sys exc, val, tb = sys.exc_type, sys.exc_value, sys.exc_traceback root = self._root() root.report_callback_exception(exc, val, tb) def _getconfigure(self, *args): """Call Tcl configure command and return the result as a dict.""" cnf = {} for x in self.tk.splitlist(self.tk.call(*args)): x = self.tk.splitlist(x) cnf[x[0][1:]] = (x[0][1:],) + x[1:] return cnf def _getconfigure1(self, *args): x = self.tk.splitlist(self.tk.call(*args)) return (x[0][1:],) + x[1:] def _configure(self, cmd, cnf, kw): """Internal function.""" if kw: cnf = _cnfmerge((cnf, kw)) elif cnf: cnf = _cnfmerge(cnf) if cnf is None: return self._getconfigure(_flatten((self._w, cmd))) if type(cnf) is StringType: return self._getconfigure1(_flatten((self._w, cmd, '-'+cnf))) self.tk.call(_flatten((self._w, cmd)) + self._options(cnf)) # These used to be defined in Widget: def configure(self, cnf=None, **kw): """Configure resources of a widget. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys. """ return self._configure('configure', cnf, kw) config = configure def cget(self, key): """Return the resource value for a KEY given as string.""" return self.tk.call(self._w, 'cget', '-' + key) __getitem__ = cget def __setitem__(self, key, value): self.configure({key: value}) def __contains__(self, key): raise TypeError("Tkinter objects don't support 'in' tests.") def keys(self): """Return a list of all resource names of this widget.""" splitlist = self.tk.splitlist return [splitlist(x)[0][1:] for x in splitlist(self.tk.call(self._w, 'configure'))] def __str__(self): """Return the window path name of this widget.""" return self._w # Pack methods that apply to the master _noarg_ = ['_noarg_'] def pack_propagate(self, flag=_noarg_): """Set or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given the current setting will be returned. """ if flag is Misc._noarg_: return self._getboolean(self.tk.call( 'pack', 'propagate', self._w)) else: self.tk.call('pack', 'propagate', self._w, flag) propagate = pack_propagate def pack_slaves(self): """Return a list of all slaves of this widget in its packing order.""" return map(self._nametowidget, self.tk.splitlist( self.tk.call('pack', 'slaves', self._w))) slaves = pack_slaves # Place method that applies to the master def place_slaves(self): """Return a list of all slaves of this widget in its packing order.""" return map(self._nametowidget, self.tk.splitlist( self.tk.call( 'place', 'slaves', self._w))) # Grid methods that apply to the master def grid_bbox(self, column=None, row=None, col2=None, row2=None): """Return a tuple of integer coordinates for the bounding box of this widget controlled by the geometry manager grid. If COLUMN, ROW is given the bounding box applies from the cell with row and column 0 to the specified cell. If COL2 and ROW2 are given the bounding box starts at that cell. The returned integers specify the offset of the upper left corner in the master widget and the width and height. """ args = ('grid', 'bbox', self._w) if column is not None and row is not None: args = args + (column, row) if col2 is not None and row2 is not None: args = args + (col2, row2) return self._getints(self.tk.call(*args)) or None bbox = grid_bbox def _gridconvvalue(self, value): if isinstance(value, (str, _tkinter.Tcl_Obj)): try: svalue = str(value) if not svalue: return None elif '.' in svalue: return getdouble(svalue) else: return getint(svalue) except ValueError: pass return value def _grid_configure(self, command, index, cnf, kw): """Internal function.""" if type(cnf) is StringType and not kw: if cnf[-1:] == '_': cnf = cnf[:-1] if cnf[:1] != '-': cnf = '-'+cnf options = (cnf,) else: options = self._options(cnf, kw) if not options: return _splitdict( self.tk, self.tk.call('grid', command, self._w, index), conv=self._gridconvvalue) res = self.tk.call( ('grid', command, self._w, index) + options) if len(options) == 1: return self._gridconvvalue(res) def grid_columnconfigure(self, index, cnf={}, **kw): """Configure column INDEX of a grid. Valid resources are minsize (minimum size of the column), weight (how much does additional space propagate to this column) and pad (how much space to let additionally).""" return self._grid_configure('columnconfigure', index, cnf, kw) columnconfigure = grid_columnconfigure def grid_location(self, x, y): """Return a tuple of column and row which identify the cell at which the pixel at position X and Y inside the master widget is located.""" return self._getints( self.tk.call( 'grid', 'location', self._w, x, y)) or None def grid_propagate(self, flag=_noarg_): """Set or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given, the current setting will be returned. """ if flag is Misc._noarg_: return self._getboolean(self.tk.call( 'grid', 'propagate', self._w)) else: self.tk.call('grid', 'propagate', self._w, flag) def grid_rowconfigure(self, index, cnf={}, **kw): """Configure row INDEX of a grid. Valid resources are minsize (minimum size of the row), weight (how much does additional space propagate to this row) and pad (how much space to let additionally).""" return self._grid_configure('rowconfigure', index, cnf, kw) rowconfigure = grid_rowconfigure def grid_size(self): """Return a tuple of the number of column and rows in the grid.""" return self._getints( self.tk.call('grid', 'size', self._w)) or None size = grid_size def grid_slaves(self, row=None, column=None): """Return a list of all slaves of this widget in its packing order.""" args = () if row is not None: args = args + ('-row', row) if column is not None: args = args + ('-column', column) return map(self._nametowidget, self.tk.splitlist(self.tk.call( ('grid', 'slaves', self._w) + args))) # Support for the "event" command, new in Tk 4.2. # By Case Roole. def event_add(self, virtual, *sequences): """Bind a virtual event VIRTUAL (of the form <<Name>>) to an event SEQUENCE such that the virtual event is triggered whenever SEQUENCE occurs.""" args = ('event', 'add', virtual) + sequences self.tk.call(args) def event_delete(self, virtual, *sequences): """Unbind a virtual event VIRTUAL from SEQUENCE.""" args = ('event', 'delete', virtual) + sequences self.tk.call(args) def event_generate(self, sequence, **kw): """Generate an event SEQUENCE. Additional keyword arguments specify parameter of the event (e.g. x, y, rootx, rooty).""" args = ('event', 'generate', self._w, sequence) for k, v in kw.items(): args = args + ('-%s' % k, str(v)) self.tk.call(args) def event_info(self, virtual=None): """Return a list of all virtual events or the information about the SEQUENCE bound to the virtual event VIRTUAL.""" return self.tk.splitlist( self.tk.call('event', 'info', virtual)) # Image related commands def image_names(self): """Return a list of all existing image names.""" return self.tk.splitlist(self.tk.call('image', 'names')) def image_types(self): """Return a list of all available image types (e.g. photo bitmap).""" return self.tk.splitlist(self.tk.call('image', 'types')) class CallWrapper: """Internal class. Stores function to call when some user defined Tcl function is called e.g. after an event occurred.""" def __init__(self, func, subst, widget): """Store FUNC, SUBST and WIDGET as members.""" self.func = func self.subst = subst self.widget = widget def __call__(self, *args): """Apply first function SUBST to arguments, than FUNC.""" try: if self.subst: args = self.subst(*args) return self.func(*args) except SystemExit, msg: raise SystemExit, msg except: self.widget._report_exception() class XView: """Mix-in class for querying and changing the horizontal position of a widget's window.""" def xview(self, *args): """Query and change the horizontal position of the view.""" res = self.tk.call(self._w, 'xview', *args) if not args: return self._getdoubles(res) def xview_moveto(self, fraction): """Adjusts the view in the window so that FRACTION of the total width of the canvas is off-screen to the left.""" self.tk.call(self._w, 'xview', 'moveto', fraction) def xview_scroll(self, number, what): """Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT).""" self.tk.call(self._w, 'xview', 'scroll', number, what) class YView: """Mix-in class for querying and changing the vertical position of a widget's window.""" def yview(self, *args): """Query and change the vertical position of the view.""" res = self.tk.call(self._w, 'yview', *args) if not args: return self._getdoubles(res) def yview_moveto(self, fraction): """Adjusts the view in the window so that FRACTION of the total height of the canvas is off-screen to the top.""" self.tk.call(self._w, 'yview', 'moveto', fraction) def yview_scroll(self, number, what): """Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).""" self.tk.call(self._w, 'yview', 'scroll', number, what) class Wm: """Provides functions for the communication with the window manager.""" def wm_aspect(self, minNumer=None, minDenom=None, maxNumer=None, maxDenom=None): """Instruct the window manager to set the aspect ratio (width/height) of this widget to be between MINNUMER/MINDENOM and MAXNUMER/MAXDENOM. Return a tuple of the actual values if no argument is given.""" return self._getints( self.tk.call('wm', 'aspect', self._w, minNumer, minDenom, maxNumer, maxDenom)) aspect = wm_aspect def wm_attributes(self, *args): """This subcommand returns or sets platform specific attributes The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows: On Windows, -disabled gets or sets whether the window is in a disabled state. -toolwindow gets or sets the style of the window to toolwindow (as defined in the MSDN). -topmost gets or sets whether this is a topmost window (displays above all other windows). On Macintosh, XXXXX On Unix, there are currently no special attribute values. """ args = ('wm', 'attributes', self._w) + args return self.tk.call(args) attributes=wm_attributes def wm_client(self, name=None): """Store NAME in WM_CLIENT_MACHINE property of this widget. Return current value.""" return self.tk.call('wm', 'client', self._w, name) client = wm_client def wm_colormapwindows(self, *wlist): """Store list of window names (WLIST) into WM_COLORMAPWINDOWS property of this widget. This list contains windows whose colormaps differ from their parents. Return current list of widgets if WLIST is empty.""" if len(wlist) > 1: wlist = (wlist,) # Tk needs a list of windows here args = ('wm', 'colormapwindows', self._w) + wlist if wlist: self.tk.call(args) else: return map(self._nametowidget, self.tk.splitlist(self.tk.call(args))) colormapwindows = wm_colormapwindows def wm_command(self, value=None): """Store VALUE in WM_COMMAND property. It is the command which shall be used to invoke the application. Return current command if VALUE is None.""" return self.tk.call('wm', 'command', self._w, value) command = wm_command def wm_deiconify(self): """Deiconify this widget. If it was never mapped it will not be mapped. On Windows it will raise this widget and give it the focus.""" return self.tk.call('wm', 'deiconify', self._w) deiconify = wm_deiconify def wm_focusmodel(self, model=None): """Set focus model to MODEL. "active" means that this widget will claim the focus itself, "passive" means that the window manager shall give the focus. Return current focus model if MODEL is None.""" return self.tk.call('wm', 'focusmodel', self._w, model) focusmodel = wm_focusmodel def wm_frame(self): """Return identifier for decorative frame of this widget if present.""" return self.tk.call('wm', 'frame', self._w) frame = wm_frame def wm_geometry(self, newGeometry=None): """Set geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return current value if None is given.""" return self.tk.call('wm', 'geometry', self._w, newGeometry) geometry = wm_geometry def wm_grid(self, baseWidth=None, baseHeight=None, widthInc=None, heightInc=None): """Instruct the window manager that this widget shall only be resized on grid boundaries. WIDTHINC and HEIGHTINC are the width and height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are the number of grid units requested in Tk_GeometryRequest.""" return self._getints(self.tk.call( 'wm', 'grid', self._w, baseWidth, baseHeight, widthInc, heightInc)) grid = wm_grid def wm_group(self, pathName=None): """Set the group leader widgets for related widgets to PATHNAME. Return the group leader of this widget if None is given.""" return self.tk.call('wm', 'group', self._w, pathName) group = wm_group def wm_iconbitmap(self, bitmap=None, default=None): """Set bitmap for the iconified widget to BITMAP. Return the bitmap if None is given. Under Windows, the DEFAULT parameter can be used to set the icon for the widget and any descendents that don't have an icon set explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default='myicon.ico') ). See Tk documentation for more information.""" if default: return self.tk.call('wm', 'iconbitmap', self._w, '-default', default) else: return self.tk.call('wm', 'iconbitmap', self._w, bitmap) iconbitmap = wm_iconbitmap def wm_iconify(self): """Display widget as icon.""" return self.tk.call('wm', 'iconify', self._w) iconify = wm_iconify def wm_iconmask(self, bitmap=None): """Set mask for the icon bitmap of this widget. Return the mask if None is given.""" return self.tk.call('wm', 'iconmask', self._w, bitmap) iconmask = wm_iconmask def wm_iconname(self, newName=None): """Set the name of the icon for this widget. Return the name if None is given.""" return self.tk.call('wm', 'iconname', self._w, newName) iconname = wm_iconname def wm_iconposition(self, x=None, y=None): """Set the position of the icon of this widget to X and Y. Return a tuple of the current values of X and X if None is given.""" return self._getints(self.tk.call( 'wm', 'iconposition', self._w, x, y)) iconposition = wm_iconposition def wm_iconwindow(self, pathName=None): """Set widget PATHNAME to be displayed instead of icon. Return the current value if None is given.""" return self.tk.call('wm', 'iconwindow', self._w, pathName) iconwindow = wm_iconwindow def wm_maxsize(self, width=None, height=None): """Set max WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.""" return self._getints(self.tk.call( 'wm', 'maxsize', self._w, width, height)) maxsize = wm_maxsize def wm_minsize(self, width=None, height=None): """Set min WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.""" return self._getints(self.tk.call( 'wm', 'minsize', self._w, width, height)) minsize = wm_minsize def wm_overrideredirect(self, boolean=None): """Instruct the window manager to ignore this widget if BOOLEAN is given with 1. Return the current value if None is given.""" return self._getboolean(self.tk.call( 'wm', 'overrideredirect', self._w, boolean)) overrideredirect = wm_overrideredirect def wm_positionfrom(self, who=None): """Instruct the window manager that the position of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".""" return self.tk.call('wm', 'positionfrom', self._w, who) positionfrom = wm_positionfrom def wm_protocol(self, name=None, func=None): """Bind function FUNC to command NAME for this widget. Return the function bound to NAME if None is given. NAME could be e.g. "WM_SAVE_YOURSELF" or "WM_DELETE_WINDOW".""" if hasattr(func, '__call__'): command = self._register(func) else: command = func return self.tk.call( 'wm', 'protocol', self._w, name, command) protocol = wm_protocol def wm_resizable(self, width=None, height=None): """Instruct the window manager whether this width can be resized in WIDTH or HEIGHT. Both values are boolean values.""" return self.tk.call('wm', 'resizable', self._w, width, height) resizable = wm_resizable def wm_sizefrom(self, who=None): """Instruct the window manager that the size of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".""" return self.tk.call('wm', 'sizefrom', self._w, who) sizefrom = wm_sizefrom def wm_state(self, newstate=None): """Query or set the state of this widget as one of normal, icon, iconic (see wm_iconwindow), withdrawn, or zoomed (Windows only).""" return self.tk.call('wm', 'state', self._w, newstate) state = wm_state def wm_title(self, string=None): """Set the title of this widget.""" return self.tk.call('wm', 'title', self._w, string) title = wm_title def wm_transient(self, master=None): """Instruct the window manager that this widget is transient with regard to widget MASTER.""" return self.tk.call('wm', 'transient', self._w, master) transient = wm_transient def wm_withdraw(self): """Withdraw this widget from the screen such that it is unmapped and forgotten by the window manager. Re-draw it with wm_deiconify.""" return self.tk.call('wm', 'withdraw', self._w) withdraw = wm_withdraw class Tk(Misc, Wm): """Toplevel widget of Tk which represents mostly the main window of an application. It has an associated Tcl interpreter.""" _w = '.' def __init__(self, screenName=None, baseName=None, className='Tk', useTk=1, sync=0, use=None): """Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will be created. BASENAME will be used for the identification of the profile file (see readprofile). It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME is the name of the widget class.""" self.master = None self.children = {} self._tkloaded = 0 # to avoid recursions in the getattr code in case of failure, we # ensure that self.tk is always _something_. self.tk = None if baseName is None: import os baseName = os.path.basename(sys.argv[0]) baseName, ext = os.path.splitext(baseName) if ext not in ('.py', '.pyc', '.pyo'): baseName = baseName + ext interactive = 0 self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, useTk, sync, use) if useTk: self._loadtk() if not sys.flags.ignore_environment: # Issue #16248: Honor the -E flag to avoid code injection. self.readprofile(baseName, className) def loadtk(self): if not self._tkloaded: self.tk.loadtk() self._loadtk() def _loadtk(self): self._tkloaded = 1 global _default_root # Version sanity checks tk_version = self.tk.getvar('tk_version') if tk_version != _tkinter.TK_VERSION: raise RuntimeError, \ "tk.h version (%s) doesn't match libtk.a version (%s)" \ % (_tkinter.TK_VERSION, tk_version) # Under unknown circumstances, tcl_version gets coerced to float tcl_version = str(self.tk.getvar('tcl_version')) if tcl_version != _tkinter.TCL_VERSION: raise RuntimeError, \ "tcl.h version (%s) doesn't match libtcl.a version (%s)" \ % (_tkinter.TCL_VERSION, tcl_version) if TkVersion < 4.0: raise RuntimeError, \ "Tk 4.0 or higher is required; found Tk %s" \ % str(TkVersion) # Create and register the tkerror and exit commands # We need to inline parts of _register here, _ register # would register differently-named commands. if self._tclCommands is None: self._tclCommands = [] self.tk.createcommand('tkerror', _tkerror) self.tk.createcommand('exit', _exit) self._tclCommands.append('tkerror') self._tclCommands.append('exit') if _support_default_root and not _default_root: _default_root = self self.protocol("WM_DELETE_WINDOW", self.destroy) def destroy(self): """Destroy this and all descendants widgets. This will end the application of this Tcl interpreter.""" for c in self.children.values(): c.destroy() self.tk.call('destroy', self._w) Misc.destroy(self) global _default_root if _support_default_root and _default_root is self: _default_root = None def readprofile(self, baseName, className): """Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into the Tcl Interpreter and calls execfile on BASENAME.py and CLASSNAME.py if such a file exists in the home directory.""" import os if 'HOME' in os.environ: home = os.environ['HOME'] else: home = os.curdir class_tcl = os.path.join(home, '.%s.tcl' % className) class_py = os.path.join(home, '.%s.py' % className) base_tcl = os.path.join(home, '.%s.tcl' % baseName) base_py = os.path.join(home, '.%s.py' % baseName) dir = {'self': self} exec 'from Tkinter import *' in dir if os.path.isfile(class_tcl): self.tk.call('source', class_tcl) if os.path.isfile(class_py): execfile(class_py, dir) if os.path.isfile(base_tcl): self.tk.call('source', base_tcl) if os.path.isfile(base_py): execfile(base_py, dir) def report_callback_exception(self, exc, val, tb): """Report callback exception on sys.stderr. Applications may want to override this internal function, and should when sys.stderr is None.""" import traceback, sys print >>sys.stderr, "Exception in Tkinter callback" sys.last_type = exc sys.last_value = val sys.last_traceback = tb traceback.print_exception(exc, val, tb) def __getattr__(self, attr): "Delegate attribute access to the interpreter object" return getattr(self.tk, attr) # Ideally, the classes Pack, Place and Grid disappear, the # pack/place/grid methods are defined on the Widget class, and # everybody uses w.pack_whatever(...) instead of Pack.whatever(w, # ...), with pack(), place() and grid() being short for # pack_configure(), place_configure() and grid_columnconfigure(), and # forget() being short for pack_forget(). As a practical matter, I'm # afraid that there is too much code out there that may be using the # Pack, Place or Grid class, so I leave them intact -- but only as # backwards compatibility features. Also note that those methods that # take a master as argument (e.g. pack_propagate) have been moved to # the Misc class (which now incorporates all methods common between # toplevel and interior widgets). Again, for compatibility, these are # copied into the Pack, Place or Grid class. def Tcl(screenName=None, baseName=None, className='Tk', useTk=0): return Tk(screenName, baseName, className, useTk) class Pack: """Geometry manager Pack. Base class to use the methods pack_* in every widget.""" def pack_configure(self, cnf={}, **kw): """Pack a widget in the parent widget. Use as options: after=widget - pack it after you have packed widget anchor=NSEW (or subset) - position widget according to given direction before=widget - pack it before you will pack widget expand=bool - expand widget if parent size grows fill=NONE or X or Y or BOTH - fill widget if widget grows in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget. """ self.tk.call( ('pack', 'configure', self._w) + self._options(cnf, kw)) pack = configure = config = pack_configure def pack_forget(self): """Unmap this widget and do not use it for the packing order.""" self.tk.call('pack', 'forget', self._w) forget = pack_forget def pack_info(self): """Return information about the packing options for this widget.""" d = _splitdict(self.tk, self.tk.call('pack', 'info', self._w)) if 'in' in d: d['in'] = self.nametowidget(d['in']) return d info = pack_info propagate = pack_propagate = Misc.pack_propagate slaves = pack_slaves = Misc.pack_slaves class Place: """Geometry manager Place. Base class to use the methods place_* in every widget.""" def place_configure(self, cnf={}, **kw): """Place a widget in the parent widget. Use as options: in=master - master relative to which the widget is placed in_=master - see 'in' option description x=amount - locate anchor of this widget at position x of master y=amount - locate anchor of this widget at position y of master relx=amount - locate anchor of this widget between 0.0 and 1.0 relative to width of master (1.0 is right edge) rely=amount - locate anchor of this widget between 0.0 and 1.0 relative to height of master (1.0 is bottom edge) anchor=NSEW (or subset) - position anchor according to given direction width=amount - width of this widget in pixel height=amount - height of this widget in pixel relwidth=amount - width of this widget between 0.0 and 1.0 relative to width of master (1.0 is the same width as the master) relheight=amount - height of this widget between 0.0 and 1.0 relative to height of master (1.0 is the same height as the master) bordermode="inside" or "outside" - whether to take border width of master widget into account """ self.tk.call( ('place', 'configure', self._w) + self._options(cnf, kw)) place = configure = config = place_configure def place_forget(self): """Unmap this widget.""" self.tk.call('place', 'forget', self._w) forget = place_forget def place_info(self): """Return information about the placing options for this widget.""" d = _splitdict(self.tk, self.tk.call('place', 'info', self._w)) if 'in' in d: d['in'] = self.nametowidget(d['in']) return d info = place_info slaves = place_slaves = Misc.place_slaves class Grid: """Geometry manager Grid. Base class to use the methods grid_* in every widget.""" # Thanks to Masazumi Yoshikawa (yosikawa@isi.edu) def grid_configure(self, cnf={}, **kw): """Position a widget in the parent widget in a grid. Use as options: column=number - use cell identified with given column (starting with 0) columnspan=number - this widget will span several columns in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction row=number - use cell identified with given row (starting with 0) rowspan=number - this widget will span several rows sticky=NSEW - if cell is larger on which sides will this widget stick to the cell boundary """ self.tk.call( ('grid', 'configure', self._w) + self._options(cnf, kw)) grid = configure = config = grid_configure bbox = grid_bbox = Misc.grid_bbox columnconfigure = grid_columnconfigure = Misc.grid_columnconfigure def grid_forget(self): """Unmap this widget.""" self.tk.call('grid', 'forget', self._w) forget = grid_forget def grid_remove(self): """Unmap this widget but remember the grid options.""" self.tk.call('grid', 'remove', self._w) def grid_info(self): """Return information about the options for positioning this widget in a grid.""" d = _splitdict(self.tk, self.tk.call('grid', 'info', self._w)) if 'in' in d: d['in'] = self.nametowidget(d['in']) return d info = grid_info location = grid_location = Misc.grid_location propagate = grid_propagate = Misc.grid_propagate rowconfigure = grid_rowconfigure = Misc.grid_rowconfigure size = grid_size = Misc.grid_size slaves = grid_slaves = Misc.grid_slaves class BaseWidget(Misc): """Internal class.""" def _setup(self, master, cnf): """Internal function. Sets up information about children.""" if _support_default_root: global _default_root if not master: if not _default_root: _default_root = Tk() master = _default_root self.master = master self.tk = master.tk name = None if 'name' in cnf: name = cnf['name'] del cnf['name'] if not name: name = repr(id(self)) self._name = name if master._w=='.': self._w = '.' + name else: self._w = master._w + '.' + name self.children = {} if self._name in self.master.children: self.master.children[self._name].destroy() self.master.children[self._name] = self def __init__(self, master, widgetName, cnf={}, kw={}, extra=()): """Construct a widget with the parent widget MASTER, a name WIDGETNAME and appropriate options.""" if kw: cnf = _cnfmerge((cnf, kw)) self.widgetName = widgetName BaseWidget._setup(self, master, cnf) if self._tclCommands is None: self._tclCommands = [] classes = [] for k in cnf.keys(): if type(k) is ClassType: classes.append((k, cnf[k])) del cnf[k] self.tk.call( (widgetName, self._w) + extra + self._options(cnf)) for k, v in classes: k.configure(self, v) def destroy(self): """Destroy this and all descendants widgets.""" for c in self.children.values(): c.destroy() self.tk.call('destroy', self._w) if self._name in self.master.children: del self.master.children[self._name] Misc.destroy(self) def _do(self, name, args=()): # XXX Obsolete -- better use self.tk.call directly! return self.tk.call((self._w, name) + args) class Widget(BaseWidget, Pack, Place, Grid): """Internal class. Base class for a widget which can be positioned with the geometry managers Pack, Place or Grid.""" pass class Toplevel(BaseWidget, Wm): """Toplevel widget, e.g. for dialogs.""" def __init__(self, master=None, cnf={}, **kw): """Construct a toplevel widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, menu, relief, screen, takefocus, use, visual, width.""" if kw: cnf = _cnfmerge((cnf, kw)) extra = () for wmkey in ['screen', 'class_', 'class', 'visual', 'colormap']: if wmkey in cnf: val = cnf[wmkey] # TBD: a hack needed because some keys # are not valid as keyword arguments if wmkey[-1] == '_': opt = '-'+wmkey[:-1] else: opt = '-'+wmkey extra = extra + (opt, val) del cnf[wmkey] BaseWidget.__init__(self, master, 'toplevel', cnf, {}, extra) root = self._root() self.iconname(root.iconname()) self.title(root.title()) self.protocol("WM_DELETE_WINDOW", self.destroy) class Button(Widget): """Button widget.""" def __init__(self, master=None, cnf={}, **kw): """Construct a button widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, repeatdelay, repeatinterval, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS command, compound, default, height, overrelief, state, width """ Widget.__init__(self, master, 'button', cnf, kw) def tkButtonEnter(self, *dummy): self.tk.call('tkButtonEnter', self._w) def tkButtonLeave(self, *dummy): self.tk.call('tkButtonLeave', self._w) def tkButtonDown(self, *dummy): self.tk.call('tkButtonDown', self._w) def tkButtonUp(self, *dummy): self.tk.call('tkButtonUp', self._w) def tkButtonInvoke(self, *dummy): self.tk.call('tkButtonInvoke', self._w) def flash(self): """Flash the button. This is accomplished by redisplaying the button several times, alternating between active and normal colors. At the end of the flash the button is left in the same normal/active state as when the command was invoked. This command is ignored if the button's state is disabled. """ self.tk.call(self._w, 'flash') def invoke(self): """Invoke the command associated with the button. The return value is the return value from the command, or an empty string if there is no command associated with the button. This command is ignored if the button's state is disabled. """ return self.tk.call(self._w, 'invoke') # Indices: # XXX I don't like these -- take them away def AtEnd(): return 'end' def AtInsert(*args): s = 'insert' for a in args: if a: s = s + (' ' + a) return s def AtSelFirst(): return 'sel.first' def AtSelLast(): return 'sel.last' def At(x, y=None): if y is None: return '@%r' % (x,) else: return '@%r,%r' % (x, y) class Canvas(Widget, XView, YView): """Canvas widget to display graphical elements like lines or text.""" def __init__(self, master=None, cnf={}, **kw): """Construct a canvas widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, closeenough, confine, cursor, height, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, offset, relief, scrollregion, selectbackground, selectborderwidth, selectforeground, state, takefocus, width, xscrollcommand, xscrollincrement, yscrollcommand, yscrollincrement.""" Widget.__init__(self, master, 'canvas', cnf, kw) def addtag(self, *args): """Internal function.""" self.tk.call((self._w, 'addtag') + args) def addtag_above(self, newtag, tagOrId): """Add tag NEWTAG to all items above TAGORID.""" self.addtag(newtag, 'above', tagOrId) def addtag_all(self, newtag): """Add tag NEWTAG to all items.""" self.addtag(newtag, 'all') def addtag_below(self, newtag, tagOrId): """Add tag NEWTAG to all items below TAGORID.""" self.addtag(newtag, 'below', tagOrId) def addtag_closest(self, newtag, x, y, halo=None, start=None): """Add tag NEWTAG to item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closests). If START is specified the next below this tag is taken.""" self.addtag(newtag, 'closest', x, y, halo, start) def addtag_enclosed(self, newtag, x1, y1, x2, y2): """Add tag NEWTAG to all items in the rectangle defined by X1,Y1,X2,Y2.""" self.addtag(newtag, 'enclosed', x1, y1, x2, y2) def addtag_overlapping(self, newtag, x1, y1, x2, y2): """Add tag NEWTAG to all items which overlap the rectangle defined by X1,Y1,X2,Y2.""" self.addtag(newtag, 'overlapping', x1, y1, x2, y2) def addtag_withtag(self, newtag, tagOrId): """Add tag NEWTAG to all items with TAGORID.""" self.addtag(newtag, 'withtag', tagOrId) def bbox(self, *args): """Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses all items with tags specified as arguments.""" return self._getints( self.tk.call((self._w, 'bbox') + args)) or None def tag_unbind(self, tagOrId, sequence, funcid=None): """Unbind for all items with TAGORID for event SEQUENCE the function identified with FUNCID.""" self.tk.call(self._w, 'bind', tagOrId, sequence, '') if funcid: self.deletecommand(funcid) def tag_bind(self, tagOrId, sequence=None, func=None, add=None): """Bind to all items with TAGORID at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.""" return self._bind((self._w, 'bind', tagOrId), sequence, func, add) def canvasx(self, screenx, gridspacing=None): """Return the canvas x coordinate of pixel position SCREENX rounded to nearest multiple of GRIDSPACING units.""" return getdouble(self.tk.call( self._w, 'canvasx', screenx, gridspacing)) def canvasy(self, screeny, gridspacing=None): """Return the canvas y coordinate of pixel position SCREENY rounded to nearest multiple of GRIDSPACING units.""" return getdouble(self.tk.call( self._w, 'canvasy', screeny, gridspacing)) def coords(self, *args): """Return a list of coordinates for the item given in ARGS.""" # XXX Should use _flatten on args return map(getdouble, self.tk.splitlist( self.tk.call((self._w, 'coords') + args))) def _create(self, itemType, args, kw): # Args: (val, val, ..., cnf={}) """Internal function.""" args = _flatten(args) cnf = args[-1] if type(cnf) in (DictionaryType, TupleType): args = args[:-1] else: cnf = {} return getint(self.tk.call( self._w, 'create', itemType, *(args + self._options(cnf, kw)))) def create_arc(self, *args, **kw): """Create arc shaped region with coordinates x1,y1,x2,y2.""" return self._create('arc', args, kw) def create_bitmap(self, *args, **kw): """Create bitmap with coordinates x1,y1.""" return self._create('bitmap', args, kw) def create_image(self, *args, **kw): """Create image item with coordinates x1,y1.""" return self._create('image', args, kw) def create_line(self, *args, **kw): """Create line with coordinates x1,y1,...,xn,yn.""" return self._create('line', args, kw) def create_oval(self, *args, **kw): """Create oval with coordinates x1,y1,x2,y2.""" return self._create('oval', args, kw) def create_polygon(self, *args, **kw): """Create polygon with coordinates x1,y1,...,xn,yn.""" return self._create('polygon', args, kw) def create_rectangle(self, *args, **kw): """Create rectangle with coordinates x1,y1,x2,y2.""" return self._create('rectangle', args, kw) def create_text(self, *args, **kw): """Create text with coordinates x1,y1.""" return self._create('text', args, kw) def create_window(self, *args, **kw): """Create window with coordinates x1,y1,x2,y2.""" return self._create('window', args, kw) def dchars(self, *args): """Delete characters of text items identified by tag or id in ARGS (possibly several times) from FIRST to LAST character (including).""" self.tk.call((self._w, 'dchars') + args) def delete(self, *args): """Delete items identified by all tag or ids contained in ARGS.""" self.tk.call((self._w, 'delete') + args) def dtag(self, *args): """Delete tag or id given as last arguments in ARGS from items identified by first argument in ARGS.""" self.tk.call((self._w, 'dtag') + args) def find(self, *args): """Internal function.""" return self._getints( self.tk.call((self._w, 'find') + args)) or () def find_above(self, tagOrId): """Return items above TAGORID.""" return self.find('above', tagOrId) def find_all(self): """Return all items.""" return self.find('all') def find_below(self, tagOrId): """Return all items below TAGORID.""" return self.find('below', tagOrId) def find_closest(self, x, y, halo=None, start=None): """Return item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closest). If START is specified the next below this tag is taken.""" return self.find('closest', x, y, halo, start) def find_enclosed(self, x1, y1, x2, y2): """Return all items in rectangle defined by X1,Y1,X2,Y2.""" return self.find('enclosed', x1, y1, x2, y2) def find_overlapping(self, x1, y1, x2, y2): """Return all items which overlap the rectangle defined by X1,Y1,X2,Y2.""" return self.find('overlapping', x1, y1, x2, y2) def find_withtag(self, tagOrId): """Return all items with TAGORID.""" return self.find('withtag', tagOrId) def focus(self, *args): """Set focus to the first item specified in ARGS.""" return self.tk.call((self._w, 'focus') + args) def gettags(self, *args): """Return tags associated with the first item specified in ARGS.""" return self.tk.splitlist( self.tk.call((self._w, 'gettags') + args)) def icursor(self, *args): """Set cursor at position POS in the item identified by TAGORID. In ARGS TAGORID must be first.""" self.tk.call((self._w, 'icursor') + args) def index(self, *args): """Return position of cursor as integer in item specified in ARGS.""" return getint(self.tk.call((self._w, 'index') + args)) def insert(self, *args): """Insert TEXT in item TAGORID at position POS. ARGS must be TAGORID POS TEXT.""" self.tk.call((self._w, 'insert') + args) def itemcget(self, tagOrId, option): """Return the resource value for an OPTION for item TAGORID.""" return self.tk.call( (self._w, 'itemcget') + (tagOrId, '-'+option)) def itemconfigure(self, tagOrId, cnf=None, **kw): """Configure resources of an item TAGORID. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. """ return self._configure(('itemconfigure', tagOrId), cnf, kw) itemconfig = itemconfigure # lower, tkraise/lift hide Misc.lower, Misc.tkraise/lift, # so the preferred name for them is tag_lower, tag_raise # (similar to tag_bind, and similar to the Text widget); # unfortunately can't delete the old ones yet (maybe in 1.6) def tag_lower(self, *args): """Lower an item TAGORID given in ARGS (optional below another item).""" self.tk.call((self._w, 'lower') + args) lower = tag_lower def move(self, *args): """Move an item TAGORID given in ARGS.""" self.tk.call((self._w, 'move') + args) def postscript(self, cnf={}, **kw): """Print the contents of the canvas to a postscript file. Valid options: colormap, colormode, file, fontmap, height, pageanchor, pageheight, pagewidth, pagex, pagey, rotate, width, x, y.""" return self.tk.call((self._w, 'postscript') + self._options(cnf, kw)) def tag_raise(self, *args): """Raise an item TAGORID given in ARGS (optional above another item).""" self.tk.call((self._w, 'raise') + args) lift = tkraise = tag_raise def scale(self, *args): """Scale item TAGORID with XORIGIN, YORIGIN, XSCALE, YSCALE.""" self.tk.call((self._w, 'scale') + args) def scan_mark(self, x, y): """Remember the current X, Y coordinates.""" self.tk.call(self._w, 'scan', 'mark', x, y) def scan_dragto(self, x, y, gain=10): """Adjust the view of the canvas to GAIN times the difference between X and Y and the coordinates given in scan_mark.""" self.tk.call(self._w, 'scan', 'dragto', x, y, gain) def select_adjust(self, tagOrId, index): """Adjust the end of the selection near the cursor of an item TAGORID to index.""" self.tk.call(self._w, 'select', 'adjust', tagOrId, index) def select_clear(self): """Clear the selection if it is in this widget.""" self.tk.call(self._w, 'select', 'clear') def select_from(self, tagOrId, index): """Set the fixed end of a selection in item TAGORID to INDEX.""" self.tk.call(self._w, 'select', 'from', tagOrId, index) def select_item(self): """Return the item which has the selection.""" return self.tk.call(self._w, 'select', 'item') or None def select_to(self, tagOrId, index): """Set the variable end of a selection in item TAGORID to INDEX.""" self.tk.call(self._w, 'select', 'to', tagOrId, index) def type(self, tagOrId): """Return the type of the item TAGORID.""" return self.tk.call(self._w, 'type', tagOrId) or None class Checkbutton(Widget): """Checkbutton widget which is either in on- or off-state.""" def __init__(self, master=None, cnf={}, **kw): """Construct a checkbutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, offvalue, onvalue, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, variable, width, wraplength.""" Widget.__init__(self, master, 'checkbutton', cnf, kw) def deselect(self): """Put the button in off-state.""" self.tk.call(self._w, 'deselect') def flash(self): """Flash the button.""" self.tk.call(self._w, 'flash') def invoke(self): """Toggle the button and invoke a command if given as resource.""" return self.tk.call(self._w, 'invoke') def select(self): """Put the button in on-state.""" self.tk.call(self._w, 'select') def toggle(self): """Toggle the button.""" self.tk.call(self._w, 'toggle') class Entry(Widget, XView): """Entry widget which allows displaying simple text.""" def __init__(self, master=None, cnf={}, **kw): """Construct an entry widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, invalidcommand, invcmd, justify, relief, selectbackground, selectborderwidth, selectforeground, show, state, takefocus, textvariable, validate, validatecommand, vcmd, width, xscrollcommand.""" Widget.__init__(self, master, 'entry', cnf, kw) def delete(self, first, last=None): """Delete text from FIRST to LAST (not included).""" self.tk.call(self._w, 'delete', first, last) def get(self): """Return the text.""" return self.tk.call(self._w, 'get') def icursor(self, index): """Insert cursor at INDEX.""" self.tk.call(self._w, 'icursor', index) def index(self, index): """Return position of cursor.""" return getint(self.tk.call( self._w, 'index', index)) def insert(self, index, string): """Insert STRING at INDEX.""" self.tk.call(self._w, 'insert', index, string) def scan_mark(self, x): """Remember the current X, Y coordinates.""" self.tk.call(self._w, 'scan', 'mark', x) def scan_dragto(self, x): """Adjust the view of the canvas to 10 times the difference between X and Y and the coordinates given in scan_mark.""" self.tk.call(self._w, 'scan', 'dragto', x) def selection_adjust(self, index): """Adjust the end of the selection near the cursor to INDEX.""" self.tk.call(self._w, 'selection', 'adjust', index) select_adjust = selection_adjust def selection_clear(self): """Clear the selection if it is in this widget.""" self.tk.call(self._w, 'selection', 'clear') select_clear = selection_clear def selection_from(self, index): """Set the fixed end of a selection to INDEX.""" self.tk.call(self._w, 'selection', 'from', index) select_from = selection_from def selection_present(self): """Return True if there are characters selected in the entry, False otherwise.""" return self.tk.getboolean( self.tk.call(self._w, 'selection', 'present')) select_present = selection_present def selection_range(self, start, end): """Set the selection from START to END (not included).""" self.tk.call(self._w, 'selection', 'range', start, end) select_range = selection_range def selection_to(self, index): """Set the variable end of a selection to INDEX.""" self.tk.call(self._w, 'selection', 'to', index) select_to = selection_to class Frame(Widget): """Frame widget which may contain other widgets and can have a 3D border.""" def __init__(self, master=None, cnf={}, **kw): """Construct a frame widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, relief, takefocus, visual, width.""" cnf = _cnfmerge((cnf, kw)) extra = () if 'class_' in cnf: extra = ('-class', cnf['class_']) del cnf['class_'] elif 'class' in cnf: extra = ('-class', cnf['class']) del cnf['class'] Widget.__init__(self, master, 'frame', cnf, {}, extra) class Label(Widget): """Label widget which can display text and bitmaps.""" def __init__(self, master=None, cnf={}, **kw): """Construct a label widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground, highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS height, state, width """ Widget.__init__(self, master, 'label', cnf, kw) class Listbox(Widget, XView, YView): """Listbox widget which can display a list of strings.""" def __init__(self, master=None, cnf={}, **kw): """Construct a listbox widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, relief, selectbackground, selectborderwidth, selectforeground, selectmode, setgrid, takefocus, width, xscrollcommand, yscrollcommand, listvariable.""" Widget.__init__(self, master, 'listbox', cnf, kw) def activate(self, index): """Activate item identified by INDEX.""" self.tk.call(self._w, 'activate', index) def bbox(self, index): """Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the item identified by the given index.""" return self._getints(self.tk.call(self._w, 'bbox', index)) or None def curselection(self): """Return the indices of currently selected item.""" return self._getints(self.tk.call(self._w, 'curselection')) or () def delete(self, first, last=None): """Delete items from FIRST to LAST (included).""" self.tk.call(self._w, 'delete', first, last) def get(self, first, last=None): """Get list of items from FIRST to LAST (included).""" if last is not None: return self.tk.splitlist(self.tk.call( self._w, 'get', first, last)) else: return self.tk.call(self._w, 'get', first) def index(self, index): """Return index of item identified with INDEX.""" i = self.tk.call(self._w, 'index', index) if i == 'none': return None return getint(i) def insert(self, index, *elements): """Insert ELEMENTS at INDEX.""" self.tk.call((self._w, 'insert', index) + elements) def nearest(self, y): """Get index of item which is nearest to y coordinate Y.""" return getint(self.tk.call( self._w, 'nearest', y)) def scan_mark(self, x, y): """Remember the current X, Y coordinates.""" self.tk.call(self._w, 'scan', 'mark', x, y) def scan_dragto(self, x, y): """Adjust the view of the listbox to 10 times the difference between X and Y and the coordinates given in scan_mark.""" self.tk.call(self._w, 'scan', 'dragto', x, y) def see(self, index): """Scroll such that INDEX is visible.""" self.tk.call(self._w, 'see', index) def selection_anchor(self, index): """Set the fixed end oft the selection to INDEX.""" self.tk.call(self._w, 'selection', 'anchor', index) select_anchor = selection_anchor def selection_clear(self, first, last=None): """Clear the selection from FIRST to LAST (included).""" self.tk.call(self._w, 'selection', 'clear', first, last) select_clear = selection_clear def selection_includes(self, index): """Return 1 if INDEX is part of the selection.""" return self.tk.getboolean(self.tk.call( self._w, 'selection', 'includes', index)) select_includes = selection_includes def selection_set(self, first, last=None): """Set the selection from FIRST to LAST (included) without changing the currently selected elements.""" self.tk.call(self._w, 'selection', 'set', first, last) select_set = selection_set def size(self): """Return the number of elements in the listbox.""" return getint(self.tk.call(self._w, 'size')) def itemcget(self, index, option): """Return the resource value for an ITEM and an OPTION.""" return self.tk.call( (self._w, 'itemcget') + (index, '-'+option)) def itemconfigure(self, index, cnf=None, **kw): """Configure resources of an ITEM. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. Valid resource names: background, bg, foreground, fg, selectbackground, selectforeground.""" return self._configure(('itemconfigure', index), cnf, kw) itemconfig = itemconfigure class Menu(Widget): """Menu widget which allows displaying menu bars, pull-down menus and pop-up menus.""" def __init__(self, master=None, cnf={}, **kw): """Construct menu widget with the parent MASTER. Valid resource names: activebackground, activeborderwidth, activeforeground, background, bd, bg, borderwidth, cursor, disabledforeground, fg, font, foreground, postcommand, relief, selectcolor, takefocus, tearoff, tearoffcommand, title, type.""" Widget.__init__(self, master, 'menu', cnf, kw) def tk_bindForTraversal(self): # obsolete since Tk 4.0 import warnings warnings.warn('tk_bindForTraversal() does nothing and ' 'will be removed in 3.6', DeprecationWarning, stacklevel=2) def tk_mbPost(self): self.tk.call('tk_mbPost', self._w) def tk_mbUnpost(self): self.tk.call('tk_mbUnpost') def tk_traverseToMenu(self, char): self.tk.call('tk_traverseToMenu', self._w, char) def tk_traverseWithinMenu(self, char): self.tk.call('tk_traverseWithinMenu', self._w, char) def tk_getMenuButtons(self): return self.tk.call('tk_getMenuButtons', self._w) def tk_nextMenu(self, count): self.tk.call('tk_nextMenu', count) def tk_nextMenuEntry(self, count): self.tk.call('tk_nextMenuEntry', count) def tk_invokeMenu(self): self.tk.call('tk_invokeMenu', self._w) def tk_firstMenu(self): self.tk.call('tk_firstMenu', self._w) def tk_mbButtonDown(self): self.tk.call('tk_mbButtonDown', self._w) def tk_popup(self, x, y, entry=""): """Post the menu at position X,Y with entry ENTRY.""" self.tk.call('tk_popup', self._w, x, y, entry) def activate(self, index): """Activate entry at INDEX.""" self.tk.call(self._w, 'activate', index) def add(self, itemType, cnf={}, **kw): """Internal function.""" self.tk.call((self._w, 'add', itemType) + self._options(cnf, kw)) def add_cascade(self, cnf={}, **kw): """Add hierarchical menu item.""" self.add('cascade', cnf or kw) def add_checkbutton(self, cnf={}, **kw): """Add checkbutton menu item.""" self.add('checkbutton', cnf or kw) def add_command(self, cnf={}, **kw): """Add command menu item.""" self.add('command', cnf or kw) def add_radiobutton(self, cnf={}, **kw): """Addd radio menu item.""" self.add('radiobutton', cnf or kw) def add_separator(self, cnf={}, **kw): """Add separator.""" self.add('separator', cnf or kw) def insert(self, index, itemType, cnf={}, **kw): """Internal function.""" self.tk.call((self._w, 'insert', index, itemType) + self._options(cnf, kw)) def insert_cascade(self, index, cnf={}, **kw): """Add hierarchical menu item at INDEX.""" self.insert(index, 'cascade', cnf or kw) def insert_checkbutton(self, index, cnf={}, **kw): """Add checkbutton menu item at INDEX.""" self.insert(index, 'checkbutton', cnf or kw) def insert_command(self, index, cnf={}, **kw): """Add command menu item at INDEX.""" self.insert(index, 'command', cnf or kw) def insert_radiobutton(self, index, cnf={}, **kw): """Addd radio menu item at INDEX.""" self.insert(index, 'radiobutton', cnf or kw) def insert_separator(self, index, cnf={}, **kw): """Add separator at INDEX.""" self.insert(index, 'separator', cnf or kw) def delete(self, index1, index2=None): """Delete menu items between INDEX1 and INDEX2 (included).""" if index2 is None: index2 = index1 num_index1, num_index2 = self.index(index1), self.index(index2) if (num_index1 is None) or (num_index2 is None): num_index1, num_index2 = 0, -1 for i in range(num_index1, num_index2 + 1): if 'command' in self.entryconfig(i): c = str(self.entrycget(i, 'command')) if c: self.deletecommand(c) self.tk.call(self._w, 'delete', index1, index2) def entrycget(self, index, option): """Return the resource value of a menu item for OPTION at INDEX.""" return self.tk.call(self._w, 'entrycget', index, '-' + option) def entryconfigure(self, index, cnf=None, **kw): """Configure a menu item at INDEX.""" return self._configure(('entryconfigure', index), cnf, kw) entryconfig = entryconfigure def index(self, index): """Return the index of a menu item identified by INDEX.""" i = self.tk.call(self._w, 'index', index) if i == 'none': return None return getint(i) def invoke(self, index): """Invoke a menu item identified by INDEX and execute the associated command.""" return self.tk.call(self._w, 'invoke', index) def post(self, x, y): """Display a menu at position X,Y.""" self.tk.call(self._w, 'post', x, y) def type(self, index): """Return the type of the menu item at INDEX.""" return self.tk.call(self._w, 'type', index) def unpost(self): """Unmap a menu.""" self.tk.call(self._w, 'unpost') def yposition(self, index): """Return the y-position of the topmost pixel of the menu item at INDEX.""" return getint(self.tk.call( self._w, 'yposition', index)) class Menubutton(Widget): """Menubutton widget, obsolete since Tk8.0.""" def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'menubutton', cnf, kw) class Message(Widget): """Message widget to display multiline text. Obsolete since Label does it too.""" def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'message', cnf, kw) class Radiobutton(Widget): """Radiobutton widget which shows only one of several buttons in on-state.""" def __init__(self, master=None, cnf={}, **kw): """Construct a radiobutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, value, variable, width, wraplength.""" Widget.__init__(self, master, 'radiobutton', cnf, kw) def deselect(self): """Put the button in off-state.""" self.tk.call(self._w, 'deselect') def flash(self): """Flash the button.""" self.tk.call(self._w, 'flash') def invoke(self): """Toggle the button and invoke a command if given as resource.""" return self.tk.call(self._w, 'invoke') def select(self): """Put the button in on-state.""" self.tk.call(self._w, 'select') class Scale(Widget): """Scale widget which can display a numerical scale.""" def __init__(self, master=None, cnf={}, **kw): """Construct a scale widget with the parent MASTER. Valid resource names: activebackground, background, bigincrement, bd, bg, borderwidth, command, cursor, digits, fg, font, foreground, from, highlightbackground, highlightcolor, highlightthickness, label, length, orient, relief, repeatdelay, repeatinterval, resolution, showvalue, sliderlength, sliderrelief, state, takefocus, tickinterval, to, troughcolor, variable, width.""" Widget.__init__(self, master, 'scale', cnf, kw) def get(self): """Get the current value as integer or float.""" value = self.tk.call(self._w, 'get') try: return getint(value) except ValueError: return getdouble(value) def set(self, value): """Set the value to VALUE.""" self.tk.call(self._w, 'set', value) def coords(self, value=None): """Return a tuple (X,Y) of the point along the centerline of the trough that corresponds to VALUE or the current value if None is given.""" return self._getints(self.tk.call(self._w, 'coords', value)) def identify(self, x, y): """Return where the point X,Y lies. Valid return values are "slider", "though1" and "though2".""" return self.tk.call(self._w, 'identify', x, y) class Scrollbar(Widget): """Scrollbar widget which displays a slider at a certain position.""" def __init__(self, master=None, cnf={}, **kw): """Construct a scrollbar widget with the parent MASTER. Valid resource names: activebackground, activerelief, background, bd, bg, borderwidth, command, cursor, elementborderwidth, highlightbackground, highlightcolor, highlightthickness, jump, orient, relief, repeatdelay, repeatinterval, takefocus, troughcolor, width.""" Widget.__init__(self, master, 'scrollbar', cnf, kw) def activate(self, index): """Display the element at INDEX with activebackground and activerelief. INDEX can be "arrow1","slider" or "arrow2".""" self.tk.call(self._w, 'activate', index) def delta(self, deltax, deltay): """Return the fractional change of the scrollbar setting if it would be moved by DELTAX or DELTAY pixels.""" return getdouble( self.tk.call(self._w, 'delta', deltax, deltay)) def fraction(self, x, y): """Return the fractional value which corresponds to a slider position of X,Y.""" return getdouble(self.tk.call(self._w, 'fraction', x, y)) def identify(self, x, y): """Return the element under position X,Y as one of "arrow1","slider","arrow2" or "".""" return self.tk.call(self._w, 'identify', x, y) def get(self): """Return the current fractional values (upper and lower end) of the slider position.""" return self._getdoubles(self.tk.call(self._w, 'get')) def set(self, *args): """Set the fractional values of the slider position (upper and lower ends as value between 0 and 1).""" self.tk.call((self._w, 'set') + args) class Text(Widget, XView, YView): """Text widget which can display text in various forms.""" def __init__(self, master=None, cnf={}, **kw): """Construct a text widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, padx, pady, relief, selectbackground, selectborderwidth, selectforeground, setgrid, takefocus, xscrollcommand, yscrollcommand, WIDGET-SPECIFIC OPTIONS autoseparators, height, maxundo, spacing1, spacing2, spacing3, state, tabs, undo, width, wrap, """ Widget.__init__(self, master, 'text', cnf, kw) def bbox(self, *args): """Return a tuple of (x,y,width,height) which gives the bounding box of the visible part of the character at the index in ARGS.""" return self._getints( self.tk.call((self._w, 'bbox') + args)) or None def tk_textSelectTo(self, index): self.tk.call('tk_textSelectTo', self._w, index) def tk_textBackspace(self): self.tk.call('tk_textBackspace', self._w) def tk_textIndexCloser(self, a, b, c): self.tk.call('tk_textIndexCloser', self._w, a, b, c) def tk_textResetAnchor(self, index): self.tk.call('tk_textResetAnchor', self._w, index) def compare(self, index1, op, index2): """Return whether between index INDEX1 and index INDEX2 the relation OP is satisfied. OP is one of <, <=, ==, >=, >, or !=.""" return self.tk.getboolean(self.tk.call( self._w, 'compare', index1, op, index2)) def debug(self, boolean=None): """Turn on the internal consistency checks of the B-Tree inside the text widget according to BOOLEAN.""" if boolean is None: return self.tk.getboolean(self.tk.call(self._w, 'debug')) self.tk.call(self._w, 'debug', boolean) def delete(self, index1, index2=None): """Delete the characters between INDEX1 and INDEX2 (not included).""" self.tk.call(self._w, 'delete', index1, index2) def dlineinfo(self, index): """Return tuple (x,y,width,height,baseline) giving the bounding box and baseline position of the visible part of the line containing the character at INDEX.""" return self._getints(self.tk.call(self._w, 'dlineinfo', index)) def dump(self, index1, index2=None, command=None, **kw): """Return the contents of the widget between index1 and index2. The type of contents returned in filtered based on the keyword parameters; if 'all', 'image', 'mark', 'tag', 'text', or 'window' are given and true, then the corresponding items are returned. The result is a list of triples of the form (key, value, index). If none of the keywords are true then 'all' is used by default. If the 'command' argument is given, it is called once for each element of the list of triples, with the values of each triple serving as the arguments to the function. In this case the list is not returned.""" args = [] func_name = None result = None if not command: # Never call the dump command without the -command flag, since the # output could involve Tcl quoting and would be a pain to parse # right. Instead just set the command to build a list of triples # as if we had done the parsing. result = [] def append_triple(key, value, index, result=result): result.append((key, value, index)) command = append_triple try: if not isinstance(command, str): func_name = command = self._register(command) args += ["-command", command] for key in kw: if kw[key]: args.append("-" + key) args.append(index1) if index2: args.append(index2) self.tk.call(self._w, "dump", *args) return result finally: if func_name: self.deletecommand(func_name) ## new in tk8.4 def edit(self, *args): """Internal method This method controls the undo mechanism and the modified flag. The exact behavior of the command depends on the option argument that follows the edit argument. The following forms of the command are currently supported: edit_modified, edit_redo, edit_reset, edit_separator and edit_undo """ return self.tk.call(self._w, 'edit', *args) def edit_modified(self, arg=None): """Get or Set the modified flag If arg is not specified, returns the modified flag of the widget. The insert, delete, edit undo and edit redo commands or the user can set or clear the modified flag. If boolean is specified, sets the modified flag of the widget to arg. """ return self.edit("modified", arg) def edit_redo(self): """Redo the last undone edit When the undo option is true, reapplies the last undone edits provided no other edits were done since then. Generates an error when the redo stack is empty. Does nothing when the undo option is false. """ return self.edit("redo") def edit_reset(self): """Clears the undo and redo stacks """ return self.edit("reset") def edit_separator(self): """Inserts a separator (boundary) on the undo stack. Does nothing when the undo option is false """ return self.edit("separator") def edit_undo(self): """Undoes the last edit action If the undo option is true. An edit action is defined as all the insert and delete commands that are recorded on the undo stack in between two separators. Generates an error when the undo stack is empty. Does nothing when the undo option is false """ return self.edit("undo") def get(self, index1, index2=None): """Return the text from INDEX1 to INDEX2 (not included).""" return self.tk.call(self._w, 'get', index1, index2) # (Image commands are new in 8.0) def image_cget(self, index, option): """Return the value of OPTION of an embedded image at INDEX.""" if option[:1] != "-": option = "-" + option if option[-1:] == "_": option = option[:-1] return self.tk.call(self._w, "image", "cget", index, option) def image_configure(self, index, cnf=None, **kw): """Configure an embedded image at INDEX.""" return self._configure(('image', 'configure', index), cnf, kw) def image_create(self, index, cnf={}, **kw): """Create an embedded image at INDEX.""" return self.tk.call( self._w, "image", "create", index, *self._options(cnf, kw)) def image_names(self): """Return all names of embedded images in this widget.""" return self.tk.call(self._w, "image", "names") def index(self, index): """Return the index in the form line.char for INDEX.""" return str(self.tk.call(self._w, 'index', index)) def insert(self, index, chars, *args): """Insert CHARS before the characters at INDEX. An additional tag can be given in ARGS. Additional CHARS and tags can follow in ARGS.""" self.tk.call((self._w, 'insert', index, chars) + args) def mark_gravity(self, markName, direction=None): """Change the gravity of a mark MARKNAME to DIRECTION (LEFT or RIGHT). Return the current value if None is given for DIRECTION.""" return self.tk.call( (self._w, 'mark', 'gravity', markName, direction)) def mark_names(self): """Return all mark names.""" return self.tk.splitlist(self.tk.call( self._w, 'mark', 'names')) def mark_set(self, markName, index): """Set mark MARKNAME before the character at INDEX.""" self.tk.call(self._w, 'mark', 'set', markName, index) def mark_unset(self, *markNames): """Delete all marks in MARKNAMES.""" self.tk.call((self._w, 'mark', 'unset') + markNames) def mark_next(self, index): """Return the name of the next mark after INDEX.""" return self.tk.call(self._w, 'mark', 'next', index) or None def mark_previous(self, index): """Return the name of the previous mark before INDEX.""" return self.tk.call(self._w, 'mark', 'previous', index) or None def scan_mark(self, x, y): """Remember the current X, Y coordinates.""" self.tk.call(self._w, 'scan', 'mark', x, y) def scan_dragto(self, x, y): """Adjust the view of the text to 10 times the difference between X and Y and the coordinates given in scan_mark.""" self.tk.call(self._w, 'scan', 'dragto', x, y) def search(self, pattern, index, stopindex=None, forwards=None, backwards=None, exact=None, regexp=None, nocase=None, count=None, elide=None): """Search PATTERN beginning from INDEX until STOPINDEX. Return the index of the first character of a match or an empty string.""" args = [self._w, 'search'] if forwards: args.append('-forwards') if backwards: args.append('-backwards') if exact: args.append('-exact') if regexp: args.append('-regexp') if nocase: args.append('-nocase') if elide: args.append('-elide') if count: args.append('-count'); args.append(count) if pattern and pattern[0] == '-': args.append('--') args.append(pattern) args.append(index) if stopindex: args.append(stopindex) return str(self.tk.call(tuple(args))) def see(self, index): """Scroll such that the character at INDEX is visible.""" self.tk.call(self._w, 'see', index) def tag_add(self, tagName, index1, *args): """Add tag TAGNAME to all characters between INDEX1 and index2 in ARGS. Additional pairs of indices may follow in ARGS.""" self.tk.call( (self._w, 'tag', 'add', tagName, index1) + args) def tag_unbind(self, tagName, sequence, funcid=None): """Unbind for all characters with TAGNAME for event SEQUENCE the function identified with FUNCID.""" self.tk.call(self._w, 'tag', 'bind', tagName, sequence, '') if funcid: self.deletecommand(funcid) def tag_bind(self, tagName, sequence, func, add=None): """Bind to all characters with TAGNAME at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.""" return self._bind((self._w, 'tag', 'bind', tagName), sequence, func, add) def tag_cget(self, tagName, option): """Return the value of OPTION for tag TAGNAME.""" if option[:1] != '-': option = '-' + option if option[-1:] == '_': option = option[:-1] return self.tk.call(self._w, 'tag', 'cget', tagName, option) def tag_configure(self, tagName, cnf=None, **kw): """Configure a tag TAGNAME.""" return self._configure(('tag', 'configure', tagName), cnf, kw) tag_config = tag_configure def tag_delete(self, *tagNames): """Delete all tags in TAGNAMES.""" self.tk.call((self._w, 'tag', 'delete') + tagNames) def tag_lower(self, tagName, belowThis=None): """Change the priority of tag TAGNAME such that it is lower than the priority of BELOWTHIS.""" self.tk.call(self._w, 'tag', 'lower', tagName, belowThis) def tag_names(self, index=None): """Return a list of all tag names.""" return self.tk.splitlist( self.tk.call(self._w, 'tag', 'names', index)) def tag_nextrange(self, tagName, index1, index2=None): """Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched forward from INDEX1.""" return self.tk.splitlist(self.tk.call( self._w, 'tag', 'nextrange', tagName, index1, index2)) def tag_prevrange(self, tagName, index1, index2=None): """Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched backwards from INDEX1.""" return self.tk.splitlist(self.tk.call( self._w, 'tag', 'prevrange', tagName, index1, index2)) def tag_raise(self, tagName, aboveThis=None): """Change the priority of tag TAGNAME such that it is higher than the priority of ABOVETHIS.""" self.tk.call( self._w, 'tag', 'raise', tagName, aboveThis) def tag_ranges(self, tagName): """Return a list of ranges of text which have tag TAGNAME.""" return self.tk.splitlist(self.tk.call( self._w, 'tag', 'ranges', tagName)) def tag_remove(self, tagName, index1, index2=None): """Remove tag TAGNAME from all characters between INDEX1 and INDEX2.""" self.tk.call( self._w, 'tag', 'remove', tagName, index1, index2) def window_cget(self, index, option): """Return the value of OPTION of an embedded window at INDEX.""" if option[:1] != '-': option = '-' + option if option[-1:] == '_': option = option[:-1] return self.tk.call(self._w, 'window', 'cget', index, option) def window_configure(self, index, cnf=None, **kw): """Configure an embedded window at INDEX.""" return self._configure(('window', 'configure', index), cnf, kw) window_config = window_configure def window_create(self, index, cnf={}, **kw): """Create a window at INDEX.""" self.tk.call( (self._w, 'window', 'create', index) + self._options(cnf, kw)) def window_names(self): """Return all names of embedded windows in this widget.""" return self.tk.splitlist( self.tk.call(self._w, 'window', 'names')) def yview_pickplace(self, *what): """Obsolete function, use see.""" self.tk.call((self._w, 'yview', '-pickplace') + what) class _setit: """Internal class. It wraps the command in the widget OptionMenu.""" def __init__(self, var, value, callback=None): self.__value = value self.__var = var self.__callback = callback def __call__(self, *args): self.__var.set(self.__value) if self.__callback: self.__callback(self.__value, *args) class OptionMenu(Menubutton): """OptionMenu which allows the user to select a value from a menu.""" def __init__(self, master, variable, value, *values, **kwargs): """Construct an optionmenu widget with the parent MASTER, with the resource textvariable set to VARIABLE, the initially selected value VALUE, the other menu values VALUES and an additional keyword argument command.""" kw = {"borderwidth": 2, "textvariable": variable, "indicatoron": 1, "relief": RAISED, "anchor": "c", "highlightthickness": 2} Widget.__init__(self, master, "menubutton", kw) self.widgetName = 'tk_optionMenu' menu = self.__menu = Menu(self, name="menu", tearoff=0) self.menuname = menu._w # 'command' is the only supported keyword callback = kwargs.get('command') if 'command' in kwargs: del kwargs['command'] if kwargs: raise TclError, 'unknown option -'+kwargs.keys()[0] menu.add_command(label=value, command=_setit(variable, value, callback)) for v in values: menu.add_command(label=v, command=_setit(variable, v, callback)) self["menu"] = menu def __getitem__(self, name): if name == 'menu': return self.__menu return Widget.__getitem__(self, name) def destroy(self): """Destroy this widget and the associated menu.""" Menubutton.destroy(self) self.__menu = None class Image: """Base class for images.""" _last_id = 0 def __init__(self, imgtype, name=None, cnf={}, master=None, **kw): self.name = None if not master: master = _default_root if not master: raise RuntimeError, 'Too early to create image' self.tk = getattr(master, 'tk', master) if not name: Image._last_id += 1 name = "pyimage%r" % (Image._last_id,) # tk itself would use image<x> # The following is needed for systems where id(x) # can return a negative number, such as Linux/m68k: if name[0] == '-': name = '_' + name[1:] if kw and cnf: cnf = _cnfmerge((cnf, kw)) elif kw: cnf = kw options = () for k, v in cnf.items(): if hasattr(v, '__call__'): v = self._register(v) elif k in ('data', 'maskdata'): v = self.tk._createbytearray(v) options = options + ('-'+k, v) self.tk.call(('image', 'create', imgtype, name,) + options) self.name = name def __str__(self): return self.name def __del__(self): if self.name: try: self.tk.call('image', 'delete', self.name) except TclError: # May happen if the root was destroyed pass def __setitem__(self, key, value): self.tk.call(self.name, 'configure', '-'+key, value) def __getitem__(self, key): return self.tk.call(self.name, 'configure', '-'+key) def configure(self, **kw): """Configure the image.""" res = () for k, v in _cnfmerge(kw).items(): if v is not None: if k[-1] == '_': k = k[:-1] if hasattr(v, '__call__'): v = self._register(v) elif k in ('data', 'maskdata'): v = self.tk._createbytearray(v) res = res + ('-'+k, v) self.tk.call((self.name, 'config') + res) config = configure def height(self): """Return the height of the image.""" return getint( self.tk.call('image', 'height', self.name)) def type(self): """Return the type of the image, e.g. "photo" or "bitmap".""" return self.tk.call('image', 'type', self.name) def width(self): """Return the width of the image.""" return getint( self.tk.call('image', 'width', self.name)) class PhotoImage(Image): """Widget which can display images in PGM, PPM, GIF, PNG format.""" def __init__(self, name=None, cnf={}, master=None, **kw): """Create an image with NAME. Valid resource names: data, format, file, gamma, height, palette, width.""" Image.__init__(self, 'photo', name, cnf, master, **kw) def blank(self): """Display a transparent image.""" self.tk.call(self.name, 'blank') def cget(self, option): """Return the value of OPTION.""" return self.tk.call(self.name, 'cget', '-' + option) # XXX config def __getitem__(self, key): return self.tk.call(self.name, 'cget', '-' + key) # XXX copy -from, -to, ...? def copy(self): """Return a new PhotoImage with the same image as this widget.""" destImage = PhotoImage(master=self.tk) self.tk.call(destImage, 'copy', self.name) return destImage def zoom(self, x, y=''): """Return a new PhotoImage with the same image as this widget but zoom it with a factor of x in the X direction and y in the Y direction. If y is not given, the default value is the same as x. """ destImage = PhotoImage(master=self.tk) if y=='': y=x self.tk.call(destImage, 'copy', self.name, '-zoom',x,y) return destImage def subsample(self, x, y=''): """Return a new PhotoImage based on the same image as this widget but use only every Xth or Yth pixel. If y is not given, the default value is the same as x. """ destImage = PhotoImage(master=self.tk) if y=='': y=x self.tk.call(destImage, 'copy', self.name, '-subsample',x,y) return destImage def get(self, x, y): """Return the color (red, green, blue) of the pixel at X,Y.""" return self.tk.call(self.name, 'get', x, y) def put(self, data, to=None): """Put row formatted colors to image starting from position TO, e.g. image.put("{red green} {blue yellow}", to=(4,6))""" args = (self.name, 'put', data) if to: if to[0] == '-to': to = to[1:] args = args + ('-to',) + tuple(to) self.tk.call(args) # XXX read def write(self, filename, format=None, from_coords=None): """Write image to file FILENAME in FORMAT starting from position FROM_COORDS.""" args = (self.name, 'write', filename) if format: args = args + ('-format', format) if from_coords: args = args + ('-from',) + tuple(from_coords) self.tk.call(args) class BitmapImage(Image): """Widget which can display images in XBM format.""" def __init__(self, name=None, cnf={}, master=None, **kw): """Create a bitmap with NAME. Valid resource names: background, data, file, foreground, maskdata, maskfile.""" Image.__init__(self, 'bitmap', name, cnf, master, **kw) def image_names(): return _default_root.tk.splitlist(_default_root.tk.call('image', 'names')) def image_types(): return _default_root.tk.splitlist(_default_root.tk.call('image', 'types')) class Spinbox(Widget, XView): """spinbox widget.""" def __init__(self, master=None, cnf={}, **kw): """Construct a spinbox widget with the parent MASTER. STANDARD OPTIONS activebackground, background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, justify, relief, repeatdelay, repeatinterval, selectbackground, selectborderwidth selectforeground, takefocus, textvariable xscrollcommand. WIDGET-SPECIFIC OPTIONS buttonbackground, buttoncursor, buttondownrelief, buttonuprelief, command, disabledbackground, disabledforeground, format, from, invalidcommand, increment, readonlybackground, state, to, validate, validatecommand values, width, wrap, """ Widget.__init__(self, master, 'spinbox', cnf, kw) def bbox(self, index): """Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the character given by index. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the character (in pixels relative to the widget) and the last two elements give the width and height of the character, in pixels. The bounding box may refer to a region outside the visible area of the window. """ return self._getints(self.tk.call(self._w, 'bbox', index)) or None def delete(self, first, last=None): """Delete one or more elements of the spinbox. First is the index of the first character to delete, and last is the index of the character just after the last one to delete. If last isn't specified it defaults to first+1, i.e. a single character is deleted. This command returns an empty string. """ return self.tk.call(self._w, 'delete', first, last) def get(self): """Returns the spinbox's string""" return self.tk.call(self._w, 'get') def icursor(self, index): """Alter the position of the insertion cursor. The insertion cursor will be displayed just before the character given by index. Returns an empty string """ return self.tk.call(self._w, 'icursor', index) def identify(self, x, y): """Returns the name of the widget at position x, y Return value is one of: none, buttondown, buttonup, entry """ return self.tk.call(self._w, 'identify', x, y) def index(self, index): """Returns the numerical index corresponding to index """ return self.tk.call(self._w, 'index', index) def insert(self, index, s): """Insert string s at index Returns an empty string. """ return self.tk.call(self._w, 'insert', index, s) def invoke(self, element): """Causes the specified element to be invoked The element could be buttondown or buttonup triggering the action associated with it. """ return self.tk.call(self._w, 'invoke', element) def scan(self, *args): """Internal function.""" return self._getints( self.tk.call((self._w, 'scan') + args)) or () def scan_mark(self, x): """Records x and the current view in the spinbox window; used in conjunction with later scan dragto commands. Typically this command is associated with a mouse button press in the widget. It returns an empty string. """ return self.scan("mark", x) def scan_dragto(self, x): """Compute the difference between the given x argument and the x argument to the last scan mark command It then adjusts the view left or right by 10 times the difference in x-coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the spinbox at high speed through the window. The return value is an empty string. """ return self.scan("dragto", x) def selection(self, *args): """Internal function.""" return self._getints( self.tk.call((self._w, 'selection') + args)) or () def selection_adjust(self, index): """Locate the end of the selection nearest to the character given by index, Then adjust that end of the selection to be at index (i.e including but not going beyond index). The other end of the selection is made the anchor point for future select to commands. If the selection isn't currently in the spinbox, then a new selection is created to include the characters between index and the most recent selection anchor point, inclusive. """ return self.selection("adjust", index) def selection_clear(self): """Clear the selection If the selection isn't in this widget then the command has no effect. """ return self.selection("clear") def selection_element(self, element=None): """Sets or gets the currently selected element. If a spinbutton element is specified, it will be displayed depressed. """ return self.tk.call(self._w, 'selection', 'element', element) ########################################################################### class LabelFrame(Widget): """labelframe widget.""" def __init__(self, master=None, cnf={}, **kw): """Construct a labelframe widget with the parent MASTER. STANDARD OPTIONS borderwidth, cursor, font, foreground, highlightbackground, highlightcolor, highlightthickness, padx, pady, relief, takefocus, text WIDGET-SPECIFIC OPTIONS background, class, colormap, container, height, labelanchor, labelwidget, visual, width """ Widget.__init__(self, master, 'labelframe', cnf, kw) ######################################################################## class PanedWindow(Widget): """panedwindow widget.""" def __init__(self, master=None, cnf={}, **kw): """Construct a panedwindow widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, height, orient, relief, width WIDGET-SPECIFIC OPTIONS handlepad, handlesize, opaqueresize, sashcursor, sashpad, sashrelief, sashwidth, showhandle, """ Widget.__init__(self, master, 'panedwindow', cnf, kw) def add(self, child, **kw): """Add a child widget to the panedwindow in a new pane. The child argument is the name of the child widget followed by pairs of arguments that specify how to manage the windows. The possible options and values are the ones accepted by the paneconfigure method. """ self.tk.call((self._w, 'add', child) + self._options(kw)) def remove(self, child): """Remove the pane containing child from the panedwindow All geometry management options for child will be forgotten. """ self.tk.call(self._w, 'forget', child) forget=remove def identify(self, x, y): """Identify the panedwindow component at point x, y If the point is over a sash or a sash handle, the result is a two element list containing the index of the sash or handle, and a word indicating whether it is over a sash or a handle, such as {0 sash} or {2 handle}. If the point is over any other part of the panedwindow, the result is an empty list. """ return self.tk.call(self._w, 'identify', x, y) def proxy(self, *args): """Internal function.""" return self._getints( self.tk.call((self._w, 'proxy') + args)) or () def proxy_coord(self): """Return the x and y pair of the most recent proxy location """ return self.proxy("coord") def proxy_forget(self): """Remove the proxy from the display. """ return self.proxy("forget") def proxy_place(self, x, y): """Place the proxy at the given x and y coordinates. """ return self.proxy("place", x, y) def sash(self, *args): """Internal function.""" return self._getints( self.tk.call((self._w, 'sash') + args)) or () def sash_coord(self, index): """Return the current x and y pair for the sash given by index. Index must be an integer between 0 and 1 less than the number of panes in the panedwindow. The coordinates given are those of the top left corner of the region containing the sash. pathName sash dragto index x y This command computes the difference between the given coordinates and the coordinates given to the last sash coord command for the given sash. It then moves that sash the computed difference. The return value is the empty string. """ return self.sash("coord", index) def sash_mark(self, index): """Records x and y for the sash given by index; Used in conjunction with later dragto commands to move the sash. """ return self.sash("mark", index) def sash_place(self, index, x, y): """Place the sash given by index at the given coordinates """ return self.sash("place", index, x, y) def panecget(self, child, option): """Query a management option for window. Option may be any value allowed by the paneconfigure subcommand """ return self.tk.call( (self._w, 'panecget') + (child, '-'+option)) def paneconfigure(self, tagOrId, cnf=None, **kw): """Query or modify the management options for window. If no option is specified, returns a list describing all of the available options for pathName. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. The following options are supported: after window Insert the window after the window specified. window should be the name of a window already managed by pathName. before window Insert the window before the window specified. window should be the name of a window already managed by pathName. height size Specify a height for the window. The height will be the outer dimension of the window including its border, if any. If size is an empty string, or if -height is not specified, then the height requested internally by the window will be used initially; the height may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. minsize n Specifies that the size of the window cannot be made less than n. This constraint only affects the size of the widget in the paned dimension -- the x dimension for horizontal panedwindows, the y dimension for vertical panedwindows. May be any value accepted by Tk_GetPixels. padx n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the X-direction. The value may have any of the forms accepted by Tk_GetPixels. pady n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the Y-direction. The value may have any of the forms accepted by Tk_GetPixels. sticky style If a window's pane is larger than the requested dimensions of the window, this option may be used to position (or stretch) the window within its pane. Style is a string that contains zero or more of the characters n, s, e or w. The string can optionally contains spaces or commas, but they are ignored. Each letter refers to a side (north, south, east, or west) that the window will "stick" to. If both n and s (or e and w) are specified, the window will be stretched to fill the entire height (or width) of its cavity. width size Specify a width for the window. The width will be the outer dimension of the window including its border, if any. If size is an empty string, or if -width is not specified, then the width requested internally by the window will be used initially; the width may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. """ if cnf is None and not kw: return self._getconfigure(self._w, 'paneconfigure', tagOrId) if type(cnf) == StringType and not kw: return self._getconfigure1( self._w, 'paneconfigure', tagOrId, '-'+cnf) self.tk.call((self._w, 'paneconfigure', tagOrId) + self._options(cnf, kw)) paneconfig = paneconfigure def panes(self): """Returns an ordered list of the child panes.""" return self.tk.splitlist(self.tk.call(self._w, 'panes')) ###################################################################### # Extensions: class Studbutton(Button): def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'studbutton', cnf, kw) self.bind('<Any-Enter>', self.tkButtonEnter) self.bind('<Any-Leave>', self.tkButtonLeave) self.bind('<1>', self.tkButtonDown) self.bind('<ButtonRelease-1>', self.tkButtonUp) class Tributton(Button): def __init__(self, master=None, cnf={}, **kw): Widget.__init__(self, master, 'tributton', cnf, kw) self.bind('<Any-Enter>', self.tkButtonEnter) self.bind('<Any-Leave>', self.tkButtonLeave) self.bind('<1>', self.tkButtonDown) self.bind('<ButtonRelease-1>', self.tkButtonUp) self['fg'] = self['bg'] self['activebackground'] = self['bg'] ###################################################################### # Test: def _test(): root = Tk() text = "This is Tcl/Tk version %s" % TclVersion if TclVersion >= 8.1: try: text = text + unicode("\nThis should be a cedilla: \347", "iso-8859-1") except NameError: pass # no unicode support label = Label(root, text=text) label.pack() test = Button(root, text="Click me!", command=lambda root=root: root.test.configure( text="[%s]" % root.test['text'])) test.pack() root.test = test quit = Button(root, text="QUIT", command=root.destroy) quit.pack() # The following three commands are needed so the window pops # up on top on Windows... root.iconify() root.update() root.deiconify() root.mainloop() if __name__ == '__main__': _test() Tkinter.pyc000064400000606777151703463030006732 0ustar00� zfc@s�dZdZddlZejdkr6ddlZnddlZeZejZddlTddl Tddl Z dZeej �Zeej�ZejZejZejZyejWnek r�ee_nXyejWnek r�ee_nXe jd�Ze jd�Zd �Zd �Zd�Zy ejZWnek rYnXd�Zy ejZWnek r�nXeed �Z dfd��YZ!da"ea#d�Z$d�Z%dd�Z&da'dfd��YZ(de(fd��YZ)de(fd��YZ*de(fd��YZ+de(fd��YZ,dd�Z-e.Z/eZ0d�Z1d fd!��YZ2d"fd#��YZ3d$fd%��YZ4d&fd'��YZ5d(fd)��YZ6d*e2e6fd+��YZ7eed*dd,�Z8d-fd.��YZ9d/fd0��YZ:d1fd2��YZ;d3e2fd4��YZ<d5e<e9e:e;fd6��YZ=d7e<e6fd8��YZ>d9e=fd:��YZ?d;�Z@d<�ZAd=�ZBd>�ZCed?�ZDd@e=e4e5fdA��YZEdBe=fdC��YZFdDe=e4fdE��YZGdFe=fdG��YZHdHe=fdI��YZIdJe=e4e5fdK��YZJdLe=fdM��YZKdNe=fdO��YZLdPe=fdQ��YZMdRe=fdS��YZNdTe=fdU��YZOdVe=fdW��YZPdXe=e4e5fdY��YZQdZfd[��YZRd\eLfd]��YZSd^fd_��YZTd`eTfda��YZUdbeTfdc��YZVdd�ZWde�ZXdfe=e4fdg��YZYdhe=fdi��YZZdje=fdk��YZ[dle?fdm��YZ\dne?fdo��YZ]dp�Z^e_dqkr�e^�ndS(rs2Wrapper functions for Tcl/Tk. Tkinter provides classes which allow the display, positioning and control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, Checkbutton, Scale, Listbox, Scrollbar, OptionMenu, Spinbox LabelFrame and PanedWindow. Properties of the widgets are specified with keyword arguments. Keyword arguments have the same name as the corresponding resource under Tk. Widgets are positioned with one of the geometry managers Place, Pack or Grid. These managers can be called with methods place, pack, grid available in every Widget. Actions are bound to events by resources (e.g. keyword argument command) or with the method bind. Example (Hello, World): import Tkinter from Tkconstants import * tk = Tkinter.Tk() frame = Tkinter.Frame(tk, relief=RIDGE, borderwidth=2) frame.pack(fill=BOTH,expand=1) label = Tkinter.Label(frame, text="Hello, World") label.pack(fill=X, expand=1) button = Tkinter.Button(frame,text="Exit",command=tk.destroy) button.pack(side=BOTTOM) tk.mainloop() s$Revision: 81008 $i����Ntwin32(t*is([\\{}])s([\s])cCsdjtt|��S(sInternal function.t (tjointmapt _stringify(tvalue((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_joinAscCsLt|ttf�rit|�dkrVt|d�}tj|�rfd|}qfqHdt|�}n�t|t�r�t |d�}nt|t �s�t|�}n|s�d}n�tj|�rtj d|�}|jdd�}tj d|�}|dd krHd |}qHn,|dd ks;tj|�rHd|}n|S(sInternal function.iis{%s}sutf-8s{}s\\\1s s\nt"s\( t isinstancetlistttupletlenRt _magic_retsearchRtstrtunicodetsubtreplacet _space_re(R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyREs* cCsbd}xU|D]M}t|�ttfkr>|t|�}q |dk r ||f}q q W|S(sInternal function.(N(ttypet TupleTypetListTypet_flattentNone(Rtrestitem((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR`s cCs�t|�tkr|St|�ttfkr2|Si}xqt|�D]c}y|j|�WqEttfk r�}dG|GHx(|j�D]\}}|||<q�WqEXqEW|SdS(sInternal function.s_cnfmerge: fallback due to:N( RtDictionaryTypetNoneTypet StringTypeRtupdatetAttributeErrort TypeErrortitems(tcnfstcnftctmsgtktv((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _cnfmergems c Cs�|j|�}t|�dr.td��nt|�}i}xkt||�D]Z\}}t|�}|r�|ddkr�|d}n|r�||�}n|||<qPW|S(sReturn a properly formatted dict built from Tcl list pairs. If cut_minus is True, the supposed '-' prefix will be removed from keys. If conv is specified, it is used to convert values. Tcl list is expected to contain an even number of elements. isNTcl list representing a dict is expected to contain an even number of elementsit-i(t splitlistRtRuntimeErrortitertzipR( ttkR't cut_minustconvtttittdicttkeyR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _splitdict�s tEventcBseZdZRS(s�Container for the properties of an event. Instances of this type are generated if one of the following events occurs: KeyPress, KeyRelease - for keyboard events ButtonPress, ButtonRelease, Motion, Enter, Leave, MouseWheel - for mouse events Visibility, Unmap, Map, Expose, FocusIn, FocusOut, Circulate, Colormap, Gravity, Reparent, Property, Destroy, Activate, Deactivate - for window events. If a callback function for one of these events is registered using bind, bind_all, bind_class, or tag_bind, the callback is called with an Event as first argument. It will have the following attributes (in braces are the event types for which the attribute is valid): serial - serial number of event num - mouse button pressed (ButtonPress, ButtonRelease) focus - whether the window has the focus (Enter, Leave) height - height of the exposed window (Configure, Expose) width - width of the exposed window (Configure, Expose) keycode - keycode of the pressed key (KeyPress, KeyRelease) state - state of the event as a number (ButtonPress, ButtonRelease, Enter, KeyPress, KeyRelease, Leave, Motion) state - state as a string (Visibility) time - when the event occurred x - x-position of the mouse y - y-position of the mouse x_root - x-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) y_root - y-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) char - pressed character (KeyPress, KeyRelease) send_event - see X/Windows documentation keysym - keysym of the event as a string (KeyPress, KeyRelease) keysym_num - keysym of the event as a number (KeyPress, KeyRelease) type - type of the event as a number widget - widget in which the event occurred delta - delta of wheel movement (MouseWheel) (t__name__t __module__t__doc__(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR6�s)cCsdadabdS(s�Inhibit setting of default root window. Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. iN(t_support_default_rootRt _default_root(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt NoDefaultRoot�scCsdS(sInternal function.N((terr((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_tkerror�sicCs1yt|�}Wntk r#nXt|�dS(sBInternal function. Calling it will raise the exception SystemExit.N(tintt ValueErrort SystemExit(tcode((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_exit�s tVariablecBszeZdZdZdZdddd�Zd�Zd�Zd�Z d�Z d�ZeZd�Z d �Zd �ZRS(s�Class to define value holders for e.g. buttons. Subclasses StringVar, IntVar, DoubleVar, BooleanVar are specializations that constrain the type of the value returned from get().tcCs�|st}n|j�|_|j|_|r<||_ndtt�|_td7a|dk ru|j|�n:|jj |jj dd|j��s�|j|j�ndS(s.Construct a variable MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. tPY_VARitinfotexistsN(R;t_rootR.t_tkt_nametreprt_varnumRtsett getbooleantcallt_default(tselftmasterRtname((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__init__�s 'cCs�|jdkrdS|jj|jjdd|j��rP|jj|j�n|jdk r�x!|jD]}|jj|�qiWd|_ndS(sUnset the variable in Tcl.NRGRH(RJRRORPRKtglobalunsetvart_tclCommandst deletecommand(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__del__�s'cCs|jS(s'Return the name of the variable in Tcl.(RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__str__ scCs|jj|j|�S(sSet the variable to VALUE.(RJtglobalsetvarRK(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN scCs|jj|j�S(sReturn value of variable.(RJtglobalgetvarRK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgetscCs�t|d|j�j}tt|��}y |j}Wntk rJnXy||j}Wntk ronX|j j ||�|jdkr�g|_n|jj|�|j j dd|j||�|S(s Define a trace callback for the variable. MODE is one of "r", "w", "u" for read, write, undefine. CALLBACK must be a function which is called when the variable is read, written or undefined. Return the name of the callback. ttracetvariableN(tCallWrapperRRIt__call__RLtidtim_funcRR7RJt createcommandRWtappendRPRK(RRtmodetcallbacktftcbname((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttrace_variables cCs�|jjdd|j||�|jj|�d}xr|j�D],\}}|jj|�d|krBPqBqBW|jj|�y|jj|�Wntk r�nXdS(s�Delete the trace callback for a variable. MODE is one of "r", "w", "u" for read, write, undefine. CBNAME is the name of the callback returned from trace_variable or trace. R^tvdeleteiN( RJRPRKR*ttrace_vinfoRXRWtremoveR@(RRRfRitmtca((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt trace_vdelete-s cCs4t|jj|jj|jjdd|j���S(s&Return all trace callback information.R^tvinfo(RRJR*RPRK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRl>scCs(|jj|jjko'|j|jkS(s�Comparison for equality (==). Note: if the Variable's master matters to behavior also compare self._master == other._master (t __class__R7RK(RRtother((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__eq__BsN(R7R8R9RQRRWRURYRZRNR]RjR^RpRlRt(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRD�s t StringVarcBs/eZdZdZdddd�Zd�ZRS(s#Value holder for strings variables.REcCstj||||�dS(s6Construct a string variable. MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUNs cCs2|jj|j�}t|t�r(|St|�S(s#Return value of variable as string.(RJR\RKR t basestringR(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]ZsN(R7R8R9RQRRUR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRuKstIntVarcBs8eZdZdZdddd�Zd�Zd�ZRS(s#Value holder for integer variables.icCstj||||�dS(s7Construct an integer variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUds cCs.t|t�rt|�}ntj||�S(s;Set the variable to value, converting booleans to integers.(R tboolR?RDRN(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRNpscCst|jj|j��S(s/Return the value of the variable as an integer.(tgetintRJR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]vsN(R7R8R9RQRRURNR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRwas t DoubleVarcBs/eZdZdZdddd�Zd�ZRS(s!Value holder for float variables.gcCstj||||�dS(s6Construct a float variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0.0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU}s cCst|jj|j��S(s,Return the value of the variable as a float.(t getdoubleRJR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]�sN(R7R8R9RQRRUR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRzzst BooleanVarcBs8eZdZeZdddd�Zd�Zd�ZRS(s#Value holder for boolean variables.cCstj||||�dS(s:Construct a boolean variable. MASTER can be given as master widget. VALUE is an optional value (defaults to False) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cCs"|jj|j|jj|��S(sSet the variable to VALUE.(RJR[RKRO(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN�scCs|jj|jj|j��S(s+Return the value of the variable as a bool.(RJROR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]�sN( R7R8R9tFalseRQRRURNR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR|�s cCstjj|�dS(sRun the main loop of Tcl.N(R;R.tmainloop(tn((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~�scCstjj|�S(s1Convert true and false to integer values 1 and 0.(R;R.RO(ts((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRO�stMisccBsDeZdZd�Zd�Zd�Zd�d�Zd�Zd�Z d�Z dd�ZeZd�d �Z d�d �Zddd�Zdd �ZeZeZd�Zd�ZeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�d�Zd�Z d�Z!dd�Z"d�Z#d�Z$d�Z%d�Z&d �Z'd!�Z(d"�Z)d#�Z*d�d$�Z+d%�Z,d&�Z-d�d'�Z.d(�Z/d)�Z0d*�Z1d+�Z2d,�Z3d-�Z4d�d.�Z5d�d/�Z6e6Z7d�d0�Z8dd1�Z9dd2�Z:d3�Z;d4�Z<d5�Z=d6�Z>dd7�Z?d8�Z@d9�ZAd:�ZBd;�ZCd<�ZDd=�ZEdd>�ZFd?�ZGd@�ZHdA�ZIdB�ZJddC�ZKdD�ZLdE�ZMdF�ZNdG�ZOdH�ZPdI�ZQdJ�ZRdK�ZSdL�ZTdM�ZUdN�ZVdO�ZWdP�ZXdQ�ZYdR�ZZdS�Z[dT�Z\dU�Z]dV�Z^dW�Z_dX�Z`dY�ZaddZ�Zbd[�Zcd\�Zdd]�Zed^�Zfd_�Zgd`�Zhda�Zidb�Zjdc�Zkdd�Zlde�Zmd�df�Zndgdh�Zod�d�d�di�Zpd�dj�Zqd�d�d�dk�Zrdl�Zsd�d�d�dm�Ztdn�Zuddo�Zvdp�Zwdq�Zxdr�Zyds�Zzdt�Z{e|du��Z}d�dv�Z~dw�ZeZ�d�dgdx�Z�e�Z�dy�Z�d�Z�d�j�e��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d�d��Z�e�Z�d��Z�e�Z�d��Z�d��Z�d��Z�d��Z�d�gZ�e�d��Z�e�Z�d��Z�e�Z�d��Z�d�d�d�d�d��Z�e�Z�d��Z�d��Z�id��Z�e�Z�d��Z�e�d��Z�id��Z�e�Z�d��Z�e�Z�d�d�d��Z�d��Z�d��Z�d��Z�d�d��Z�d��Z�d��Z�RS(�sRInternal class. Base class which defines methods common for interior widgets.cCsC|jdk r?x!|jD]}|jj|�qWd|_ndS(skInternal function. Delete all Tcl commands created for this widget in the Tcl interpreter.N(RWRR.RX(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytdestroy�scCs<|jj|�y|jj|�Wntk r7nXdS(sDInternal function. Delete the Tcl command provided in NAME.N(R.RXRWRmR@(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRX�s cCs"|jj|jjdd|��S(s�Set Tcl internal variable, whether the look and feel should adhere to Motif. A parameter of 1 means adhere to Motif (e.g. no color change if mouse passes over slider). Returns the set value.RNttk_strictMotif(R.RORP(RRtboolean((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|jjd�dS(sDChange the color scheme to light brown as used in Tk 3.6 and before.t tk_bisqueN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scOs.|jjdt|�t|j���dS(sSet a new color scheme for all widget elements. A single color as argument will cause that all colors of Tk widget elements are derived from this. Alternatively several keyword parameters and its associated colors can be given. The following keywords are valid: activeBackground, foreground, selectColor, activeForeground, highlightBackground, selectBackground, background, highlightColor, selectForeground, disabledForeground, insertBackground, troughColor.t tk_setPaletteN(R�(R.RPRR!(RRtargstkw((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cGs&ddl}|jdtdd�dS(s)Do not use. Needed in Tk 3.6 and earlier.i����Ns4tk_menuBar() does nothing and will be removed in 3.6t stackleveli(twarningstwarntDeprecationWarning(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tk_menuBar�s RFcCs|jjdd|�dS(s�Wait until the variable is modified. A parameter of type IntVar, StringVar, DoubleVar or BooleanVar must be given.ttkwaitR_N(R.RP(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wait_variable�scCs2|dkr|}n|jjdd|j�dS(sQWait until a WIDGET is destroyed. If no parameter is given self is used.R�twindowN(RR.RPt_w(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwait_window�s cCs2|dkr|}n|jjdd|j�dS(sxWait until the visibility of a WIDGET changes (e.g. it appears). If no parameter is given self is used.R�t visibilityN(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwait_visibility�s t1cCs|jj||�dS(sSet Tcl variable NAME to VALUE.N(R.tsetvar(RRRTR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|�S(s"Return value of Tcl variable NAME.(R.tgetvar(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|�S(sPReturn a boolean value for Tcl boolean values true and false given as parameter.(R.RO(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRO scCs|jjd|j�dS(s�Direct input focus to this widget. If the application currently does not have the focus this widget will get the focus if the application gets the focus through the window manager.tfocusN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_setscCs|jjdd|j�dS(stDirect input focus to this widget even if the application does not have the focus. Use with caution!R�s-forceN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfocus_forcescCs6|jjd�}|dks%|r)dS|j|�S(s�Return the widget which has currently the focus in the application. Use focus_displayof to allow working with several displays. Return None if application does not have the focus.R�tnoneN(R.RPRt _nametowidget(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_getscCs?|jjdd|j�}|dks.|r2dS|j|�S(s�Return the widget which has currently the focus on the display where this widget is located. Return None if the application does not have the focus.R�s -displayofR�N(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfocus_displayof#scCs?|jjdd|j�}|dks.|r2dS|j|�S(syReturn the widget which would have the focus if top level for this widget gets the focus from the window manager.R�s-lastforR�N(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_lastfor+scCs|jjd�dS(sXThe widget under mouse will get automatically focus. Can not be disabled easily.ttk_focusFollowsMouseN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�1scCs/|jjd|j�}|s"dS|j|�S(snReturn the next widget in the focus order which follows widget which has currently the focus. The focus order first goes to the next child, then to the children of the child recursively and then to the next sibling which is higher in the stacking order. A widget is omitted if it has the takefocus resource set to 0.ttk_focusNextN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�5s cCs/|jjd|j�}|s"dS|j|�S(sHReturn previous widget in the focus order. See tk_focusNext for details.ttk_focusPrevN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Ascsj�s�jjd|�dS����fd�}�j|_�j|���jjd|��SdS(sCall function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel.taftercs;z���Wdy�j��Wntk r5nXXdS(N(RXtTclError((R�tfuncRTRR(s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcallitRs N(R.RPRR7t _register(RRtmsR�R�R�((R�R�RTRRs&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�FscGs|jd||�S(s�Call FUNC once if the Tcl main loop has no event to process. Return an identifier to cancel the scheduling with after_cancel.tidle(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt after_idle]scCs�|std��ny?|jjdd|�}|jj|�d}|j|�Wntk rgnX|jjdd|�dS(s�Cancel scheduling of function identified with ID. Identifier returned by after or after_idle must be given as first parameter. s?id must be a valid identifier returned from after or after_idleR�RGitcancelN(R@R.RPR*RXR�(RRRbtdatatscript((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytafter_cancelds icCs!|jjd|j|��dS(sRing a display's bell.tbellN(R�(R.RPt _displayof(RRt displayof((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�tscKs�d|krd|jdkrdy+d|d<|jjd|j|��SWqdtk r`|d=qdXn|jjd|j|��S(s�Retrieve data from the clipboard on window's display. The window keyword defaults to the root window of the Tkinter application. The type keyword specifies the form in which the data is to be returned and should be an atom name such as STRING or FILE_NAME. Type defaults to STRING, except on X11, where the default is to try UTF8_STRING and fall back to STRING. This command is equivalent to: selection_get(CLIPBOARD) Rtx11tUTF8_STRINGt clipboardR](R�R](R�R](t_windowingsystemR.RPt_optionsR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt clipboard_getys ! cKs=d|kr|j|d<n|jjd|j|��dS(s�Clear the data in the Tk clipboard. A widget specified for the optional displayof keyword argument specifies the target display.R�R�tclearN(R�R�(R�R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytclipboard_clear�scKsGd|kr|j|d<n|jjd|j|�d|f�dS(s�Append STRING to the Tk clipboard. A widget specified at the optional displayof keyword argument specifies the target display. The clipboard can be retrieved with selection_get.R�R�Res--N(R�Re(R�R.RPR�(RRtstringR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytclipboard_append�s cCs2|jjdd|j�}|s%dS|j|�S(sOReturn widget which has currently the grab in this application or None.tgrabtcurrentN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_current�scCs|jjdd|j�dS(s.Release grab for this widget if currently set.R�treleaseN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_release�scCs|jjdd|j�dS(swSet grab for this widget. A grab directs all events to this and descendant widgets in the application.R�RNN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_set�scCs |jjddd|j�dS(s�Set global grab for this widget. A global grab directs all events to this and descendant widgets on the display. Use with caution - other applications do not get events anymore.R�RNs-globalN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_set_global�scCs4|jjdd|j�}|dkr0d}n|S(sYReturn None, "local" or "global" if this widget has no, a local or a global grab.R�tstatusR�N(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_status�s cCs |jjdd|||�dS(s�Set a VALUE (second parameter) for an option PATTERN (first parameter). An optional third parameter gives the numeric priority (defaults to 80).toptiontaddN(R.RP(RRtpatternRtpriority((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt option_add�scCs|jjdd�dS(sPClear the option database. It will be reloaded if option_add is called.R�R�N(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytoption_clear�scCs|jjdd|j||�S(s�Return the value for an option NAME for this widget with CLASSNAME. Values with higher priority override lower values.R�R](R.RPR�(RRRTt className((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt option_get�scCs|jjdd||�dS(svRead file FILENAME into the option database. An optional second parameter gives the numeric priority.R�treadfileN(R.RP(RRtfileNameR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytoption_readfile�scKs=d|kr|j|d<n|jjd|j|��dS(sClear the current X selection.R�t selectionR�N(R�R�(R�R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_clear�scKs�d|kr|j|d<nd|kr�|jdkr�y+d|d<|jjd|j|��SWq�tk r||d=q�Xn|jjd|j|��S( s�Return the contents of the current X selection. A keyword parameter selection specifies the name of the selection and defaults to PRIMARY. A keyword parameter displayof specifies a widget on the display to use. A keyword parameter type specifies the form of data to be fetched, defaulting to STRING except on X11, where UTF8_STRING is tried before STRING.R�RR�R�R�R](R�R](R�R](R�R�R.RPR�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_get�s ! cKs=|j|�}|jjd|j|�|j|f�dS(sSpecify a function COMMAND to call if the X selection owned by this widget is queried by another application. This function must return the contents of the selection. The function will be called with the arguments OFFSET and LENGTH which allows the chunking of very long selections. The following keyword parameters can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).R�thandleN(R�R�(R�R.RPR�R�(RRtcommandR�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_handle�s cKs+|jjd|j|�|jf�dS(s�Become owner of X selection. A keyword parameter selection specifies the name of the selection (default PRIMARY).R�townN(R�R�(R.RPR�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_own�s cKsRd|kr|j|d<n|jjd|j|��}|sEdS|j|�S(s�Return owner of X selection. The following keyword parameter can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).R�R�R�(R�R�N(R�R.RPR�RR�(RRR�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_own_getscGs|jjd||f|�S(sDSend Tcl command CMD to different interpreter INTERP to be executed.tsend(R.RP(RRtinterptcmdR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jjd|j|�dS(s(Lower this widget in the stacking order.tlowerN(R.RPR�(RRt belowThis((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jjd|j|�dS(s(Raise this widget in the stacking order.traiseN(R.RPR�(RRt aboveThis((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttkraisescCs|jjdd|j|�S(sUseless. Not implemented in Tk.R.t colormodel(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs0d|j|�|f}t|jj|��S(s*Return integer which represents atom NAME.twinfotatom(R�R�(R�RyR.RP(RRRTR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_atomscCs*d|j|�|f}|jj|�S(s'Return name of atom with identifier ID.R�tatomname(R�R�(R�R.RP(RRRbR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_atomnamescCst|jjdd|j��S(s7Return number of cells in the colormap for this widget.R�tcells(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_cells!scCsjg}x]|jj|jjdd|j��D]4}y|j|j|��Wq.tk raq.Xq.W|S(s?Return a list of all widgets which are children of this widget.R�tchildren(R.R*RPR�ReR�tKeyError(RRtresulttchild((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_children%s" cCs|jjdd|j�S(s(Return window class name of this widget.R�tclass(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_class2scCs%|jj|jjdd|j��S(s?Return true if at the last color request the colormap was full.R�tcolormapfull(R.RORPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_colormapfull5s cCsFd|j|�||f}|jj|�}|s9dS|j|�S(s@Return the widget which is at the root coordinates ROOTX, ROOTY.R�t containing(R�R�N(R�R.RPRR�(RRtrootXtrootYR�R�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_containing9s cCst|jjdd|j��S(s$Return the number of bits per pixel.R�tdepth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_depth@scCst|jjdd|j��S(s"Return true if this widget exists.R�RH(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_existsCscCs"t|jjdd|j|��S(sWReturn the number of pixels for the given distance NUMBER (e.g. "3c") as float.R�tfpixels(R{R.RPR�(RRtnumber((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_fpixelsGscCs|jjdd|j�S(sFReturn geometry string for this widget in the form "widthxheight+X+Y".R�tgeometry(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_geometryLscCst|jjdd|j��S(sReturn height of this widget.R�theight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_heightOscCs"t|jjdd|j�d�S(s%Return identifier ID for this widget.R�Rbi(R?R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_idSscCs/d|j|�}|jj|jj|��S(s9Return the name of all Tcl interpreters for this display.R�tinterps(R�R(R�R.R*RP(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_interpsVscCst|jjdd|j��S(s%Return true if this widget is mapped.R�tismapped(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_ismappedZscCs|jjdd|j�S(s/Return the window manager name for this widget.R�tmanager(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_manager^scCs|jjdd|j�S(sReturn the name of this widget.R�RT(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_nameascCs|jjdd|j�S(s-Return the name of the parent of this widget.R�tparent(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_parentdscCs*d|j|�|f}|jj|�S(s.Return the pathname of the widget given by ID.R�tpathname(R�R (R�R.RP(RRRbR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pathnamegscCs"t|jjdd|j|��S(s'Rounded integer value of winfo_fpixels.R�tpixels(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pixelslscCst|jjdd|j��S(s:Return the x coordinate of the pointer on the root window.R�tpointerx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointerxpscCs"|j|jjdd|j��S(sHReturn a tuple of x and y coordinates of the pointer on the root window.R�t pointerxy(t_getintsR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointerxytscCst|jjdd|j��S(s:Return the y coordinate of the pointer on the root window.R�tpointery(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointeryxscCst|jjdd|j��S(s'Return requested height of this widget.R�t reqheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_reqheight|scCst|jjdd|j��S(s&Return requested width of this widget.R�treqwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_reqwidth�scCs%|j|jjdd|j|��S(sUReturn tuple of decimal values for red, green, blue for COLOR in this widget.R�trgb(RR.RPR�(RRtcolor((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_rgb�scCst|jjdd|j��S(sSReturn x coordinate of upper left corner of this widget on the root window.R�trootx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_rootx�scCst|jjdd|j��S(sSReturn y coordinate of upper left corner of this widget on the root window.R�trooty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_rooty�scCs|jjdd|j�S(s&Return the screen name of this widget.R�tscreen(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screen�scCst|jjdd|j��S(sTReturn the number of the cells in the colormap of the screen of this widget.R�tscreencells(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screencells�scCst|jjdd|j��S(s\Return the number of bits per pixel of the root window of the screen of this widget.R�tscreendepth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screendepth�scCst|jjdd|j��S(sXReturn the number of pixels of the height of the screen of this widget in pixel.R�tscreenheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenheight�scCst|jjdd|j��S(sUReturn the number of pixels of the height of the screen of this widget in mm.R�tscreenmmheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenmmheight�scCst|jjdd|j��S(sTReturn the number of pixels of the width of the screen of this widget in mm.R�t screenmmwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenmmwidth�scCs|jjdd|j�S(s�Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the default colormodel of this screen.R�tscreenvisual(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenvisual�scCst|jjdd|j��S(sWReturn the number of pixels of the width of the screen of this widget in pixel.R�tscreenwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenwidth�scCs|jjdd|j�S(sxReturn information of the X-Server of the screen of this widget in the form "XmajorRminor vendor vendorVersion".R�tserver(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_server�scCs"|j|jjdd|j��S(s*Return the toplevel widget of this widget.R�ttoplevel(R�R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_toplevel�scCst|jjdd|j��S(sBReturn true if the widget and all its higher ancestors are mapped.R�tviewable(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_viewable�scCs|jjdd|j�S(s�Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the colormodel of this widget.R�tvisual(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visual�scCs|jjdd|j�S(s7Return the X identifier for the visual for this widget.R�tvisualid(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visualid�scCsp|jj|jjdd|j|r*dp-d��}t|�tkr`|jj|�g}nt|j|�S(s�Return a list of all visuals available for the screen of this widget. Each item in the list consists of a visual name (see winfo_visual), a depth and if INCLUDEIDS=1 is given also the X identifier.R�tvisualsavailablet includeidsN( R.tsplitRPR�RRRRt_Misc__winfo_parseitem(RRR;R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visualsavailable�s cCs"|d tt|j|d��S(sInternal function.i(RRt_Misc__winfo_getint(RRR1((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__winfo_parseitem�scCs t|d�S(sInternal function.i(R?(RRtx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__winfo_getint�scCst|jjdd|j��S(s�Return the height of the virtual root window associated with this widget in pixels. If there is no virtual root window return the height of the screen.R�tvrootheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootheight�scCst|jjdd|j��S(s�Return the width of the virtual root window associated with this widget in pixel. If there is no virtual root window return the width of the screen.R�t vrootwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootwidth�scCst|jjdd|j��S(siReturn the x offset of the virtual root relative to the root window of the screen of this widget.R�tvrootx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootx�scCst|jjdd|j��S(siReturn the y offset of the virtual root relative to the root window of the screen of this widget.R�tvrooty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrooty�scCst|jjdd|j��S(s Return the width of this widget.R�twidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_width�scCst|jjdd|j��S(sVReturn the x coordinate of the upper left corner of this widget in the parent.R�RA(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_x�scCst|jjdd|j��S(sVReturn the y coordinate of the upper left corner of this widget in the parent.R�ty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_y�scCs|jjd�dS(sEEnter event loop until all pending events have been processed by Tcl.RN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRscCs|jjdd�dS(s�Enter event loop until all idle callbacks have been called. This will update the display of windows but not process events caused by the user.Rt idletasksN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytupdate_idletasksscCsK|dkr.|jj|jjd|j��S|jjd|j|�dS(s,Set or get the list of bindtags for this widget. With no argument return the list of all bindtags associated with this widget. With a list of strings as argument the bindtags are set to this list. The bindtags determine in which order events are processed (see bind).tbindtagsN(RR.R*RPR�(RRttagList((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRRs icCs�t|�tkr/|jj|||f�n�|r�|j||j|�}d|r\dp_d||jf}|jj|||f�|S|r�|jj||f�S|jj|jj|��SdS(sInternal function.s"%sif {"[%s %s]" == "break"} break t+REN(RRR.RPR�t_substitutet_subst_format_strR*(RRtwhattsequenceR�R�tneedcleanuptfuncidR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_binds cCs|jd|jf|||�S(sOBind to this widget at event SEQUENCE a call to function FUNC. SEQUENCE is a string of concatenated event patterns. An event pattern is of the form <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4, Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3, B3, Alt, Button4, B4, Double, Button5, B5 Triple, Mod1, M1. TYPE is one of Activate, Enter, Map, ButtonPress, Button, Expose, Motion, ButtonRelease FocusIn, MouseWheel, Circulate, FocusOut, Property, Colormap, Gravity Reparent, Configure, KeyPress, Key, Unmap, Deactivate, KeyRelease Visibility, Destroy, Leave and DETAIL is the button number for ButtonPress, ButtonRelease and DETAIL is the Keysym for KeyPress and KeyRelease. Examples are <Control-Button-1> for pressing Control and mouse button 1 or <Alt-A> for pressing A and the Alt key (KeyPress can be omitted). An event pattern can also be a virtual event of the form <<AString>> where AString can be arbitrary. This event can be generated by event_generate. If events are concatenated they must appear shortly after each other. FUNC will be called if the event sequence occurs with an instance of Event as argument. If the return value of FUNC is "break" no further bound function is invoked. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. Bind will return an identifier to allow deletion of the bound function with unbind without memory leak. If FUNC or SEQUENCE is omitted the bound function or list of bound events are returned.tbind(R[R�(RRRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR\(s'cCs6|jjd|j|d�|r2|j|�ndS(sWUnbind for this widget for event SEQUENCE the function identified with FUNCID.R\REN(R.RPR�RX(RRRXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytunbindPscCs|jd|||d�S(sBind to all widgets at an event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\talli(R\R^(R[(RRRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytbind_allVscCs|jjdd|d�dS(s8Unbind for all widgets for event SEQUENCE all functions.R\R^REN(R.RP(RRRX((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt unbind_all\scCs|jd|f|||d�S(s=Bind to widgets with bindtag CLASSNAME at event SEQUENCE a call of function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\i(R[(RRR�RXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt bind_class_s cCs|jjd||d�dS(sWUnbind for all widgets with bindtag CLASSNAME for event SEQUENCE all functions.R\REN(R.RP(RRR�RX((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytunbind_classiscCs|jj|�dS(sCall the mainloop of Tk.N(R.R~(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~mscCs|jj�dS(s8Quit the Tcl interpreter. All widgets will be destroyed.N(R.tquit(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRcpscCs)|r%ttt|jj|���SdS(sInternal function.N(RRRyR.R*(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRsscCs)|r%ttt|jj|���SdS(sInternal function.N(RRR{R.R*(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getdoubleswscCs|r|jj|�SdS(sInternal function.N(R.RO(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getboolean{scCs-|rd|fS|dkr)d|jfSdS(sInternal function.s -displayofN((RR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�s cCsLy|j�jSWn4tk rG|jjdd�}|j�_|SXdS(sInternal function.R.twindowingsystemN(RIt_windowingsystem_cachedRR.RP(RRtws((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s "cCsE|rt||f�}nt|�}d}x|j�D]\}}|dk r:|ddkro|d }nt|d�r�|j|�}n�t|ttf�r&g}xx|D]^}t|tt t f�s�Pq�t|t t f�r�|jd|�q�|jt|��q�Wdj |�}n|d||f}q:q:W|S( sInternal function.i����t_Ras%dRR)(N(R(R!RthasattrR�R RR RvR?tlongReRR(RRR#R�RR&R'tnvR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s* cCsjt|�jd�}|}|ds>|j�}|d}nx%|D]}|sUPn|j|}qEW|S(sPReturn the Tkinter instance of a widget identified by its Tcl name NAME.t.ii(RR<RIR�(RRRTtwR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytnametowidget�s cCs�t|||�j}tt|��}y |j}Wntk rGnXy||j}Wntk rlnX|jj||�|r�|j dkr�g|_ n|j j|�n|S(s�Return a newly created Tcl function. If this function is called, the Python function FUNC will be executed. An optional function SUBST can be given which will be executed before FUNC.N(R`RaRLRbRcRR7R.RdRWRRe(RRR�tsubstRYRhRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs#|}x|jr|j}q W|S(sInternal function.(RS(RRRn((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRI�s s%#s%bs%fs%hs%ks%ss%ts%ws%xs%ys%As%Es%Ks%Ns%Ws%Ts%Xs%Ys%DRcGs t|�t|j�kr|S|jj}t}d�}|\}}}}} } }}} }}}}}}}}}}t�}||�|_||�|_y||�|_Wnt k r�nX||�|_ || �|_|| �|_||�|_ ||�|_|| �|_||�|_||_y||�|_Wnt k r_nX||_||�|_||_y|j|�|_Wntk r�||_nX||�|_||�|_y||�|_Wntk rd|_nX|fS(sInternal function.cSs'yt|�SWntk r"|SXdS(s?Tk changed behavior in 8.4.2, returning "??" rather more often.N(R?R@(R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgetint_event�s i(Rt _subst_formatR.ROR?R6tserialtnumR�R�R�tkeycodetstatettimeRKRARNtchart send_eventtkeysymt keysym_numRR�twidgetR�tx_rootty_roottdeltaR@(RRR�RORyRqtnsigntbRhthR&R�R1RnRARNtAtEtKtNtWtTtXtYtDte((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�sN ? cCsLddl}|j|j|j}}}|j�}|j|||�dS(sInternal function.i����N(tsystexc_typet exc_valuet exc_tracebackRItreport_callback_exception(RRR�texctvalttbtroot((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_report_exceptionscGsji}x]|jj|jj|��D]=}|jj|�}|ddf|d||dd<q%W|S(s;Call Tcl configure command and return the result as a dict.ii(R.R*RP(RRR�R#RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _getconfigures %)cGs5|jj|jj|��}|ddf|dS(Nii(R.R*RP(RRR�RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getconfigure1!scCs�|rt||f�}n|r0t|�}n|dkrX|jt|j|f��St|�tkr�|jt|j|d|f��S|jj t|j|f�|j |��dS(sInternal function.R)N(R(RR�RR�RRR�R.RPR�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _configure%s#cKs|jd||�S(s�Configure resources of a widget. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys. t configure(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�1scCs|jj|jdd|�S(s4Return the resource value for a KEY given as string.tcgetR)(R.RPR�(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�:scCs|ji||6�dS(N(R�(RRR4R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__setitem__>scCstd��dS(Ns)Tkinter objects don't support 'in' tests.(R (RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__contains__@scCsI|jj}g||jj|jd��D]}||�dd^q+S(s3Return a list of all resource names of this widget.R�ii(R.R*RPR�(RRR*RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytkeysBscCs|jS(s+Return the window path name of this widget.(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZGst_noarg_cCsQ|tjkr1|j|jjdd|j��S|jjdd|j|�dS(sSet or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given the current setting will be returned. tpackt propagateN(R�R�ReR.RPR�(RRtflag((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_propagateLscCs1t|j|jj|jjdd|j���S(sHReturn a list of all slaves of this widget in its packing order.R�tslaves(RR�R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_slavesYs cCs1t|j|jj|jjdd|j���S(sHReturn a list of all slaves of this widget in its packing order.tplaceR�(RR�R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_slavesas cCs�dd|jf}|dk r=|dk r=|||f}n|dk rh|dk rh|||f}n|j|jj|��p�dS(s�Return a tuple of integer coordinates for the bounding box of this widget controlled by the geometry manager grid. If COLUMN, ROW is given the bounding box applies from the cell with row and column 0 to the specified cell. If COL2 and ROW2 are given the bounding box starts at that cell. The returned integers specify the offset of the upper left corner in the master widget and the width and height. tgridtbboxN(R�RRR.RP(RRtcolumntrowtcol2trow2R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_bboxiscCsmt|ttjf�riy:t|�}|s1dSd|krGt|�St|�SWqitk reqiXn|S(NRm(R Rt_tkintertTcl_ObjRR{RyR@(RRRtsvalue((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_gridconvvalue~s cCs�t|�tkr_|r_|ddkr6|d }n|d dkrSd|}n|f}n|j||�}|s�t|j|jjd||j|�d|j�S|jjd||j|f|�}t|�dkr�|j|�SdS(sInternal function.i����RiiR)R�R0N( RRR�R5R.RPR�R�R(RRR�tindexR#R�toptionsR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_grid_configure�s" cKs|jd|||�S(s�Configure column INDEX of a grid. Valid resources are minsize (minimum size of the column), weight (how much does additional space propagate to this column) and pad (how much space to let additionally).tcolumnconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_columnconfigure�scCs.|j|jjdd|j||��p-dS(s�Return a tuple of column and row which identify the cell at which the pixel at position X and Y inside the master widget is located.R�tlocationN(RR.RPR�R(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_location�s cCsQ|tjkr1|j|jjdd|j��S|jjdd|j|�dS(sSet or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given, the current setting will be returned. R�R�N(R�R�ReR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_propagate�scKs|jd|||�S(s�Configure row INDEX of a grid. Valid resources are minsize (minimum size of the row), weight (how much does additional space propagate to this row) and pad (how much space to let additionally).trowconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_rowconfigure�scCs(|j|jjdd|j��p'dS(s<Return a tuple of the number of column and rows in the grid.R�tsizeN(RR.RPR�R(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_size�scCs|d}|dk r%|d|f}n|dk rD|d|f}nt|j|jj|jjdd|jf|���S(sHReturn a list of all slaves of this widget in its packing order.s-rows-columnR�R�(N(RRR�R.R*RPR�(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_slaves�s cGs'dd|f|}|jj|�dS(s�Bind a virtual event VIRTUAL (of the form <<Name>>) to an event SEQUENCE such that the virtual event is triggered whenever SEQUENCE occurs.teventR�N(R.RP(RRtvirtualt sequencesR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt event_add�scGs'dd|f|}|jj|�dS(s-Unbind a virtual event VIRTUAL from SEQUENCE.R�tdeleteN(R.RP(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytevent_delete�scKs`dd|j|f}x4|j�D]&\}}|d|t|�f}q"W|jj|�dS(s�Generate an event SEQUENCE. Additional keyword arguments specify parameter of the event (e.g. x, y, rootx, rooty).R�tgenerates-%sN(R�R!RR.RP(RRRXR�R�R&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytevent_generate�scCs"|jj|jjdd|��S(suReturn a list of all virtual events or the information about the SEQUENCE bound to the virtual event VIRTUAL.R�RG(R.R*RP(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt event_info�s cCs|jj|jjdd��S(s*Return a list of all existing image names.timagetnames(R.R*RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_names�scCs|jj|jjdd��S(s?Return a list of all available image types (e.g. photo bitmap).R�ttypes(R.R*RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_types�sN(s%#s%bs%fs%hs%ks%ss%ts%ws%xs%ys%As%Es%Ks%Ns%Ws%Ts%Xs%Ys%D(�R7R8R9RRWR�RXR�R�R�R�R�twaitvarR�R�R�R�R?RytfloatR{ROR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tliftR�R�R�R�R�R�R�R�R�R�R�R�R�RRRRRR RR RRRRRRRRR!R#R%R'R)R+R-R/R1R3R5R7R9R>R=R?RDRFRHRJRLRMRORRQRRR[R\R]R_R`RaRbR~RcRRdReR�tpropertyR�R�RoR�R�tregisterRIRrRRVRUR�R�R�R�R�tconfigR�t__getitem__R�R�R�RZR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sP ( 9 R`cBs eZdZd�Zd�ZRS(swInternal class. Stores function to call when some user defined Tcl function is called e.g. after an event occurred.cCs||_||_||_dS(s(Store FUNC, SUBST and WIDGET as members.N(R�RpR|(RRR�RpR|((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUs cGsby,|jr|j|�}n|j|�SWn/tk rJ}t|�n|jj�nXdS(s3Apply first function SUBST to arguments, than FUNC.N(RpR�RAR|R�(RRR�R%((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRas (R7R8R9RURa(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR`�s tXViewcBs)eZdZd�Zd�Zd�ZRS(sXMix-in class for querying and changing the horizontal position of a widget's window.cGs2|jj|jd|�}|s.|j|�SdS(s5Query and change the horizontal position of the view.txviewN(R.RPR�Rd(RRR�R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs |jj|jdd|�dS(ssAdjusts the view in the window so that FRACTION of the total width of the canvas is off-screen to the left.R�tmovetoN(R.RPR�(RRtfraction((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytxview_movetoscCs#|jj|jdd||�dS(s\Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT).R�tscrollN(R.RPR�(RRR�RW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytxview_scroll!s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�s tYViewcBs)eZdZd�Zd�Zd�ZRS(sVMix-in class for querying and changing the vertical position of a widget's window.cGs2|jj|jd|�}|s.|j|�SdS(s3Query and change the vertical position of the view.tyviewN(R.RPR�Rd(RRR�R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�+scCs |jj|jdd|�dS(ssAdjusts the view in the window so that FRACTION of the total height of the canvas is off-screen to the top.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_moveto1scCs#|jj|jdd||�dS(s\Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).R�R�N(R.RPR�(RRR�RW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_scroll6s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�'s tWmcBseZdZddddd�ZeZd�ZeZdd�ZeZ d�Z e Zdd�ZeZ d�ZeZdd�ZeZd�ZeZdd �ZeZddddd �ZeZdd�ZeZddd�ZeZd �ZeZdd�ZeZdd�Z e Z!ddd�Z"e"Z#dd�Z$e$Z%ddd�Z&e&Z'ddd�Z(e(Z)dd�Z*e*Z+dd�Z,e,Z-ddd�Z.e.Z/ddd�Z0e0Z1dd�Z2e2Z3dd�Z4e4Z5dd�Z6e6Z7dd�Z8e8Z9d�Z:e:Z;RS(sAProvides functions for the communication with the window manager.c Cs.|j|jjdd|j||||��S(s�Instruct the window manager to set the aspect ratio (width/height) of this widget to be between MINNUMER/MINDENOM and MAXNUMER/MAXDENOM. Return a tuple of the actual values if no argument is given.twmtaspect(RR.RPR�(RRtminNumertminDenomtmaxNumertmaxDenom((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_aspect?scGs&dd|jf|}|jj|�S(s�This subcommand returns or sets platform specific attributes The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows: On Windows, -disabled gets or sets whether the window is in a disabled state. -toolwindow gets or sets the style of the window to toolwindow (as defined in the MSDN). -topmost gets or sets whether this is a topmost window (displays above all other windows). On Macintosh, XXXXX On Unix, there are currently no special attribute values. R�t attributes(R�R.RP(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_attributesKscCs|jjdd|j|�S(sVStore NAME in WM_CLIENT_MACHINE property of this widget. Return current value.R�tclient(R.RPR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_clientascGsyt|�dkr|f}ndd|jf|}|rM|jj|�n(t|j|jj|jj|���SdS(s�Store list of window names (WLIST) into WM_COLORMAPWINDOWS property of this widget. This list contains windows whose colormaps differ from their parents. Return current list of widgets if WLIST is empty.iR�tcolormapwindowsN(RR�R.RPRR�R*(RRtwlistR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_colormapwindowsfscCs|jjdd|j|�S(s�Store VALUE in WM_COMMAND property. It is the command which shall be used to invoke the application. Return current command if VALUE is None.R�R�(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_commandrscCs|jjdd|j�S(s�Deiconify this widget. If it was never mapped it will not be mapped. On Windows it will raise this widget and give it the focus.R�t deiconify(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_deiconifyxscCs|jjdd|j|�S(s�Set focus model to MODEL. "active" means that this widget will claim the focus itself, "passive" means that the window manager shall give the focus. Return current focus model if MODEL is None.R�t focusmodel(R.RPR�(RRtmodel((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_focusmodel}scCs|jjdd|j�S(sAReturn identifier for decorative frame of this widget if present.R�tframe(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_frame�scCs|jjdd|j|�S(siSet geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return current value if None is given.R�R�(R.RPR�(RRtnewGeometry((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_geometry�sc Cs.|j|jjdd|j||||��S(sInstruct the window manager that this widget shall only be resized on grid boundaries. WIDTHINC and HEIGHTINC are the width and height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are the number of grid units requested in Tk_GeometryRequest.R�R�(RR.RPR�(RRt baseWidtht baseHeighttwidthInct heightInc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_grid�scCs|jjdd|j|�S(s~Set the group leader widgets for related widgets to PATHNAME. Return the group leader of this widget if None is given.R�tgroup(R.RPR�(RRtpathName((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_group�scCsE|r%|jjdd|jd|�S|jjdd|j|�SdS(s�Set bitmap for the iconified widget to BITMAP. Return the bitmap if None is given. Under Windows, the DEFAULT parameter can be used to set the icon for the widget and any descendents that don't have an icon set explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default='myicon.ico') ). See Tk documentation for more information.R�t iconbitmaps-defaultN(R.RPR�(RRtbitmaptdefault((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconbitmap�s cCs|jjdd|j�S(sDisplay widget as icon.R�ticonify(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconify�scCs|jjdd|j|�S(sVSet mask for the icon bitmap of this widget. Return the mask if None is given.R�ticonmask(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconmask�scCs|jjdd|j|�S(sSSet the name of the icon for this widget. Return the name if None is given.R�ticonname(R.RPR�(RRtnewName((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconname�scCs(|j|jjdd|j||��S(s�Set the position of the icon of this widget to X and Y. Return a tuple of the current values of X and X if None is given.R�ticonposition(RR.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconposition�scCs|jjdd|j|�S(sgSet widget PATHNAME to be displayed instead of icon. Return the current value if None is given.R�t iconwindow(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconwindow�scCs(|j|jjdd|j||��S(s�Set max WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.R�tmaxsize(RR.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_maxsize�scCs(|j|jjdd|j||��S(s�Set min WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.R�tminsize(RR.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_minsize�scCs%|j|jjdd|j|��S(s�Instruct the window manager to ignore this widget if BOOLEAN is given with 1. Return the current value if None is given.R�toverrideredirect(ReR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_overrideredirect�scCs|jjdd|j|�S(s�Instruct the window manager that the position of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".R�tpositionfrom(R.RPR�(RRtwho((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_positionfrom�scCsFt|d�r!|j|�}n|}|jjdd|j||�S(s�Bind function FUNC to command NAME for this widget. Return the function bound to NAME if None is given. NAME could be e.g. "WM_SAVE_YOURSELF" or "WM_DELETE_WINDOW".RaR�tprotocol(RjR�R.RPR�(RRRTR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_protocol�s cCs|jjdd|j||�S(syInstruct the window manager whether this width can be resized in WIDTH or HEIGHT. Both values are boolean values.R�t resizable(R.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_resizable�scCs|jjdd|j|�S(s�Instruct the window manager that the size of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".R�tsizefrom(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_sizefrom�scCs|jjdd|j|�S(s�Query or set the state of this widget as one of normal, icon, iconic (see wm_iconwindow), withdrawn, or zoomed (Windows only).R�Rv(R.RPR�(RRtnewstate((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_state�scCs|jjdd|j|�S(sSet the title of this widget.R�ttitle(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_title�scCs|jjdd|j|�S(s_Instruct the window manager that this widget is transient with regard to widget MASTER.R�t transient(R.RPR�(RRRS((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_transient�scCs|jjdd|j�S(s�Withdraw this widget from the screen such that it is unmapped and forgotten by the window manager. Re-draw it with wm_deiconify.R�twithdraw(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_withdrawsN(<R7R8R9RR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RR�RRRRRRRR R RRRRRRRRRRRRRRRRRR RvR"R!R$R#R&R%(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�<sv tTkcBseeZdZdZddddddd�Zd�Zd�Zd�Zd �Z d �Z d�ZRS( szToplevel widget of Tk which represents mostly the main window of an application. It has an associated Tcl interpreter.RmR'iic Cs�d|_i|_d|_d|_|dkr�ddl}|jjtj d�}|jj |�\}}|dkr�||}q�nd} tj|||| t |||�|_|r�|j�ntjjs�|j||�ndS(s@Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will be created. BASENAME will be used for the identification of the profile file (see readprofile). It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME is the name of the widget class.ii����Ns.pys.pycs.pyo(s.pys.pycs.pyo(RRSR�t _tkloadedR.tostpathtbasenameR�targvtsplitextR�tcreatetwantobjectst_loadtktflagstignore_environmenttreadprofile( RRt screenNametbaseNameR�tuseTktsynctuseR)texttinteractive((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU s ' cCs'|js#|jj�|j�ndS(N(R(R.tloadtkR0(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR;'s cCs3d|_|jjd�}|tjkrCtdtj|f�nt|jjd��}|tjkr�tdtj|f�ntdkr�tdtt��n|j dkr�g|_ n|jjdt�|jjd t �|j jd�|j jd �trtr|an|jd |j�dS(Nit tk_versions4tk.h version (%s) doesn't match libtk.a version (%s)ttcl_versions6tcl.h version (%s) doesn't match libtcl.a version (%s)g@s)Tk 4.0 or higher is required; found Tk %sttkerrortexittWM_DELETE_WINDOW(R(R.R�R�t TK_VERSIONR+RtTCL_VERSIONt TkVersionRWRRdR>RCReR:R;RR�(RRR<R=((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR0+s0 cCsfx!|jj�D]}|j�qW|jjd|j�tj|�trbt|krbdandS(shDestroy this and all descendants widgets. This will end the application of this Tcl interpreter.R�N( R�tvaluesR�R.RPR�R�R:R;R(RRR$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Js c BsEddl}d|jkr+|jd}n |j}|jj|d|�}|jj|d|�}|jj|d|�}|jj|d|�}i|d6} d| U|jj|�r�|jjd|�n|jj|�r�e|| �n|jj|�r|jjd|�n|jj|�rAe|| �ndS( s�Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into the Tcl Interpreter and calls execfile on BASENAME.py and CLASSNAME.py if such a file exists in the home directory.i����NtHOMEs.%s.tcls.%s.pyRRsfrom Tkinter import *tsource( R)tenvirontcurdirR*RtisfileR.RPtexecfile( RRR5R�R)thomet class_tcltclass_pytbase_tcltbase_pytdir((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR3Ss$ cCsWddl}ddl}|jdIJ||_||_||_|j|||�dS(s�Report callback exception on sys.stderr. Applications may want to override this internal function, and should when sys.stderr is None.i����NsException in Tkinter callback(t tracebackR�tstderrt last_typet last_valuetlast_tracebacktprint_exception(RRR�R�R�RQR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�hs cCst|j|�S(s3Delegate attribute access to the interpreter object(tgetattrR.(RRtattr((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__getattr__ssN(R7R8R9R�RRUR;R0R�R3R�RY(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR' s cCst||||�S(N(R'(R4R5R�R6((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytTcl�stPackcBs`eZdZid�ZeZZZd�ZeZd�Z e Z ejZ ZejZZRS(sQGeometry manager Pack. Base class to use the methods pack_* in every widget.cKs0|jjdd|jf|j||��dS(s(Pack a widget in the parent widget. Use as options: after=widget - pack it after you have packed widget anchor=NSEW (or subset) - position widget according to given direction before=widget - pack it before you will pack widget expand=bool - expand widget if parent size grows fill=NONE or X or Y or BOTH - fill widget if widget grows in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget. R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_configure�s cCs|jjdd|j�dS(s:Unmap this widget and do not use it for the packing order.R�tforgetN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_forget�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sEReturn information about the packing options for this widget.R�RGtin(R5R.RPR�Ro(RRtd((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt pack_info�s'(R7R8R9R\R�R�R�R^R]RaRGR�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR[�s tPlacecBsSeZdZid�ZeZZZd�ZeZd�Z e Z ejZ ZRS(sSGeometry manager Place. Base class to use the methods place_* in every widget.cKs0|jjdd|jf|j||��dS(s Place a widget in the parent widget. Use as options: in=master - master relative to which the widget is placed in_=master - see 'in' option description x=amount - locate anchor of this widget at position x of master y=amount - locate anchor of this widget at position y of master relx=amount - locate anchor of this widget between 0.0 and 1.0 relative to width of master (1.0 is right edge) rely=amount - locate anchor of this widget between 0.0 and 1.0 relative to height of master (1.0 is bottom edge) anchor=NSEW (or subset) - position anchor according to given direction width=amount - width of this widget in pixel height=amount - height of this widget in pixel relwidth=amount - width of this widget between 0.0 and 1.0 relative to width of master (1.0 is the same width as the master) relheight=amount - height of this widget between 0.0 and 1.0 relative to height of master (1.0 is the same height as the master) bordermode="inside" or "outside" - whether to take border width of master widget into account R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_configure�s cCs|jjdd|j�dS(sUnmap this widget.R�R]N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_forget�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sEReturn information about the placing options for this widget.R�RGR_(R5R.RPR�Ro(RRR`((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt place_info�s'(R7R8R9RcR�R�R�RdR]ReRGR�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRb�s tGridcBs�eZdZid�ZeZZZejZ Zej ZZ d�ZeZ d�Zd�ZeZejZZejZZejZZejZZejZZRS(sQGeometry manager Grid. Base class to use the methods grid_* in every widget.cKs0|jjdd|jf|j||��dS(sPosition a widget in the parent widget in a grid. Use as options: column=number - use cell identified with given column (starting with 0) columnspan=number - this widget will span several columns in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction row=number - use cell identified with given row (starting with 0) rowspan=number - this widget will span several rows sticky=NSEW - if cell is larger on which sides will this widget stick to the cell boundary R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_configure�s cCs|jjdd|j�dS(sUnmap this widget.R�R]N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_forget�scCs|jjdd|j�dS(s0Unmap this widget but remember the grid options.R�RmN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_remove�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sSReturn information about the options for positioning this widget in a grid.R�RGR_(R5R.RPR�Ro(RRR`((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_info�s'(R7R8R9RgR�R�R�R�R�R�R�R�RhR]RiRjRGR�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRf�s t BaseWidgetcBs>eZdZd�Ziidd�Zd�Zdd�ZRS(sInternal class.cCstr*|s*tst�ant}q*n||_|j|_d}d|kre|d}|d=n|s�tt|��}n||_|j dkr�d||_ n|j d||_ i|_ |j|jj kr�|jj |jj�n||jj |j<dS(s6Internal function. Sets up information about children.RTRmN(R:R;R'RSR.RRLRbRKR�R�R�(RRRSR#RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_setup s* c Cs�|rt||f�}n||_tj|||�|jdkrRg|_ng}xG|j�D]9}t|�tkre|j |||f�||=qeqeW|j j||jf||j |��x$|D]\}}|j||�q�WdS(sdConstruct a widget with the parent widget MASTER, a name WIDGETNAME and appropriate options.N(R(t widgetNameRkRlRWRR�Rt ClassTypeReR.RPR�R�R�( RRRSRmR#R�textratclassesR&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU&s !cCssx!|jj�D]}|j�qW|jjd|j�|j|jjkrb|jj|j=ntj|�dS(s)Destroy this and all descendants widgets.R�N( R�RDR�R.RPR�RKRSR�(RRR$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�8scCs|jj|j|f|�S(N(R.RPR�(RRRTR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_do?s(((R7R8R9RlRUR�Rq(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRks tWidgetcBseZdZRS(sxInternal class. Base class for a widget which can be positioned with the geometry managers Pack, Place or Grid.(R7R8R9(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRrCstToplevelcBseZdZdid�ZRS(s"Toplevel widget, e.g. for dialogs.c Ks|rt||f�}nd}xxdddddgD]a}||kr7||}|ddkrtd|d }n d|}|||f}||=q7q7Wtj||d |i|�|j�}|j|j��|j|j��|jd |j�dS( s%Construct a toplevel widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, menu, relief, screen, takefocus, use, visual, width.R tclass_R�R6tcolormapi����RiR)R2R@N((R(RkRURIR R!RR�( RRRSR#R�RotwmkeyR�toptR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRULs" N(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRsJstButtoncBs\eZdZd id�Zd�Zd�Zd�Zd�Zd�Z d�Z d�ZRS( sButton widget.cKstj||d||�dS(sUConstruct a button widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, repeatdelay, repeatinterval, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS command, compound, default, height, overrelief, state, width tbuttonN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUhscGs|jjd|j�dS(Nt tkButtonEnter(R.RPR�(RRtdummy((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRz}scGs|jjd|j�dS(Nt tkButtonLeave(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR|�scGs|jjd|j�dS(NttkButtonDown(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR}�scGs|jjd|j�dS(Nt tkButtonUp(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~�scGs|jjd|j�dS(NttkButtonInvoke(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�dS(s_Flash the button. This is accomplished by redisplaying the button several times, alternating between active and normal colors. At the end of the flash the button is left in the same normal/active state as when the command was invoked. This command is ignored if the button's state is disabled. tflashN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs|jj|jd�S(sInvoke the command associated with the button. The return value is the return value from the command, or an empty string if there is no command associated with the button. This command is ignored if the button's state is disabled. tinvoke(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sN(R7R8R9RRURzR|R}R~RR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRxfs cCsdS(Ntend((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAtEnd�scGs2d}x%|D]}|r |d|}q q W|S(NtinsertR((R�R�ta((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAtInsert�s cCsdS(Ns sel.first((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt AtSelFirst�scCsdS(Nssel.last((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt AtSelLast�scCs)|dkrd|fSd||fSdS(Ns@%rs@%r,%r(R(RARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAt�stCanvascBsIeZdZd:id�Zd�Zd�Zd�Zd�Zd:d:d�Z d�Z d�Zd �Zd �Z d:d�Zd:d:d:d�Zd:d �Zd:d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d:d:d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d:d+�Z.e.Z/d,�Z0e0Z1d-�Z2id.�Z3d/�Z4e4Z5Z6d0�Z7d1�Z8d2d3�Z9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>d9�Z?RS(;s?Canvas widget to display graphical elements like lines or text.cKstj||d||�dS(sConstruct a canvas widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, closeenough, confine, cursor, height, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, offset, relief, scrollregion, selectbackground, selectborderwidth, selectforeground, state, takefocus, width, xscrollcommand, xscrollincrement, yscrollcommand, yscrollincrement.tcanvasN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cGs!|jj|jdf|�dS(sInternal function.taddtagN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|j|d|�dS(s*Add tag NEWTAG to all items above TAGORID.taboveN(R�(RRtnewtagttagOrId((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_above�scCs|j|d�dS(sAdd tag NEWTAG to all items.R^N(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt addtag_all�scCs|j|d|�dS(s*Add tag NEWTAG to all items below TAGORID.tbelowN(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_below�scCs |j|d||||�dS(s�Add tag NEWTAG to item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closests). If START is specified the next below this tag is taken.tclosestN(R�(RRR�RARNthalotstart((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_closest�scCs |j|d||||�dS(sLAdd tag NEWTAG to all items in the rectangle defined by X1,Y1,X2,Y2.tenclosedN(R�(RRR�tx1ty1tx2ty2((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_enclosed�scCs |j|d||||�dS(sWAdd tag NEWTAG to all items which overlap the rectangle defined by X1,Y1,X2,Y2.toverlappingN(R�(RRR�R�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_overlapping�scCs|j|d|�dS(s)Add tag NEWTAG to all items with TAGORID.twithtagN(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_withtag�scGs,|j|jj|jdf|��p+dS(s|Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses all items with tags specified as arguments.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs9|jj|jd||d�|r5|j|�ndS(sbUnbind for all items with TAGORID for event SEQUENCE the function identified with FUNCID.R\REN(R.RPR�RX(RRR�RXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_unbind�scCs"|j|jd|f|||�S(s&Bind to all items with TAGORID at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\(R[R�(RRR�RXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_bind�scCs"t|jj|jd||��S(srReturn the canvas x coordinate of pixel position SCREENX rounded to nearest multiple of GRIDSPACING units.tcanvasx(R{R.RPR�(RRtscreenxtgridspacing((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs"t|jj|jd||��S(srReturn the canvas y coordinate of pixel position SCREENY rounded to nearest multiple of GRIDSPACING units.tcanvasy(R{R.RPR�(RRtscreenyR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scGs2tt|jj|jj|jdf|���S(s8Return a list of coordinates for the item given in ARGS.tcoords(RR{R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s c Csst|�}|d}t|�ttfkr;|d }ni}t|jj|jd|||j||���S(sInternal function.i����R.( RRRRRyR.RPR�R�(RRtitemTypeR�R�R#((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_create s cOs|jd||�S(s6Create arc shaped region with coordinates x1,y1,x2,y2.tarc(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_arc scOs|jd||�S(s%Create bitmap with coordinates x1,y1.R(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_bitmap scOs|jd||�S(s)Create image item with coordinates x1,y1.R�(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_image scOs|jd||�S(s-Create line with coordinates x1,y1,...,xn,yn.tline(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_line scOs|jd||�S(s)Create oval with coordinates x1,y1,x2,y2.toval(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_oval scOs|jd||�S(s0Create polygon with coordinates x1,y1,...,xn,yn.tpolygon(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_polygon scOs|jd||�S(s.Create rectangle with coordinates x1,y1,x2,y2.t rectangle(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_rectangle scOs|jd||�S(s#Create text with coordinates x1,y1.ttext(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_text" scOs|jd||�S(s+Create window with coordinates x1,y1,x2,y2.R�(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_window% scGs!|jj|jdf|�dS(s�Delete characters of text items identified by tag or id in ARGS (possibly several times) from FIRST to LAST character (including).tdcharsN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�( scGs!|jj|jdf|�dS(s<Delete items identified by all tag or ids contained in ARGS.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�, scGs!|jj|jdf|�dS(siDelete tag or id given as last arguments in ARGS from items identified by first argument in ARGS.tdtagN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�/ scGs,|j|jj|jdf|��p+dS(sInternal function.tfind((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�3 scCs|jd|�S(sReturn items above TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_above7 scCs |jd�S(sReturn all items.R^(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_all: scCs|jd|�S(sReturn all items below TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_below= scCs|jd||||�S(s�Return item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closest). If START is specified the next below this tag is taken.R�(R�(RRRARNR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_closest@ scCs|jd||||�S(s=Return all items in rectangle defined by X1,Y1,X2,Y2.R�(R�(RRR�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_enclosedF scCs|jd||||�S(sLReturn all items which overlap the rectangle defined by X1,Y1,X2,Y2.R�(R�(RRR�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_overlappingJ scCs|jd|�S(sReturn all items with TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_withtagN scGs|jj|jdf|�S(s.Set focus to the first item specified in ARGS.R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Q scGs)|jj|jj|jdf|��S(s=Return tags associated with the first item specified in ARGS.tgettags(R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�T s cGs!|jj|jdf|�dS(sdSet cursor at position POS in the item identified by TAGORID. In ARGS TAGORID must be first.ticursorN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�X scGs#t|jj|jdf|��S(s?Return position of cursor as integer in item specified in ARGS.R�(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�\ scGs!|jj|jdf|�dS(sSInsert TEXT in item TAGORID at position POS. ARGS must be TAGORID POS TEXT.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_ scCs'|jj|jdf|d|f�S(s9Return the resource value for an OPTION for item TAGORID.titemcgetR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�c s cKs|jd|f||�S(s�Configure resources of an item TAGORID. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. t itemconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�g scGs!|jj|jdf|�dS(sJLower an item TAGORID given in ARGS (optional below another item).R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_lowert scGs!|jj|jdf|�dS(s#Move an item TAGORID given in ARGS.tmoveN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�y scKs)|jj|jdf|j||��S(s�Print the contents of the canvas to a postscript file. Valid options: colormap, colormode, file, fontmap, height, pageanchor, pageheight, pagewidth, pagex, pagey, rotate, width, x, y.t postscript(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�| scGs!|jj|jdf|�dS(sJRaise an item TAGORID given in ARGS (optional above another item).R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_raise� scGs!|jj|jdf|�dS(s9Scale item TAGORID with XORIGIN, YORIGIN, XSCALE, YSCALE.tscaleN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.tscantmarkN(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt scan_mark� si cCs&|jj|jdd|||�dS(s�Adjust the view of the canvas to GAIN times the difference between X and Y and the coordinates given in scan_mark.R�tdragtoN(R.RPR�(RRRARNtgain((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytscan_dragto� scCs#|jj|jdd||�dS(sLAdjust the end of the selection near the cursor of an item TAGORID to index.tselecttadjustN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt select_adjust� scCs|jj|jdd�dS(s,Clear the selection if it is in this widget.R�R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_clear� scCs#|jj|jdd||�dS(s:Set the fixed end of a selection in item TAGORID to INDEX.R�tfromN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_from� scCs|jj|jdd�pdS(s(Return the item which has the selection.R�RN(R.RPR�R(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_item� scCs#|jj|jdd||�dS(s=Set the variable end of a selection in item TAGORID to INDEX.R�ttoN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt select_to� scCs|jj|jd|�pdS(s$Return the type of the item TAGORID.RN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sN(@R7R8R9RRUR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�t itemconfigR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sx tCheckbuttoncBsJeZdZdid�Zd�Zd�Zd�Zd�Zd�Z RS(s7Checkbutton widget which is either in on- or off-state.cKstj||d||�dS(sConstruct a checkbutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, offvalue, onvalue, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, variable, width, wraplength.tcheckbuttonN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� s cCs|jj|jd�dS(sPut the button in off-state.tdeselectN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sFlash the button.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�S(s<Toggle the button and invoke a command if given as resource.R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sPut the button in on-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sToggle the button.ttoggleN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� sN( R7R8R9RRUR�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s tEntrycBs�eZdZdid�Zdd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �ZeZ d �ZeZd�ZeZd�ZeZd �ZeZd�ZeZRS(s1Entry widget which allows displaying simple text.cKstj||d||�dS(sConstruct an entry widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, invalidcommand, invcmd, justify, relief, selectbackground, selectborderwidth, selectforeground, show, state, takefocus, textvariable, validate, validatecommand, vcmd, width, xscrollcommand.tentryN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� scCs |jj|jd||�dS(s.Delete text from FIRST to LAST (not included).R�N(R.RPR�(RRtfirsttlast((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�S(sReturn the text.R](R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]� scCs|jj|jd|�dS(sInsert cursor at INDEX.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCst|jj|jd|��S(sReturn position of cursor.R�(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jd||�dS(sInsert STRING at INDEX.R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s�Adjust the view of the canvas to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s9Adjust the end of the selection near the cursor to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_adjust� scCs|jj|jdd�dS(s,Clear the selection if it is in this widget.R�R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s*Set the fixed end of a selection to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_from� scCs%|jj|jj|jdd��S(sSReturn True if there are characters selected in the entry, False otherwise.R�tpresent(R.RORPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_present� s cCs#|jj|jdd||�dS(s3Set the selection from START to END (not included).R�trangeN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_range� scCs |jj|jdd|�dS(s-Set the variable end of a selection to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_to� sN(R7R8R9RRUR�R]R�R�R�R�R�R�R�R�R�R�R�R�tselect_presentR�tselect_rangeR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s* tFramecBseZdZdid�ZRS(sFFrame widget which may contain other widgets and can have a 3D border.cKs�t||f�}d}d|kr>d|df}|d=n&d|krdd|df}|d=ntj||d|i|�dS(sConstruct a frame widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, relief, takefocus, visual, width.Rts-classR�R�N((R(RrRU(RRRSR#R�Ro((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU s N(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� stLabelcBseZdZdid�ZRS(s0Label widget which can display text and bitmaps.cKstj||d||�dS(s�Construct a label widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground, highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS height, state, width tlabelN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU sN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� stListboxcBs�eZdZdid�Zd�Zd�Zd�Zdd�Zdd�Z d�Z d�Zd �Zd �Z d�Zd�Zd �ZeZdd�ZeZd�ZeZdd�ZeZd�Zd�Zdd�ZeZRS(s3Listbox widget which can display a list of strings.cKstj||d||�dS(s�Construct a listbox widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, relief, selectbackground, selectborderwidth, selectforeground, selectmode, setgrid, takefocus, width, xscrollcommand, yscrollcommand, listvariable.tlistboxN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU. scCs|jj|jd|�dS(s"Activate item identified by INDEX.tactivateN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�7 scCs(|j|jj|jd|��p'dS(sxReturn a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the item identified by the given index.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�: scCs%|j|jj|jd��p$dS(s.Return the indices of currently selected item.tcurselection((RR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�> scCs |jj|jd||�dS(s+Delete items from FIRST to LAST (included).R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�A scCsQ|dk r4|jj|jj|jd||��S|jj|jd|�SdS(s0Get list of items from FIRST to LAST (included).R]N(RR.R*RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]D scCs5|jj|jd|�}|dkr+dSt|�S(s+Return index of item identified with INDEX.R�R�N(R.RPR�RRy(RRR�ti((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�K scGs$|jj|jd|f|�dS(sInsert ELEMENTS at INDEX.R�N(R.RPR�(RRR�telements((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�P scCst|jj|jd|��S(s5Get index of item which is nearest to y coordinate Y.tnearest(RyR.RPR�(RRRN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�S scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�W scCs#|jj|jdd||�dS(s�Adjust the view of the listbox to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Z scCs|jj|jd|�dS(s"Scroll such that INDEX is visible.tseeN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_ scCs |jj|jdd|�dS(s-Set the fixed end oft the selection to INDEX.R�tanchorN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_anchorb scCs#|jj|jdd||�dS(s2Clear the selection from FIRST to LAST (included).R�R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�f scCs(|jj|jj|jdd|��S(s+Return 1 if INDEX is part of the selection.R�tincludes(R.RORPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_includesk scCs#|jj|jdd||�dS(siSet the selection from FIRST to LAST (included) without changing the currently selected elements.R�RNN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_setp scCst|jj|jd��S(s-Return the number of elements in the listbox.R�(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�u scCs'|jj|jdf|d|f�S(s4Return the resource value for an ITEM and an OPTION.R�R)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�x s cKs|jd|f||�S(s9Configure resources of an ITEM. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. Valid resource names: background, bg, foreground, fg, selectbackground, selectforeground.R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�| sN(R7R8R9RRUR�R�R�R�R]R�R�R�R�R�R�R�t select_anchorR�R�R�tselect_includesR�t select_setR�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�, s2 tMenucBs�eZdZd%id�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z d�Zd�Zd d�Zd�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zd%d�Zd�Zd%d�Z e Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'RS(&sPMenu widget which allows displaying menu bars, pull-down menus and pop-up menus.cKstj||d||�dS(sAConstruct menu widget with the parent MASTER. Valid resource names: activebackground, activeborderwidth, activeforeground, background, bd, bg, borderwidth, cursor, disabledforeground, fg, font, foreground, postcommand, relief, selectcolor, takefocus, tearoff, tearoffcommand, title, type.tmenuN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� scCs&ddl}|jdtdd�dS(Ni����s=tk_bindForTraversal() does nothing and will be removed in 3.6R�i(R�R�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttk_bindForTraversal� s cCs|jjd|j�dS(Nt tk_mbPost(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd�dS(Nttk_mbUnpost(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j|�dS(Nttk_traverseToMenu(R.RPR�(RRRx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j|�dS(Nttk_traverseWithinMenu(R.RPR�(RRRx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�S(Nttk_getMenuButtons(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|�dS(Nttk_nextMenu(R.RP(RRtcount((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|�dS(Nttk_nextMenuEntry(R.RP(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�dS(Nt tk_invokeMenu(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|j�dS(Nttk_firstMenu(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�dS(Nttk_mbButtonDown(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sREcCs#|jjd|j|||�dS(s/Post the menu at position X,Y with entry ENTRY.ttk_popupN(R.RPR�(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jd|�dS(sActivate entry at INDEX.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs0|jj|jd|f|j||��dS(sInternal function.R�N(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs|jd|p|�dS(sAdd hierarchical menu item.tcascadeN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_cascade� scKs|jd|p|�dS(sAdd checkbutton menu item.R�N(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_checkbutton� scKs|jd|p|�dS(sAdd command menu item.R�N(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_command� scKs|jd|p|�dS(sAddd radio menu item.tradiobuttonN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_radiobutton� scKs|jd|p|�dS(sAdd separator.t separatorN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt add_separator� scKs3|jj|jd||f|j||��dS(sInternal function.R�N(R.RPR�R�(RRR�R�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs|j|d|p|�dS(s$Add hierarchical menu item at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_cascade� scKs|j|d|p|�dS(s#Add checkbutton menu item at INDEX.R�N(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_checkbutton� scKs|j|d|p|�dS(sAdd command menu item at INDEX.R�N(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_command� scKs|j|d|p|�dS(sAddd radio menu item at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_radiobutton� scKs|j|d|p|�dS(sAdd separator at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_separator� scCs�|dkr|}n|j|�|j|�}}|dksL|dkr[d\}}nxat||d�D]L}d|j|�krot|j|d��}|r�|j|�q�qoqoW|jj|j d||�dS(s7Delete menu items between INDEX1 and INDEX2 (included).ii����iR�R�N(ii����( RR�R�tentryconfigRt entrycgetRXR.RPR�(RRtindex1tindex2t num_index1t num_index2R�R$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cCs |jj|jd|d|�S(s=Return the resource value of a menu item for OPTION at INDEX.RR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scKs|jd|f||�S(sConfigure a menu item at INDEX.tentryconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR$� scCs5|jj|jd|�}|dkr+dSt|�S(s4Return the index of a menu item identified by INDEX.R�R�N(R.RPR�RRy(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd|�S(sRInvoke a menu item identified by INDEX and execute the associated command.R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jd||�dS(sDisplay a menu at position X,Y.tpostN(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR%� scCs|jj|jd|�S(s*Return the type of the menu item at INDEX.R(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jd�dS(s Unmap a menu.tunpostN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR&� scCst|jj|jd|��S(sEReturn the y-position of the topmost pixel of the menu item at INDEX.t yposition(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR'� sN((R7R8R9RRURRRRRR R RR RRRR�R�RRRRRR�RRRRRR�RR$RR�R�R%RR&R'(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sJ t MenubuttoncBseZdZdid�ZRS(s(Menubutton widget, obsolete since Tk8.0.cKstj||d||�dS(Nt menubutton(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR(stMessagecBseZdZdid�ZRS(sKMessage widget to display multiline text. Obsolete since Label does it too.cKstj||d||�dS(Ntmessage(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR* stRadiobuttoncBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(sGRadiobutton widget which shows only one of several buttons in on-state.cKstj||d||�dS(s�Construct a radiobutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, value, variable, width, wraplength.RN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUs cCs|jj|jd�dS(sPut the button in off-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�dS(sFlash the button.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�S(s<Toggle the button and invoke a command if given as resource.R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�"scCs|jj|jd�dS(sPut the button in on-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�%sN( R7R8R9RRUR�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR,s tScalecBsDeZdZdid�Zd�Zd�Zdd�Zd�ZRS(s1Scale widget which can display a numerical scale.cKstj||d||�dS(s�Construct a scale widget with the parent MASTER. Valid resource names: activebackground, background, bigincrement, bd, bg, borderwidth, command, cursor, digits, fg, font, foreground, from, highlightbackground, highlightcolor, highlightthickness, label, length, orient, relief, repeatdelay, repeatinterval, resolution, showvalue, sliderlength, sliderrelief, state, takefocus, tickinterval, to, troughcolor, variable, width.R�N(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU+s cCsE|jj|jd�}yt|�SWntk r@t|�SXdS(s*Get the current value as integer or float.R]N(R.RPR�RyR@R{(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]5s cCs|jj|jd|�dS(sSet the value to VALUE.RNN(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN<scCs"|j|jj|jd|��S(s�Return a tuple (X,Y) of the point along the centerline of the trough that corresponds to VALUE or the current value if None is given.R�(RR.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�?scCs|jj|jd||�S(scReturn where the point X,Y lies. Valid return values are "slider", "though1" and "though2".tidentify(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.EsN( R7R8R9RRUR]RNR�R.(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR-)s t ScrollbarcBsSeZdZdid�Zd�Zd�Zd�Zd�Zd�Z d�Z RS( s?Scrollbar widget which displays a slider at a certain position.cKstj||d||�dS(slConstruct a scrollbar widget with the parent MASTER. Valid resource names: activebackground, activerelief, background, bd, bg, borderwidth, command, cursor, elementborderwidth, highlightbackground, highlightcolor, highlightthickness, jump, orient, relief, repeatdelay, repeatinterval, takefocus, troughcolor, width.t scrollbarN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRULs cCs|jj|jd|�dS(sxDisplay the element at INDEX with activebackground and activerelief. INDEX can be "arrow1","slider" or "arrow2".R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�VscCs"t|jj|jd||��S(snReturn the fractional change of the scrollbar setting if it would be moved by DELTAX or DELTAY pixels.R(R{R.RPR�(RRtdeltaxtdeltay((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZscCs"t|jj|jd||��S(sRReturn the fractional value which corresponds to a slider position of X,Y.R�(R{R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_scCs|jj|jd||�S(sYReturn the element under position X,Y as one of "arrow1","slider","arrow2" or "".R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.cscCs|j|jj|jd��S(sZReturn the current fractional values (upper and lower end) of the slider position.R](RdR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]gscGs!|jj|jdf|�dS(siSet the fractional values of the slider position (upper and lower ends as value between 0 and 1).RNN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRNksN(R7R8R9RRUR�RR�R.R]RN(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR/Js tTextc BsHeZdZd5id�Zd�Zd�Zd�Zd�Zd�Z d�Z d5d�Zd5d �Zd �Z d5d5d�Zd�Zd5d �Zd�Zd�Zd�Zd�Zd5d�Zd�Zd5d�Zid�Zd�Zd�Zd�Zd5d�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d5d5d5d5d5d5d5d5d!�Z$d"�Z%d#�Z&d5d$�Z'd5d%�Z(d&�Z)d5d'�Z*e*Z+d(�Z,d5d)�Z-d5d*�Z.d5d+�Z/d5d,�Z0d5d-�Z1d.�Z2d5d/�Z3d0�Z4d5d1�Z5e5Z6id2�Z7d3�Z8d4�Z9RS(6s4Text widget which can display text in various forms.cKstj||d||�dS(s�Construct a text widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, padx, pady, relief, selectbackground, selectborderwidth, selectforeground, setgrid, takefocus, xscrollcommand, yscrollcommand, WIDGET-SPECIFIC OPTIONS autoseparators, height, maxundo, spacing1, spacing2, spacing3, state, tabs, undo, width, wrap, R�N(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUtscGs,|j|jj|jdf|��p+dS(s�Return a tuple of (x,y,width,height) which gives the bounding box of the visible part of the character at the index in ARGS.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|jjd|j|�dS(Nttk_textSelectTo(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR4�scCs|jjd|j�dS(Nttk_textBackspace(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR5�scCs#|jjd|j|||�dS(Nttk_textIndexCloser(R.RPR�(RRR�R�R$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR6�scCs|jjd|j|�dS(Nttk_textResetAnchor(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR7�scCs+|jj|jj|jd|||��S(s�Return whether between index INDEX1 and index INDEX2 the relation OP is satisfied. OP is one of <, <=, ==, >=, >, or !=.tcompare(R.RORPR�(RRR topR!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR8�scCsK|dkr.|jj|jj|jd��S|jj|jd|�dS(sjTurn on the internal consistency checks of the B-Tree inside the text widget according to BOOLEAN.tdebugN(RR.RORPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR:�s"cCs |jj|jd||�dS(s?Delete the characters between INDEX1 and INDEX2 (not included).R�N(R.RPR�(RRR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs"|j|jj|jd|��S(s�Return tuple (x,y,width,height,baseline) giving the bounding box and baseline position of the visible part of the line containing the character at INDEX.t dlineinfo(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR;�sc Ks�g}d}d}|s3g}|d�}|}nz�t|t�s[|j|�}}n|d|g7}x,|D]$} || rr|jd| �qrqrW|j|�|r�|j|�n|jj|jd|�|SWd|r�|j|�nXdS(s�Return the contents of the widget between index1 and index2. The type of contents returned in filtered based on the keyword parameters; if 'all', 'image', 'mark', 'tag', 'text', or 'window' are given and true, then the corresponding items are returned. The result is a list of triples of the form (key, value, index). If none of the keywords are true then 'all' is used by default. If the 'command' argument is given, it is called once for each element of the list of triples, with the values of each triple serving as the arguments to the function. In this case the list is not returned.cSs|j|||f�dS(N(Re(R4RR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt append_triple�ss-commandR)tdumpN( RR RR�ReR.RPR�RX( RRR R!R�R�R�t func_nameR�R<R4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR=�s* cGs|jj|jd|�S(srInternal method This method controls the undo mechanism and the modified flag. The exact behavior of the command depends on the option argument that follows the edit argument. The following forms of the command are currently supported: edit_modified, edit_redo, edit_reset, edit_separator and edit_undo tedit(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR?�s cCs|jd|�S(s;Get or Set the modified flag If arg is not specified, returns the modified flag of the widget. The insert, delete, edit undo and edit redo commands or the user can set or clear the modified flag. If boolean is specified, sets the modified flag of the widget to arg. tmodified(R?(RRtarg((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_modified�s cCs |jd�S(sRedo the last undone edit When the undo option is true, reapplies the last undone edits provided no other edits were done since then. Generates an error when the redo stack is empty. Does nothing when the undo option is false. tredo(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_redo�scCs |jd�S(s(Clears the undo and redo stacks treset(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_reset�scCs |jd�S(snInserts a separator (boundary) on the undo stack. Does nothing when the undo option is false R(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytedit_separator�scCs |jd�S(sDUndoes the last edit action If the undo option is true. An edit action is defined as all the insert and delete commands that are recorded on the undo stack in between two separators. Generates an error when the undo stack is empty. Does nothing when the undo option is false tundo(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_undos cCs|jj|jd||�S(s5Return the text from INDEX1 to INDEX2 (not included).R](R.RPR�(RRR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]scCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s9Return the value of OPTION of an embedded image at INDEX.iR)i����RiR�R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt image_cgets cKs|jdd|f||�S(s%Configure an embedded image at INDEX.R�R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_configurescKs+|jj|jdd||j||��S(s"Create an embedded image at INDEX.R�R.(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_creates cCs|jj|jdd�S(s3Return all names of embedded images in this widget.R�R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�"scCst|jj|jd|��S(s1Return the index in the form line.char for INDEX.R�(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�%scGs'|jj|jd||f|�dS(s�Insert CHARS before the characters at INDEX. An additional tag can be given in ARGS. Additional CHARS and tags can follow in ARGS.R�N(R.RPR�(RRR�tcharsR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�(scCs"|jj|jdd||f�S(s�Change the gravity of a mark MARKNAME to DIRECTION (LEFT or RIGHT). Return the current value if None is given for DIRECTION.R�tgravity(R.RPR�(RRtmarkNamet direction((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytmark_gravity,s cCs%|jj|jj|jdd��S(sReturn all mark names.R�R�(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_names1scCs#|jj|jdd||�dS(s0Set mark MARKNAME before the character at INDEX.R�RNN(R.RPR�(RRROR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytmark_set5scGs$|jj|jddf|�dS(sDelete all marks in MARKNAMES.R�tunsetN(R.RPR�(RRt markNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_unset8scCs"|jj|jdd|�p!dS(s-Return the name of the next mark after INDEX.R�tnextN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_next;scCs"|jj|jdd|�p!dS(s2Return the name of the previous mark before INDEX.R�tpreviousN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_previous>scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�AscCs#|jj|jdd||�dS(s~Adjust the view of the text to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�DscCs(|jdg}|r%|jd�n|r;|jd�n|rQ|jd�n|rg|jd�n|r}|jd�n| r�|jd�n| r�|jd�|j| �n|r�|d d kr�|jd�n|j|�|j|�|r|j|�nt|jjt|���S(s�Search PATTERN beginning from INDEX until STOPINDEX. Return the index of the first character of a match or an empty string.Rs -forwardss -backwardss-exacts-regexps-nocases-elides-countiR)s--(R�ReRR.RPR(RRR�R�t stopindextforwardst backwardstexacttregexptnocaseRtelideR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRIs. cCs|jj|jd|�dS(s3Scroll such that the character at INDEX is visible.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�\scGs*|jj|jdd||f|�dS(s|Add tag TAGNAME to all characters between INDEX1 and index2 in ARGS. Additional pairs of indices may follow in ARGS.ttagR�N(R.RPR�(RRttagNameR R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_add_s cCs<|jj|jdd||d�|r8|j|�ndS(sgUnbind for all characters with TAGNAME for event SEQUENCE the function identified with FUNCID.RbR\REN(R.RPR�RX(RRRcRXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�ds"cCs%|j|jdd|f|||�S(s+Bind to all characters with TAGNAME at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.RbR\(R[R�(RRRcRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�jscCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s+Return the value of OPTION for tag TAGNAME.iR)i����RiRbR�(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_cgetrs cKs|jdd|f||�S(sConfigure a tag TAGNAME.RbR�(R�(RRRcR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_configureyscGs$|jj|jddf|�dS(sDelete all tags in TAGNAMES.RbR�N(R.RPR�(RRttagNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_delete}scCs#|jj|jdd||�dS(s`Change the priority of tag TAGNAME such that it is lower than the priority of BELOWTHIS.RbR�N(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs(|jj|jj|jdd|��S(sReturn a list of all tag names.RbR�(R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_names�s cCs.|jj|jj|jdd|||��S(s�Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched forward from INDEX1.Rbt nextrange(R.R*RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_nextrange�scCs.|jj|jj|jdd|||��S(s�Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched backwards from INDEX1.Rbt prevrange(R.R*RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_prevrange�scCs#|jj|jdd||�dS(saChange the priority of tag TAGNAME such that it is higher than the priority of ABOVETHIS.RbR�N(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs(|jj|jj|jdd|��S(s7Return a list of ranges of text which have tag TAGNAME.Rbtranges(R.R*RPR�(RRRc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_ranges�scCs&|jj|jdd|||�dS(sARemove tag TAGNAME from all characters between INDEX1 and INDEX2.RbRmN(R.RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_remove�s cCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s:Return the value of OPTION of an embedded window at INDEX.iR)i����RiR�R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_cget�s cKs|jdd|f||�S(s&Configure an embedded window at INDEX.R�R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_configure�scKs3|jj|jdd|f|j||��dS(sCreate a window at INDEX.R�R.N(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt window_create�s cCs%|jj|jj|jdd��S(s4Return all names of embedded windows in this widget.R�R�(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_names�s cGs$|jj|jddf|�dS(sObsolete function, use see.R�s -pickplaceN(R.RPR�(RRRW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_pickplace�sN(:R7R8R9RRUR�R4R5R6R7R8R:R�R;R=R?RBRDRFRGRIR]RJRKRLR�R�R�RQRRRSRVRXRZR�R�RR�RdR�R�ReRft tag_configRhR�RiRkRmR�RoRpRqRrt window_configRsRtRu(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR3rsr ( t_setitcBs#eZdZdd�Zd�ZRS(s>Internal class. It wraps the command in the widget OptionMenu.cCs||_||_||_dS(N(t _setit__valuet_setit__vart_setit__callback(RRtvarRRg((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cGs6|jj|j�|jr2|j|j|�ndS(N(RzRNRyR{(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRa�s N(R7R8R9RRURa(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRx�st OptionMenucBs)eZdZd�Zd�Zd�ZRS(s?OptionMenu which allows the user to select a value from a menu.c Os"idd6|d6dd6td6dd6dd 6}tj||d |�d|_t|dd dd�}|_|j|_|jd�}d|kr�|d=n|r�t d|j �d�n|jd|dt|||��x0|D](} |jd| dt|| |��q�W||d <dS(s�Construct an optionmenu widget with the parent MASTER, with the resource textvariable set to VARIABLE, the initially selected value VALUE, the other menu values VALUES and an additional keyword argument command.itborderwidthttextvariableitindicatorontreliefR$R�thighlightthicknessR)t tk_optionMenuRTRttearoffiR�sunknown option -R�N( tRAISEDRrRURmRt_OptionMenu__menuR�tmenunameR]R�R�RRx( RRRSR_RRDtkwargsR�RRgR'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s$ cCs#|dkr|jStj||�S(NR(R�RrR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCstj|�d|_dS(s,Destroy this widget and the associated menu.N(R(R�RR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s (R7R8R9RUR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR}�s tImagecBsteZdZdZdidd�Zd�Zd�Zd�Zd�Z d�Z e Zd�Zd �Z d �ZRS(sBase class for images.ic Ks^d|_|s*t}|s*td�q*nt|d|�|_|s�tjd7_dtjf}|ddkr�d|d}q�n|r�|r�t||f�}n|r�|}nd }xp|j �D]b\}}t |d�r�|j|�}n!|dkr|jj|�}n|d||f}q�W|jj dd||f|�||_dS(NsToo early to create imageR.is pyimage%riR)RiRaR�tmaskdataR�R.((R�R�(RRTR;R+RWR.R�t_last_idR(R!RjR�t_createbytearrayRP( RRtimgtypeRTR#RSR�R�R&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s0 cCs|jS(N(RT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZ REcCsA|jr=y|jjdd|j�Wq=tk r9q=XndS(NR�R�(RTR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRY s cCs$|jj|jdd||�dS(NR�R)(R.RPRT(RRR4R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jdd|�S(NR�R)(R.RPRT(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scKs�d }x�t|�j�D]�\}}|dk r|ddkrN|d }nt|d�ro|j|�}n!|d kr�|jj|�}n|d||f}qqW|jj|jdf|�dS(sConfigure the image.i����RiRaR�R�R)R�N((R�R�( R(R!RRjR�R.R�RPRT(RRR�RR&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� s cCst|jjdd|j��S(sReturn the height of the image.R�R�(RyR.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjdd|j�S(s7Return the type of the image, e.g. "photo" or "bitmap".R�R(R.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR" scCst|jjdd|j��S(sReturn the width of the image.R�RK(RyR.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRK% sN(R7R8R9R�RRURZRYR�R�R�R�R�RRK(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s t PhotoImagecBs�eZdZdidd�Zd�Zd�Zd�Zd�Zdd�Z dd�Z d �Zdd �Zddd�Z RS( s=Widget which can display images in PGM, PPM, GIF, PNG format.cKs tj|d||||�dS(stCreate an image with NAME. Valid resource names: data, format, file, gamma, height, palette, width.tphotoN(R�RU(RRRTR#RSR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU, scCs|jj|jd�dS(sDisplay a transparent image.tblankN(R.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�2 scCs|jj|jdd|�S(sReturn the value of OPTION.R�R)(R.RPRT(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�5 scCs|jj|jdd|�S(NR�R)(R.RPRT(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�9 scCs/td|j�}|jj|d|j�|S(s;Return a new PhotoImage with the same image as this widget.RStcopy(R�R.RPRT(RRt destImage((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�< sREcCsMtd|j�}|dkr'|}n|jj|d|jd||�|S(s�Return a new PhotoImage with the same image as this widget but zoom it with a factor of x in the X direction and y in the Y direction. If y is not given, the default value is the same as x. RSRER�s-zoom(R�R.RPRT(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytzoomA s "cCsMtd|j�}|dkr'|}n|jj|d|jd||�|S(s�Return a new PhotoImage based on the same image as this widget but use only every Xth or Yth pixel. If y is not given, the default value is the same as x. RSRER�s -subsample(R�R.RPRT(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt subsampleJ s "cCs|jj|jd||�S(s8Return the color (red, green, blue) of the pixel at X,Y.R](R.RPRT(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]S scCs`|jd|f}|rL|ddkr5|d}n|dt|�}n|jj|�dS(szPut row formatted colors to image starting from position TO, e.g. image.put("{red green} {blue yellow}", to=(4,6))tputis-toiN(s-to(RTRR.RP(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�V s cCs\|jd|f}|r+|d|f}n|rH|dt|�}n|jj|�dS(sRWrite image to file FILENAME in FORMAT starting from position FROM_COORDS.twrites-formats-fromN(s-from(RTRR.RP(RRtfilenametformattfrom_coordsR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�` sN(R7R8R9RRUR�R�R�R�R�R�R]R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�* s tBitmapImagecBs eZdZdidd�ZRS(s.Widget which can display images in XBM format.cKs tj|d||||�dS(sqCreate a bitmap with NAME. Valid resource names: background, data, file, foreground, maskdata, maskfile.RN(R�RU(RRRTR#RSR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUl sN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�j scCstjjtjjdd��S(NR�R�(R;R.R*RP(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�r scCstjjtjjdd��S(NR�R�(R;R.R*RP(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�u stSpinboxcBs�eZdZdid�Zd�Zdd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z d�Zd�Zd �Zd�Zd�Zdd�ZRS(sspinbox widget.cKstj||d||�dS(s�Construct a spinbox widget with the parent MASTER. STANDARD OPTIONS activebackground, background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, justify, relief, repeatdelay, repeatinterval, selectbackground, selectborderwidth selectforeground, takefocus, textvariable xscrollcommand. WIDGET-SPECIFIC OPTIONS buttonbackground, buttoncursor, buttondownrelief, buttonuprelief, command, disabledbackground, disabledforeground, format, from, invalidcommand, increment, readonlybackground, state, to, validate, validatecommand values, width, wrap, tspinboxN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU{ scCs(|j|jj|jd|��p'dS(s�Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the character given by index. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the character (in pixels relative to the widget) and the last two elements give the width and height of the character, in pixels. The bounding box may refer to a region outside the visible area of the window. R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(sWDelete one or more elements of the spinbox. First is the index of the first character to delete, and last is the index of the character just after the last one to delete. If last isn't specified it defaults to first+1, i.e. a single character is deleted. This command returns an empty string. R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cCs|jj|jd�S(sReturns the spinbox's stringR](R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]� scCs|jj|jd|�S(s�Alter the position of the insertion cursor. The insertion cursor will be displayed just before the character given by index. Returns an empty string R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(s{Returns the name of the widget at position x, y Return value is one of: none, buttondown, buttonup, entry R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.� scCs|jj|jd|�S(s;Returns the numerical index corresponding to index R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(sDInsert string s at index Returns an empty string. R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd|�S(s�Causes the specified element to be invoked The element could be buttondown or buttonup triggering the action associated with it. R�(R.RPR�(RRtelement((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scGs,|j|jj|jdf|��p+dS(sInternal function.R�((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Records x and the current view in the spinbox window; used in conjunction with later scan dragto commands. Typically this command is associated with a mouse button press in the widget. It returns an empty string. R�(R�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Compute the difference between the given x argument and the x argument to the last scan mark command It then adjusts the view left or right by 10 times the difference in x-coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the spinbox at high speed through the window. The return value is an empty string. R�(R�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cGs,|j|jj|jdf|��p+dS(sInternal function.R�((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Locate the end of the selection nearest to the character given by index, Then adjust that end of the selection to be at index (i.e including but not going beyond index). The other end of the selection is made the anchor point for future select to commands. If the selection isn't currently in the spinbox, then a new selection is created to include the characters between index and the most recent selection anchor point, inclusive. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jd�S(ssClear the selection If the selection isn't in this widget then the command has no effect. R�(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jdd|�S(s�Sets or gets the currently selected element. If a spinbutton element is specified, it will be displayed depressed. R�R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_element sN(R7R8R9RRUR�R�R]R�R.R�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�y s" t LabelFramecBseZdZdid�ZRS(slabelframe widget.cKstj||d||�dS(s�Construct a labelframe widget with the parent MASTER. STANDARD OPTIONS borderwidth, cursor, font, foreground, highlightbackground, highlightcolor, highlightthickness, padx, pady, relief, takefocus, text WIDGET-SPECIFIC OPTIONS background, class, colormap, container, height, labelanchor, labelwidget, visual, width t labelframeN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�stPanedWindowcBs�eZdZdid�Zd�Zd�ZeZd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zdd�ZeZd�ZRS(spanedwindow widget.cKstj||d||�dS(sTConstruct a panedwindow widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, height, orient, relief, width WIDGET-SPECIFIC OPTIONS handlepad, handlesize, opaqueresize, sashcursor, sashpad, sashrelief, sashwidth, showhandle, tpanedwindowN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU/scKs-|jj|jd|f|j|��dS(s+Add a child widget to the panedwindow in a new pane. The child argument is the name of the child widget followed by pairs of arguments that specify how to manage the windows. The possible options and values are the ones accepted by the paneconfigure method. R�N(R.RPR�R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�?scCs|jj|jd|�dS(s�Remove the pane containing child from the panedwindow All geometry management options for child will be forgotten. R]N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRmIscCs|jj|jd||�S(s�Identify the panedwindow component at point x, y If the point is over a sash or a sash handle, the result is a two element list containing the index of the sash or handle, and a word indicating whether it is over a sash or a handle, such as {0 sash} or {2 handle}. If the point is over any other part of the panedwindow, the result is an empty list. R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.Qs cGs,|j|jj|jdf|��p+dS(sInternal function.tproxy((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�]scCs |jd�S(sBReturn the x and y pair of the most recent proxy location tcoord(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_coordbscCs |jd�S(s+Remove the proxy from the display. R](R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_forgetgscCs|jd||�S(s:Place the proxy at the given x and y coordinates. R�(R�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_placelscGs,|j|jj|jdf|��p+dS(sInternal function.tsash((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�qscCs|jd|�S(sAReturn the current x and y pair for the sash given by index. Index must be an integer between 0 and 1 less than the number of panes in the panedwindow. The coordinates given are those of the top left corner of the region containing the sash. pathName sash dragto index x y This command computes the difference between the given coordinates and the coordinates given to the last sash coord command for the given sash. It then moves that sash the computed difference. The return value is the empty string. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_coordvscCs|jd|�S(sRecords x and y for the sash given by index; Used in conjunction with later dragto commands to move the sash. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_mark�scCs|jd|||�S(s?Place the sash given by index at the given coordinates R�(R�(RRR�RARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_place�scCs'|jj|jdf|d|f�S(swQuery a management option for window. Option may be any value allowed by the paneconfigure subcommand tpanecgetR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cKs�|dkr)|r)|j|jd|�St|�tkr_|r_|j|jd|d|�S|jj|jd|f|j||��dS(s� Query or modify the management options for window. If no option is specified, returns a list describing all of the available options for pathName. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. The following options are supported: after window Insert the window after the window specified. window should be the name of a window already managed by pathName. before window Insert the window before the window specified. window should be the name of a window already managed by pathName. height size Specify a height for the window. The height will be the outer dimension of the window including its border, if any. If size is an empty string, or if -height is not specified, then the height requested internally by the window will be used initially; the height may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. minsize n Specifies that the size of the window cannot be made less than n. This constraint only affects the size of the widget in the paned dimension -- the x dimension for horizontal panedwindows, the y dimension for vertical panedwindows. May be any value accepted by Tk_GetPixels. padx n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the X-direction. The value may have any of the forms accepted by Tk_GetPixels. pady n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the Y-direction. The value may have any of the forms accepted by Tk_GetPixels. sticky style If a window's pane is larger than the requested dimensions of the window, this option may be used to position (or stretch) the window within its pane. Style is a string that contains zero or more of the characters n, s, e or w. The string can optionally contains spaces or commas, but they are ignored. Each letter refers to a side (north, south, east, or west) that the window will "stick" to. If both n and s (or e and w) are specified, the window will be stretched to fill the entire height (or width) of its cavity. width size Specify a width for the window. The width will be the outer dimension of the window including its border, if any. If size is an empty string, or if -width is not specified, then the width requested internally by the window will be used initially; the width may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. t paneconfigureR)N( RR�R�RRR�R.RPR�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sDcCs"|jj|jj|jd��S(s+Returns an ordered list of the child panes.tpanes(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sN(R7R8R9RRUR�RmR]R.R�R�R�R�R�R�R�R�R�R�t paneconfigR�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�-s$ Kt StudbuttoncBseZdid�ZRS(cKsitj||d||�|jd|j�|jd|j�|jd|j�|jd|j�dS(Nt studbuttons<Any-Enter>s<Any-Leave>s<1>s<ButtonRelease-1>(RrRUR\RzR|R}R~(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s N(R7R8RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��st TributtoncBseZdid�ZRS(cKs�tj||d||�|jd|j�|jd|j�|jd|j�|jd|j�|d|d<|d|d<dS( Nt tributtons<Any-Enter>s<Any-Leave>s<1>s<ButtonRelease-1>tbgtfgtactivebackground(RrRUR\RzR|R}R~(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�sN(R7R8RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs�t�}dt}tdkrMy|tdd�}WqMtk rIqMXnt|d|�}|j�t|ddd|d��}|j�||_t|dd d|j�}|j�|j �|j �|j�|j�dS( NsThis is Tcl/Tk version %sg333333 @s This should be a cedilla: �s iso-8859-1R�s Click me!R�cSs|jjdd|jd�S(NR�s[%s](ttestR�(R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt<lambda> stQUIT( R't TclVersionRt NameErrorR�R�RxR�R�RRR�R~(R�R�R�R�Rc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_tests( t__main__(`R9t__version__R�tplatformtFixTkR�ttkinterR�R�tTkconstantstreR/R�RARCRBR�tREADABLEtWRITABLEt EXCEPTIONtcreatefilehandlerRRtdeletefilehandlertcompileR RRRRR(tTrueR5R6R:R;R<R>RCRMRDRuRwRzR|R~R?RyR{ROR�R`R�R�R�R'RZR[RbRfRkRrRsRxR�R�R�R�R�R�R�R�R�R�R�RR(R*R,R-R/R3RxR}R�R�R�R�R�R�R�R�R�R�R�R7(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt<module>s� , k ����Q�}',/8> �A[}!(�I%@@ �� Tkinter.pyo000064400000606777151703463030006746 0ustar00� zfc@s�dZdZddlZejdkr6ddlZnddlZeZejZddlTddl Tddl Z dZeej �Zeej�ZejZejZejZyejWnek r�ee_nXyejWnek r�ee_nXe jd�Ze jd�Zd �Zd �Zd�Zy ejZWnek rYnXd�Zy ejZWnek r�nXeed �Z dfd��YZ!da"ea#d�Z$d�Z%dd�Z&da'dfd��YZ(de(fd��YZ)de(fd��YZ*de(fd��YZ+de(fd��YZ,dd�Z-e.Z/eZ0d�Z1d fd!��YZ2d"fd#��YZ3d$fd%��YZ4d&fd'��YZ5d(fd)��YZ6d*e2e6fd+��YZ7eed*dd,�Z8d-fd.��YZ9d/fd0��YZ:d1fd2��YZ;d3e2fd4��YZ<d5e<e9e:e;fd6��YZ=d7e<e6fd8��YZ>d9e=fd:��YZ?d;�Z@d<�ZAd=�ZBd>�ZCed?�ZDd@e=e4e5fdA��YZEdBe=fdC��YZFdDe=e4fdE��YZGdFe=fdG��YZHdHe=fdI��YZIdJe=e4e5fdK��YZJdLe=fdM��YZKdNe=fdO��YZLdPe=fdQ��YZMdRe=fdS��YZNdTe=fdU��YZOdVe=fdW��YZPdXe=e4e5fdY��YZQdZfd[��YZRd\eLfd]��YZSd^fd_��YZTd`eTfda��YZUdbeTfdc��YZVdd�ZWde�ZXdfe=e4fdg��YZYdhe=fdi��YZZdje=fdk��YZ[dle?fdm��YZ\dne?fdo��YZ]dp�Z^e_dqkr�e^�ndS(rs2Wrapper functions for Tcl/Tk. Tkinter provides classes which allow the display, positioning and control of widgets. Toplevel widgets are Tk and Toplevel. Other widgets are Frame, Label, Entry, Text, Canvas, Button, Radiobutton, Checkbutton, Scale, Listbox, Scrollbar, OptionMenu, Spinbox LabelFrame and PanedWindow. Properties of the widgets are specified with keyword arguments. Keyword arguments have the same name as the corresponding resource under Tk. Widgets are positioned with one of the geometry managers Place, Pack or Grid. These managers can be called with methods place, pack, grid available in every Widget. Actions are bound to events by resources (e.g. keyword argument command) or with the method bind. Example (Hello, World): import Tkinter from Tkconstants import * tk = Tkinter.Tk() frame = Tkinter.Frame(tk, relief=RIDGE, borderwidth=2) frame.pack(fill=BOTH,expand=1) label = Tkinter.Label(frame, text="Hello, World") label.pack(fill=X, expand=1) button = Tkinter.Button(frame,text="Exit",command=tk.destroy) button.pack(side=BOTTOM) tk.mainloop() s$Revision: 81008 $i����Ntwin32(t*is([\\{}])s([\s])cCsdjtt|��S(sInternal function.t (tjointmapt _stringify(tvalue((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_joinAscCsLt|ttf�rit|�dkrVt|d�}tj|�rfd|}qfqHdt|�}n�t|t�r�t |d�}nt|t �s�t|�}n|s�d}n�tj|�rtj d|�}|jdd�}tj d|�}|dd krHd |}qHn,|dd ks;tj|�rHd|}n|S(sInternal function.iis{%s}sutf-8s{}s\\\1s s\nt"s\( t isinstancetlistttupletlenRt _magic_retsearchRtstrtunicodetsubtreplacet _space_re(R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyREs* cCsbd}xU|D]M}t|�ttfkr>|t|�}q |dk r ||f}q q W|S(sInternal function.(N(ttypet TupleTypetListTypet_flattentNone(Rtrestitem((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR`s cCs�t|�tkr|St|�ttfkr2|Si}xqt|�D]c}y|j|�WqEttfk r�}dG|GHx(|j�D]\}}|||<q�WqEXqEW|SdS(sInternal function.s_cnfmerge: fallback due to:N( RtDictionaryTypetNoneTypet StringTypeRtupdatetAttributeErrort TypeErrortitems(tcnfstcnftctmsgtktv((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _cnfmergems c Cs�|j|�}t|�dr.td��nt|�}i}xkt||�D]Z\}}t|�}|r�|ddkr�|d}n|r�||�}n|||<qPW|S(sReturn a properly formatted dict built from Tcl list pairs. If cut_minus is True, the supposed '-' prefix will be removed from keys. If conv is specified, it is used to convert values. Tcl list is expected to contain an even number of elements. isNTcl list representing a dict is expected to contain an even number of elementsit-i(t splitlistRtRuntimeErrortitertzipR( ttkR't cut_minustconvtttittdicttkeyR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _splitdict�s tEventcBseZdZRS(s�Container for the properties of an event. Instances of this type are generated if one of the following events occurs: KeyPress, KeyRelease - for keyboard events ButtonPress, ButtonRelease, Motion, Enter, Leave, MouseWheel - for mouse events Visibility, Unmap, Map, Expose, FocusIn, FocusOut, Circulate, Colormap, Gravity, Reparent, Property, Destroy, Activate, Deactivate - for window events. If a callback function for one of these events is registered using bind, bind_all, bind_class, or tag_bind, the callback is called with an Event as first argument. It will have the following attributes (in braces are the event types for which the attribute is valid): serial - serial number of event num - mouse button pressed (ButtonPress, ButtonRelease) focus - whether the window has the focus (Enter, Leave) height - height of the exposed window (Configure, Expose) width - width of the exposed window (Configure, Expose) keycode - keycode of the pressed key (KeyPress, KeyRelease) state - state of the event as a number (ButtonPress, ButtonRelease, Enter, KeyPress, KeyRelease, Leave, Motion) state - state as a string (Visibility) time - when the event occurred x - x-position of the mouse y - y-position of the mouse x_root - x-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) y_root - y-position of the mouse on the screen (ButtonPress, ButtonRelease, KeyPress, KeyRelease, Motion) char - pressed character (KeyPress, KeyRelease) send_event - see X/Windows documentation keysym - keysym of the event as a string (KeyPress, KeyRelease) keysym_num - keysym of the event as a number (KeyPress, KeyRelease) type - type of the event as a number widget - widget in which the event occurred delta - delta of wheel movement (MouseWheel) (t__name__t __module__t__doc__(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR6�s)cCsdadabdS(s�Inhibit setting of default root window. Call this function to inhibit that the first instance of Tk is used for windows without an explicit parent window. iN(t_support_default_rootRt _default_root(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt NoDefaultRoot�scCsdS(sInternal function.N((terr((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_tkerror�sicCs1yt|�}Wntk r#nXt|�dS(sBInternal function. Calling it will raise the exception SystemExit.N(tintt ValueErrort SystemExit(tcode((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_exit�s tVariablecBszeZdZdZdZdddd�Zd�Zd�Zd�Z d�Z d�ZeZd�Z d �Zd �ZRS(s�Class to define value holders for e.g. buttons. Subclasses StringVar, IntVar, DoubleVar, BooleanVar are specializations that constrain the type of the value returned from get().tcCs�|st}n|j�|_|j|_|r<||_ndtt�|_td7a|dk ru|j|�n:|jj |jj dd|j��s�|j|j�ndS(s.Construct a variable MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. tPY_VARitinfotexistsN(R;t_rootR.t_tkt_nametreprt_varnumRtsett getbooleantcallt_default(tselftmasterRtname((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__init__�s 'cCs�|jdkrdS|jj|jjdd|j��rP|jj|j�n|jdk r�x!|jD]}|jj|�qiWd|_ndS(sUnset the variable in Tcl.NRGRH(RJRRORPRKtglobalunsetvart_tclCommandst deletecommand(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__del__�s'cCs|jS(s'Return the name of the variable in Tcl.(RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__str__ scCs|jj|j|�S(sSet the variable to VALUE.(RJtglobalsetvarRK(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN scCs|jj|j�S(sReturn value of variable.(RJtglobalgetvarRK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgetscCs�t|d|j�j}tt|��}y |j}Wntk rJnXy||j}Wntk ronX|j j ||�|jdkr�g|_n|jj|�|j j dd|j||�|S(s Define a trace callback for the variable. MODE is one of "r", "w", "u" for read, write, undefine. CALLBACK must be a function which is called when the variable is read, written or undefined. Return the name of the callback. ttracetvariableN(tCallWrapperRRIt__call__RLtidtim_funcRR7RJt createcommandRWtappendRPRK(RRtmodetcallbacktftcbname((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttrace_variables cCs�|jjdd|j||�|jj|�d}xr|j�D],\}}|jj|�d|krBPqBqBW|jj|�y|jj|�Wntk r�nXdS(s�Delete the trace callback for a variable. MODE is one of "r", "w", "u" for read, write, undefine. CBNAME is the name of the callback returned from trace_variable or trace. R^tvdeleteiN( RJRPRKR*ttrace_vinfoRXRWtremoveR@(RRRfRitmtca((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt trace_vdelete-s cCs4t|jj|jj|jjdd|j���S(s&Return all trace callback information.R^tvinfo(RRJR*RPRK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRl>scCs(|jj|jjko'|j|jkS(s�Comparison for equality (==). Note: if the Variable's master matters to behavior also compare self._master == other._master (t __class__R7RK(RRtother((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__eq__BsN(R7R8R9RQRRWRURYRZRNR]RjR^RpRlRt(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRD�s t StringVarcBs/eZdZdZdddd�Zd�ZRS(s#Value holder for strings variables.REcCstj||||�dS(s6Construct a string variable. MASTER can be given as master widget. VALUE is an optional value (defaults to "") NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUNs cCs2|jj|j�}t|t�r(|St|�S(s#Return value of variable as string.(RJR\RKR t basestringR(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]ZsN(R7R8R9RQRRUR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRuKstIntVarcBs8eZdZdZdddd�Zd�Zd�ZRS(s#Value holder for integer variables.icCstj||||�dS(s7Construct an integer variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUds cCs.t|t�rt|�}ntj||�S(s;Set the variable to value, converting booleans to integers.(R tboolR?RDRN(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRNpscCst|jj|j��S(s/Return the value of the variable as an integer.(tgetintRJR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]vsN(R7R8R9RQRRURNR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRwas t DoubleVarcBs/eZdZdZdddd�Zd�ZRS(s!Value holder for float variables.gcCstj||||�dS(s6Construct a float variable. MASTER can be given as master widget. VALUE is an optional value (defaults to 0.0) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU}s cCst|jj|j��S(s,Return the value of the variable as a float.(t getdoubleRJR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]�sN(R7R8R9RQRRUR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRzzst BooleanVarcBs8eZdZeZdddd�Zd�Zd�ZRS(s#Value holder for boolean variables.cCstj||||�dS(s:Construct a boolean variable. MASTER can be given as master widget. VALUE is an optional value (defaults to False) NAME is an optional Tcl name (defaults to PY_VARnum). If NAME matches an existing variable and VALUE is omitted then the existing value is retained. N(RDRU(RRRSRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cCs"|jj|j|jj|��S(sSet the variable to VALUE.(RJR[RKRO(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN�scCs|jj|jj|j��S(s+Return the value of the variable as a bool.(RJROR\RK(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]�sN( R7R8R9tFalseRQRRURNR](((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR|�s cCstjj|�dS(sRun the main loop of Tcl.N(R;R.tmainloop(tn((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~�scCstjj|�S(s1Convert true and false to integer values 1 and 0.(R;R.RO(ts((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRO�stMisccBsDeZdZd�Zd�Zd�Zd�d�Zd�Zd�Z d�Z dd�ZeZd�d �Z d�d �Zddd�Zdd �ZeZeZd�Zd�ZeZd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�d�Zd�Z d�Z!dd�Z"d�Z#d�Z$d�Z%d�Z&d �Z'd!�Z(d"�Z)d#�Z*d�d$�Z+d%�Z,d&�Z-d�d'�Z.d(�Z/d)�Z0d*�Z1d+�Z2d,�Z3d-�Z4d�d.�Z5d�d/�Z6e6Z7d�d0�Z8dd1�Z9dd2�Z:d3�Z;d4�Z<d5�Z=d6�Z>dd7�Z?d8�Z@d9�ZAd:�ZBd;�ZCd<�ZDd=�ZEdd>�ZFd?�ZGd@�ZHdA�ZIdB�ZJddC�ZKdD�ZLdE�ZMdF�ZNdG�ZOdH�ZPdI�ZQdJ�ZRdK�ZSdL�ZTdM�ZUdN�ZVdO�ZWdP�ZXdQ�ZYdR�ZZdS�Z[dT�Z\dU�Z]dV�Z^dW�Z_dX�Z`dY�ZaddZ�Zbd[�Zcd\�Zdd]�Zed^�Zfd_�Zgd`�Zhda�Zidb�Zjdc�Zkdd�Zlde�Zmd�df�Zndgdh�Zod�d�d�di�Zpd�dj�Zqd�d�d�dk�Zrdl�Zsd�d�d�dm�Ztdn�Zuddo�Zvdp�Zwdq�Zxdr�Zyds�Zzdt�Z{e|du��Z}d�dv�Z~dw�ZeZ�d�dgdx�Z�e�Z�dy�Z�d�Z�d�j�e��Z�d��Z�d��Z�d��Z�d��Z�d��Z�d�d��Z�e�Z�d��Z�e�Z�d��Z�d��Z�d��Z�d��Z�d�gZ�e�d��Z�e�Z�d��Z�e�Z�d��Z�d�d�d�d�d��Z�e�Z�d��Z�d��Z�id��Z�e�Z�d��Z�e�d��Z�id��Z�e�Z�d��Z�e�Z�d�d�d��Z�d��Z�d��Z�d��Z�d�d��Z�d��Z�d��Z�RS(�sRInternal class. Base class which defines methods common for interior widgets.cCsC|jdk r?x!|jD]}|jj|�qWd|_ndS(skInternal function. Delete all Tcl commands created for this widget in the Tcl interpreter.N(RWRR.RX(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytdestroy�scCs<|jj|�y|jj|�Wntk r7nXdS(sDInternal function. Delete the Tcl command provided in NAME.N(R.RXRWRmR@(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRX�s cCs"|jj|jjdd|��S(s�Set Tcl internal variable, whether the look and feel should adhere to Motif. A parameter of 1 means adhere to Motif (e.g. no color change if mouse passes over slider). Returns the set value.RNttk_strictMotif(R.RORP(RRtboolean((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|jjd�dS(sDChange the color scheme to light brown as used in Tk 3.6 and before.t tk_bisqueN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scOs.|jjdt|�t|j���dS(sSet a new color scheme for all widget elements. A single color as argument will cause that all colors of Tk widget elements are derived from this. Alternatively several keyword parameters and its associated colors can be given. The following keywords are valid: activeBackground, foreground, selectColor, activeForeground, highlightBackground, selectBackground, background, highlightColor, selectForeground, disabledForeground, insertBackground, troughColor.t tk_setPaletteN(R�(R.RPRR!(RRtargstkw((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cGs&ddl}|jdtdd�dS(s)Do not use. Needed in Tk 3.6 and earlier.i����Ns4tk_menuBar() does nothing and will be removed in 3.6t stackleveli(twarningstwarntDeprecationWarning(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tk_menuBar�s RFcCs|jjdd|�dS(s�Wait until the variable is modified. A parameter of type IntVar, StringVar, DoubleVar or BooleanVar must be given.ttkwaitR_N(R.RP(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wait_variable�scCs2|dkr|}n|jjdd|j�dS(sQWait until a WIDGET is destroyed. If no parameter is given self is used.R�twindowN(RR.RPt_w(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwait_window�s cCs2|dkr|}n|jjdd|j�dS(sxWait until the visibility of a WIDGET changes (e.g. it appears). If no parameter is given self is used.R�t visibilityN(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwait_visibility�s t1cCs|jj||�dS(sSet Tcl variable NAME to VALUE.N(R.tsetvar(RRRTR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|�S(s"Return value of Tcl variable NAME.(R.tgetvar(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|�S(sPReturn a boolean value for Tcl boolean values true and false given as parameter.(R.RO(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRO scCs|jjd|j�dS(s�Direct input focus to this widget. If the application currently does not have the focus this widget will get the focus if the application gets the focus through the window manager.tfocusN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_setscCs|jjdd|j�dS(stDirect input focus to this widget even if the application does not have the focus. Use with caution!R�s-forceN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfocus_forcescCs6|jjd�}|dks%|r)dS|j|�S(s�Return the widget which has currently the focus in the application. Use focus_displayof to allow working with several displays. Return None if application does not have the focus.R�tnoneN(R.RPRt _nametowidget(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_getscCs?|jjdd|j�}|dks.|r2dS|j|�S(s�Return the widget which has currently the focus on the display where this widget is located. Return None if the application does not have the focus.R�s -displayofR�N(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfocus_displayof#scCs?|jjdd|j�}|dks.|r2dS|j|�S(syReturn the widget which would have the focus if top level for this widget gets the focus from the window manager.R�s-lastforR�N(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt focus_lastfor+scCs|jjd�dS(sXThe widget under mouse will get automatically focus. Can not be disabled easily.ttk_focusFollowsMouseN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�1scCs/|jjd|j�}|s"dS|j|�S(snReturn the next widget in the focus order which follows widget which has currently the focus. The focus order first goes to the next child, then to the children of the child recursively and then to the next sibling which is higher in the stacking order. A widget is omitted if it has the takefocus resource set to 0.ttk_focusNextN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�5s cCs/|jjd|j�}|s"dS|j|�S(sHReturn previous widget in the focus order. See tk_focusNext for details.ttk_focusPrevN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Ascsj�s�jjd|�dS����fd�}�j|_�j|���jjd|��SdS(sCall function once after given time. MS specifies the time in milliseconds. FUNC gives the function which shall be called. Additional parameters are given as parameters to the function call. Return identifier to cancel scheduling with after_cancel.taftercs;z���Wdy�j��Wntk r5nXXdS(N(RXtTclError((R�tfuncRTRR(s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcallitRs N(R.RPRR7t _register(RRtmsR�R�R�((R�R�RTRRs&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�FscGs|jd||�S(s�Call FUNC once if the Tcl main loop has no event to process. Return an identifier to cancel the scheduling with after_cancel.tidle(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt after_idle]scCs�|std��ny?|jjdd|�}|jj|�d}|j|�Wntk rgnX|jjdd|�dS(s�Cancel scheduling of function identified with ID. Identifier returned by after or after_idle must be given as first parameter. s?id must be a valid identifier returned from after or after_idleR�RGitcancelN(R@R.RPR*RXR�(RRRbtdatatscript((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytafter_cancelds icCs!|jjd|j|��dS(sRing a display's bell.tbellN(R�(R.RPt _displayof(RRt displayof((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�tscKs�d|krd|jdkrdy+d|d<|jjd|j|��SWqdtk r`|d=qdXn|jjd|j|��S(s�Retrieve data from the clipboard on window's display. The window keyword defaults to the root window of the Tkinter application. The type keyword specifies the form in which the data is to be returned and should be an atom name such as STRING or FILE_NAME. Type defaults to STRING, except on X11, where the default is to try UTF8_STRING and fall back to STRING. This command is equivalent to: selection_get(CLIPBOARD) Rtx11tUTF8_STRINGt clipboardR](R�R](R�R](t_windowingsystemR.RPt_optionsR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt clipboard_getys ! cKs=d|kr|j|d<n|jjd|j|��dS(s�Clear the data in the Tk clipboard. A widget specified for the optional displayof keyword argument specifies the target display.R�R�tclearN(R�R�(R�R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytclipboard_clear�scKsGd|kr|j|d<n|jjd|j|�d|f�dS(s�Append STRING to the Tk clipboard. A widget specified at the optional displayof keyword argument specifies the target display. The clipboard can be retrieved with selection_get.R�R�Res--N(R�Re(R�R.RPR�(RRtstringR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytclipboard_append�s cCs2|jjdd|j�}|s%dS|j|�S(sOReturn widget which has currently the grab in this application or None.tgrabtcurrentN(R.RPR�RR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_current�scCs|jjdd|j�dS(s.Release grab for this widget if currently set.R�treleaseN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_release�scCs|jjdd|j�dS(swSet grab for this widget. A grab directs all events to this and descendant widgets in the application.R�RNN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_set�scCs |jjddd|j�dS(s�Set global grab for this widget. A global grab directs all events to this and descendant widgets on the display. Use with caution - other applications do not get events anymore.R�RNs-globalN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_set_global�scCs4|jjdd|j�}|dkr0d}n|S(sYReturn None, "local" or "global" if this widget has no, a local or a global grab.R�tstatusR�N(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrab_status�s cCs |jjdd|||�dS(s�Set a VALUE (second parameter) for an option PATTERN (first parameter). An optional third parameter gives the numeric priority (defaults to 80).toptiontaddN(R.RP(RRtpatternRtpriority((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt option_add�scCs|jjdd�dS(sPClear the option database. It will be reloaded if option_add is called.R�R�N(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytoption_clear�scCs|jjdd|j||�S(s�Return the value for an option NAME for this widget with CLASSNAME. Values with higher priority override lower values.R�R](R.RPR�(RRRTt className((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt option_get�scCs|jjdd||�dS(svRead file FILENAME into the option database. An optional second parameter gives the numeric priority.R�treadfileN(R.RP(RRtfileNameR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytoption_readfile�scKs=d|kr|j|d<n|jjd|j|��dS(sClear the current X selection.R�t selectionR�N(R�R�(R�R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_clear�scKs�d|kr|j|d<nd|kr�|jdkr�y+d|d<|jjd|j|��SWq�tk r||d=q�Xn|jjd|j|��S( s�Return the contents of the current X selection. A keyword parameter selection specifies the name of the selection and defaults to PRIMARY. A keyword parameter displayof specifies a widget on the display to use. A keyword parameter type specifies the form of data to be fetched, defaulting to STRING except on X11, where UTF8_STRING is tried before STRING.R�RR�R�R�R](R�R](R�R](R�R�R.RPR�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_get�s ! cKs=|j|�}|jjd|j|�|j|f�dS(sSpecify a function COMMAND to call if the X selection owned by this widget is queried by another application. This function must return the contents of the selection. The function will be called with the arguments OFFSET and LENGTH which allows the chunking of very long selections. The following keyword parameters can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).R�thandleN(R�R�(R�R.RPR�R�(RRtcommandR�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_handle�s cKs+|jjd|j|�|jf�dS(s�Become owner of X selection. A keyword parameter selection specifies the name of the selection (default PRIMARY).R�townN(R�R�(R.RPR�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_own�s cKsRd|kr|j|d<n|jjd|j|��}|sEdS|j|�S(s�Return owner of X selection. The following keyword parameter can be provided: selection - name of the selection (default PRIMARY), type - type of the selection (e.g. STRING, FILE_NAME).R�R�R�(R�R�N(R�R.RPR�RR�(RRR�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_own_getscGs|jjd||f|�S(sDSend Tcl command CMD to different interpreter INTERP to be executed.tsend(R.RP(RRtinterptcmdR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jjd|j|�dS(s(Lower this widget in the stacking order.tlowerN(R.RPR�(RRt belowThis((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jjd|j|�dS(s(Raise this widget in the stacking order.traiseN(R.RPR�(RRt aboveThis((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttkraisescCs|jjdd|j|�S(sUseless. Not implemented in Tk.R.t colormodel(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs0d|j|�|f}t|jj|��S(s*Return integer which represents atom NAME.twinfotatom(R�R�(R�RyR.RP(RRRTR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_atomscCs*d|j|�|f}|jj|�S(s'Return name of atom with identifier ID.R�tatomname(R�R�(R�R.RP(RRRbR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_atomnamescCst|jjdd|j��S(s7Return number of cells in the colormap for this widget.R�tcells(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_cells!scCsjg}x]|jj|jjdd|j��D]4}y|j|j|��Wq.tk raq.Xq.W|S(s?Return a list of all widgets which are children of this widget.R�tchildren(R.R*RPR�ReR�tKeyError(RRtresulttchild((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_children%s" cCs|jjdd|j�S(s(Return window class name of this widget.R�tclass(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_class2scCs%|jj|jjdd|j��S(s?Return true if at the last color request the colormap was full.R�tcolormapfull(R.RORPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_colormapfull5s cCsFd|j|�||f}|jj|�}|s9dS|j|�S(s@Return the widget which is at the root coordinates ROOTX, ROOTY.R�t containing(R�R�N(R�R.RPRR�(RRtrootXtrootYR�R�RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_containing9s cCst|jjdd|j��S(s$Return the number of bits per pixel.R�tdepth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_depth@scCst|jjdd|j��S(s"Return true if this widget exists.R�RH(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_existsCscCs"t|jjdd|j|��S(sWReturn the number of pixels for the given distance NUMBER (e.g. "3c") as float.R�tfpixels(R{R.RPR�(RRtnumber((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_fpixelsGscCs|jjdd|j�S(sFReturn geometry string for this widget in the form "widthxheight+X+Y".R�tgeometry(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_geometryLscCst|jjdd|j��S(sReturn height of this widget.R�theight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_heightOscCs"t|jjdd|j�d�S(s%Return identifier ID for this widget.R�Rbi(R?R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_idSscCs/d|j|�}|jj|jj|��S(s9Return the name of all Tcl interpreters for this display.R�tinterps(R�R(R�R.R*RP(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_interpsVscCst|jjdd|j��S(s%Return true if this widget is mapped.R�tismapped(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_ismappedZscCs|jjdd|j�S(s/Return the window manager name for this widget.R�tmanager(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_manager^scCs|jjdd|j�S(sReturn the name of this widget.R�RT(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_nameascCs|jjdd|j�S(s-Return the name of the parent of this widget.R�tparent(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_parentdscCs*d|j|�|f}|jj|�S(s.Return the pathname of the widget given by ID.R�tpathname(R�R (R�R.RP(RRRbR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pathnamegscCs"t|jjdd|j|��S(s'Rounded integer value of winfo_fpixels.R�tpixels(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pixelslscCst|jjdd|j��S(s:Return the x coordinate of the pointer on the root window.R�tpointerx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointerxpscCs"|j|jjdd|j��S(sHReturn a tuple of x and y coordinates of the pointer on the root window.R�t pointerxy(t_getintsR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointerxytscCst|jjdd|j��S(s:Return the y coordinate of the pointer on the root window.R�tpointery(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_pointeryxscCst|jjdd|j��S(s'Return requested height of this widget.R�t reqheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_reqheight|scCst|jjdd|j��S(s&Return requested width of this widget.R�treqwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_reqwidth�scCs%|j|jjdd|j|��S(sUReturn tuple of decimal values for red, green, blue for COLOR in this widget.R�trgb(RR.RPR�(RRtcolor((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt winfo_rgb�scCst|jjdd|j��S(sSReturn x coordinate of upper left corner of this widget on the root window.R�trootx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_rootx�scCst|jjdd|j��S(sSReturn y coordinate of upper left corner of this widget on the root window.R�trooty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_rooty�scCs|jjdd|j�S(s&Return the screen name of this widget.R�tscreen(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screen�scCst|jjdd|j��S(sTReturn the number of the cells in the colormap of the screen of this widget.R�tscreencells(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screencells�scCst|jjdd|j��S(s\Return the number of bits per pixel of the root window of the screen of this widget.R�tscreendepth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screendepth�scCst|jjdd|j��S(sXReturn the number of pixels of the height of the screen of this widget in pixel.R�tscreenheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenheight�scCst|jjdd|j��S(sUReturn the number of pixels of the height of the screen of this widget in mm.R�tscreenmmheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenmmheight�scCst|jjdd|j��S(sTReturn the number of pixels of the width of the screen of this widget in mm.R�t screenmmwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenmmwidth�scCs|jjdd|j�S(s�Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the default colormodel of this screen.R�tscreenvisual(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenvisual�scCst|jjdd|j��S(sWReturn the number of pixels of the width of the screen of this widget in pixel.R�tscreenwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_screenwidth�scCs|jjdd|j�S(sxReturn information of the X-Server of the screen of this widget in the form "XmajorRminor vendor vendorVersion".R�tserver(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_server�scCs"|j|jjdd|j��S(s*Return the toplevel widget of this widget.R�ttoplevel(R�R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_toplevel�scCst|jjdd|j��S(sBReturn true if the widget and all its higher ancestors are mapped.R�tviewable(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_viewable�scCs|jjdd|j�S(s�Return one of the strings directcolor, grayscale, pseudocolor, staticcolor, staticgray, or truecolor for the colormodel of this widget.R�tvisual(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visual�scCs|jjdd|j�S(s7Return the X identifier for the visual for this widget.R�tvisualid(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visualid�scCsp|jj|jjdd|j|r*dp-d��}t|�tkr`|jj|�g}nt|j|�S(s�Return a list of all visuals available for the screen of this widget. Each item in the list consists of a visual name (see winfo_visual), a depth and if INCLUDEIDS=1 is given also the X identifier.R�tvisualsavailablet includeidsN( R.tsplitRPR�RRRRt_Misc__winfo_parseitem(RRR;R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_visualsavailable�s cCs"|d tt|j|d��S(sInternal function.i(RRt_Misc__winfo_getint(RRR1((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__winfo_parseitem�scCs t|d�S(sInternal function.i(R?(RRtx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__winfo_getint�scCst|jjdd|j��S(s�Return the height of the virtual root window associated with this widget in pixels. If there is no virtual root window return the height of the screen.R�tvrootheight(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootheight�scCst|jjdd|j��S(s�Return the width of the virtual root window associated with this widget in pixel. If there is no virtual root window return the width of the screen.R�t vrootwidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootwidth�scCst|jjdd|j��S(siReturn the x offset of the virtual root relative to the root window of the screen of this widget.R�tvrootx(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrootx�scCst|jjdd|j��S(siReturn the y offset of the virtual root relative to the root window of the screen of this widget.R�tvrooty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_vrooty�scCst|jjdd|j��S(s Return the width of this widget.R�twidth(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_width�scCst|jjdd|j��S(sVReturn the x coordinate of the upper left corner of this widget in the parent.R�RA(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_x�scCst|jjdd|j��S(sVReturn the y coordinate of the upper left corner of this widget in the parent.R�ty(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwinfo_y�scCs|jjd�dS(sEEnter event loop until all pending events have been processed by Tcl.RN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRscCs|jjdd�dS(s�Enter event loop until all idle callbacks have been called. This will update the display of windows but not process events caused by the user.Rt idletasksN(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytupdate_idletasksscCsK|dkr.|jj|jjd|j��S|jjd|j|�dS(s,Set or get the list of bindtags for this widget. With no argument return the list of all bindtags associated with this widget. With a list of strings as argument the bindtags are set to this list. The bindtags determine in which order events are processed (see bind).tbindtagsN(RR.R*RPR�(RRttagList((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRRs icCs�t|�tkr/|jj|||f�n�|r�|j||j|�}d|r\dp_d||jf}|jj|||f�|S|r�|jj||f�S|jj|jj|��SdS(sInternal function.s"%sif {"[%s %s]" == "break"} break t+REN(RRR.RPR�t_substitutet_subst_format_strR*(RRtwhattsequenceR�R�tneedcleanuptfuncidR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_binds cCs|jd|jf|||�S(sOBind to this widget at event SEQUENCE a call to function FUNC. SEQUENCE is a string of concatenated event patterns. An event pattern is of the form <MODIFIER-MODIFIER-TYPE-DETAIL> where MODIFIER is one of Control, Mod2, M2, Shift, Mod3, M3, Lock, Mod4, M4, Button1, B1, Mod5, M5 Button2, B2, Meta, M, Button3, B3, Alt, Button4, B4, Double, Button5, B5 Triple, Mod1, M1. TYPE is one of Activate, Enter, Map, ButtonPress, Button, Expose, Motion, ButtonRelease FocusIn, MouseWheel, Circulate, FocusOut, Property, Colormap, Gravity Reparent, Configure, KeyPress, Key, Unmap, Deactivate, KeyRelease Visibility, Destroy, Leave and DETAIL is the button number for ButtonPress, ButtonRelease and DETAIL is the Keysym for KeyPress and KeyRelease. Examples are <Control-Button-1> for pressing Control and mouse button 1 or <Alt-A> for pressing A and the Alt key (KeyPress can be omitted). An event pattern can also be a virtual event of the form <<AString>> where AString can be arbitrary. This event can be generated by event_generate. If events are concatenated they must appear shortly after each other. FUNC will be called if the event sequence occurs with an instance of Event as argument. If the return value of FUNC is "break" no further bound function is invoked. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. Bind will return an identifier to allow deletion of the bound function with unbind without memory leak. If FUNC or SEQUENCE is omitted the bound function or list of bound events are returned.tbind(R[R�(RRRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR\(s'cCs6|jjd|j|d�|r2|j|�ndS(sWUnbind for this widget for event SEQUENCE the function identified with FUNCID.R\REN(R.RPR�RX(RRRXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytunbindPscCs|jd|||d�S(sBind to all widgets at an event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\talli(R\R^(R[(RRRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytbind_allVscCs|jjdd|d�dS(s8Unbind for all widgets for event SEQUENCE all functions.R\R^REN(R.RP(RRRX((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt unbind_all\scCs|jd|f|||d�S(s=Bind to widgets with bindtag CLASSNAME at event SEQUENCE a call of function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\i(R[(RRR�RXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt bind_class_s cCs|jjd||d�dS(sWUnbind for all widgets with bindtag CLASSNAME for event SEQUENCE all functions.R\REN(R.RP(RRR�RX((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytunbind_classiscCs|jj|�dS(sCall the mainloop of Tk.N(R.R~(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~mscCs|jj�dS(s8Quit the Tcl interpreter. All widgets will be destroyed.N(R.tquit(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRcpscCs)|r%ttt|jj|���SdS(sInternal function.N(RRRyR.R*(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRsscCs)|r%ttt|jj|���SdS(sInternal function.N(RRR{R.R*(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getdoubleswscCs|r|jj|�SdS(sInternal function.N(R.RO(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getboolean{scCs-|rd|fS|dkr)d|jfSdS(sInternal function.s -displayofN((RR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�s cCsLy|j�jSWn4tk rG|jjdd�}|j�_|SXdS(sInternal function.R.twindowingsystemN(RIt_windowingsystem_cachedRR.RP(RRtws((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s "cCsE|rt||f�}nt|�}d}x|j�D]\}}|dk r:|ddkro|d }nt|d�r�|j|�}n�t|ttf�r&g}xx|D]^}t|tt t f�s�Pq�t|t t f�r�|jd|�q�|jt|��q�Wdj |�}n|d||f}q:q:W|S( sInternal function.i����t_Ras%dRR)(N(R(R!RthasattrR�R RR RvR?tlongReRR(RRR#R�RR&R'tnvR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s* cCsjt|�jd�}|}|ds>|j�}|d}nx%|D]}|sUPn|j|}qEW|S(sPReturn the Tkinter instance of a widget identified by its Tcl name NAME.t.ii(RR<RIR�(RRRTtwR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytnametowidget�s cCs�t|||�j}tt|��}y |j}Wntk rGnXy||j}Wntk rlnX|jj||�|r�|j dkr�g|_ n|j j|�n|S(s�Return a newly created Tcl function. If this function is called, the Python function FUNC will be executed. An optional function SUBST can be given which will be executed before FUNC.N(R`RaRLRbRcRR7R.RdRWRRe(RRR�tsubstRYRhRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs#|}x|jr|j}q W|S(sInternal function.(RS(RRRn((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRI�s s%#s%bs%fs%hs%ks%ss%ts%ws%xs%ys%As%Es%Ks%Ns%Ws%Ts%Xs%Ys%DRcGs t|�t|j�kr|S|jj}t}d�}|\}}}}} } }}} }}}}}}}}}}t�}||�|_||�|_y||�|_Wnt k r�nX||�|_ || �|_|| �|_||�|_ ||�|_|| �|_||�|_||_y||�|_Wnt k r_nX||_||�|_||_y|j|�|_Wntk r�||_nX||�|_||�|_y||�|_Wntk rd|_nX|fS(sInternal function.cSs'yt|�SWntk r"|SXdS(s?Tk changed behavior in 8.4.2, returning "??" rather more often.N(R?R@(R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgetint_event�s i(Rt _subst_formatR.ROR?R6tserialtnumR�R�R�tkeycodetstatettimeRKRARNtchart send_eventtkeysymt keysym_numRR�twidgetR�tx_rootty_roottdeltaR@(RRR�RORyRqtnsigntbRhthR&R�R1RnRARNtAtEtKtNtWtTtXtYtDte((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�sN ? cCsLddl}|j|j|j}}}|j�}|j|||�dS(sInternal function.i����N(tsystexc_typet exc_valuet exc_tracebackRItreport_callback_exception(RRR�texctvalttbtroot((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_report_exceptionscGsji}x]|jj|jj|��D]=}|jj|�}|ddf|d||dd<q%W|S(s;Call Tcl configure command and return the result as a dict.ii(R.R*RP(RRR�R#RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _getconfigures %)cGs5|jj|jj|��}|ddf|dS(Nii(R.R*RP(RRR�RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_getconfigure1!scCs�|rt||f�}n|r0t|�}n|dkrX|jt|j|f��St|�tkr�|jt|j|d|f��S|jj t|j|f�|j |��dS(sInternal function.R)N(R(RR�RR�RRR�R.RPR�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt _configure%s#cKs|jd||�S(s�Configure resources of a widget. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method keys. t configure(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�1scCs|jj|jdd|�S(s4Return the resource value for a KEY given as string.tcgetR)(R.RPR�(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�:scCs|ji||6�dS(N(R�(RRR4R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__setitem__>scCstd��dS(Ns)Tkinter objects don't support 'in' tests.(R (RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__contains__@scCsI|jj}g||jj|jd��D]}||�dd^q+S(s3Return a list of all resource names of this widget.R�ii(R.R*RPR�(RRR*RA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytkeysBscCs|jS(s+Return the window path name of this widget.(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZGst_noarg_cCsQ|tjkr1|j|jjdd|j��S|jjdd|j|�dS(sSet or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given the current setting will be returned. tpackt propagateN(R�R�ReR.RPR�(RRtflag((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_propagateLscCs1t|j|jj|jjdd|j���S(sHReturn a list of all slaves of this widget in its packing order.R�tslaves(RR�R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_slavesYs cCs1t|j|jj|jjdd|j���S(sHReturn a list of all slaves of this widget in its packing order.tplaceR�(RR�R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_slavesas cCs�dd|jf}|dk r=|dk r=|||f}n|dk rh|dk rh|||f}n|j|jj|��p�dS(s�Return a tuple of integer coordinates for the bounding box of this widget controlled by the geometry manager grid. If COLUMN, ROW is given the bounding box applies from the cell with row and column 0 to the specified cell. If COL2 and ROW2 are given the bounding box starts at that cell. The returned integers specify the offset of the upper left corner in the master widget and the width and height. tgridtbboxN(R�RRR.RP(RRtcolumntrowtcol2trow2R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_bboxiscCsmt|ttjf�riy:t|�}|s1dSd|krGt|�St|�SWqitk reqiXn|S(NRm(R Rt_tkintertTcl_ObjRR{RyR@(RRRtsvalue((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_gridconvvalue~s cCs�t|�tkr_|r_|ddkr6|d }n|d dkrSd|}n|f}n|j||�}|s�t|j|jjd||j|�d|j�S|jjd||j|f|�}t|�dkr�|j|�SdS(sInternal function.i����RiiR)R�R0N( RRR�R5R.RPR�R�R(RRR�tindexR#R�toptionsR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_grid_configure�s" cKs|jd|||�S(s�Configure column INDEX of a grid. Valid resources are minsize (minimum size of the column), weight (how much does additional space propagate to this column) and pad (how much space to let additionally).tcolumnconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_columnconfigure�scCs.|j|jjdd|j||��p-dS(s�Return a tuple of column and row which identify the cell at which the pixel at position X and Y inside the master widget is located.R�tlocationN(RR.RPR�R(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_location�s cCsQ|tjkr1|j|jjdd|j��S|jjdd|j|�dS(sSet or get the status for propagation of geometry information. A boolean argument specifies whether the geometry information of the slaves will determine the size of this widget. If no argument is given, the current setting will be returned. R�R�N(R�R�ReR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_propagate�scKs|jd|||�S(s�Configure row INDEX of a grid. Valid resources are minsize (minimum size of the row), weight (how much does additional space propagate to this row) and pad (how much space to let additionally).trowconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_rowconfigure�scCs(|j|jjdd|j��p'dS(s<Return a tuple of the number of column and rows in the grid.R�tsizeN(RR.RPR�R(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_size�scCs|d}|dk r%|d|f}n|dk rD|d|f}nt|j|jj|jjdd|jf|���S(sHReturn a list of all slaves of this widget in its packing order.s-rows-columnR�R�(N(RRR�R.R*RPR�(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_slaves�s cGs'dd|f|}|jj|�dS(s�Bind a virtual event VIRTUAL (of the form <<Name>>) to an event SEQUENCE such that the virtual event is triggered whenever SEQUENCE occurs.teventR�N(R.RP(RRtvirtualt sequencesR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt event_add�scGs'dd|f|}|jj|�dS(s-Unbind a virtual event VIRTUAL from SEQUENCE.R�tdeleteN(R.RP(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytevent_delete�scKs`dd|j|f}x4|j�D]&\}}|d|t|�f}q"W|jj|�dS(s�Generate an event SEQUENCE. Additional keyword arguments specify parameter of the event (e.g. x, y, rootx, rooty).R�tgenerates-%sN(R�R!RR.RP(RRRXR�R�R&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytevent_generate�scCs"|jj|jjdd|��S(suReturn a list of all virtual events or the information about the SEQUENCE bound to the virtual event VIRTUAL.R�RG(R.R*RP(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt event_info�s cCs|jj|jjdd��S(s*Return a list of all existing image names.timagetnames(R.R*RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_names�scCs|jj|jjdd��S(s?Return a list of all available image types (e.g. photo bitmap).R�ttypes(R.R*RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_types�sN(s%#s%bs%fs%hs%ks%ss%ts%ws%xs%ys%As%Es%Ks%Ns%Ws%Ts%Xs%Ys%D(�R7R8R9RRWR�RXR�R�R�R�R�twaitvarR�R�R�R�R?RytfloatR{ROR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�tliftR�R�R�R�R�R�R�R�R�R�R�R�R�RRRRRR RR RRRRRRRRR!R#R%R'R)R+R-R/R1R3R5R7R9R>R=R?RDRFRHRJRLRMRORRQRRR[R\R]R_R`RaRbR~RcRRdReR�tpropertyR�R�RoR�R�tregisterRIRrRRVRUR�R�R�R�R�tconfigR�t__getitem__R�R�R�RZR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sP ( 9 R`cBs eZdZd�Zd�ZRS(swInternal class. Stores function to call when some user defined Tcl function is called e.g. after an event occurred.cCs||_||_||_dS(s(Store FUNC, SUBST and WIDGET as members.N(R�RpR|(RRR�RpR|((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUs cGsby,|jr|j|�}n|j|�SWn/tk rJ}t|�n|jj�nXdS(s3Apply first function SUBST to arguments, than FUNC.N(RpR�RAR|R�(RRR�R%((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRas (R7R8R9RURa(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR`�s tXViewcBs)eZdZd�Zd�Zd�ZRS(sXMix-in class for querying and changing the horizontal position of a widget's window.cGs2|jj|jd|�}|s.|j|�SdS(s5Query and change the horizontal position of the view.txviewN(R.RPR�Rd(RRR�R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs |jj|jdd|�dS(ssAdjusts the view in the window so that FRACTION of the total width of the canvas is off-screen to the left.R�tmovetoN(R.RPR�(RRtfraction((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytxview_movetoscCs#|jj|jdd||�dS(s\Shift the x-view according to NUMBER which is measured in "units" or "pages" (WHAT).R�tscrollN(R.RPR�(RRR�RW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytxview_scroll!s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�s tYViewcBs)eZdZd�Zd�Zd�ZRS(sVMix-in class for querying and changing the vertical position of a widget's window.cGs2|jj|jd|�}|s.|j|�SdS(s3Query and change the vertical position of the view.tyviewN(R.RPR�Rd(RRR�R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�+scCs |jj|jdd|�dS(ssAdjusts the view in the window so that FRACTION of the total height of the canvas is off-screen to the top.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_moveto1scCs#|jj|jdd||�dS(s\Shift the y-view according to NUMBER which is measured in "units" or "pages" (WHAT).R�R�N(R.RPR�(RRR�RW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_scroll6s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�'s tWmcBseZdZddddd�ZeZd�ZeZdd�ZeZ d�Z e Zdd�ZeZ d�ZeZdd�ZeZd�ZeZdd �ZeZddddd �ZeZdd�ZeZddd�ZeZd �ZeZdd�ZeZdd�Z e Z!ddd�Z"e"Z#dd�Z$e$Z%ddd�Z&e&Z'ddd�Z(e(Z)dd�Z*e*Z+dd�Z,e,Z-ddd�Z.e.Z/ddd�Z0e0Z1dd�Z2e2Z3dd�Z4e4Z5dd�Z6e6Z7dd�Z8e8Z9d�Z:e:Z;RS(sAProvides functions for the communication with the window manager.c Cs.|j|jjdd|j||||��S(s�Instruct the window manager to set the aspect ratio (width/height) of this widget to be between MINNUMER/MINDENOM and MAXNUMER/MAXDENOM. Return a tuple of the actual values if no argument is given.twmtaspect(RR.RPR�(RRtminNumertminDenomtmaxNumertmaxDenom((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_aspect?scGs&dd|jf|}|jj|�S(s�This subcommand returns or sets platform specific attributes The first form returns a list of the platform specific flags and their values. The second form returns the value for the specific option. The third form sets one or more of the values. The values are as follows: On Windows, -disabled gets or sets whether the window is in a disabled state. -toolwindow gets or sets the style of the window to toolwindow (as defined in the MSDN). -topmost gets or sets whether this is a topmost window (displays above all other windows). On Macintosh, XXXXX On Unix, there are currently no special attribute values. R�t attributes(R�R.RP(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_attributesKscCs|jjdd|j|�S(sVStore NAME in WM_CLIENT_MACHINE property of this widget. Return current value.R�tclient(R.RPR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_clientascGsyt|�dkr|f}ndd|jf|}|rM|jj|�n(t|j|jj|jj|���SdS(s�Store list of window names (WLIST) into WM_COLORMAPWINDOWS property of this widget. This list contains windows whose colormaps differ from their parents. Return current list of widgets if WLIST is empty.iR�tcolormapwindowsN(RR�R.RPRR�R*(RRtwlistR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_colormapwindowsfscCs|jjdd|j|�S(s�Store VALUE in WM_COMMAND property. It is the command which shall be used to invoke the application. Return current command if VALUE is None.R�R�(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_commandrscCs|jjdd|j�S(s�Deiconify this widget. If it was never mapped it will not be mapped. On Windows it will raise this widget and give it the focus.R�t deiconify(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_deiconifyxscCs|jjdd|j|�S(s�Set focus model to MODEL. "active" means that this widget will claim the focus itself, "passive" means that the window manager shall give the focus. Return current focus model if MODEL is None.R�t focusmodel(R.RPR�(RRtmodel((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_focusmodel}scCs|jjdd|j�S(sAReturn identifier for decorative frame of this widget if present.R�tframe(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_frame�scCs|jjdd|j|�S(siSet geometry to NEWGEOMETRY of the form =widthxheight+x+y. Return current value if None is given.R�R�(R.RPR�(RRtnewGeometry((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_geometry�sc Cs.|j|jjdd|j||||��S(sInstruct the window manager that this widget shall only be resized on grid boundaries. WIDTHINC and HEIGHTINC are the width and height of a grid unit in pixels. BASEWIDTH and BASEHEIGHT are the number of grid units requested in Tk_GeometryRequest.R�R�(RR.RPR�(RRt baseWidtht baseHeighttwidthInct heightInc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_grid�scCs|jjdd|j|�S(s~Set the group leader widgets for related widgets to PATHNAME. Return the group leader of this widget if None is given.R�tgroup(R.RPR�(RRtpathName((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_group�scCsE|r%|jjdd|jd|�S|jjdd|j|�SdS(s�Set bitmap for the iconified widget to BITMAP. Return the bitmap if None is given. Under Windows, the DEFAULT parameter can be used to set the icon for the widget and any descendents that don't have an icon set explicitly. DEFAULT can be the relative path to a .ico file (example: root.iconbitmap(default='myicon.ico') ). See Tk documentation for more information.R�t iconbitmaps-defaultN(R.RPR�(RRtbitmaptdefault((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconbitmap�s cCs|jjdd|j�S(sDisplay widget as icon.R�ticonify(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconify�scCs|jjdd|j|�S(sVSet mask for the icon bitmap of this widget. Return the mask if None is given.R�ticonmask(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconmask�scCs|jjdd|j|�S(sSSet the name of the icon for this widget. Return the name if None is given.R�ticonname(R.RPR�(RRtnewName((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconname�scCs(|j|jjdd|j||��S(s�Set the position of the icon of this widget to X and Y. Return a tuple of the current values of X and X if None is given.R�ticonposition(RR.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_iconposition�scCs|jjdd|j|�S(sgSet widget PATHNAME to be displayed instead of icon. Return the current value if None is given.R�t iconwindow(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_iconwindow�scCs(|j|jjdd|j||��S(s�Set max WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.R�tmaxsize(RR.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_maxsize�scCs(|j|jjdd|j||��S(s�Set min WIDTH and HEIGHT for this widget. If the window is gridded the values are given in grid units. Return the current values if None is given.R�tminsize(RR.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt wm_minsize�scCs%|j|jjdd|j|��S(s�Instruct the window manager to ignore this widget if BOOLEAN is given with 1. Return the current value if None is given.R�toverrideredirect(ReR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_overrideredirect�scCs|jjdd|j|�S(s�Instruct the window manager that the position of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".R�tpositionfrom(R.RPR�(RRtwho((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_positionfrom�scCsFt|d�r!|j|�}n|}|jjdd|j||�S(s�Bind function FUNC to command NAME for this widget. Return the function bound to NAME if None is given. NAME could be e.g. "WM_SAVE_YOURSELF" or "WM_DELETE_WINDOW".RaR�tprotocol(RjR�R.RPR�(RRRTR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_protocol�s cCs|jjdd|j||�S(syInstruct the window manager whether this width can be resized in WIDTH or HEIGHT. Both values are boolean values.R�t resizable(R.RPR�(RRRKR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_resizable�scCs|jjdd|j|�S(s�Instruct the window manager that the size of this widget shall be defined by the user if WHO is "user", and by its own policy if WHO is "program".R�tsizefrom(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_sizefrom�scCs|jjdd|j|�S(s�Query or set the state of this widget as one of normal, icon, iconic (see wm_iconwindow), withdrawn, or zoomed (Windows only).R�Rv(R.RPR�(RRtnewstate((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_state�scCs|jjdd|j|�S(sSet the title of this widget.R�ttitle(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_title�scCs|jjdd|j|�S(s_Instruct the window manager that this widget is transient with regard to widget MASTER.R�t transient(R.RPR�(RRRS((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_transient�scCs|jjdd|j�S(s�Withdraw this widget from the screen such that it is unmapped and forgotten by the window manager. Re-draw it with wm_deiconify.R�twithdraw(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_withdrawsN(<R7R8R9RR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�RR�RRRRRRRR R RRRRRRRRRRRRRRRRRR RvR"R!R$R#R&R%(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�<sv tTkcBseeZdZdZddddddd�Zd�Zd�Zd�Zd �Z d �Z d�ZRS( szToplevel widget of Tk which represents mostly the main window of an application. It has an associated Tcl interpreter.RmR'iic Cs�d|_i|_d|_d|_|dkr�ddl}|jjtj d�}|jj |�\}}|dkr�||}q�nd} tj|||| t |||�|_|r�|j�ntjjs�|j||�ndS(s@Return a new Toplevel widget on screen SCREENNAME. A new Tcl interpreter will be created. BASENAME will be used for the identification of the profile file (see readprofile). It is constructed from sys.argv[0] without extensions if None is given. CLASSNAME is the name of the widget class.ii����Ns.pys.pycs.pyo(s.pys.pycs.pyo(RRSR�t _tkloadedR.tostpathtbasenameR�targvtsplitextR�tcreatetwantobjectst_loadtktflagstignore_environmenttreadprofile( RRt screenNametbaseNameR�tuseTktsynctuseR)texttinteractive((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU s ' cCs'|js#|jj�|j�ndS(N(R(R.tloadtkR0(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR;'s cCs3d|_|jjd�}|tjkrCtdtj|f�nt|jjd��}|tjkr�tdtj|f�ntdkr�tdtt��n|j dkr�g|_ n|jjdt�|jjd t �|j jd�|j jd �trtr|an|jd |j�dS(Nit tk_versions4tk.h version (%s) doesn't match libtk.a version (%s)ttcl_versions6tcl.h version (%s) doesn't match libtcl.a version (%s)g@s)Tk 4.0 or higher is required; found Tk %sttkerrortexittWM_DELETE_WINDOW(R(R.R�R�t TK_VERSIONR+RtTCL_VERSIONt TkVersionRWRRdR>RCReR:R;RR�(RRR<R=((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR0+s0 cCsfx!|jj�D]}|j�qW|jjd|j�tj|�trbt|krbdandS(shDestroy this and all descendants widgets. This will end the application of this Tcl interpreter.R�N( R�tvaluesR�R.RPR�R�R:R;R(RRR$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Js c BsEddl}d|jkr+|jd}n |j}|jj|d|�}|jj|d|�}|jj|d|�}|jj|d|�}i|d6} d| U|jj|�r�|jjd|�n|jj|�r�e|| �n|jj|�r|jjd|�n|jj|�rAe|| �ndS( s�Internal function. It reads BASENAME.tcl and CLASSNAME.tcl into the Tcl Interpreter and calls execfile on BASENAME.py and CLASSNAME.py if such a file exists in the home directory.i����NtHOMEs.%s.tcls.%s.pyRRsfrom Tkinter import *tsource( R)tenvirontcurdirR*RtisfileR.RPtexecfile( RRR5R�R)thomet class_tcltclass_pytbase_tcltbase_pytdir((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR3Ss$ cCsWddl}ddl}|jdIJ||_||_||_|j|||�dS(s�Report callback exception on sys.stderr. Applications may want to override this internal function, and should when sys.stderr is None.i����NsException in Tkinter callback(t tracebackR�tstderrt last_typet last_valuetlast_tracebacktprint_exception(RRR�R�R�RQR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�hs cCst|j|�S(s3Delegate attribute access to the interpreter object(tgetattrR.(RRtattr((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt__getattr__ssN(R7R8R9R�RRUR;R0R�R3R�RY(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR' s cCst||||�S(N(R'(R4R5R�R6((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytTcl�stPackcBs`eZdZid�ZeZZZd�ZeZd�Z e Z ejZ ZejZZRS(sQGeometry manager Pack. Base class to use the methods pack_* in every widget.cKs0|jjdd|jf|j||��dS(s(Pack a widget in the parent widget. Use as options: after=widget - pack it after you have packed widget anchor=NSEW (or subset) - position widget according to given direction before=widget - pack it before you will pack widget expand=bool - expand widget if parent size grows fill=NONE or X or Y or BOTH - fill widget if widget grows in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction side=TOP or BOTTOM or LEFT or RIGHT - where to add this widget. R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_configure�s cCs|jjdd|j�dS(s:Unmap this widget and do not use it for the packing order.R�tforgetN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytpack_forget�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sEReturn information about the packing options for this widget.R�RGtin(R5R.RPR�Ro(RRtd((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt pack_info�s'(R7R8R9R\R�R�R�R^R]RaRGR�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR[�s tPlacecBsSeZdZid�ZeZZZd�ZeZd�Z e Z ejZ ZRS(sSGeometry manager Place. Base class to use the methods place_* in every widget.cKs0|jjdd|jf|j||��dS(s Place a widget in the parent widget. Use as options: in=master - master relative to which the widget is placed in_=master - see 'in' option description x=amount - locate anchor of this widget at position x of master y=amount - locate anchor of this widget at position y of master relx=amount - locate anchor of this widget between 0.0 and 1.0 relative to width of master (1.0 is right edge) rely=amount - locate anchor of this widget between 0.0 and 1.0 relative to height of master (1.0 is bottom edge) anchor=NSEW (or subset) - position anchor according to given direction width=amount - width of this widget in pixel height=amount - height of this widget in pixel relwidth=amount - width of this widget between 0.0 and 1.0 relative to width of master (1.0 is the same width as the master) relheight=amount - height of this widget between 0.0 and 1.0 relative to height of master (1.0 is the same height as the master) bordermode="inside" or "outside" - whether to take border width of master widget into account R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_configure�s cCs|jjdd|j�dS(sUnmap this widget.R�R]N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytplace_forget�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sEReturn information about the placing options for this widget.R�RGR_(R5R.RPR�Ro(RRR`((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt place_info�s'(R7R8R9RcR�R�R�RdR]ReRGR�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRb�s tGridcBs�eZdZid�ZeZZZejZ Zej ZZ d�ZeZ d�Zd�ZeZejZZejZZejZZejZZejZZRS(sQGeometry manager Grid. Base class to use the methods grid_* in every widget.cKs0|jjdd|jf|j||��dS(sPosition a widget in the parent widget in a grid. Use as options: column=number - use cell identified with given column (starting with 0) columnspan=number - this widget will span several columns in=master - use master to contain this widget in_=master - see 'in' option description ipadx=amount - add internal padding in x direction ipady=amount - add internal padding in y direction padx=amount - add padding in x direction pady=amount - add padding in y direction row=number - use cell identified with given row (starting with 0) rowspan=number - this widget will span several rows sticky=NSEW - if cell is larger on which sides will this widget stick to the cell boundary R�R�N(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_configure�s cCs|jjdd|j�dS(sUnmap this widget.R�R]N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_forget�scCs|jjdd|j�dS(s0Unmap this widget but remember the grid options.R�RmN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytgrid_remove�scCsQt|j|jjdd|j��}d|krM|j|d�|d<n|S(sSReturn information about the options for positioning this widget in a grid.R�RGR_(R5R.RPR�Ro(RRR`((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt grid_info�s'(R7R8R9RgR�R�R�R�R�R�R�R�RhR]RiRjRGR�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRf�s t BaseWidgetcBs>eZdZd�Ziidd�Zd�Zdd�ZRS(sInternal class.cCstr*|s*tst�ant}q*n||_|j|_d}d|kre|d}|d=n|s�tt|��}n||_|j dkr�d||_ n|j d||_ i|_ |j|jj kr�|jj |jj�n||jj |j<dS(s6Internal function. Sets up information about children.RTRmN(R:R;R'RSR.RRLRbRKR�R�R�(RRRSR#RT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_setup s* c Cs�|rt||f�}n||_tj|||�|jdkrRg|_ng}xG|j�D]9}t|�tkre|j |||f�||=qeqeW|j j||jf||j |��x$|D]\}}|j||�q�WdS(sdConstruct a widget with the parent widget MASTER, a name WIDGETNAME and appropriate options.N(R(t widgetNameRkRlRWRR�Rt ClassTypeReR.RPR�R�R�( RRRSRmR#R�textratclassesR&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU&s !cCssx!|jj�D]}|j�qW|jjd|j�|j|jjkrb|jj|j=ntj|�dS(s)Destroy this and all descendants widgets.R�N( R�RDR�R.RPR�RKRSR�(RRR$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�8scCs|jj|j|f|�S(N(R.RPR�(RRRTR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_do?s(((R7R8R9RlRUR�Rq(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRks tWidgetcBseZdZRS(sxInternal class. Base class for a widget which can be positioned with the geometry managers Pack, Place or Grid.(R7R8R9(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRrCstToplevelcBseZdZdid�ZRS(s"Toplevel widget, e.g. for dialogs.c Ks|rt||f�}nd}xxdddddgD]a}||kr7||}|ddkrtd|d }n d|}|||f}||=q7q7Wtj||d |i|�|j�}|j|j��|j|j��|jd |j�dS( s%Construct a toplevel widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, menu, relief, screen, takefocus, use, visual, width.R tclass_R�R6tcolormapi����RiR)R2R@N((R(RkRURIR R!RR�( RRRSR#R�RotwmkeyR�toptR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRULs" N(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRsJstButtoncBs\eZdZd id�Zd�Zd�Zd�Zd�Zd�Z d�Z d�ZRS( sButton widget.cKstj||d||�dS(sUConstruct a button widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, repeatdelay, repeatinterval, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS command, compound, default, height, overrelief, state, width tbuttonN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUhscGs|jjd|j�dS(Nt tkButtonEnter(R.RPR�(RRtdummy((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRz}scGs|jjd|j�dS(Nt tkButtonLeave(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR|�scGs|jjd|j�dS(NttkButtonDown(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR}�scGs|jjd|j�dS(Nt tkButtonUp(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR~�scGs|jjd|j�dS(NttkButtonInvoke(R.RPR�(RRR{((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�dS(s_Flash the button. This is accomplished by redisplaying the button several times, alternating between active and normal colors. At the end of the flash the button is left in the same normal/active state as when the command was invoked. This command is ignored if the button's state is disabled. tflashN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs|jj|jd�S(sInvoke the command associated with the button. The return value is the return value from the command, or an empty string if there is no command associated with the button. This command is ignored if the button's state is disabled. tinvoke(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sN(R7R8R9RRURzR|R}R~RR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRxfs cCsdS(Ntend((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAtEnd�scGs2d}x%|D]}|r |d|}q q W|S(NtinsertR((R�R�ta((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAtInsert�s cCsdS(Ns sel.first((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt AtSelFirst�scCsdS(Nssel.last((((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt AtSelLast�scCs)|dkrd|fSd||fSdS(Ns@%rs@%r,%r(R(RARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytAt�stCanvascBsIeZdZd:id�Zd�Zd�Zd�Zd�Zd:d:d�Z d�Z d�Zd �Zd �Z d:d�Zd:d:d:d�Zd:d �Zd:d�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d:d:d!�Z$d"�Z%d#�Z&d$�Z'd%�Z(d&�Z)d'�Z*d(�Z+d)�Z,d*�Z-d:d+�Z.e.Z/d,�Z0e0Z1d-�Z2id.�Z3d/�Z4e4Z5Z6d0�Z7d1�Z8d2d3�Z9d4�Z:d5�Z;d6�Z<d7�Z=d8�Z>d9�Z?RS(;s?Canvas widget to display graphical elements like lines or text.cKstj||d||�dS(sConstruct a canvas widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, closeenough, confine, cursor, height, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, offset, relief, scrollregion, selectbackground, selectborderwidth, selectforeground, state, takefocus, width, xscrollcommand, xscrollincrement, yscrollcommand, yscrollincrement.tcanvasN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cGs!|jj|jdf|�dS(sInternal function.taddtagN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|j|d|�dS(s*Add tag NEWTAG to all items above TAGORID.taboveN(R�(RRtnewtagttagOrId((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_above�scCs|j|d�dS(sAdd tag NEWTAG to all items.R^N(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt addtag_all�scCs|j|d|�dS(s*Add tag NEWTAG to all items below TAGORID.tbelowN(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_below�scCs |j|d||||�dS(s�Add tag NEWTAG to item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closests). If START is specified the next below this tag is taken.tclosestN(R�(RRR�RARNthalotstart((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_closest�scCs |j|d||||�dS(sLAdd tag NEWTAG to all items in the rectangle defined by X1,Y1,X2,Y2.tenclosedN(R�(RRR�tx1ty1tx2ty2((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_enclosed�scCs |j|d||||�dS(sWAdd tag NEWTAG to all items which overlap the rectangle defined by X1,Y1,X2,Y2.toverlappingN(R�(RRR�R�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_overlapping�scCs|j|d|�dS(s)Add tag NEWTAG to all items with TAGORID.twithtagN(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytaddtag_withtag�scGs,|j|jj|jdf|��p+dS(s|Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses all items with tags specified as arguments.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs9|jj|jd||d�|r5|j|�ndS(sbUnbind for all items with TAGORID for event SEQUENCE the function identified with FUNCID.R\REN(R.RPR�RX(RRR�RXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_unbind�scCs"|j|jd|f|||�S(s&Bind to all items with TAGORID at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.R\(R[R�(RRR�RXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_bind�scCs"t|jj|jd||��S(srReturn the canvas x coordinate of pixel position SCREENX rounded to nearest multiple of GRIDSPACING units.tcanvasx(R{R.RPR�(RRtscreenxtgridspacing((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs"t|jj|jd||��S(srReturn the canvas y coordinate of pixel position SCREENY rounded to nearest multiple of GRIDSPACING units.tcanvasy(R{R.RPR�(RRtscreenyR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scGs2tt|jj|jj|jdf|���S(s8Return a list of coordinates for the item given in ARGS.tcoords(RR{R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s c Csst|�}|d}t|�ttfkr;|d }ni}t|jj|jd|||j||���S(sInternal function.i����R.( RRRRRyR.RPR�R�(RRtitemTypeR�R�R#((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_create s cOs|jd||�S(s6Create arc shaped region with coordinates x1,y1,x2,y2.tarc(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_arc scOs|jd||�S(s%Create bitmap with coordinates x1,y1.R(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_bitmap scOs|jd||�S(s)Create image item with coordinates x1,y1.R�(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_image scOs|jd||�S(s-Create line with coordinates x1,y1,...,xn,yn.tline(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_line scOs|jd||�S(s)Create oval with coordinates x1,y1,x2,y2.toval(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_oval scOs|jd||�S(s0Create polygon with coordinates x1,y1,...,xn,yn.tpolygon(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_polygon scOs|jd||�S(s.Create rectangle with coordinates x1,y1,x2,y2.t rectangle(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_rectangle scOs|jd||�S(s#Create text with coordinates x1,y1.ttext(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytcreate_text" scOs|jd||�S(s+Create window with coordinates x1,y1,x2,y2.R�(R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt create_window% scGs!|jj|jdf|�dS(s�Delete characters of text items identified by tag or id in ARGS (possibly several times) from FIRST to LAST character (including).tdcharsN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�( scGs!|jj|jdf|�dS(s<Delete items identified by all tag or ids contained in ARGS.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�, scGs!|jj|jdf|�dS(siDelete tag or id given as last arguments in ARGS from items identified by first argument in ARGS.tdtagN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�/ scGs,|j|jj|jdf|��p+dS(sInternal function.tfind((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�3 scCs|jd|�S(sReturn items above TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_above7 scCs |jd�S(sReturn all items.R^(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_all: scCs|jd|�S(sReturn all items below TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_below= scCs|jd||||�S(s�Return item which is closest to pixel at X, Y. If several match take the top-most. All items closer than HALO are considered overlapping (all are closest). If START is specified the next below this tag is taken.R�(R�(RRRARNR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_closest@ scCs|jd||||�S(s=Return all items in rectangle defined by X1,Y1,X2,Y2.R�(R�(RRR�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt find_enclosedF scCs|jd||||�S(sLReturn all items which overlap the rectangle defined by X1,Y1,X2,Y2.R�(R�(RRR�R�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_overlappingJ scCs|jd|�S(sReturn all items with TAGORID.R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytfind_withtagN scGs|jj|jdf|�S(s.Set focus to the first item specified in ARGS.R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Q scGs)|jj|jj|jdf|��S(s=Return tags associated with the first item specified in ARGS.tgettags(R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�T s cGs!|jj|jdf|�dS(sdSet cursor at position POS in the item identified by TAGORID. In ARGS TAGORID must be first.ticursorN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�X scGs#t|jj|jdf|��S(s?Return position of cursor as integer in item specified in ARGS.R�(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�\ scGs!|jj|jdf|�dS(sSInsert TEXT in item TAGORID at position POS. ARGS must be TAGORID POS TEXT.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_ scCs'|jj|jdf|d|f�S(s9Return the resource value for an OPTION for item TAGORID.titemcgetR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�c s cKs|jd|f||�S(s�Configure resources of an item TAGORID. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. t itemconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�g scGs!|jj|jdf|�dS(sJLower an item TAGORID given in ARGS (optional below another item).R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_lowert scGs!|jj|jdf|�dS(s#Move an item TAGORID given in ARGS.tmoveN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�y scKs)|jj|jdf|j||��S(s�Print the contents of the canvas to a postscript file. Valid options: colormap, colormode, file, fontmap, height, pageanchor, pageheight, pagewidth, pagex, pagey, rotate, width, x, y.t postscript(R.RPR�R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�| scGs!|jj|jdf|�dS(sJRaise an item TAGORID given in ARGS (optional above another item).R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_raise� scGs!|jj|jdf|�dS(s9Scale item TAGORID with XORIGIN, YORIGIN, XSCALE, YSCALE.tscaleN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.tscantmarkN(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt scan_mark� si cCs&|jj|jdd|||�dS(s�Adjust the view of the canvas to GAIN times the difference between X and Y and the coordinates given in scan_mark.R�tdragtoN(R.RPR�(RRRARNtgain((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytscan_dragto� scCs#|jj|jdd||�dS(sLAdjust the end of the selection near the cursor of an item TAGORID to index.tselecttadjustN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt select_adjust� scCs|jj|jdd�dS(s,Clear the selection if it is in this widget.R�R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_clear� scCs#|jj|jdd||�dS(s:Set the fixed end of a selection in item TAGORID to INDEX.R�tfromN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_from� scCs|jj|jdd�pdS(s(Return the item which has the selection.R�RN(R.RPR�R(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselect_item� scCs#|jj|jdd||�dS(s=Set the variable end of a selection in item TAGORID to INDEX.R�ttoN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt select_to� scCs|jj|jd|�pdS(s$Return the type of the item TAGORID.RN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sN(@R7R8R9RRUR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R�t itemconfigR�R�R�R�R�R�R�R�R�R�R�R�R�R�R�R(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sx tCheckbuttoncBsJeZdZdid�Zd�Zd�Zd�Zd�Zd�Z RS(s7Checkbutton widget which is either in on- or off-state.cKstj||d||�dS(sConstruct a checkbutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, offvalue, onvalue, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, variable, width, wraplength.tcheckbuttonN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� s cCs|jj|jd�dS(sPut the button in off-state.tdeselectN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sFlash the button.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�S(s<Toggle the button and invoke a command if given as resource.R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sPut the button in on-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�dS(sToggle the button.ttoggleN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� sN( R7R8R9RRUR�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s tEntrycBs�eZdZdid�Zdd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �ZeZ d �ZeZd�ZeZd�ZeZd �ZeZd�ZeZRS(s1Entry widget which allows displaying simple text.cKstj||d||�dS(sConstruct an entry widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, invalidcommand, invcmd, justify, relief, selectbackground, selectborderwidth, selectforeground, show, state, takefocus, textvariable, validate, validatecommand, vcmd, width, xscrollcommand.tentryN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� scCs |jj|jd||�dS(s.Delete text from FIRST to LAST (not included).R�N(R.RPR�(RRtfirsttlast((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd�S(sReturn the text.R](R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]� scCs|jj|jd|�dS(sInsert cursor at INDEX.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCst|jj|jd|��S(sReturn position of cursor.R�(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jd||�dS(sInsert STRING at INDEX.R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s�Adjust the view of the canvas to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s9Adjust the end of the selection near the cursor to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_adjust� scCs|jj|jdd�dS(s,Clear the selection if it is in this widget.R�R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jdd|�dS(s*Set the fixed end of a selection to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_from� scCs%|jj|jj|jdd��S(sSReturn True if there are characters selected in the entry, False otherwise.R�tpresent(R.RORPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_present� s cCs#|jj|jdd||�dS(s3Set the selection from START to END (not included).R�trangeN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_range� scCs |jj|jdd|�dS(s-Set the variable end of a selection to INDEX.R�R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_to� sN(R7R8R9RRUR�R]R�R�R�R�R�R�R�R�R�R�R�R�tselect_presentR�tselect_rangeR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s* tFramecBseZdZdid�ZRS(sFFrame widget which may contain other widgets and can have a 3D border.cKs�t||f�}d}d|kr>d|df}|d=n&d|krdd|df}|d=ntj||d|i|�dS(sConstruct a frame widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, class, colormap, container, cursor, height, highlightbackground, highlightcolor, highlightthickness, relief, takefocus, visual, width.Rts-classR�R�N((R(RrRU(RRRSR#R�Ro((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU s N(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� stLabelcBseZdZdid�ZRS(s0Label widget which can display text and bitmaps.cKstj||d||�dS(s�Construct a label widget with the parent MASTER. STANDARD OPTIONS activebackground, activeforeground, anchor, background, bitmap, borderwidth, cursor, disabledforeground, font, foreground, highlightbackground, highlightcolor, highlightthickness, image, justify, padx, pady, relief, takefocus, text, textvariable, underline, wraplength WIDGET-SPECIFIC OPTIONS height, state, width tlabelN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU sN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� stListboxcBs�eZdZdid�Zd�Zd�Zd�Zdd�Zdd�Z d�Z d�Zd �Zd �Z d�Zd�Zd �ZeZdd�ZeZd�ZeZdd�ZeZd�Zd�Zdd�ZeZRS(s3Listbox widget which can display a list of strings.cKstj||d||�dS(s�Construct a listbox widget with the parent MASTER. Valid resource names: background, bd, bg, borderwidth, cursor, exportselection, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, relief, selectbackground, selectborderwidth, selectforeground, selectmode, setgrid, takefocus, width, xscrollcommand, yscrollcommand, listvariable.tlistboxN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU. scCs|jj|jd|�dS(s"Activate item identified by INDEX.tactivateN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�7 scCs(|j|jj|jd|��p'dS(sxReturn a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the item identified by the given index.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�: scCs%|j|jj|jd��p$dS(s.Return the indices of currently selected item.tcurselection((RR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�> scCs |jj|jd||�dS(s+Delete items from FIRST to LAST (included).R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�A scCsQ|dk r4|jj|jj|jd||��S|jj|jd|�SdS(s0Get list of items from FIRST to LAST (included).R]N(RR.R*RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]D scCs5|jj|jd|�}|dkr+dSt|�S(s+Return index of item identified with INDEX.R�R�N(R.RPR�RRy(RRR�ti((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�K scGs$|jj|jd|f|�dS(sInsert ELEMENTS at INDEX.R�N(R.RPR�(RRR�telements((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�P scCst|jj|jd|��S(s5Get index of item which is nearest to y coordinate Y.tnearest(RyR.RPR�(RRRN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�S scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�W scCs#|jj|jdd||�dS(s�Adjust the view of the listbox to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�Z scCs|jj|jd|�dS(s"Scroll such that INDEX is visible.tseeN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_ scCs |jj|jdd|�dS(s-Set the fixed end oft the selection to INDEX.R�tanchorN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_anchorb scCs#|jj|jdd||�dS(s2Clear the selection from FIRST to LAST (included).R�R�N(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�f scCs(|jj|jj|jdd|��S(s+Return 1 if INDEX is part of the selection.R�tincludes(R.RORPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_includesk scCs#|jj|jdd||�dS(siSet the selection from FIRST to LAST (included) without changing the currently selected elements.R�RNN(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt selection_setp scCst|jj|jd��S(s-Return the number of elements in the listbox.R�(RyR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�u scCs'|jj|jdf|d|f�S(s4Return the resource value for an ITEM and an OPTION.R�R)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�x s cKs|jd|f||�S(s9Configure resources of an ITEM. The values for resources are specified as keyword arguments. To get an overview about the allowed keyword arguments call the method without arguments. Valid resource names: background, bg, foreground, fg, selectbackground, selectforeground.R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�| sN(R7R8R9RRUR�R�R�R�R]R�R�R�R�R�R�R�t select_anchorR�R�R�tselect_includesR�t select_setR�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�, s2 tMenucBs�eZdZd%id�Zd�Zd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z d�Zd�Zd d�Zd�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zid�Zd%d�Zd�Zd%d�Z e Z!d�Z"d �Z#d!�Z$d"�Z%d#�Z&d$�Z'RS(&sPMenu widget which allows displaying menu bars, pull-down menus and pop-up menus.cKstj||d||�dS(sAConstruct menu widget with the parent MASTER. Valid resource names: activebackground, activeborderwidth, activeforeground, background, bd, bg, borderwidth, cursor, disabledforeground, fg, font, foreground, postcommand, relief, selectcolor, takefocus, tearoff, tearoffcommand, title, type.tmenuN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU� scCs&ddl}|jdtdd�dS(Ni����s=tk_bindForTraversal() does nothing and will be removed in 3.6R�i(R�R�R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttk_bindForTraversal� s cCs|jjd|j�dS(Nt tk_mbPost(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd�dS(Nttk_mbUnpost(R.RP(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j|�dS(Nttk_traverseToMenu(R.RPR�(RRRx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j|�dS(Nttk_traverseWithinMenu(R.RPR�(RRRx((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�S(Nttk_getMenuButtons(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|�dS(Nttk_nextMenu(R.RP(RRtcount((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|�dS(Nttk_nextMenuEntry(R.RP(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�dS(Nt tk_invokeMenu(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR � scCs|jjd|j�dS(Nttk_firstMenu(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjd|j�dS(Nttk_mbButtonDown(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sREcCs#|jjd|j|||�dS(s/Post the menu at position X,Y with entry ENTRY.ttk_popupN(R.RPR�(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jd|�dS(sActivate entry at INDEX.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs0|jj|jd|f|j||��dS(sInternal function.R�N(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs|jd|p|�dS(sAdd hierarchical menu item.tcascadeN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_cascade� scKs|jd|p|�dS(sAdd checkbutton menu item.R�N(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_checkbutton� scKs|jd|p|�dS(sAdd command menu item.R�N(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_command� scKs|jd|p|�dS(sAddd radio menu item.tradiobuttonN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytadd_radiobutton� scKs|jd|p|�dS(sAdd separator.t separatorN(R�(RRR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt add_separator� scKs3|jj|jd||f|j||��dS(sInternal function.R�N(R.RPR�R�(RRR�R�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scKs|j|d|p|�dS(s$Add hierarchical menu item at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_cascade� scKs|j|d|p|�dS(s#Add checkbutton menu item at INDEX.R�N(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_checkbutton� scKs|j|d|p|�dS(sAdd command menu item at INDEX.R�N(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_command� scKs|j|d|p|�dS(sAddd radio menu item at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_radiobutton� scKs|j|d|p|�dS(sAdd separator at INDEX.RN(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytinsert_separator� scCs�|dkr|}n|j|�|j|�}}|dksL|dkr[d\}}nxat||d�D]L}d|j|�krot|j|d��}|r�|j|�q�qoqoW|jj|j d||�dS(s7Delete menu items between INDEX1 and INDEX2 (included).ii����iR�R�N(ii����( RR�R�tentryconfigRt entrycgetRXR.RPR�(RRtindex1tindex2t num_index1t num_index2R�R$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cCs |jj|jd|d|�S(s=Return the resource value of a menu item for OPTION at INDEX.RR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scKs|jd|f||�S(sConfigure a menu item at INDEX.tentryconfigure(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR$� scCs5|jj|jd|�}|dkr+dSt|�S(s4Return the index of a menu item identified by INDEX.R�R�N(R.RPR�RRy(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd|�S(sRInvoke a menu item identified by INDEX and execute the associated command.R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jj|jd||�dS(sDisplay a menu at position X,Y.tpostN(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR%� scCs|jj|jd|�S(s*Return the type of the menu item at INDEX.R(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jd�dS(s Unmap a menu.tunpostN(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR&� scCst|jj|jd|��S(sEReturn the y-position of the topmost pixel of the menu item at INDEX.t yposition(RyR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR'� sN((R7R8R9RRURRRRRR R RR RRRR�R�RRRRRR�RRRRRR�RR$RR�R�R%RR&R'(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� sJ t MenubuttoncBseZdZdid�ZRS(s(Menubutton widget, obsolete since Tk8.0.cKstj||d||�dS(Nt menubutton(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR(stMessagecBseZdZdid�ZRS(sKMessage widget to display multiline text. Obsolete since Label does it too.cKstj||d||�dS(Ntmessage(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR* stRadiobuttoncBsAeZdZdid�Zd�Zd�Zd�Zd�ZRS(sGRadiobutton widget which shows only one of several buttons in on-state.cKstj||d||�dS(s�Construct a radiobutton widget with the parent MASTER. Valid resource names: activebackground, activeforeground, anchor, background, bd, bg, bitmap, borderwidth, command, cursor, disabledforeground, fg, font, foreground, height, highlightbackground, highlightcolor, highlightthickness, image, indicatoron, justify, padx, pady, relief, selectcolor, selectimage, state, takefocus, text, textvariable, underline, value, variable, width, wraplength.RN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUs cCs|jj|jd�dS(sPut the button in off-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�dS(sFlash the button.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jd�S(s<Toggle the button and invoke a command if given as resource.R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�"scCs|jj|jd�dS(sPut the button in on-state.R�N(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�%sN( R7R8R9RRUR�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR,s tScalecBsDeZdZdid�Zd�Zd�Zdd�Zd�ZRS(s1Scale widget which can display a numerical scale.cKstj||d||�dS(s�Construct a scale widget with the parent MASTER. Valid resource names: activebackground, background, bigincrement, bd, bg, borderwidth, command, cursor, digits, fg, font, foreground, from, highlightbackground, highlightcolor, highlightthickness, label, length, orient, relief, repeatdelay, repeatinterval, resolution, showvalue, sliderlength, sliderrelief, state, takefocus, tickinterval, to, troughcolor, variable, width.R�N(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU+s cCsE|jj|jd�}yt|�SWntk r@t|�SXdS(s*Get the current value as integer or float.R]N(R.RPR�RyR@R{(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]5s cCs|jj|jd|�dS(sSet the value to VALUE.RNN(R.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN<scCs"|j|jj|jd|��S(s�Return a tuple (X,Y) of the point along the centerline of the trough that corresponds to VALUE or the current value if None is given.R�(RR.RPR�(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�?scCs|jj|jd||�S(scReturn where the point X,Y lies. Valid return values are "slider", "though1" and "though2".tidentify(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.EsN( R7R8R9RRUR]RNR�R.(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR-)s t ScrollbarcBsSeZdZdid�Zd�Zd�Zd�Zd�Zd�Z d�Z RS( s?Scrollbar widget which displays a slider at a certain position.cKstj||d||�dS(slConstruct a scrollbar widget with the parent MASTER. Valid resource names: activebackground, activerelief, background, bd, bg, borderwidth, command, cursor, elementborderwidth, highlightbackground, highlightcolor, highlightthickness, jump, orient, relief, repeatdelay, repeatinterval, takefocus, troughcolor, width.t scrollbarN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRULs cCs|jj|jd|�dS(sxDisplay the element at INDEX with activebackground and activerelief. INDEX can be "arrow1","slider" or "arrow2".R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�VscCs"t|jj|jd||��S(snReturn the fractional change of the scrollbar setting if it would be moved by DELTAX or DELTAY pixels.R(R{R.RPR�(RRtdeltaxtdeltay((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZscCs"t|jj|jd||��S(sRReturn the fractional value which corresponds to a slider position of X,Y.R�(R{R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�_scCs|jj|jd||�S(sYReturn the element under position X,Y as one of "arrow1","slider","arrow2" or "".R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.cscCs|j|jj|jd��S(sZReturn the current fractional values (upper and lower end) of the slider position.R](RdR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]gscGs!|jj|jdf|�dS(siSet the fractional values of the slider position (upper and lower ends as value between 0 and 1).RNN(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRNksN(R7R8R9RRUR�RR�R.R]RN(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR/Js tTextc BsHeZdZd5id�Zd�Zd�Zd�Zd�Zd�Z d�Z d5d�Zd5d �Zd �Z d5d5d�Zd�Zd5d �Zd�Zd�Zd�Zd�Zd5d�Zd�Zd5d�Zid�Zd�Zd�Zd�Zd5d�Zd�Zd�Zd�Zd�Z d�Z!d�Z"d �Z#d5d5d5d5d5d5d5d5d!�Z$d"�Z%d#�Z&d5d$�Z'd5d%�Z(d&�Z)d5d'�Z*e*Z+d(�Z,d5d)�Z-d5d*�Z.d5d+�Z/d5d,�Z0d5d-�Z1d.�Z2d5d/�Z3d0�Z4d5d1�Z5e5Z6id2�Z7d3�Z8d4�Z9RS(6s4Text widget which can display text in various forms.cKstj||d||�dS(s�Construct a text widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, padx, pady, relief, selectbackground, selectborderwidth, selectforeground, setgrid, takefocus, xscrollcommand, yscrollcommand, WIDGET-SPECIFIC OPTIONS autoseparators, height, maxundo, spacing1, spacing2, spacing3, state, tabs, undo, width, wrap, R�N(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUtscGs,|j|jj|jdf|��p+dS(s�Return a tuple of (x,y,width,height) which gives the bounding box of the visible part of the character at the index in ARGS.R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs|jjd|j|�dS(Nttk_textSelectTo(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR4�scCs|jjd|j�dS(Nttk_textBackspace(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR5�scCs#|jjd|j|||�dS(Nttk_textIndexCloser(R.RPR�(RRR�R�R$((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR6�scCs|jjd|j|�dS(Nttk_textResetAnchor(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR7�scCs+|jj|jj|jd|||��S(s�Return whether between index INDEX1 and index INDEX2 the relation OP is satisfied. OP is one of <, <=, ==, >=, >, or !=.tcompare(R.RORPR�(RRR topR!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR8�scCsK|dkr.|jj|jj|jd��S|jj|jd|�dS(sjTurn on the internal consistency checks of the B-Tree inside the text widget according to BOOLEAN.tdebugN(RR.RORPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR:�s"cCs |jj|jd||�dS(s?Delete the characters between INDEX1 and INDEX2 (not included).R�N(R.RPR�(RRR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs"|j|jj|jd|��S(s�Return tuple (x,y,width,height,baseline) giving the bounding box and baseline position of the visible part of the line containing the character at INDEX.t dlineinfo(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR;�sc Ks�g}d}d}|s3g}|d�}|}nz�t|t�s[|j|�}}n|d|g7}x,|D]$} || rr|jd| �qrqrW|j|�|r�|j|�n|jj|jd|�|SWd|r�|j|�nXdS(s�Return the contents of the widget between index1 and index2. The type of contents returned in filtered based on the keyword parameters; if 'all', 'image', 'mark', 'tag', 'text', or 'window' are given and true, then the corresponding items are returned. The result is a list of triples of the form (key, value, index). If none of the keywords are true then 'all' is used by default. If the 'command' argument is given, it is called once for each element of the list of triples, with the values of each triple serving as the arguments to the function. In this case the list is not returned.cSs|j|||f�dS(N(Re(R4RR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt append_triple�ss-commandR)tdumpN( RR RR�ReR.RPR�RX( RRR R!R�R�R�t func_nameR�R<R4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR=�s* cGs|jj|jd|�S(srInternal method This method controls the undo mechanism and the modified flag. The exact behavior of the command depends on the option argument that follows the edit argument. The following forms of the command are currently supported: edit_modified, edit_redo, edit_reset, edit_separator and edit_undo tedit(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR?�s cCs|jd|�S(s;Get or Set the modified flag If arg is not specified, returns the modified flag of the widget. The insert, delete, edit undo and edit redo commands or the user can set or clear the modified flag. If boolean is specified, sets the modified flag of the widget to arg. tmodified(R?(RRtarg((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_modified�s cCs |jd�S(sRedo the last undone edit When the undo option is true, reapplies the last undone edits provided no other edits were done since then. Generates an error when the redo stack is empty. Does nothing when the undo option is false. tredo(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_redo�scCs |jd�S(s(Clears the undo and redo stacks treset(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_reset�scCs |jd�S(snInserts a separator (boundary) on the undo stack. Does nothing when the undo option is false R(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytedit_separator�scCs |jd�S(sDUndoes the last edit action If the undo option is true. An edit action is defined as all the insert and delete commands that are recorded on the undo stack in between two separators. Generates an error when the undo stack is empty. Does nothing when the undo option is false tundo(R?(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt edit_undos cCs|jj|jd||�S(s5Return the text from INDEX1 to INDEX2 (not included).R](R.RPR�(RRR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]scCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s9Return the value of OPTION of an embedded image at INDEX.iR)i����RiR�R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt image_cgets cKs|jdd|f||�S(s%Configure an embedded image at INDEX.R�R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_configurescKs+|jj|jdd||j||��S(s"Create an embedded image at INDEX.R�R.(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytimage_creates cCs|jj|jdd�S(s3Return all names of embedded images in this widget.R�R�(R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�"scCst|jj|jd|��S(s1Return the index in the form line.char for INDEX.R�(RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�%scGs'|jj|jd||f|�dS(s�Insert CHARS before the characters at INDEX. An additional tag can be given in ARGS. Additional CHARS and tags can follow in ARGS.R�N(R.RPR�(RRR�tcharsR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�(scCs"|jj|jdd||f�S(s�Change the gravity of a mark MARKNAME to DIRECTION (LEFT or RIGHT). Return the current value if None is given for DIRECTION.R�tgravity(R.RPR�(RRtmarkNamet direction((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytmark_gravity,s cCs%|jj|jj|jdd��S(sReturn all mark names.R�R�(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_names1scCs#|jj|jdd||�dS(s0Set mark MARKNAME before the character at INDEX.R�RNN(R.RPR�(RRROR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytmark_set5scGs$|jj|jddf|�dS(sDelete all marks in MARKNAMES.R�tunsetN(R.RPR�(RRt markNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_unset8scCs"|jj|jdd|�p!dS(s-Return the name of the next mark after INDEX.R�tnextN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_next;scCs"|jj|jdd|�p!dS(s2Return the name of the previous mark before INDEX.R�tpreviousN(R.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt mark_previous>scCs#|jj|jdd||�dS(s&Remember the current X, Y coordinates.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�AscCs#|jj|jdd||�dS(s~Adjust the view of the text to 10 times the difference between X and Y and the coordinates given in scan_mark.R�R�N(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�DscCs(|jdg}|r%|jd�n|r;|jd�n|rQ|jd�n|rg|jd�n|r}|jd�n| r�|jd�n| r�|jd�|j| �n|r�|d d kr�|jd�n|j|�|j|�|r|j|�nt|jjt|���S(s�Search PATTERN beginning from INDEX until STOPINDEX. Return the index of the first character of a match or an empty string.Rs -forwardss -backwardss-exacts-regexps-nocases-elides-countiR)s--(R�ReRR.RPR(RRR�R�t stopindextforwardst backwardstexacttregexptnocaseRtelideR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRIs. cCs|jj|jd|�dS(s3Scroll such that the character at INDEX is visible.R�N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�\scGs*|jj|jdd||f|�dS(s|Add tag TAGNAME to all characters between INDEX1 and index2 in ARGS. Additional pairs of indices may follow in ARGS.ttagR�N(R.RPR�(RRttagNameR R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_add_s cCs<|jj|jdd||d�|r8|j|�ndS(sgUnbind for all characters with TAGNAME for event SEQUENCE the function identified with FUNCID.RbR\REN(R.RPR�RX(RRRcRXRZ((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�ds"cCs%|j|jdd|f|||�S(s+Bind to all characters with TAGNAME at event SEQUENCE a call to function FUNC. An additional boolean parameter ADD specifies whether FUNC will be called additionally to the other bound function or whether it will replace the previous function. See bind for the return value.RbR\(R[R�(RRRcRXR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�jscCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s+Return the value of OPTION for tag TAGNAME.iR)i����RiRbR�(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyttag_cgetrs cKs|jdd|f||�S(sConfigure a tag TAGNAME.RbR�(R�(RRRcR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_configureyscGs$|jj|jddf|�dS(sDelete all tags in TAGNAMES.RbR�N(R.RPR�(RRttagNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_delete}scCs#|jj|jdd||�dS(s`Change the priority of tag TAGNAME such that it is lower than the priority of BELOWTHIS.RbR�N(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs(|jj|jj|jdd|��S(sReturn a list of all tag names.RbR�(R.R*RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_names�s cCs.|jj|jj|jdd|||��S(s�Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched forward from INDEX1.Rbt nextrange(R.R*RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_nextrange�scCs.|jj|jj|jdd|||��S(s�Return a list of start and end index for the first sequence of characters between INDEX1 and INDEX2 which all have tag TAGNAME. The text is searched backwards from INDEX1.Rbt prevrange(R.R*RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_prevrange�scCs#|jj|jdd||�dS(saChange the priority of tag TAGNAME such that it is higher than the priority of ABOVETHIS.RbR�N(R.RPR�(RRRcR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cCs(|jj|jj|jdd|��S(s7Return a list of ranges of text which have tag TAGNAME.Rbtranges(R.R*RPR�(RRRc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_ranges�scCs&|jj|jdd|||�dS(sARemove tag TAGNAME from all characters between INDEX1 and INDEX2.RbRmN(R.RPR�(RRRcR R!((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt tag_remove�s cCsY|d dkrd|}n|ddkr:|d }n|jj|jdd||�S(s:Return the value of OPTION of an embedded window at INDEX.iR)i����RiR�R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_cget�s cKs|jdd|f||�S(s&Configure an embedded window at INDEX.R�R�(R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_configure�scKs3|jj|jdd|f|j||��dS(sCreate a window at INDEX.R�R.N(R.RPR�R�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt window_create�s cCs%|jj|jj|jdd��S(s4Return all names of embedded windows in this widget.R�R�(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwindow_names�s cGs$|jj|jddf|�dS(sObsolete function, use see.R�s -pickplaceN(R.RPR�(RRRW((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytyview_pickplace�sN(:R7R8R9RRUR�R4R5R6R7R8R:R�R;R=R?RBRDRFRGRIR]RJRKRLR�R�R�RQRRRSRVRXRZR�R�RR�RdR�R�ReRft tag_configRhR�RiRkRmR�RoRpRqRrt window_configRsRtRu(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR3rsr ( t_setitcBs#eZdZdd�Zd�ZRS(s>Internal class. It wraps the command in the widget OptionMenu.cCs||_||_||_dS(N(t _setit__valuet_setit__vart_setit__callback(RRtvarRRg((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s cGs6|jj|j�|jr2|j|j|�ndS(N(RzRNRyR{(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRa�s N(R7R8R9RRURa(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRx�st OptionMenucBs)eZdZd�Zd�Zd�ZRS(s?OptionMenu which allows the user to select a value from a menu.c Os"idd6|d6dd6td6dd6dd 6}tj||d |�d|_t|dd dd�}|_|j|_|jd�}d|kr�|d=n|r�t d|j �d�n|jd|dt|||��x0|D](} |jd| dt|| |��q�W||d <dS(s�Construct an optionmenu widget with the parent MASTER, with the resource textvariable set to VARIABLE, the initially selected value VALUE, the other menu values VALUES and an additional keyword argument command.itborderwidthttextvariableitindicatorontreliefR$R�thighlightthicknessR)t tk_optionMenuRTRttearoffiR�sunknown option -R�N( tRAISEDRrRURmRt_OptionMenu__menuR�tmenunameR]R�R�RRx( RRRSR_RRDtkwargsR�RRgR'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s$ cCs#|dkr|jStj||�S(NR(R�RrR�(RRRT((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCstj|�d|_dS(s,Destroy this widget and the associated menu.N(R(R�RR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s (R7R8R9RUR�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR}�s tImagecBsteZdZdZdidd�Zd�Zd�Zd�Zd�Z d�Z e Zd�Zd �Z d �ZRS(sBase class for images.ic Ks^d|_|s*t}|s*td�q*nt|d|�|_|s�tjd7_dtjf}|ddkr�d|d}q�n|r�|r�t||f�}n|r�|}nd }xp|j �D]b\}}t |d�r�|j|�}n!|dkr|jj|�}n|d||f}q�W|jj dd||f|�||_dS(NsToo early to create imageR.is pyimage%riR)RiRaR�tmaskdataR�R.((R�R�(RRTR;R+RWR.R�t_last_idR(R!RjR�t_createbytearrayRP( RRtimgtypeRTR#RSR�R�R&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s0 cCs|jS(N(RT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRZ REcCsA|jr=y|jjdd|j�Wq=tk r9q=XndS(NR�R�(RTR.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRY s cCs$|jj|jdd||�dS(NR�R)(R.RPRT(RRR4R((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jj|jdd|�S(NR�R)(R.RPRT(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scKs�d }x�t|�j�D]�\}}|dk r|ddkrN|d }nt|d�ro|j|�}n!|d kr�|jj|�}n|d||f}qqW|jj|jdf|�dS(sConfigure the image.i����RiRaR�R�R)R�N((R�R�( R(R!RRjR�R.R�RPRT(RRR�RR&R'((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� s cCst|jjdd|j��S(sReturn the height of the image.R�R�(RyR.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR� scCs|jjdd|j�S(s7Return the type of the image, e.g. "photo" or "bitmap".R�R(R.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR" scCst|jjdd|j��S(sReturn the width of the image.R�RK(RyR.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRK% sN(R7R8R9R�RRURZRYR�R�R�R�R�RRK(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s t PhotoImagecBs�eZdZdidd�Zd�Zd�Zd�Zd�Zdd�Z dd�Z d �Zdd �Zddd�Z RS( s=Widget which can display images in PGM, PPM, GIF, PNG format.cKs tj|d||||�dS(stCreate an image with NAME. Valid resource names: data, format, file, gamma, height, palette, width.tphotoN(R�RU(RRRTR#RSR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU, scCs|jj|jd�dS(sDisplay a transparent image.tblankN(R.RPRT(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�2 scCs|jj|jdd|�S(sReturn the value of OPTION.R�R)(R.RPRT(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�5 scCs|jj|jdd|�S(NR�R)(R.RPRT(RRR4((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�9 scCs/td|j�}|jj|d|j�|S(s;Return a new PhotoImage with the same image as this widget.RStcopy(R�R.RPRT(RRt destImage((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�< sREcCsMtd|j�}|dkr'|}n|jj|d|jd||�|S(s�Return a new PhotoImage with the same image as this widget but zoom it with a factor of x in the X direction and y in the Y direction. If y is not given, the default value is the same as x. RSRER�s-zoom(R�R.RPRT(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytzoomA s "cCsMtd|j�}|dkr'|}n|jj|d|jd||�|S(s�Return a new PhotoImage based on the same image as this widget but use only every Xth or Yth pixel. If y is not given, the default value is the same as x. RSRER�s -subsample(R�R.RPRT(RRRARNR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt subsampleJ s "cCs|jj|jd||�S(s8Return the color (red, green, blue) of the pixel at X,Y.R](R.RPRT(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]S scCs`|jd|f}|rL|ddkr5|d}n|dt|�}n|jj|�dS(szPut row formatted colors to image starting from position TO, e.g. image.put("{red green} {blue yellow}", to=(4,6))tputis-toiN(s-to(RTRR.RP(RRR�R�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�V s cCs\|jd|f}|r+|d|f}n|rH|dt|�}n|jj|�dS(sRWrite image to file FILENAME in FORMAT starting from position FROM_COORDS.twrites-formats-fromN(s-from(RTRR.RP(RRtfilenametformattfrom_coordsR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�` sN(R7R8R9RRUR�R�R�R�R�R�R]R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�* s tBitmapImagecBs eZdZdidd�ZRS(s.Widget which can display images in XBM format.cKs tj|d||||�dS(sqCreate a bitmap with NAME. Valid resource names: background, data, file, foreground, maskdata, maskfile.RN(R�RU(RRRTR#RSR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUl sN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�j scCstjjtjjdd��S(NR�R�(R;R.R*RP(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�r scCstjjtjjdd��S(NR�R�(R;R.R*RP(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�u stSpinboxcBs�eZdZdid�Zd�Zdd�Zd�Zd�Zd�Z d�Z d�Zd �Zd �Z d�Zd�Zd �Zd�Zd�Zdd�ZRS(sspinbox widget.cKstj||d||�dS(s�Construct a spinbox widget with the parent MASTER. STANDARD OPTIONS activebackground, background, borderwidth, cursor, exportselection, font, foreground, highlightbackground, highlightcolor, highlightthickness, insertbackground, insertborderwidth, insertofftime, insertontime, insertwidth, justify, relief, repeatdelay, repeatinterval, selectbackground, selectborderwidth selectforeground, takefocus, textvariable xscrollcommand. WIDGET-SPECIFIC OPTIONS buttonbackground, buttoncursor, buttondownrelief, buttonuprelief, command, disabledbackground, disabledforeground, format, from, invalidcommand, increment, readonlybackground, state, to, validate, validatecommand values, width, wrap, tspinboxN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU{ scCs(|j|jj|jd|��p'dS(s�Return a tuple of X1,Y1,X2,Y2 coordinates for a rectangle which encloses the character given by index. The first two elements of the list give the x and y coordinates of the upper-left corner of the screen area covered by the character (in pixels relative to the widget) and the last two elements give the width and height of the character, in pixels. The bounding box may refer to a region outside the visible area of the window. R�N(RR.RPR�R(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(sWDelete one or more elements of the spinbox. First is the index of the first character to delete, and last is the index of the character just after the last one to delete. If last isn't specified it defaults to first+1, i.e. a single character is deleted. This command returns an empty string. R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cCs|jj|jd�S(sReturns the spinbox's stringR](R.RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR]� scCs|jj|jd|�S(s�Alter the position of the insertion cursor. The insertion cursor will be displayed just before the character given by index. Returns an empty string R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(s{Returns the name of the widget at position x, y Return value is one of: none, buttondown, buttonup, entry R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.� scCs|jj|jd|�S(s;Returns the numerical index corresponding to index R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd||�S(sDInsert string s at index Returns an empty string. R�(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jj|jd|�S(s�Causes the specified element to be invoked The element could be buttondown or buttonup triggering the action associated with it. R�(R.RPR�(RRtelement((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scGs,|j|jj|jdf|��p+dS(sInternal function.R�((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Records x and the current view in the spinbox window; used in conjunction with later scan dragto commands. Typically this command is associated with a mouse button press in the widget. It returns an empty string. R�(R�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Compute the difference between the given x argument and the x argument to the last scan mark command It then adjusts the view left or right by 10 times the difference in x-coordinates. This command is typically associated with mouse motion events in the widget, to produce the effect of dragging the spinbox at high speed through the window. The return value is an empty string. R�(R�(RRRA((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� s cGs,|j|jj|jdf|��p+dS(sInternal function.R�((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs|jd|�S(s�Locate the end of the selection nearest to the character given by index, Then adjust that end of the selection to be at index (i.e including but not going beyond index). The other end of the selection is made the anchor point for future select to commands. If the selection isn't currently in the spinbox, then a new selection is created to include the characters between index and the most recent selection anchor point, inclusive. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�� scCs |jd�S(ssClear the selection If the selection isn't in this widget then the command has no effect. R�(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�scCs|jj|jdd|�S(s�Sets or gets the currently selected element. If a spinbutton element is specified, it will be displayed depressed. R�R�(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytselection_element sN(R7R8R9RRUR�R�R]R�R.R�R�R�R�R�R�R�R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�y s" t LabelFramecBseZdZdid�ZRS(slabelframe widget.cKstj||d||�dS(s�Construct a labelframe widget with the parent MASTER. STANDARD OPTIONS borderwidth, cursor, font, foreground, highlightbackground, highlightcolor, highlightthickness, padx, pady, relief, takefocus, text WIDGET-SPECIFIC OPTIONS background, class, colormap, container, height, labelanchor, labelwidget, visual, width t labelframeN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRUsN(R7R8R9RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�stPanedWindowcBs�eZdZdid�Zd�Zd�ZeZd�Zd�Z d�Z d�Zd�Zd �Z d �Zd�Zd�Zd �Zdd�ZeZd�ZRS(spanedwindow widget.cKstj||d||�dS(sTConstruct a panedwindow widget with the parent MASTER. STANDARD OPTIONS background, borderwidth, cursor, height, orient, relief, width WIDGET-SPECIFIC OPTIONS handlepad, handlesize, opaqueresize, sashcursor, sashpad, sashrelief, sashwidth, showhandle, tpanedwindowN(RrRU(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU/scKs-|jj|jd|f|j|��dS(s+Add a child widget to the panedwindow in a new pane. The child argument is the name of the child widget followed by pairs of arguments that specify how to manage the windows. The possible options and values are the ones accepted by the paneconfigure method. R�N(R.RPR�R�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�?scCs|jj|jd|�dS(s�Remove the pane containing child from the panedwindow All geometry management options for child will be forgotten. R]N(R.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRmIscCs|jj|jd||�S(s�Identify the panedwindow component at point x, y If the point is over a sash or a sash handle, the result is a two element list containing the index of the sash or handle, and a word indicating whether it is over a sash or a handle, such as {0 sash} or {2 handle}. If the point is over any other part of the panedwindow, the result is an empty list. R.(R.RPR�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR.Qs cGs,|j|jj|jdf|��p+dS(sInternal function.tproxy((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�]scCs |jd�S(sBReturn the x and y pair of the most recent proxy location tcoord(R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_coordbscCs |jd�S(s+Remove the proxy from the display. R](R�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_forgetgscCs|jd||�S(s:Place the proxy at the given x and y coordinates. R�(R�(RRRARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytproxy_placelscGs,|j|jj|jdf|��p+dS(sInternal function.tsash((RR.RPR�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�qscCs|jd|�S(sAReturn the current x and y pair for the sash given by index. Index must be an integer between 0 and 1 less than the number of panes in the panedwindow. The coordinates given are those of the top left corner of the region containing the sash. pathName sash dragto index x y This command computes the difference between the given coordinates and the coordinates given to the last sash coord command for the given sash. It then moves that sash the computed difference. The return value is the empty string. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_coordvscCs|jd|�S(sRecords x and y for the sash given by index; Used in conjunction with later dragto commands to move the sash. R�(R�(RRR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_mark�scCs|jd|||�S(s?Place the sash given by index at the given coordinates R�(R�(RRR�RARN((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt sash_place�scCs'|jj|jdf|d|f�S(swQuery a management option for window. Option may be any value allowed by the paneconfigure subcommand tpanecgetR)(R.RPR�(RRR�R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��s cKs�|dkr)|r)|j|jd|�St|�tkr_|r_|j|jd|d|�S|jj|jd|f|j||��dS(s� Query or modify the management options for window. If no option is specified, returns a list describing all of the available options for pathName. If option is specified with no value, then the command returns a list describing the one named option (this list will be identical to the corresponding sublist of the value returned if no option is specified). If one or more option-value pairs are specified, then the command modifies the given widget option(s) to have the given value(s); in this case the command returns an empty string. The following options are supported: after window Insert the window after the window specified. window should be the name of a window already managed by pathName. before window Insert the window before the window specified. window should be the name of a window already managed by pathName. height size Specify a height for the window. The height will be the outer dimension of the window including its border, if any. If size is an empty string, or if -height is not specified, then the height requested internally by the window will be used initially; the height may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. minsize n Specifies that the size of the window cannot be made less than n. This constraint only affects the size of the widget in the paned dimension -- the x dimension for horizontal panedwindows, the y dimension for vertical panedwindows. May be any value accepted by Tk_GetPixels. padx n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the X-direction. The value may have any of the forms accepted by Tk_GetPixels. pady n Specifies a non-negative value indicating how much extra space to leave on each side of the window in the Y-direction. The value may have any of the forms accepted by Tk_GetPixels. sticky style If a window's pane is larger than the requested dimensions of the window, this option may be used to position (or stretch) the window within its pane. Style is a string that contains zero or more of the characters n, s, e or w. The string can optionally contains spaces or commas, but they are ignored. Each letter refers to a side (north, south, east, or west) that the window will "stick" to. If both n and s (or e and w) are specified, the window will be stretched to fill the entire height (or width) of its cavity. width size Specify a width for the window. The width will be the outer dimension of the window including its border, if any. If size is an empty string, or if -width is not specified, then the width requested internally by the window will be used initially; the width may later be adjusted by the movement of sashes in the panedwindow. Size may be any value accepted by Tk_GetPixels. t paneconfigureR)N( RR�R�RRR�R.RPR�(RRR�R#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sDcCs"|jj|jj|jd��S(s+Returns an ordered list of the child panes.tpanes(R.R*RPR�(RR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��sN(R7R8R9RRUR�RmR]R.R�R�R�R�R�R�R�R�R�R�t paneconfigR�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�-s$ Kt StudbuttoncBseZdid�ZRS(cKsitj||d||�|jd|j�|jd|j�|jd|j�|jd|j�dS(Nt studbuttons<Any-Enter>s<Any-Leave>s<1>s<ButtonRelease-1>(RrRUR\RzR|R}R~(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�s N(R7R8RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��st TributtoncBseZdid�ZRS(cKs�tj||d||�|jd|j�|jd|j�|jd|j�|jd|j�|d|d<|d|d<dS( Nt tributtons<Any-Enter>s<Any-Leave>s<1>s<ButtonRelease-1>tbgtfgtactivebackground(RrRUR\RzR|R}R~(RRRSR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRU�sN(R7R8RRU(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR��scCs�t�}dt}tdkrMy|tdd�}WqMtk rIqMXnt|d|�}|j�t|ddd|d��}|j�||_t|dd d|j�}|j�|j �|j �|j�|j�dS( NsThis is Tcl/Tk version %sg333333 @s This should be a cedilla: �s iso-8859-1R�s Click me!R�cSs|jjdd|jd�S(NR�s[%s](ttestR�(R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt<lambda> stQUIT( R't TclVersionRt NameErrorR�R�RxR�R�RRR�R~(R�R�R�R�Rc((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt_tests( t__main__(`R9t__version__R�tplatformtFixTkR�ttkinterR�R�tTkconstantstreR/R�RARCRBR�tREADABLEtWRITABLEt EXCEPTIONtcreatefilehandlerRRtdeletefilehandlertcompileR RRRRR(tTrueR5R6R:R;R<R>RCRMRDRuRwRzR|R~R?RyR{ROR�R`R�R�R�R'RZR[RbRfRkRrRsRxR�R�R�R�R�R�R�R�R�R�R�RR(R*R,R-R/R3RxR}R�R�R�R�R�R�R�R�R�R�R�R7(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt<module>s� , k ����Q�}',/8> �A[}!(�I%@@ �� tkColorChooser.py000064400000003370151703463030010063 0ustar00# tk common color chooser dialogue # # this module provides an interface to the native color dialogue # available in Tk 4.2 and newer. # # written by Fredrik Lundh, May 1997 # # fixed initialcolor handling in August 1998 # # # options (all have default values): # # - initialcolor: color to mark as selected when dialog is displayed # (given as an RGB triplet or a Tk color string) # # - parent: which window to place the dialog on top of # # - title: dialog title # from tkCommonDialog import Dialog # # color chooser class class Chooser(Dialog): "Ask for a color" command = "tk_chooseColor" def _fixoptions(self): try: # make sure initialcolor is a tk color string color = self.options["initialcolor"] if isinstance(color, tuple): # assume an RGB triplet self.options["initialcolor"] = "#%02x%02x%02x" % color except KeyError: pass def _fixresult(self, widget, result): # result can be somethings: an empty tuple, an empty string or # a Tcl_Obj, so this somewhat weird check handles that if not result or not str(result): return None, None # canceled # to simplify application code, the color chooser returns # an RGB tuple together with the Tk color string r, g, b = widget.winfo_rgb(result) return (r/256, g/256, b/256), str(result) # # convenience stuff def askcolor(color = None, **options): "Ask for a color" if color: options = options.copy() options["initialcolor"] = color return Chooser(**options).show() # -------------------------------------------------------------------- # test stuff if __name__ == "__main__": print "color", askcolor() tkColorChooser.pyc000064400000002614151703463030010226 0ustar00� zfc@sQddlmZdefd��YZdd�ZedkrMdGe�GHndS(i����(tDialogtChoosercBs&eZdZdZd�Zd�ZRS(sAsk for a colorttk_chooseColorcCsLy4|jd}t|t�r3d||jd<nWntk rGnXdS(Ntinitialcolors #%02x%02x%02x(toptionst isinstancettupletKeyError(tselftcolor((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt_fixoptions!s cCsU|st|�rdS|j|�\}}}|d|d|dft|�fS(Ni(NN(tstrtNonet winfo_rgb(Rtwidgettresulttrtgtb((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt _fixresult+s(t__name__t __module__t__doc__tcommandR R(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyRs cKs/|r|j�}||d<nt|�j�S(sAsk for a colorR(tcopyRtshow(R R((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pytaskcolor:s t__main__R N(ttkCommonDialogRRRRR(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt<module>s tkColorChooser.pyo000064400000002614151703463030010242 0ustar00� zfc@sQddlmZdefd��YZdd�ZedkrMdGe�GHndS(i����(tDialogtChoosercBs&eZdZdZd�Zd�ZRS(sAsk for a colorttk_chooseColorcCsLy4|jd}t|t�r3d||jd<nWntk rGnXdS(Ntinitialcolors #%02x%02x%02x(toptionst isinstancettupletKeyError(tselftcolor((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt_fixoptions!s cCsU|st|�rdS|j|�\}}}|d|d|dft|�fS(Ni(NN(tstrtNonet winfo_rgb(Rtwidgettresulttrtgtb((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt _fixresult+s(t__name__t __module__t__doc__tcommandR R(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyRs cKs/|r|j�}||d<nt|�j�S(sAsk for a colorR(tcopyRtshow(R R((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pytaskcolor:s t__main__R N(ttkCommonDialogRRRRR(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt<module>s tkMessageBox.pyc000064400000007466151703463030007674 0ustar00� zfc@s�ddlmZdZdZdZdZdZdZdZd Z d Z dZdZd Z dZdZdZdZdZdefd��YZd+d+d+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zd+d+d�Zedkr�dGedd�GHdGedd �GHdGedd!�GHdGedd"�GHd#Gedd$�GHd%Gedd&�GHd'Gedd(�GHd)Gedd*�GHnd+S(,i����(tDialogterrortinfotquestiontwarningtabortretryignoretoktokcanceltretrycanceltyesnotyesnocanceltaborttretrytignoretcanceltyestnotMessagecBseZdZdZRS(s A message boxt tk_messageBox(t__name__t __module__t__doc__tcommand(((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyR9scKs�|rd|kr||d<n|r>d|kr>||d<n|rQ||d<n|rd||d<nt|�j�}t|t�r�|r�tStSt|�S(Nticonttypettitletmessage(Rtshowt isinstancetbooltYEStNOtstr(RRt_icont_typetoptionstres((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt_showCs cKst||tt|�S(sShow an info message(R%tINFOtOK(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytshowinfoQscKst||tt|�S(sShow a warning message(R%tWARNINGR'(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytshowwarningUscKst||tt|�S(sShow an error message(R%tERRORR'(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt showerrorYscKst||tt|�S(sAsk a question(R%tQUESTIONtYESNO(RRR#((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskquestion]scKs"t||tt|�}|tkS(s@Ask if operation should proceed; return true if the answer is ok(R%R-tOKCANCELR'(RRR#ts((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskokcancelascKs"t||tt|�}|tkS(s0Ask a question; return true if the answer is yes(R%R-R.R(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskyesnofscKs>t||tt|�}t|�}|tkr4dS|tkS(sDAsk a question; return true if the answer is yes, None if cancelled.N(R%R-tYESNOCANCELR tCANCELtNoneR(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskyesnocancelks cKs"t||tt|�}|tkS(sDAsk if operation should be retried; return true if the answer is yes(R%R)tRETRYCANCELtRETRY(RRR#R1((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pytaskretrycanceltst__main__tSpamsEgg InformationsEgg Warnings Egg Alerts Question?tproceedsProceed?syes/nosGot it?s yes/no/cancelsWant it?s try agains Try again?N(ttkCommonDialogRR+R&R-R)tABORTRETRYIGNORER'R0R8R.R4tABORTR9tIGNORER5RRRR6R%R(R*R,R/R2R3R7R:R(((s+/usr/lib64/python2.7/lib-tk/tkMessageBox.pyt<module>sH
/home/emeraadmin/www/wp-admin/../node_modules/d3-array/src/../../../Classes/../4d695/lib-tk.tar