Current File : /home/mmdealscpanel/yummmdeals.com/lib-tk.tar
tkSimpleDialog.py000064400000017053150327205550010040 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")
tkFont.pyo000064400000016004150327205550006547 0ustar00�
zfc@s�dZddlZdZdZdZdZd�Zddd	��YZdd
�Z	dd�Z
edkr�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�Zd	�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�tjjd|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�scCs1|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�st__main__tfamilyttimestsizeitweightthellot	linespaceRtCourieriRCsHello, worldsQuit!tcommand((RRiR(t__version__R"tNORMALtROMANtBOLDtITALICRRRIRJRRFtTkR/tfRR@R4RARDtLabeltwtpacktButtontdestroyR>tfbtmainloop(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt<module>	s>	�	

Tkconstants.pyo000064400000004306150327205550007617 0ustar00�
zfc@s�dZZZdZZZdZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZd
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�tkFont.py000064400000014022150327205550006366 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()
tkCommonDialog.pyc000064400000002754150327205550010204 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
ttk.py000064400000155555150327205550005744 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)
turtle.pyc000064400000420471150327205550006614 0ustar00�
zfcO@s+dZdZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlTddd	d
ddd
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*tScrolledCanvastTurtleScreentScreent	RawTurtletTurtletRawPentPentShapetVec2Dtaddshapetbgcolortbgpictbyetclearscreent	colormodetdelaytexitonclickt	getcanvast	getshapestlistentmodetonkeyt
onscreenclicktontimertregister_shapetresetscreent
screensizetsetuptsetworldcoordinatesttitlettracertturtlestupdatet
window_heighttwindow_widthtbacktbackwardt
begin_fillt
begin_polytbktcircletcleart
clearstamptclearstampstclonetcolortdegreestdistancetdottdowntend_filltend_polytfdtfillt	fillcolortforwardtget_polytgetpent	getscreent	getturtletgototheadingt
hideturtlethomethttisdownt	isvisibletlefttlttonclicktondragt	onreleasetpdtpentpencolortpendowntpensizetpenuptpostpositiontputradianstrighttresett
resizemodetrttsetht
setheadingtsetpostsetpositiontsettiltanglet
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|�}nt	|�}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.cfgtimportconfigs
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
�ZRS(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__titemsttypettypestFunctionType(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�Zd
�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|jjd	tj�|_tj
|d|jj�|_|jjd
|jjd|jj�|jdd
ddd�|jdd
ddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|j�|jjd|j�dS(NRpR�twhitetbgtrelieftborderwidthitcommandtorienttxscrollcommandtyscrollcommanditweightitminsizetpadxtin_tpadytrowtcolumntrowspant
columnspantstickytnewss<Configure>(tTKtFramet__init__twinfo_toplevelt_rootwindowRpR�R�R�R�tCanvastSUNKENt_canvast	Scrollbartxviewt
HORIZONTALthscrolltyviewtvscrollt	configuretsettrowconfiguretcolumnconfiguretgridRXtbindtonResize(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�tscrollregionig�?iN(
R�R�R�Rtconfigtxview_movetoRptyview_movetoR�t
adjustScrolls(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCs|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
RiRR
RRN(Rtwinfo_widthtwinfo_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.pytset_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�Zd�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	_drawpolyscCs.|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_onclickuscsY�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�scCs|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�scCs|jjddd|�S(s0Create and return image item on canvas.
        itimage(RQtcreate_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�txscalefactortyscalefactorR�RitcoordinatestnewcoordlistR�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_resizes'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_sizesN(#R�R�R�tstaticmethodRNRPRRXR�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.pytaddcomponentQs	N(R�R�R�R�RR�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:stTbuffercBsJeZdZdd�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.pytpopscCs|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	�Zd
�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����(RRNt_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�xdD]}|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�RRPR�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.pyRhscCs2x+|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�scCsc|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�scCsRtjstt_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#scCs|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.pyRbscCs|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�Zdd
�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�scCs%|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^scCs|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.pyRslscCs<|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{scCs!|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	cCs�|jr+|jjdg�t|j_n|j�}|dkrO|j}n|dkr�t|�|j}dtt	dt|�dd�|�}nd||}d|}d|t
j|t
jd	|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�tDEFAULT_MODER�R�RRXR�R�RR3RVRRRR<R(RWRHRSRrRsRARDRaRbR4RkRBR\R-RfR#RmR9R,R)RZRIRTR]R^R[(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sZ
												
		#			 #		AtTPencBs
eZdZedd�Zededd�Zdd�Zdd�Zd�Z	d	�Z
d
�Zdd�Zd�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�scCs!|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|koldknr�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.pyROYscGsO|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;~scCs|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�dS(
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
�Zd�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`�	scCs |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	cCs}|j}|j|jj}|j}|jj}|jr�|jdkr�|jdkr�t	|_
|j}|dkr�|jdkr�d}|}n�|jdkr�t
d|jd�}}|j}d}	n3|jdkr|j\}}|j}|j}	ng|D] \}
}||
||f^q	}tj|	�tj|	�}}
g|D]1\}
}|
|
||||
|
|f^qU}|j|�}|j|j}}|j||d|d	|d
|dt�qy|dkr�|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|dkr1|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^		'						->	%-&	"
&cCs	|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|dkr�|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


cCsf|j|j|jt|jt�f}|j}d|j|||j|j	|j
|j�|jff}|jr�|jj
|�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	�dkrX|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|jd	|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.pyRs	

	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�|jg|_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:9s2	


	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*lscCs|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||�}|jj
|�|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|dkr[|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
�ZRS(R"cCs�tjdkrKt�t_|_|jjtj�|jj|j�ntjdkr�t	d}t	d}t	d}t	d}t	d}t	d}|jj
||||�|jj�t_tj
|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.pyRrsN(R�R�R�R�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR	istturtle_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�tdd
�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����iiixiiFiR�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�iR�(%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�RR�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	btkMessageBox.pyc000064400000007466150327205550007676 0ustar00�
zfc@s�ddlmZdZdZdZdZdZdZdZd	Z	d
Z
dZdZd
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
		FileDialog.pyo000064400000022766150327205550007315 0ustar00�
zfc@s�dZddlTddlmZddlZddlZiZdd
d��YZdefd��YZd	efd
��YZd�Z	e
dkr�e	�ndS(sZFile selection dialog classes.

Classes:

- FileDialog
- LoadFileDialog
- SaveFileDialog

i����(t*(tDialogNt
FileDialogcBs�eZdZdZdd�Zejdddd�Zdd�Z	d�Z
d�Zd	�Zd
�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�|jj
�|jj�d|_|jj�|r&|j�\}}|jrtjj|j�}n||ft|<n|jj�|jS(N(tdialogstatesRtostpatht
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	dkr�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
�	tkColorChooser.pyc000064400000002614150327205550010230 0ustar00�
zfc@sQddlmZdefd��YZdd�ZedkrMdGe�GHndS(i����(tDialogtChoosercBs&eZdZdZd�Zd�ZRS(sAsk for a colorttk_chooseColorcCsLy4|jd}t|t�r3d||jd<nWntk
rGnXdS(Ntinitialcolors
#%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(ttkCommonDialogRRRRR(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt<module>s
tkCommonDialog.pyo000064400000002754150327205550010220 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
Tkinter.pyc000064400000606777150327205550006734 0ustar00�
zfc@s�dZdZddlZejdkr6ddlZnddlZeZejZddlTddl	Tddl
Z
dZeej
�Zeej�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/eZ0d�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�}tj
d|�}|dd	krHd
|}qHn,|dd	ks;tj|�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	splitlistRtRuntimeErrortitertzipR(	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�ZeZd�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.(RJtglobalsetvarRK(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN
scCs|jj|j�S(sReturn value of variable.(RJtglobalgetvarRK(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.pyRuKstIntVarcBs8eZdZdZdddd�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.pyRzzst
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�ZeZd�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_setscCs|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.ttk_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.ttk_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�FscGs|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.pytafter_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�scKsGd|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.pytgrab_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.pytgrab_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.pytoption_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�scKs�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_getscGs|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�tcolormapfull(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.pytwinfo_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_fpixelsGscCs|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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytwinfo_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�tscreenheight(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�tscreenvisual(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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytunbind_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�}nt|�}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.pytnametowidget�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.pytgetint_event�s
i(Rt
_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_exceptionscGsji}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.pytkeysBscCs|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.pytplace_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_bboxiscCsmt|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).trowconfigure(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.pytevent_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.pytxview_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.pytxview_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.pytyview_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.pytyview_scroll6s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�'s		tWmcBseZdZddddd�ZeZd�ZeZdd�ZeZ	d�Z
e
Zdd�ZeZ
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(RR�R.RPRR�R*(RRtwlistR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_colormapwindowsfscCs|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.pytwm_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�scCs|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�ticonposition(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�tpositionfrom(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.pytwm_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.pytwm_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
RRRRRRRRRRRRRRRRRR RvR"R!R$R#R&R%(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�<sv				
	
	tTkcBseeZdZdZddddddd�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	�trtr|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
ejZ
ZejZZRS(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
ejZ
ZRS(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.pytplace_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�ZeZ
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||jf||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�8scCs|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(NttkButtonDown(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�stCanvascBsIeZdZd:id�Zd�Zd�Zd�Zd�Zd:d:d�Z	d�Z
d�Zd	�Zd
�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.pytaddtag_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.pytaddtag_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��scCs"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��scGs2tt|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.pytcreate_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.pytfind_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.pytfind_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.pytselect_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	�ZeZ
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��	scCs |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.pytselection_to�	sN(R7R8R9RRUR�R]R�R�R�R�R�R�R�R�R�R�R�R�tselect_presentR�tselect_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	�Zd
�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.tcurselection((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
scCs5|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
scGs$|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
scCs#|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	�Zd
�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(Nttk_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��
scCs|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'�
sN((R7R8R9RRURRRRRR	R
RR
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	�Zd
�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(s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.
        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_undos	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_cgets


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_configurescKs+|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.pytimage_creates	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.pytmark_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_names1scCs#|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_set5scGs$|jj|jddf|�dS(sDelete all marks in MARKNAMES.R�tunsetN(R.RPR�(RRt	markNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt
mark_unset8scCs"|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�AscCs#|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�DscCs(|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.pyRIs.


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�ds"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�jscCsY|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_cgetrs


cKs|jdd|f||�S(sConfigure a tag TAGNAME.RbR�(R�(RRRcR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt
tag_configureyscGs$|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.pytwindow_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�st
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|dd
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.itborderwidthttextvariableitindicatorontreliefR$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��scCstj|�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�Zd	�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�eZdZdidd�Zd�Zd�Zd�Zd�Zdd�Z	dd�Z
d	�Zdd
�Zddd�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�`
sN(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	�Zd
�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��
scCs|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��
scCs
|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�Zd	�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.pytproxy_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_coordvscCs|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>
stQUIT(
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%@@		��
	Canvas.py000064400000016447150327205550006351 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')
tkFileDialog.pyc000064400000012051150327205550007622 0ustar00�
zfc@s�ddlmZdefd��YZdefd��YZdefd��YZdefd	��YZd
�Zd�Zd�Zd
d�Z	d
d�Z
dd�Zd�Ze
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(RRRt	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.pytaskopenfiles�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.pytaskdirectory�st__main__sutf-8NtRs	all filest*sCould not open File: iR*tsaveas(s	all filesR7(ttkCommonDialogRRRR!R#R'R(R)R-R1R3R4Rtenctsystlocalet	setlocaletLC_ALLtnl_langinfotCODESETtImportErrorRtopenfilenameR*tfptclosetexc_infotencodetsaveasfilename(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt<module>+s<					Tkdnd.py000064400000026340150327205550006173 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()
turtle.pyo000064400000420471150327205550006630 0ustar00�
zfcO@s+dZdZddlZddlZddlZddlZddlZddlm	Z	m
Z
mZddlm
Z
ddlTddd	d
ddd
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*tScrolledCanvastTurtleScreentScreent	RawTurtletTurtletRawPentPentShapetVec2Dtaddshapetbgcolortbgpictbyetclearscreent	colormodetdelaytexitonclickt	getcanvast	getshapestlistentmodetonkeyt
onscreenclicktontimertregister_shapetresetscreent
screensizetsetuptsetworldcoordinatesttitlettracertturtlestupdatet
window_heighttwindow_widthtbacktbackwardt
begin_fillt
begin_polytbktcircletcleart
clearstamptclearstampstclonetcolortdegreestdistancetdottdowntend_filltend_polytfdtfillt	fillcolortforwardtget_polytgetpent	getscreent	getturtletgototheadingt
hideturtlethomethttisdownt	isvisibletlefttlttonclicktondragt	onreleasetpdtpentpencolortpendowntpensizetpenuptpostpositiontputradianstrighttresett
resizemodetrttsetht
setheadingtsetpostsetpositiontsettiltanglet
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|�}nt	|�}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.cfgtimportconfigs
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
�ZRS(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__titemsttypettypestFunctionType(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�Zd
�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|jjd	tj�|_tj
|d|jj�|_|jjd
|jjd|jj�|jdd
ddd�|jdd
ddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|jjddd|dddddddddddd�|j�|jjd|j�dS(NRpR�twhitetbgtrelieftborderwidthitcommandtorienttxscrollcommandtyscrollcommanditweightitminsizetpadxtin_tpadytrowtcolumntrowspant
columnspantstickytnewss<Configure>(tTKtFramet__init__twinfo_toplevelt_rootwindowRpR�R�R�R�tCanvastSUNKENt_canvast	Scrollbartxviewt
HORIZONTALthscrolltyviewtvscrollt	configuretsettrowconfiguretcolumnconfiguretgridRXtbindtonResize(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�tscrollregionig�?iN(
R�R�R�Rtconfigtxview_movetoRptyview_movetoR�t
adjustScrolls(R�R�R�R�((s%/usr/lib64/python2.7/lib-tk/turtle.pyRX�scCs|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
RiRR
RRN(Rtwinfo_widthtwinfo_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.pytset_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�Zd�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	_drawpolyscCs.|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_onclickuscsY�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�scCs|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�scCs|jjddd|�S(s0Create and return image item on canvas.
        itimage(RQtcreate_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�txscalefactortyscalefactorR�RitcoordinatestnewcoordlistR�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_resizes'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_sizesN(#R�R�R�tstaticmethodRNRPRRXR�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.pytaddcomponentQs	N(R�R�R�R�RR�(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR:stTbuffercBsJeZdZdd�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.pytpopscCs|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	�Zd
�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����(RRNt_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�xdD]}|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�RRPR�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.pyRhscCs2x+|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�scCsc|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�scCsRtjstt_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#scCs|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.pyRbscCs|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�Zdd
�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�scCs%|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^scCs|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.pyRslscCs<|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{scCs!|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	cCs�|jr+|jjdg�t|j_n|j�}|dkrO|j}n|dkr�t|�|j}dtt	dt|�dd�|�}nd||}d|}d|t
j|t
jd	|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�tDEFAULT_MODER�R�RRXR�R�RR3RVRRRR<R(RWRHRSRrRsRARDRaRbR4RkRBR\R-RfR#RmR9R,R)RZRIRTR]R^R[(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR��sZ
												
		#			 #		AtTPencBs
eZdZedd�Zededd�Zdd�Zdd�Zd�Z	d	�Z
d
�Zdd�Zd�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�scCs!|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|koldknr�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.pyROYscGsO|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;~scCs|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�dS(
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
�Zd�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`�	scCs |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	cCs}|j}|j|jj}|j}|jj}|jr�|jdkr�|jdkr�t	|_
|j}|dkr�|jdkr�d}|}n�|jdkr�t
d|jd�}}|j}d}	n3|jdkr|j\}}|j}|j}	ng|D] \}
}||
||f^q	}tj|	�tj|	�}}
g|D]1\}
}|
|
||||
|
|f^qU}|j|�}|j|j}}|j||d|d	|d
|dt�qy|dkr�|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|dkr1|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^		'						->	%-&	"
&cCs	|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|dkr�|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


cCsf|j|j|jt|jt�f}|j}d|j|||j|j	|j
|j�|jff}|jr�|jj
|�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	�dkrX|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|jd	|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.pyRs	

	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�|jg|_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:9s2	


	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*lscCs|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||�}|jj
|�|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|dkr[|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
�ZRS(R"cCs�tjdkrKt�t_|_|jjtj�|jj|j�ntjdkr�t	d}t	d}t	d}t	d}t	d}t	d}|jj
||||�|jj�t_tj
|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.pyRrsN(R�R�R�R�R�R�R�R(((s%/usr/lib64/python2.7/lib-tk/turtle.pyR	istturtle_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�tdd
�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����iiixiiFiR�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�iR�(%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�RR�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	bFixTk.py000064400000005712150327205550006154 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
ScrolledText.pyc000064400000005150150327205550007702 0ustar00�
zfc@s�dZdgZddlmZmZmZmZmZmZddl	m
Z
mZmZm
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.
tScrolledTexti����(tFrametTextt	ScrollbartPacktGridtPlace(tRIGHTtLEFTtYtBOTHcBseZdd�Zd�ZRS(cKsKt|�|_t|j�|_|jjdtdt�|ji|jjd6�t	j
||j|�|jdtdtdt
�|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.pyRscCsxddl}ddlm}tdddd�}|j||j�|jdtdtd	t	�|j
�|j�dS(
Ni����(tENDtbgtwhitetheighti
RRR(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	."	
ttk.pyo000064400000172244150327205550006115 0ustar00�
zfc@sYdZdZdZddddddd	d
ddd
dddddddddddddgZddlZddlmZmZmZmZej	dkr�e
neZd�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)de 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	SeparatortSizegriptStyletTreeviewtLabeledScalet
OptionMenut
tclobjs_to_pytsetup_masteri����N(t_flattent_joint
_stringifyt
_splitdictg!@cCsatr]ddl}|jjd�}|rA|jjd|�n|jjd�t|_ndS(Ni����tTILE_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 
'



cCs�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_stringval2scCs=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_roottTktRuntimeError(R%((s"/usr/lib64/python2.7/lib-tk/ttk.pyRYs	cBs�eZdZdZdd�Zdd�Zdd�Zddd�Zdd�Z	d�Z
d�Zd	�Zddd
�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.pyttheme_create�scCs/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�scCs%|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_usesN(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=EsN(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�VscCs|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.pyRRscBs#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�mscCs|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.pyRjscBs8eZdZddd�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��scCsG|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�sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR
scBszeZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
dd�Zdd	�Zd
�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�scCs|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

scBs5eZdZdd�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&scBseZdZdd�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	�Zd!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.pytget_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.pytset_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.pytidentify_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�sscCs|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|�|_|jj
d|j�|jr�dnd}|dkr�dnd}|jjd|d	d
�t	|�jd|�}|j
jd|dkr$dnd
�|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.RN(	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.pytadjust_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.
        ttextvariableR�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.(tnametowidgetRt__getitem__(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR7Csc	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
RR
RRRRtXViewtYViewRRR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyt<module>
sf"	
	%1	*				
		
	�B*"�8*'"�DaTix.pyc000064400000273532150327205550006045 0ustar00�
zfc@sxddlZddlZddlTddlmZmZedkrPed�nddlZdZdZdZ	d	Z
d
ZdZdZ
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.
        ttixtaddbitmapdir(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_configureiscCs9|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.pyttix_getimage�scCs|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.
        RtresetoptionsN(R#RR(Rt	newSchemet
newFontSett
newScmPrio((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_resetoptions�sN(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�scCs$|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	�Zd
�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�}nt|�}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 routinettixSetSilentN(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_roottRuntimeErrorRRgthasattrt	_registerRR(RtimgtypeR)RlR*ReRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_create�s		cCs2y|jjdd|�Wntk
r-nXdS(NRtdelete(RRRv(Rtimgname((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_delete�s
N(R;R<R=R#RBRrRtRzR~RuR{R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRds,			
				
tTixSubWidgetcBs&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��stDisplayStylecBsSeZdZid�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(NttixButtonBoxtorientationRe(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�"stComboBoxcBsAeZdZdid�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
tDirSelectBoxcBseZdZid�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��stExFileSelectBoxcBs,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.pytapply_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(NttixFileEntryt
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
�Zd�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.pytanchor_clearpsicCsK|s%|jj|jdd||�S|jj|jdd|d|�SdS(NRtwidths-char(RRRP(RtcolRtchars((s"/usr/lib64/python2.7/lib-tk/Tix.pytcolumn_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.pytdelete_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.pytdragsite_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.pytdropsite_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�scCs|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�sc	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.pyRSscCs|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-theader_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(NttixInputOnly(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	tListNoteBookcBsAeZdZid�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.pyRBxscKsI|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��scCsD|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(NttixPopupMenuReR|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
			tResizeHandlecBs>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(Ntattachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt
attach_widgetscCs |jj|jd|j�dS(Ntdetachwidget(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�stScrolledTextcBseZdZid�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�HstShellcBseZdZdid�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
		tStdButtonBoxcBs&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�scCs/||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	�Zd
�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.pytactive_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(NttixCheckListReR�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, defaulttgetselection(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.pytFileTypeList�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	�Zdd
�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_rowscCsH|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_columnscCs|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.pyRYsc	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(
												
		tScrolledGridcBseZdZdid�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
	
	�tkFileDialog.py000064400000013137150327205550007465 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)
Canvas.pyc000064400000036314150327205550006507 0ustar00�
zfc@s/ddlmZeddd�[ddlmZmZmZddd��YZdefd	��YZd
efd��YZdefd
��YZ	defd��YZ
defd��YZdefd��YZdefd��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
�Zd�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__scCs!|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�Zd	�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.pytaddtag_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.pytaddtag_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>sLtkColorChooser.pyo000064400000002614150327205550010244 0ustar00�
zfc@sQddlmZdefd��YZdd�ZedkrMdGe�GHndS(i����(tDialogtChoosercBs&eZdZdZd�Zd�ZRS(sAsk for a colorttk_chooseColorcCsLy4|jd}t|t�r3d||jd<nWntk
rGnXdS(Ntinitialcolors
#%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(ttkCommonDialogRRRRR(((s-/usr/lib64/python2.7/lib-tk/tkColorChooser.pyt<module>s
test/widget_tests.pyo000064400000063575150327205550011005 0ustar00�
zfc@sVddlZddlZddlZddlmZddlmZmZm	Z	m
Z
mZmZddl
ZeZZe
�dddfkr�eZneo�ee�Zd�ZeZe
�d dddfkr�eZne�Zd	efd
��YZdefd��YZd
efd��YZdefd��YZd�Zd�ZdS(i����N(tScale(tAbstractTkTestttcl_versiontrequires_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�Zdej
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|jr#|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.pytassertEqual21scCs|||<|tkr|}n|r4||�}n|jsG|jrwt|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'tformattassertRaisesR%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||ddd
�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�scKs^|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}tdkr=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|jj
|fGHq�q�WndS(Ntborderwidthtbdt
backgroundtbgt
foregroundtfgtinvalidcommandtinvcmdtvalidatecommandtvcmds%s.OPTIONS doesn't contain "%s"(tcreatetkeysRRRtsortedR)ttestttest_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__tstaticmethodtpixels_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�Zd4�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
insertofftimetinsertontimetinsertwidthtjumptjustifytorienttpadxtpadytrelieftrepeatdelaytrepeatintervaltselectbackgroundtselectborderwidthtselectforegroundtsetgridt	takefocusttextttextvariablettroughcolort	underlinet
wraplengthtxscrollcommandtyscrollcommandcCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activebackground
sc	Cs2|j�}|j|ddddddd�dS(NR�ig�������?g333333@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeborderwidthscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeforegroundscCs;|j�}|j|ddddddddd	d
�dS(NR�tntnetetsetstswtwtnwtcenter(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_anchors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_backgroundscCs�|j�}|j|dd�|j|dd�tjjddd�}|j|dd|�d|jjjd	d
�ko�d|jj�ks�|j	|ddd
d�ndS(NR�t	questheadtgray50s
python.xbmtsubdirt
imghdrdatat@taquaRtwindowingsystemtAppKitR?R4sbitmap "spam" not defined(
R�R/R�R�tfindfileRRRtwinfo_serverR8(RR+tfilename((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_bitmap%sc	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_compound9scCs |j�}|j|d�dS(NR�(R�RW(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_cursor>scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_disabledforegroundBscCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_exportselectionFscCs<|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_foregroundQscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightbackgroundWscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightcolor[scCsQ|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_imagefscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertbackgroundlsc	Cs2|j�}|j|ddddddd�dS(NR�ig�������?g������@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertborderwidthpscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertofftimeuscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertontimeyscCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertwidth}scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt	test_jump�scCsH|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.pyttest_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�sc
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�sc
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�scCs |j�}|j|d�dS(NR�(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_relief�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatdelay�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatinterval�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectbackground�scCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectborderwidth�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectforeground�scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_setgrid�scCs)|j�}|j|dddd�dS(Ntstatetactivetdisabledtnormal(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt
test_state�scCs)|j�}|j|dddd�dS(NR�t0t1R<(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_takefocus�scCs&|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�scCs5|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�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_troughcolor�scCs)|j�}|j|dddd�dS(NR�iii
(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_underline�scCs#|j�}|j|dd�dS(NR�id(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_wraplength�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_xscrollcommand�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_yscrollcommand�scCs |j�}|j|d�dS(NRY(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_command�scCs |j�}|j|d�dS(Ntindicatoron(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_indicatoron�scCs |j�}|j|d�dS(Nt	offrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_offrelief�scCs |j�}|j|d�dS(Nt
overrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_overrelief�scCs |j�}|j|d�dS(Ntselectcolor(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectcolor�scCs |j�}|j|d�dS(Ntselectimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectimage�siicCs |j�}|j|d�dS(Nt
tristateimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristateimage�scCs#|j�}|j|dd�dS(Nt
tristatevaluet
unknowable(R�R/(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristatevalue�scCs5|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
RRR
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	scCs)|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'sc	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
methodnametsource_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(Nspatchlevel =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/runtktests.pyo000064400000005453150327205550010515 0ustar00�
zfc@s�dZddlZddlZddlZddlZddlZejjejj	e
��Zd�Zee
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_packagesc	#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�tjj
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_modulettestttest_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__Rtrun_unittest(((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<module>s	test/widget_tests.py000064400000050155150327205550010614 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/README000064400000001066150327205550006412 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/widget_tests.pyc000064400000063575150327205550010771 0ustar00�
zfc@sVddlZddlZddlZddlmZddlmZmZm	Z	m
Z
mZmZddl
ZeZZe
�dddfkr�eZneo�ee�Zd�ZeZe
�d dddfkr�eZne�Zd	efd
��YZdefd��YZd
efd��YZdefd��YZd�Zd�ZdS(i����N(tScale(tAbstractTkTestttcl_versiontrequires_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�Zdej
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|jr#|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.pytassertEqual21scCs|||<|tkr|}n|r4||�}n|jsG|jrwt|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'tformattassertRaisesR%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||ddd
�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�scKs^|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}tdkr=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|jj
|fGHq�q�WndS(Ntborderwidthtbdt
backgroundtbgt
foregroundtfgtinvalidcommandtinvcmdtvalidatecommandtvcmds%s.OPTIONS doesn't contain "%s"(tcreatetkeysRRRtsortedR)ttestttest_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__tstaticmethodtpixels_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�Zd4�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
insertofftimetinsertontimetinsertwidthtjumptjustifytorienttpadxtpadytrelieftrepeatdelaytrepeatintervaltselectbackgroundtselectborderwidthtselectforegroundtsetgridt	takefocusttextttextvariablettroughcolort	underlinet
wraplengthtxscrollcommandtyscrollcommandcCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activebackground
sc	Cs2|j�}|j|ddddddd�dS(NR�ig�������?g333333@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeborderwidthscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_activeforegroundscCs;|j�}|j|ddddddddd	d
�dS(NR�tntnetetsetstswtwtnwtcenter(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_anchors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_backgroundscCs�|j�}|j|dd�|j|dd�tjjddd�}|j|dd|�d|jjjd	d
�ko�d|jj�ks�|j	|ddd
d�ndS(NR�t	questheadtgray50s
python.xbmtsubdirt
imghdrdatat@taquaRtwindowingsystemtAppKitR?R4sbitmap "spam" not defined(
R�R/R�R�tfindfileRRRtwinfo_serverR8(RR+tfilename((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_bitmap%sc	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_compound9scCs |j�}|j|d�dS(NR�(R�RW(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_cursor>scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_disabledforegroundBscCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_exportselectionFscCs<|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_foregroundQscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightbackgroundWscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_highlightcolor[scCsQ|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_imagefscCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertbackgroundlsc	Cs2|j�}|j|ddddddd�dS(NR�ig�������?g������@ii����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertborderwidthpscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertofftimeuscCs#|j�}|j|dd�dS(NR�id(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertontimeyscCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_insertwidth}scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt	test_jump�scCsH|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.pyttest_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�sc
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�sc
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�scCs |j�}|j|d�dS(NR�(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_relief�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatdelay�scCs&|j�}|j|ddd�dS(NR�i���i�(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_repeatinterval�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectbackground�scCs,|j�}|j|ddddd�dS(NR�g�������?g������@i����R=(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectborderwidth�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectforeground�scCs |j�}|j|d�dS(NR�(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_setgrid�scCs)|j�}|j|dddd�dS(Ntstatetactivetdisabledtnormal(R�R`(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyt
test_state�scCs)|j�}|j|dddd�dS(NR�t0t1R<(R�R;(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_takefocus�scCs&|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�scCs5|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�scCs |j�}|j|d�dS(NR�(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_troughcolor�scCs)|j�}|j|dddd�dS(NR�iii
(R�R>(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_underline�scCs#|j�}|j|dd�dS(NR�id(R�Rd(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_wraplength�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_xscrollcommand�scCs |j�}|j|d�dS(NR�(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_yscrollcommand�scCs |j�}|j|d�dS(NRY(R�R[(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_command�scCs |j�}|j|d�dS(Ntindicatoron(R�RJ(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_indicatoron�scCs |j�}|j|d�dS(Nt	offrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_offrelief�scCs |j�}|j|d�dS(Nt
overrelief(R�Rk(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_overrelief�scCs |j�}|j|d�dS(Ntselectcolor(R�RR(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectcolor�scCs |j�}|j|d�dS(Ntselectimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_selectimage�siicCs |j�}|j|d�dS(Nt
tristateimage(R�Rp(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristateimage�scCs#|j�}|j|dd�dS(Nt
tristatevaluet
unknowable(R�R/(RR+((s0/usr/lib64/python2.7/lib-tk/test/widget_tests.pyttest_tristatevalue�scCs5|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
RRR
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	scCs)|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'sc	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
methodnametsource_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(Nspatchlevel =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/runtktests.pyc000064400000005453150327205550010501 0ustar00�
zfc@s�dZddlZddlZddlZddlZddlZejjejj	e
��Zd�Zee
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_packagesc	#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�tjj
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_modulettestttest_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__Rtrun_unittest(((s./usr/lib64/python2.7/lib-tk/test/runtktests.pyt<module>s	test/test_ttk/test_widgets.py000064400000166617150327205550012470 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/__init__.py000064400000000000150327205550011467 0ustar00test/test_ttk/test_extensions.pyc000064400000023675150327205550013360 0ustar00�
zfc@s�ddlZddlZddlZddlZddlmZmZmZddl	m
Z
mZed�de
ejfd��YZ
de
ejfd��YZe
efZed	kr�ee�ndS(
i����N(trequirestrun_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�|jr�|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(tttktLabeledScaleRt	_variablet_nametdestroytassertRaisesttkintertTclErrorttktglobalgetvart	DoubleVartwantobjectstassertEqualtgettfloattIntVarthasattrtsystassertNotEqualR
(Rtxtvartmyvartname((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_widget_destroys&
	
	%(
cCs�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_master2scs�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	�}�jt
|jj�|j�tj�jdd�}�jt
|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��jtjtj|dd�dS(Nt0ii
i����ig@itfrom_s2.5tvalueiRg�?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��|jjdddd�|j�|jj	�d}|j
||�|jj�}|j
|jd|jr�dnd	�|j
|t|d��|jjdddd�|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�|jt
|jj�d�|jj�d�|jjd||f�|j�dS(	Ntexpandtfilltbothiis%dx%dR!i(RRRRIR)RJRKR+twinfo_widthtwinfo_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��~|jtj
|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?tmenuttextvariable(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|jjj
|�|d�|j|jjj
|�|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
�qtest/test_ttk/__init__.pyo000064400000000214150327205550011655 0ustar00�
zfc@sdS(N((((s5/usr/lib64/python2.7/lib-tk/test/test_ttk/__init__.pyt<module>ttest/test_ttk/test_functions.py000064400000041677150327205550013030 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.pyc000064400000037242150327205550013164 0ustar00�
zfc@s�ddlZddlZddlZdfd��YZdefd��YZdefd��YZdejfd	��YZd
ejfd��YZ	ee	fZ
edkr�dd
lm
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.pyRs	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�|tjiddddd
gd6dd6dd6dd6dd6dd6dd6dt�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|dt�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;RtassertRaisest	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|dd
�|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@stest {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�|jttjdiidd6d
6fg�dS(NiicSsttjdidddgd6dididid	d
6fgd6dd6fgd6fgd6fgd
|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(Nicsd|�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_itQscss|]}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_statespecPsc	Cstt�}|jtj|d��|jtj|d�difg�d}|jtj||�didd6fg�|jtj|dddf�digd6fg�ddddd	ddddff}|jtj||�didd6d	idd
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
ddd
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.pyttest_unicode�s
 cCs�iddddgd6}|jtj|�iddddgd6�dddg|d<|jtj|�idddgd6�tdd�d	f|d<|jtj|�idgd6�|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.pyttest_nosplit�s(R
RR�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR��s		t__main__(trun_unittest(R�tunittestR7RtobjectRRtTestCaseRR�ttests_noguiR
ttest.test_supportR�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<module>s

��test/test_ttk/support.pyc000064400000012334150327205550011624 0ustar00�
zfc@s�ddlZddlZddlZddlZddd��YZd�Zd�ZddlZe	e
eejj
d���Zd�Zdad�Zid	d
d6d	d6d	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.pytrequires_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(ttclR7tmtmajortminortreleaseleveltserial((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.pyo000064400000023675150327205550013374 0ustar00�
zfc@s�ddlZddlZddlZddlZddlmZmZmZddl	m
Z
mZed�de
ejfd��YZ
de
ejfd��YZe
efZed	kr�ee�ndS(
i����N(trequirestrun_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�|jr�|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(tttktLabeledScaleRt	_variablet_nametdestroytassertRaisesttkintertTclErrorttktglobalgetvart	DoubleVartwantobjectstassertEqualtgettfloattIntVarthasattrtsystassertNotEqualR
(Rtxtvartmyvartname((s</usr/lib64/python2.7/lib-tk/test/test_ttk/test_extensions.pyttest_widget_destroys&
	
	%(
cCs�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_master2scs�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	�}�jt
|jj�|j�tj�jdd�}�jt
|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��jtjtj|dd�dS(Nt0ii
i����ig@itfrom_s2.5tvalueiRg�?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��|jjdddd�|j�|jj	�d}|j
||�|jj�}|j
|jd|jr�dnd	�|j
|t|d��|jjdddd�|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�|jt
|jj�d�|jj�d�|jjd||f�|j�dS(	Ntexpandtfilltbothiis%dx%dR!i(RRRRIR)RJRKR+twinfo_widthtwinfo_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��~|jtj
|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?tmenuttextvariable(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|jjj
|�|d�|j|jjj
|�|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
�qtest/test_ttk/support.py000064400000007222150327205550011461 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/test_functions.pyo000064400000037242150327205550013200 0ustar00�
zfc@s�ddlZddlZddlZdfd��YZdefd��YZdefd��YZdejfd	��YZd
ejfd��YZ	ee	fZ
edkr�dd
lm
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.pyRs	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�|tjiddddd
gd6dd6dd6dd6dd6dd6dd6dt�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|dt�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;RtassertRaisest	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|dd
�|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@stest {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�|jttjdiidd6d
6fg�dS(NiicSsttjdidddgd6dididid	d
6fgd6dd6fgd6fgd6fgd
|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(Nicsd|�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_itQscss|]}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_statespecPsc	Cstt�}|jtj|d��|jtj|d�difg�d}|jtj||�didd6fg�|jtj|dddf�digd6fg�ddddd	ddddff}|jtj||�didd6d	idd
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
ddd
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.pyttest_unicode�s
 cCs�iddddgd6}|jtj|�iddddgd6�dddg|d<|jtj|�idddgd6�tdd�d	f|d<|jtj|�idgd6�|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.pyttest_nosplit�s(R
RR�R�R�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyR��s		t__main__(trun_unittest(R�tunittestR7RtobjectRRtTestCaseRR�ttests_noguiR
ttest.test_supportR�(((s;/usr/lib64/python2.7/lib-tk/test/test_ttk/test_functions.pyt<module>s

��test/test_ttk/test_extensions.py000064400000026325150327205550013210 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/support.pyo000064400000012334150327205550011640 0ustar00�
zfc@s�ddlZddlZddlZddlZddd��YZd�Zd�ZddlZe	e
eejj
d���Zd�Zdad�Zid	d
d6d	d6d	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.pytrequires_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(ttclR7tmtmajortminortreleaseleveltserial((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_style.py000064400000005542150327205550012147 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_widgets.pyo000064400000170617150327205550012642 0ustar00�
zfc@sUddlZddlZddlmZddlZddlmZmZmZm	Z	ddl
Z
ddlmZddl
mZmZmZmZddlmZmZmZmZmZmZmZmZed�defd	��YZd
eejfd��YZdeefd
��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(trequirestrun_unittestthave_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|�|jdd
�}|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.pyttest_paddingscCs�|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_widthtwinfo_heighttassertRaisesttkinterRtNone(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((R4R5Rt_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
ddd
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�scCs)|j�}|j|dddd�dS(NRSRKRJtnormal(RtcheckParams(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt
test_state�scCs)|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`R8ttextvariableRgR7t
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�(R4R5RcRRZRR�(((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.pyttest_default�scsBg�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�scCs,|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_onvalue�scsg��fd�}tj|jd|�}|j|j�d
�|jtj|jj	|d�|j
�}|j|d�|j|d|jj	|d��|j��d|d<|j
�}|jt
|��|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>RRSRFRGRttktglobalgetvarR�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�Zd�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*scCsI|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.scCs)|j�}|j|dddd�dS(NRSRJR�treadonly(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�4sc	Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusoutR�(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt
test_validate9scCs |j�}|j|d�dS(NR�(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validatecommand>scCsU|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(Rttest_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"											tComboboxTestcBsMeZdZd�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�scCs`|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�tj
�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�dkrDd	}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{RRFRGRtaddR|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(
RFRGRRtforgetRHRR<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�(RFRGRRR�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(RFRGRRRR<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�(RFRGRRtsashposRHR<R{RR?RUR@tassertNotEqualR tint(RRRtcurr_pos((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_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�scs�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�scCsH|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�Zd�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_fromscCs,|j�}|j|ddddd�dS(NR@i�gffffff`@g33333�`@t5i(RtcheckPixelsParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_lengthsc	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_tosc	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/scs�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�(R4R5RcRRZR/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.pyRHisc	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.pyttest_maximummscCs&|j�}|j|ddd�dS(NRYtdeterminatet
indeterminate(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt	test_modeqscCsdS(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�(R4R5RcRRZR/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.pyRcstNotebookTestcBsqeZdZd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Z	d�Z
d�Zd�Zd�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;�scKstj|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�|�|jt|j�|jj
�|�|j|jj
d�|d�dS(	Ni����ROtunknowntoptionR8RR�i(RFRGRRfRiRHRR<R{R>ttabsRgRRkRR�(RRtRtcurrtchild2_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((RRttchild1_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�scCs�|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						
	!				tTreeviewTestcBs�eZd#Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd�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|dtdkrVd
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.pyttest_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�scCs�|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��scCsW|jj�|j|jjd�d�|jj�|jj�|jjdd�}|jj�}|j|�|jj|d�}|j	|�dg|jd<|jj
ddd�|jj|dd�}|jj
ddd�}|jst
|�}n|j|d|d|�|jj|d�}|j|jj|�d�dS(	NRR�ittestR�R7i2s#0(R�R?RR�R@R�R�tget_childrenR�R�tcolumnRHRR)(Rtitem_idtchildrenR�tbbox_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 ttupletset_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
d6id
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�scCs0|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.pyttest_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	�|jr�|fn|�|j	|jj|d	d�|jr�|fn|�|jj|d	|jj|jj|d	d���|j	|jj|d	d�|jr@|fn|�|j|jj|�t�|jj|d	d�|j|jj|d	d��|jjddd
dd|g�}|j	|jj|d
d�|jr�d
d|fnd|�|jj|d
g�|j|jj|d
d��|jj|d
d�|j	|jj|d
d�|jrodnd�|jjddd	dd||ff�}|j	|jj|d	d�|jr�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|jjdddtd��|jjtd��|j	|jj
�td�f�n|jjdddd�|jjd�|j	|jj
�tr�td	�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~dnd
�|j|jj|dd�|jr�dnd�|j|jj|�|jr�idd6n
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|�dkr�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�tidentify_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 2ttag2snon-existingttag3((	R�R�RFR�ttag_hasRR�R�R(RR�R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_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�tstSizegripTestcBseZdZd�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	twidget_testsR
RRR
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�|�3j"
���	test/test_ttk/test_style.pyo000064400000006341150327205550012324 0ustar00�
zfc@s�ddlZddlZddlZddlmZmZddlmZed�deej	fd��YZ
e
fZedkr�ee�ndS(i����N(trequirestrun_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(	NRR
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(
NRR
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
NotALayouttTreeviewttnulltnswetstickyRtnamet
inexistenttoption(R
tassertRaisesttkintertTclErrortlayoutRRtlist(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/__init__.pyc000064400000000214150327205550011641 0ustar00�
zfc@sdS(N((((s5/usr/lib64/python2.7/lib-tk/test/test_ttk/__init__.pyt<module>ttest/test_ttk/test_style.pyc000064400000006341150327205550012310 0ustar00�
zfc@s�ddlZddlZddlZddlmZmZddlmZed�deej	fd��YZ
e
fZedkr�ee�ndS(i����N(trequirestrun_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(	NRR
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(
NRR
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
NotALayouttTreeviewttnulltnswetstickyRtnamet
inexistenttoption(R
tassertRaisesttkintertTclErrortlayoutRRtlist(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.pyc000064400000170617150327205550012626 0ustar00�
zfc@sUddlZddlZddlmZddlZddlmZmZmZm	Z	ddl
Z
ddlmZddl
mZmZmZmZddlmZmZmZmZmZmZmZmZed�defd	��YZd
eejfd��YZdeefd
��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(trequirestrun_unittestthave_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|�|jdd
�}|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.pyttest_paddingscCs�|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_widthtwinfo_heighttassertRaisesttkinterRtNone(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((R4R5Rt_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
ddd
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�scCs)|j�}|j|dddd�dS(NRSRKRJtnormal(RtcheckParams(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt
test_state�scCs)|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`R8ttextvariableRgR7t
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�(R4R5RcRRZRR�(((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.pyttest_default�scsBg�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�scCs,|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_onvalue�scsg��fd�}tj|jd|�}|j|j�d
�|jtj|jj	|d�|j
�}|j|d�|j|d|jj	|d��|j��d|d<|j
�}|jt
|��|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>RRSRFRGRttktglobalgetvarR�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�Zd�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*scCsI|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.scCs)|j�}|j|dddd�dS(NRSRJR�treadonly(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyR�4sc	Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusoutR�(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt
test_validate9scCs |j�}|j|d�dS(NR�(RR�(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_validatecommand>scCsU|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(Rttest_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"											tComboboxTestcBsMeZdZd�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�scCs`|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�tj
�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�dkrDd	}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{RRFRGRtaddR|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(
RFRGRRtforgetRHRR<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�(RFRGRRR�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(RFRGRRRR<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�(RFRGRRtsashposRHR<R{RR?RUR@tassertNotEqualR tint(RRRtcurr_pos((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_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�scs�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�scCsH|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�Zd�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_fromscCs,|j�}|j|ddddd�dS(NR@i�gffffff`@g33333�`@t5i(RtcheckPixelsParam(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_lengthsc	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_tosc	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/scs�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�(R4R5RcRRZR/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.pyRHisc	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.pyttest_maximummscCs&|j�}|j|ddd�dS(NRYtdeterminatet
indeterminate(RRv(RR((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyt	test_modeqscCsdS(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�(R4R5RcRRZR/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.pyRcstNotebookTestcBsqeZdZd�Zd�Zd	�Zd
�Zd�Zd�Zd
�Z	d�Z
d�Zd�Zd�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;�scKstj|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�|�|jt|j�|jj
�|�|j|jj
d�|d�dS(	Ni����ROtunknowntoptionR8RR�i(RFRGRRfRiRHRR<R{R>ttabsRgRRkRR�(RRtRtcurrtchild2_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((RRttchild1_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�scCs�|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						
	!				tTreeviewTestcBs�eZd#Zd�Zd
�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd�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|dtdkrVd
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.pyttest_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�scCs�|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��scCsW|jj�|j|jjd�d�|jj�|jj�|jjdd�}|jj�}|j|�|jj|d�}|j	|�dg|jd<|jj
ddd�|jj|dd�}|jj
ddd�}|jst
|�}n|j|d|d|�|jj|d�}|j|jj|�d�dS(	NRR�ittestR�R7i2s#0(R�R?RR�R@R�R�tget_childrenR�R�tcolumnRHRR)(Rtitem_idtchildrenR�tbbox_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 ttupletset_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
d6id
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�scCs0|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.pyttest_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	�|jr�|fn|�|j	|jj|d	d�|jr�|fn|�|jj|d	|jj|jj|d	d���|j	|jj|d	d�|jr@|fn|�|j|jj|�t�|jj|d	d�|j|jj|d	d��|jjddd
dd|g�}|j	|jj|d
d�|jr�d
d|fnd|�|jj|d
g�|j|jj|d
d��|jj|d
d�|j	|jj|d
d�|jrodnd�|jjddd	dd||ff�}|j	|jj|d	d�|jr�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|jjdddtd��|jjtd��|j	|jj
�td�f�n|jjdddd�|jjd�|j	|jj
�tr�td	�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~dnd
�|j|jj|dd�|jr�dnd�|j|jj|�|jr�idd6n
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|�dkr�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�tidentify_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 2ttag2snon-existingttag3((	R�R�RFR�ttag_hasRR�R�R(RR�R�((s9/usr/lib64/python2.7/lib-tk/test/test_ttk/test_widgets.pyttest_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�tstSizegripTestcBseZdZd�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	twidget_testsR
RRR
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�|�3j"
���	test/runtktests.py000064400000004305150327205550010331 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/test_tkinter/test_variables.py000064400000020305150327205550013627 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_misc.pyo000064400000007400150327205550012772 0ustar00�
zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ	e	fZ
edkr�ee
�ndS(i����N(trequirestrun_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�(
troottassertIsNoneR
tassertInttktcallt	splitlisttupdatetassertEqualtassertRaisesttkintertTclErrortafter_cancel(tselfRR	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(Rt
after_idleRRRRtupdate_idletasksRRRRR(RRR	tidle1RR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_idle-s,	

*


*
cs|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(
RR
RRt
ValueErrorRtNoneRRRRRR(RRR	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_widgets.py000064400000134207150327205550013334 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/__init__.py000064400000000000150327205550012345 0ustar00test/test_tkinter/test_text.pyc000064400000003467150327205550013020 0ustar00�
zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ	e	fZ
edkr�ee
�ndS(i����N(trequirestrun_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
tassertRaisesRtTclErrortsearchtNonetinsertR
(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_images.py000064400000032050150327205550013124 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/__init__.pyo000064400000000220150327205550012530 0ustar00�
zfc@sdS(N((((s9/usr/lib64/python2.7/lib-tk/test/test_tkinter/__init__.pyt<module>ttest/test_tkinter/test_variables.pyo000064400000026236150327205550014017 0ustar00�
zfc@sddlZddlZddlmZmZmZmZmZmZm	Z	dej
fd��YZdefd��YZdefd��YZ
d	efd
��YZdefd��YZd
efd��YZee
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.pyttearDowns(t__name__t
__module__R
R(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs	tTestVariablecBsYeZd�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.pyttest_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.pyttest___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__0scCs-|jt��t|jdd�WdQXdS(NR!i{(tassertRaisest	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
ValueErrorRRtglobalsetvartsetvar(R	((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_null_in_name>scsot|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�~tj
�|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.pytwrite_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.





(RR
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(RR
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(RR
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�scCsLt|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(RR
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@RWRtglobalgetvar(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(RR
RRIR]R^(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRR�s			t__main__(trun_unittest(tunittestRBtTkinterRRRRRRRtTestCaseRRRHRKRNRRt	tests_guiRttest.supportR`(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt<module>s4	h?	test/test_tkinter/test_font.pyo000064400000011672150327205550013013 0ustar00�
zfc@s�ddlZddlZddlZddlmZmZmZddl	m
Z
ed�dZde
ejfd��YZ
e
fZedkr�ee�ndS(	i����N(trequirestrun_unittestt
gc_collect(tAbstractTkTesttguit
TkDefaultFonttFontTestcBsheZed��Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�ZRS(
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(
Rt	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	(
RR
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(	RtactualRRRRR 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(RRRRR (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(
RR
RRRtassertIsNotRtassertNotEqualtcopytassertNotIn(R#tfont1tfont2((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_eqBs!!cCs |j|jjd�t�dS(Ntabc(RRtmeasureR"(R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_measureKscCs�|jj�}|jt|�ddddh�x^|D]V}|j|jj|�||�|j||t�|j|jj|�t�q8WdS(Ntascenttdescentt	linespacetfixed(RtmetricsRRRRR"(R#R;R%((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_metricsNs
 cCsgtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6WdS(N(RtfamiliesRRttuplet
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(
RtnamesRRR>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__(tunittesttTkinterRttkFontRttest.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.pyc000064400000011672150327205550012777 0ustar00�
zfc@s�ddlZddlZddlZddlmZmZmZddl	m
Z
ed�dZde
ejfd��YZ
e
fZedkr�ee�ndS(	i����N(trequirestrun_unittestt
gc_collect(tAbstractTkTesttguit
TkDefaultFonttFontTestcBsheZed��Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd	�ZRS(
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(
Rt	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	(
RR
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(	RtactualRRRRR 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(RRRRR (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(
RR
RRRtassertIsNotRtassertNotEqualtcopytassertNotIn(R#tfont1tfont2((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_eqBs!!cCs |j|jjd�t�dS(Ntabc(RRtmeasureR"(R#((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_measureKscCs�|jj�}|jt|�ddddh�x^|D]V}|j|jj|�||�|j||t�|j|jj|�t�q8WdS(Ntascenttdescentt	linespacetfixed(RtmetricsRRRRR"(R#R;R%((s:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_font.pyttest_metricsNs
 cCsgtj|j�}|j|t�|j|�x1|D])}|j|ttf�|j|�q6WdS(N(RtfamiliesRRttuplet
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(
RtnamesRRR>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__(tunittesttTkinterRttkFontRttest.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_text.py000064400000002674150327205550012654 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_variables.pyc000064400000026236150327205550014003 0ustar00�
zfc@sddlZddlZddlmZmZmZmZmZmZm	Z	dej
fd��YZdefd��YZdefd��YZ
d	efd
��YZdefd��YZd
efd��YZee
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.pyttearDowns(t__name__t
__module__R
R(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRs	tTestVariablecBsYeZd�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.pyttest_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.pyttest___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__0scCs-|jt��t|jdd�WdQXdS(NR!i{(tassertRaisest	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
ValueErrorRRtglobalsetvartsetvar(R	((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyttest_null_in_name>scsot|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�~tj
�|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.pytwrite_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.





(RR
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(RR
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(RR
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�scCsLt|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(RR
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@RWRtglobalgetvar(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(RR
RRIR]R^(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyRR�s			t__main__(trun_unittest(tunittestRBtTkinterRRRRRRRtTestCaseRRRHRKRNRRt	tests_guiRttest.supportR`(((s?/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_variables.pyt<module>s4	h?	test/test_tkinter/test_geometry_managers.py000064400000117167150327205550015404 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_loadtk.pyo000064400000003314150327205550013315 0ustar00�
zfc@s�ddlZddlZddlZddlmZddlmZmZejd�dej	fd��YZ
e
fZedkr�ej
e�ndS(i����N(ttest_support(tTcltTclErrortguit
TkLoadTestcBs5eZejdejkd�d��Zd�ZRS(tDISPLAYsNo $DISPLAY set.cCsJt�}|jt|j�|j�|jd|j��|j�dS(Ns1x1+0+0(RtassertRaisesRtwinfo_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�}|jt
|j�|jt
|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_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt<module>s
!	test/test_tkinter/test_loadtk.py000064400000002662150327205550013143 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_geometry_managers.pyc000064400000120324150327205550015534 0ustar00�
zfc@sddlZddlZddlZddlmZddlmZmZddlm	Z	m
Z
mZddlm
Z
mZed�de
ejfd��YZd	e
ejfd
��YZde
ejfd��YZeeefZed
kree�ndS(i����N(tTclError(trequirestrun_unittest(tpixels_convttcl_versiontrequires_tcl(tAbstractWidgetTestt	int_roundtguitPackTestcBs�eZd
Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�ZRS(c
Cs�tj|jdd�}|jd�|jdd�tj|dddddd	d
d�}tj|dddd
ddd
d�}tj|ddddddd
d�}tj|dddd	ddd
d�}|||||fS(Ntnametpacks300x200+0+0itatwidthitheighti(tbgtredtbi2itbluetciPtgreentdtyellow(ttkintertTopleveltroottwm_geometryt
wm_minsizetFrame(tselfRRRRR((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(RRRRRR((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�|dd
�|dd�|dd�|dd�dS(Ncs[�jddddddddd	d
dtd|��jj��j�j�|�dS(
NR R!tipadxitpadxi
tipadyitpadyitexpandtanchor(R#tTrueRtupdateR$twinfo_geometry(R,tgeom(RR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcheck-s'

tns30x70+135+20tnes30x70+260+20tes30x70+260+65tses
30x70+260+110tss
30x70+135+110tsws30x70+10+110tws30x70+10+65tnws30x70+10+20tcenters30x70+135+65(R(RRRRRR1((RRsG/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%(RRRRRR((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��jdddddd��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(RRRRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1Ns

R tleftR!trighttbottoms
20x40+0+80s50x30+135+0s80x80+220+75s
40x30+100+170R+tyestonis20x40+40+80s50x30+175+35s
80x80+180+110s
40x30+100+135tfilltboths100x200+0+0s
200x100+100+0s160x100+140+100s40x100+100+100(RR#R-(RRR1((RRRRRsG/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(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_inds"	cs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d
ddddddd	�|dddddddd�|dddddd(dd�|dddddddd�|d
ddddddd	dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd	�|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd	dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��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(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1ws



s20x40+260+80s240x200+0+0R R@R(is20x40+250+80i
is60x40+240+80R's30x40+260+80s250x200+0+0iRDtxs20x40+249+80i	is30x40+255+80is20x40+140+0s300x160+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_strtwinfo_pixels(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_padx_ipadx_fillusBcs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d
ddddddd	�|dddddddd�|dddddd(dd�|dddddddd�|d
ddddddd	dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd	�|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd	dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��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(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s



s20x40+280+80s280x200+0+0R R@R*is20x40+280+70i
is20x80+280+60R)s20x50+280+75iRDRMs20x40+280+69i	is20x50+280+70is20x40+140+20s300x120+0+80R!s20x40+140+0ii(s20x80+140+0s20x50+140+10s300x130+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((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_pady_ipady_fill�sBcst�j�\}��}}���fd�}|ddd�|ddd�|dd	d
�|ddd
�dS(Ncs}�jd|��j�j�d|��jdtdd��jj��j�j�|��j�j�|�dS(NR R+RDRE(R#R$ROR-RR.R/(R RJRK(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s
R!s20x40+140+0s300x160+0+40RAs
20x40+140+160s300x160+0+0R?s
20x40+0+80s280x200+20+0R@s20x40+280+80s280x200+0+0(R(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_side�scCs�|j�\}}}}}|j�|j�|j�|j|j�|||g�|j�|j|j�||g�|j�|j|j�||g�|j�dS(N(RR#R$R%RI(RRRRRR((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
ddd
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(RRRRRRtinfo((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-(RRRRRR((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#(RRRRRR((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�Zd	�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$s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(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$twinfo_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.tplace_forgettassertFalsetwinfo_ismappedtassertRaisest	TypeError(Rtfoo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_forget�s


cCs�|j�\}}}|jd|dddddddd	d
ddd
dddddddd�|j�}|j|t�|j|dd�|j|dd�|j|dd�|j|dd�|j|d
d�|j|dd�|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$tplace_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�Zd	�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
dddd�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
dddd�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�|jdddd�|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�|jdddd�|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	|ddd	dd
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
ddd
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�(RRRRR((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.supportRRRtwidget_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_font.py000064400000007746150327205550012643 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_images.pyo000064400000037047150327205550013316 0ustar00�
zfc@s�ddlZddlZddlZddljZddlmZm	Z	ej
d�deejfd��YZdeejfd��YZ
deejfd	��YZee
efZed
kr�eje�ndS(i����N(tAbstractTkTesttrequires_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_typesscCs#|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__RR(((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_filescCs�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	�Zd
�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��~|jd|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|jr�|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�scCsTtjdd|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�scCsq|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	iii
(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"RbRDtassertRaisesR 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
��|jtjdddd�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_supportttest_supportRttest_ttk.supportRRtrequirestTestCaseRRR=t	tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt<module>s

R�test/test_tkinter/test_widgets.pyo000064400000172022150327205550013510 0ustar00�
zfc@sTddlZddlZddlmZddlZddlZddlmZmZddl	m
Z
mZmZm
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(trequirestrun_unittest(ttcl_versiontrequires_tcltget_tk_patchlevelt	widget_eq(
tadd_standard_optionstnoconvtnoconv_metht	int_roundtpixels_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_colormapscCs�|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
				tToplevelTestcBs2eZdZd�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_menuEscCs�|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
ddd
�|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[ttextvariablet	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.pyttest_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�scCs,|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_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
ej
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�scCs/|j�}|j|dddddt�dS(NR4idi����itconv(RtcheckIntegerParamtstr(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_heightstdarwins"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�tassertRaisesRtNoneRt	exceptiont	configure(RRR�Rtcm((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_image	scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRmR8RD(RR@RERFRRq(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRGscCsE|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_padxscCsE|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$scCs/|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.RStstaticmethodRRxRR�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(�ZRS(*R1R2R3tdisabledbackgroundRtexportselectionRWRXR5R6R7tinsertbackgroundtinsertborderwidtht
insertofftimetinsertontimetinsertwidthtinvalidcommandR�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_disabledbackgroundFsc	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_insertborderwidthJscCs�|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_insertwidthQscCs0|j�}|j|d�|j|d�dS(NR�tinvcmd(RtcheckCommandParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_invalidcommand[scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_readonlybackground`scCsI|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_showdscCs)|j�}|j|dddd�dS(NR�R�R�treadonly(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_statejsc	Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusouttnone(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_validateoscCs0|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�Zd4�Z
d5�Zd6�Zd7�Zd8�ZRS(;RzR1R2tbuttonbackgroundtbuttoncursortbuttondownrelieftbuttonupreliefR�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�scCs |j�}|j|d�dS(NR�(RtcheckCursorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttoncursor�scCs |j�}|j|d�dS(NR�(RtcheckReliefParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttondownrelief�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonuprelief�scCs�|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�scCsU|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�scCsU|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�scCs |j�}|j|d�dS(NR�(RtcheckBooleanParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_wrap�scCs�|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�scCsl|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�RRRRRRRRRR(((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�Zed)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�scCs |j�}|j|d�dS(NR(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_blockcursor�scCs�|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.pyttest_endlinescCs^|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�scCs)|j�}|j|dddd�dS(NRiii����(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_maxundoscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_inactiveselectbackgroundsicCs)|j�}|j|dddd�dS(NRthollowR�tsolid(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertunfocussedsc
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$scCsE|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*scCsE|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/scCsE|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_spacing34scCs�|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_startline9scCsK|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�Gsc
Cs�|j�}t�dkr7|j|ddd	d�n|j|dd�|j|ddd	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]scCs |j�}|j|d�dS(NR&(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_undobscCsU|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�fscCsQ|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.pyRlscCs�|j�}|j|jd��|j|jd��|jtj|jd�|jtj|jd�|jtj|j�|jtj|jdd�dS(Ns1.1R-R(RRRtassertIsNoneR�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�Zd �Z
d!�Zd"�ZRS($R1R2tcloseenoughtconfineR3R4R5R6R7R�R�R�R�R�toffsetR;tscrollregionR�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�scCs |j�}|j|d�dS(NRN(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_confine�scCs�|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�scCs�|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�scCs,|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��sc	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�sc	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!�Zd"�Z
d#�Zd$�Zd%�Zd&�Zd'�Zd(�Zd)�Zd*�Zd+�ZRS(-tactivestyleR1R2R3RR�RWRXR4R5R6R7R�tlistvariableR;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�siiicCs5|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�scCs\|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��sc
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�s0c	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_setRtcurselectionR�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
ttest_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'�Zd(�Z
d)�Zd*�ZRS(,RzR1tbigincrementR2R�R3tdigitsRWRXR�R5R6R7RrtlengthtorientR;R�R�t
resolutiont	showvaluetsliderlengthtsliderreliefR�R=ttickintervalR�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_bigincrementVscCs&|j�}|j|ddd�dS(NR�ii(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_digitsZscCs/|j�}|j|dddddt�dS(NR�idg������-@g333333.@R�(RRtround(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR^scCs6|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_labelbscCs,|j�}|j|ddddd�dS(NR�i�gffffff`@g33333�`@t5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_lengthgscCs,|j�}|j|ddddd�dS(NR�g������@ig������@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_resolutionkscCs |j�}|j|d�dS(NR�(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showvalueoscCs/|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_sliderlengthsscCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderreliefxsc	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�Zd�Z
d�ZRS(RztactivereliefR1R2R�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�scCs,|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�scCs,|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�scCsg|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��Zd�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
handlesizeR4topaqueresizeR�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�sc
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�scCs8|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�siiicCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxybackground�scCs8|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�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyrelief�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashcursor�scCs/|j�}|j|dddddd�dS(NR�ig�������?g������@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashpad�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashrelief�sc
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�scCs |j�}|j|d�dS(NR�(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showhandle�scCs8|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�}|js|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�Zd�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_postcommandzscCs |j�}|j|d�dS(NR(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoff~scCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoffcommand�scCs#|j�}|j|dd�dS(NRs
any string(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_title�scCs)|j�}|j|dddd�dS(NRR�Rtmenubar(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_type�scCs	|j�}|jdd�|jt|j�|jtd��|jd�WdQX|jd�}|j|t�x�|j	�D]v\}}|j|t
�|j|t�|jt
|�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
RRRR(((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.supportRRRRtwidget_testsRRR	R
RRR
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
%(	AEh�B�B1�Dtest/test_tkinter/test_loadtk.pyc000064400000003314150327205550013301 0ustar00�
zfc@s�ddlZddlZddlZddlmZddlmZmZejd�dej	fd��YZ
e
fZedkr�ej
e�ndS(i����N(ttest_support(tTcltTclErrortguit
TkLoadTestcBs5eZejdejkd�d��Zd�ZRS(tDISPLAYsNo $DISPLAY set.cCsJt�}|jt|j�|j�|jd|j��|j�dS(Ns1x1+0+0(RtassertRaisesRtwinfo_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�}|jt
|j�|jt
|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_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_loadtk.pyt<module>s
!	test/test_tkinter/test_geometry_managers.pyo000064400000120324150327205550015550 0ustar00�
zfc@sddlZddlZddlZddlmZddlmZmZddlm	Z	m
Z
mZddlm
Z
mZed�de
ejfd��YZd	e
ejfd
��YZde
ejfd��YZeeefZed
kree�ndS(i����N(tTclError(trequirestrun_unittest(tpixels_convttcl_versiontrequires_tcl(tAbstractWidgetTestt	int_roundtguitPackTestcBs�eZd
Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
d�Zd�Zd	�Z
d
�Zd�Zd�ZRS(c
Cs�tj|jdd�}|jd�|jdd�tj|dddddd	d
d�}tj|dddd
ddd
d�}tj|ddddddd
d�}tj|dddd	ddd
d�}|||||fS(Ntnametpacks300x200+0+0itatwidthitheighti(tbgtredtbi2itbluetciPtgreentdtyellow(ttkintertTopleveltroottwm_geometryt
wm_minsizetFrame(tselfRRRRR((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(RRRRRR((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�|dd
�|dd�|dd�|dd�dS(Ncs[�jddddddddd	d
dtd|��jj��j�j�|�dS(
NR R!tipadxitpadxi
tipadyitpadyitexpandtanchor(R#tTrueRtupdateR$twinfo_geometry(R,tgeom(RR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pytcheck-s'

tns30x70+135+20tnes30x70+260+20tes30x70+260+65tses
30x70+260+110tss
30x70+135+110tsws30x70+10+110tws30x70+10+65tnws30x70+10+20tcenters30x70+135+65(R(RRRRRR1((RRsG/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%(RRRRRR((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��jdddddd��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(RRRRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1Ns

R tleftR!trighttbottoms
20x40+0+80s50x30+135+0s80x80+220+75s
40x30+100+170R+tyestonis20x40+40+80s50x30+175+35s
80x80+180+110s
40x30+100+135tfilltboths100x200+0+0s
200x100+100+0s160x100+140+100s40x100+100+100(RR#R-(RRR1((RRRRRsG/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(RRRRRR((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_inds"	cs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d
ddddddd	�|dddddddd�|dddddd(dd�|dddddddd�|d
ddddddd	dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd	�|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd	dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��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(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1ws



s20x40+260+80s240x200+0+0R R@R(is20x40+250+80i
is60x40+240+80R's30x40+260+80s250x200+0+0iRDtxs20x40+249+80i	is30x40+255+80is20x40+140+0s300x160+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_strtwinfo_pixels(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_padx_ipadx_fillusBcs��j�\}��}}���fd�}|dddddd�|dddddd'�|dddddd�|d
ddddddd	�|dddddddd�|dddddd(dd�|dddddddd�|d
ddddddd	dd�|dddddddd)dd�|dddddd�|dddddd*�|dddddd�|dddddddd	�|dddddddd+�|d ddddddd�|d!ddddd,dd�|d#ddddddd�|d$ddddddd	dd�|d%ddddddd-dd��jdd&��j�j�d�j|jd&����jdd&��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(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s



s20x40+280+80s280x200+0+0R R@R*is20x40+280+70i
is20x80+280+60R)s20x50+280+75iRDRMs20x40+280+69i	is20x50+280+70is20x40+140+20s300x120+0+80R!s20x40+140+0ii(s20x80+140+0s20x50+140+10s300x130+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((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyt#test_pack_configure_pady_ipady_fill�sBcst�j�\}��}}���fd�}|ddd�|ddd�|dd	d
�|ddd
�dS(Ncs}�jd|��j�j�d|��jdtdd��jj��j�j�|��j�j�|�dS(NR R+RDRE(R#R$ROR-RR.R/(R RJRK(RRR(sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyR1�s
R!s20x40+140+0s300x160+0+40RAs
20x40+140+160s300x160+0+0R?s
20x40+0+80s280x200+20+0R@s20x40+280+80s280x200+0+0(R(RRRRR1((RRRsG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_pack_configure_side�scCs�|j�\}}}}}|j�|j�|j�|j|j�|||g�|j�|j|j�||g�|j�|j|j�||g�|j�dS(N(RR#R$R%RI(RRRRRR((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
ddd
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(RRRRRRtinfo((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-(RRRRRR((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#(RRRRRR((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�Zd	�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$s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(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$twinfo_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.tplace_forgettassertFalsetwinfo_ismappedtassertRaisest	TypeError(Rtfoo((sG/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_geometry_managers.pyttest_place_forget�s


cCs�|j�\}}}|jd|dddddddd	d
ddd
dddddddd�|j�}|j|t�|j|dd�|j|dd�|j|dd�|j|dd�|j|d
d�|j|dd�|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$tplace_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�Zd	�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
dddd�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
dddd�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�|jdddd�|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�|jdddd�|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	|ddd	dd
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
ddd
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�(RRRRR((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.supportRRRtwidget_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.pyc000064400000037047150327205550013302 0ustar00�
zfc@s�ddlZddlZddlZddljZddlmZm	Z	ej
d�deejfd��YZdeejfd��YZ
deejfd	��YZee
efZed
kr�eje�ndS(i����N(tAbstractTkTesttrequires_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_typesscCs#|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__RR(((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_filescCs�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	�Zd
�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��~|jd|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|jr�|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�scCsTtjdd|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�scCsq|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	iii
(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"RbRDtassertRaisesR 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
��|jtjdddd�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_supportttest_supportRttest_ttk.supportRRtrequirestTestCaseRRR=t	tests_guiRtrun_unittest(((s</usr/lib64/python2.7/lib-tk/test/test_tkinter/test_images.pyt<module>s

R�test/test_tkinter/test_misc.py000064400000010233150327205550012611 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.pyc000064400000007400150327205550012756 0ustar00�
zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ	e	fZ
edkr�ee
�ndS(i����N(trequirestrun_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�(
troottassertIsNoneR
tassertInttktcallt	splitlisttupdatetassertEqualtassertRaisesttkintertTclErrortafter_cancel(tselfRR	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(Rt
after_idleRRRRtupdate_idletasksRRRRR(RRR	tidle1RR((Rs:/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_misc.pyttest_after_idle-s,	

*


*
cs|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(
RR
RRt
ValueErrorRtNoneRRRRRR(RRR	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/__init__.pyc000064400000000220150327205550012514 0ustar00�
zfc@sdS(N((((s9/usr/lib64/python2.7/lib-tk/test/test_tkinter/__init__.pyt<module>ttest/test_tkinter/test_text.pyo000064400000003467150327205550013034 0ustar00�
zfc@s�ddlZddlZddlmZmZddlmZed�deejfd��YZ	e	fZ
edkr�ee
�ndS(i����N(trequirestrun_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
tassertRaisesRtTclErrortsearchtNonetinsertR
(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_widgets.pyc000064400000172022150327205550013474 0ustar00�
zfc@sTddlZddlZddlmZddlZddlZddlmZmZddl	m
Z
mZmZm
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(trequirestrun_unittest(ttcl_versiontrequires_tcltget_tk_patchlevelt	widget_eq(
tadd_standard_optionstnoconvtnoconv_metht	int_roundtpixels_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_colormapscCs�|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
				tToplevelTestcBs2eZdZd�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_menuEscCs�|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
ddd
�|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[ttextvariablet	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.pyttest_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�scCs,|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_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
ej
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�scCs/|j�}|j|dddddt�dS(NR4idi����itconv(RtcheckIntegerParamtstr(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_heightstdarwins"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�tassertRaisesRtNoneRt	exceptiont	configure(RRR�Rtcm((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_image	scCsH|j�}tj|dd�}|j|d|dt�|j�dS(NRmR8RD(RR@RERFRRq(RRR8((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyRGscCsE|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_padxscCsE|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$scCs/|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.RStstaticmethodRRxRR�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(�ZRS(*R1R2R3tdisabledbackgroundRtexportselectionRWRXR5R6R7tinsertbackgroundtinsertborderwidtht
insertofftimetinsertontimetinsertwidthtinvalidcommandR�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_disabledbackgroundFsc	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_insertborderwidthJscCs�|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_insertwidthQscCs0|j�}|j|d�|j|d�dS(NR�tinvcmd(RtcheckCommandParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_invalidcommand[scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_readonlybackground`scCsI|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_showdscCs)|j�}|j|dddd�dS(NR�R�R�treadonly(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_statejsc	Cs2|j�}|j|ddddddd�dS(NR�talltkeytfocustfocusintfocusouttnone(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_validateoscCs0|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�Zd4�Z
d5�Zd6�Zd7�Zd8�ZRS(;RzR1R2tbuttonbackgroundtbuttoncursortbuttondownrelieftbuttonupreliefR�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�scCs |j�}|j|d�dS(NR�(RtcheckCursorParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttoncursor�scCs |j�}|j|d�dS(NR�(RtcheckReliefParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttondownrelief�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_buttonuprelief�scCs�|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�scCsU|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�scCsU|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�scCs |j�}|j|d�dS(NR�(RtcheckBooleanParam(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_wrap�scCs�|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�scCsl|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�RRRRRRRRRR(((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�Zed)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�scCs |j�}|j|d�dS(NR(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_blockcursor�scCs�|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.pyttest_endlinescCs^|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�scCs)|j�}|j|dddd�dS(NRiii����(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_maxundoscCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_inactiveselectbackgroundsicCs)|j�}|j|dddd�dS(NRthollowR�tsolid(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_insertunfocussedsc
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$scCsE|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*scCsE|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/scCsE|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_spacing34scCs�|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_startline9scCsK|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�Gsc
Cs�|j�}t�dkr7|j|ddd	d�n|j|dd�|j|ddd	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]scCs |j�}|j|d�dS(NR&(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_undobscCsU|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�fscCsQ|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.pyRlscCs�|j�}|j|jd��|j|jd��|jtj|jd�|jtj|jd�|jtj|j�|jtj|jdd�dS(Ns1.1R-R(RRRtassertIsNoneR�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�Zd �Z
d!�Zd"�ZRS($R1R2tcloseenoughtconfineR3R4R5R6R7R�R�R�R�R�toffsetR;tscrollregionR�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�scCs |j�}|j|d�dS(NRN(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_confine�scCs�|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�scCs�|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�scCs,|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��sc	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�sc	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!�Zd"�Z
d#�Zd$�Zd%�Zd&�Zd'�Zd(�Zd)�Zd*�Zd+�ZRS(-tactivestyleR1R2R3RR�RWRXR4R5R6R7R�tlistvariableR;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�siiicCs5|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�scCs\|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��sc
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�s0c	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_setRtcurselectionR�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
ttest_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'�Zd(�Z
d)�Zd*�ZRS(,RzR1tbigincrementR2R�R3tdigitsRWRXR�R5R6R7RrtlengthtorientR;R�R�t
resolutiont	showvaluetsliderlengthtsliderreliefR�R=ttickintervalR�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_bigincrementVscCs&|j�}|j|ddd�dS(NR�ii(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_digitsZscCs/|j�}|j|dddddt�dS(NR�idg������-@g333333.@R�(RRtround(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyR^scCs6|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_labelbscCs,|j�}|j|ddddd�dS(NR�i�gffffff`@g33333�`@t5i(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_lengthgscCs,|j�}|j|ddddd�dS(NR�g������@ig������@i����(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_resolutionkscCs |j�}|j|d�dS(NR�(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showvalueoscCs/|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_sliderlengthsscCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sliderreliefxsc	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�Zd�Z
d�ZRS(RztactivereliefR1R2R�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�scCs,|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�scCs,|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�scCsg|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��Zd�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
handlesizeR4topaqueresizeR�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�sc
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�scCs8|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�siiicCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxybackground�scCs8|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�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_proxyrelief�scCs |j�}|j|d�dS(NR�(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashcursor�scCs/|j�}|j|dddddd�dS(NR�ig�������?g������@i����R�(RRv(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashpad�scCs |j�}|j|d�dS(NR�(RR(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_sashrelief�sc
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�scCs |j�}|j|d�dS(NR�(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_showhandle�scCs8|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�}|js|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�Zd�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_postcommandzscCs |j�}|j|d�dS(NR(RR
(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoff~scCs |j�}|j|d�dS(NR(RR�(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyttest_tearoffcommand�scCs#|j�}|j|dd�dS(NRs
any string(RRF(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt
test_title�scCs)|j�}|j|dddd�dS(NRR�Rtmenubar(RRj(RR((s=/usr/lib64/python2.7/lib-tk/test/test_tkinter/test_widgets.pyt	test_type�scCs	|j�}|jdd�|jt|j�|jtd��|jd�WdQX|jd�}|j|t�x�|j	�D]v\}}|j|t
�|j|t�|jt
|�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
RRRR(((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.supportRRRRtwidget_testsRRR	R
RRR
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
%(	AEh�B�B1�DTkdnd.pyo000064400000031031150327205550006343 0ustar00�
zfc@swdZddlZd�Zddd��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�scCs8|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.pyRQs					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<"	Dialog.pyc000064400000003600150327205550006463 0ustar00�
zfc@s�ddlTddlmZedkr/dZndZdefd��YZd�Zed	kr�edid
d6ed6ie
6�Zedid
d6ejd6ie
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.pyRscCs>tdidd6dd6td6dd6dd6�}|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
		


SimpleDialog.pyc000064400000010363150327205550007641 0ustar00�
zfc@sFdZddlTddd��YZedkrBd�Ze�ndS(	s'A simple but flexible modal dialog box.i����(t*tSimpleDialogcBsVeZdgd	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|
jdtdd
�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(tTopleveltrootttitleticonnametMessagetmessagetpacktBOTHtFrametframeRtcanceltdefaulttbindtreturn_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_widthtwinfo_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(NcSsBt|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	Tkinter.pyo000064400000606777150327205550006750 0ustar00�
zfc@s�dZdZddlZejdkr6ddlZnddlZeZejZddlTddl	Tddl
Z
dZeej
�Zeej�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/eZ0d�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�}tj
d|�}|dd	krHd
|}qHn,|dd	ks;tj|�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	splitlistRtRuntimeErrortitertzipR(	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�ZeZd�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.(RJtglobalsetvarRK(RRR((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyRN
scCs|jj|j�S(sReturn value of variable.(RJtglobalgetvarRK(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.pyRuKstIntVarcBs8eZdZdZdddd�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.pyRzzst
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�ZeZd�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_setscCs|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.ttk_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.ttk_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�FscGs|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.pytafter_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�scKsGd|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.pytgrab_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.pytgrab_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.pytoption_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�scKs�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_getscGs|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�tcolormapfull(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.pytwinfo_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_fpixelsGscCs|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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytwinfo_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�tscreenheight(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�tscreenvisual(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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytwinfo_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.pytunbind_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�}nt|�}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.pytnametowidget�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.pytgetint_event�s
i(Rt
_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_exceptionscGsji}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.pytkeysBscCs|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.pytplace_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_bboxiscCsmt|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).trowconfigure(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.pytevent_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.pytxview_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.pytxview_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.pytyview_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.pytyview_scroll6s(R7R8R9R�R�R�(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�'s		tWmcBseZdZddddd�ZeZd�ZeZdd�ZeZ	d�Z
e
Zdd�ZeZ
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(RR�R.RPRR�R*(RRtwlistR�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pytwm_colormapwindowsfscCs|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.pytwm_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�scCs|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�ticonposition(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�tpositionfrom(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.pytwm_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.pytwm_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
RRRRRRRRRRRRRRRRRR RvR"R!R$R#R&R%(((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyR�<sv				
	
	tTkcBseeZdZdZddddddd�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	�trtr|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
ejZ
ZejZZRS(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
ejZ
ZRS(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.pytplace_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�ZeZ
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||jf||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�8scCs|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(NttkButtonDown(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�stCanvascBsIeZdZd:id�Zd�Zd�Zd�Zd�Zd:d:d�Z	d�Z
d�Zd	�Zd
�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.pytaddtag_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.pytaddtag_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��scCs"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��scGs2tt|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.pytcreate_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.pytfind_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.pytfind_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.pytselect_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	�ZeZ
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��	scCs |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.pytselection_to�	sN(R7R8R9RRUR�R]R�R�R�R�R�R�R�R�R�R�R�R�tselect_presentR�tselect_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	�Zd
�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.tcurselection((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
scCs5|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
scGs$|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
scCs#|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	�Zd
�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(Nttk_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��
scCs|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'�
sN((R7R8R9RRURRRRRR	R
RR
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	�Zd
�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(s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.
        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_undos	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_cgets


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_configurescKs+|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.pytimage_creates	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.pytmark_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_names1scCs#|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_set5scGs$|jj|jddf|�dS(sDelete all marks in MARKNAMES.R�tunsetN(R.RPR�(RRt	markNames((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt
mark_unset8scCs"|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�AscCs#|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�DscCs(|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.pyRIs.


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�ds"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�jscCsY|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_cgetrs


cKs|jdd|f||�S(sConfigure a tag TAGNAME.RbR�(R�(RRRcR#R�((s&/usr/lib64/python2.7/lib-tk/Tkinter.pyt
tag_configureyscGs$|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.pytwindow_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�st
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|dd
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.itborderwidthttextvariableitindicatorontreliefR$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��scCstj|�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�Zd	�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�eZdZdidd�Zd�Zd�Zd�Zd�Zdd�Z	dd�Z
d	�Zdd
�Zddd�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�`
sN(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	�Zd
�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��
scCs|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��
scCs
|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�Zd	�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.pytproxy_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_coordvscCs|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>
stQUIT(
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%@@		��
	FileDialog.py000064400000021177150327205550007131 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()
Tkinter.py000064400000471553150327205550006561 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()
Canvas.pyo000064400000036314150327205550006523 0ustar00�
zfc@s/ddlmZeddd�[ddlmZmZmZddd��YZdefd	��YZd
efd��YZdefd
��YZ	defd��YZ
defd��YZdefd��YZdefd��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
�Zd�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__scCs!|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�Zd	�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.pytaddtag_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.pytaddtag_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>sLFixTk.pyo000064400000003756150327205550006341 0ustar00�
zfc@sbddlZddlZyddlZejjjWn eefk
rWd�Zn
Xd�Zej	j
ejd�Zej	je�s�dZ
ejdkr�d	Z
nej	j
ejd
e
d�Zej	je�Znej	je�r^ee�Zdejkroxceje�D]OZejd�rej	j
ee�Zej	je�rheejd<qhqqWnddlZeej�Zd
ejkr�ej	j
ede�Zej	jej	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.pytconvert_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

		!FileDialog.pyc000064400000022766150327205550007301 0ustar00�
zfc@s�dZddlTddlmZddlZddlZiZdd
d��YZdefd��YZd	efd
��YZd�Z	e
dkr�e	�ndS(sZFile selection dialog classes.

Classes:

- FileDialog
- LoadFileDialog
- SaveFileDialog

i����(t*(tDialogNt
FileDialogcBs�eZdZdZdd�Zejdddd�Zdd�Z	d�Z
d�Zd	�Zd
�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�|jj
�|jj�d|_|jj�|r&|j�\}}|jrtjj|j�}n||ft|<n|jj�|jS(N(tdialogstatesRtostpatht
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	dkr�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
�	tkColorChooser.py000064400000003370150327205550010065 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()
ScrolledText.pyo000064400000005150150327205550007716 0ustar00�
zfc@s�dZdgZddlmZmZmZmZmZmZddl	m
Z
mZmZm
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.
tScrolledTexti����(tFrametTextt	ScrollbartPacktGridtPlace(tRIGHTtLEFTtYtBOTHcBseZdd�Zd�ZRS(cKsKt|�|_t|j�|_|jjdtdt�|ji|jjd6�t	j
||j|�|jdtdtdt
�|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.pyRscCsxddl}ddlm}tdddd�}|j||j�|jdtdtd	t	�|j
�|j�dS(
Ni����(tENDtbgtwhitetheighti
RRR(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.pyo000064400000010363150327205550007655 0ustar00�
zfc@sFdZddlTddd��YZedkrBd�Ze�ndS(	s'A simple but flexible modal dialog box.i����(t*tSimpleDialogcBsVeZdgd	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|
jdtdd
�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(tTopleveltrootttitleticonnametMessagetmessagetpacktBOTHtFrametframeRtcanceltdefaulttbindtreturn_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_widthtwinfo_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(NcSsBt|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	FixTk.pyc000064400000004054150327205550006315 0ustar00�
zfc@sbddlZddlZyddlZejjjWn eefk
rWd�Zn
Xd�Zej	j
ejd�Zej	je�s�dZ
ejdkr�d	Z
nej	j
ejd
e
d�Zej	je�Znej	je�r^ee�Zdejkroxceje�D]OZejd�rej	j
ee�Zej	je�rheejd<qhqqWnddlZeej�Zd
ejkr�ej	j
ede�Zej	jej	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.pytconvert_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

		!tkMessageBox.py000064400000007147150327205550007527 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?")
Tkconstants.py000064400000002725150327205550007443 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'
Dialog.pyo000064400000003600150327205550006477 0ustar00�
zfc@s�ddlTddlmZedkr/dZndZdefd��YZd�Zed	kr�edid
d6ed6ie
6�Zedid
d6ejd6ie
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.pyRscCs>tdidd6dd6td6dd6dd6�}|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
		


tkSimpleDialog.pyc000064400000021631150327205550010200 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
|�|_|jdddd�|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(RRRtdestroy(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(RRRR(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__RRRRRR(RR.R0(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs3				
		t_QueryDialogcBs8eZddddd�Zd�Zd�Zd�ZRS(cCsY|sddl}|j}n||_||_||_||_tj|||�dS(Ni����(tTkintert
_default_roottprompttminvaluetmaxvaluetinitialvalueRR(RR
R8R;R9R:RR6((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s				cCsd|_tj|�dS(N(RtentryRR(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;Rtinserttselect_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(	ttkMessageBoxt	getresultt
ValueErrortshowwarningterrormessageR9RR:R
(RRIR
((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�s2



	N(R2R3RRRRR.(((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__showRR5R(RtargsRQ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs


	cCs;tj||�}|jdk	r7|jd|j�n|S(NRX(R5RRYRt	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;isEgg weight
(in tons)R9iR:ids	Egg labelNi�(R4R6RRR5RNRSRTRVRWR\R2tTktroottupdate(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt<module>s
�J				
Tkconstants.pyc000064400000004306150327205550007603 0ustar00�
zfc@s�dZZZdZZZdZdZdZdZ	dZ
dZdZd	Z
d
ZdZdZd
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�SimpleDialog.py000064400000007220150327205550007474 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()
Dialog.py000064400000003037150327205550006324 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()
tkFont.pyc000064400000016004150327205550006533 0ustar00�
zfc@s�dZddlZdZdZdZdZd�Zddd	��YZdd
�Z	dd�Z
edkr�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�Zd	�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�tjjd|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�scCs1|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�st__main__tfamilyttimestsizeitweightthellot	linespaceRtCourieriRCsHello, worldsQuit!tcommand((RRiR(t__version__R"tNORMALtROMANtBOLDtITALICRRRIRJRRFtTkR/tfRR@R4RARDtLabeltwtpacktButtontdestroyR>tfbtmainloop(((s%/usr/lib64/python2.7/lib-tk/tkFont.pyt<module>	s>	�	

turtle.py000064400000417433150327205550006455 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()
ScrolledText.py000064400000003454150327205550007544 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()
tkFileDialog.pyo000064400000012051150327205550007636 0ustar00�
zfc@s�ddlmZdefd��YZdefd��YZdefd��YZdefd	��YZd
�Zd�Zd�Zd
d�Z	d
d�Z
dd�Zd�Ze
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(RRRt	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.pytaskopenfiles�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.pytaskdirectory�st__main__sutf-8NtRs	all filest*sCould not open File: iR*tsaveas(s	all filesR7(ttkCommonDialogRRRR!R#R'R(R)R-R1R3R4Rtenctsystlocalet	setlocaletLC_ALLtnl_langinfotCODESETtImportErrorRtopenfilenameR*tfptclosetexc_infotencodetsaveasfilename(((s+/usr/lib64/python2.7/lib-tk/tkFileDialog.pyt<module>+s<					tkMessageBox.pyo000064400000007466150327205550007712 0ustar00�
zfc@s�ddlmZdZdZdZdZdZdZdZd	Z	d
Z
dZdZd
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
		Tix.py000064400000226637150327205550005706 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.pyo000064400000273532150327205550006061 0ustar00�
zfc@sxddlZddlZddlTddlmZmZedkrPed�nddlZdZdZdZ	d	Z
d
ZdZdZ
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.
        ttixtaddbitmapdir(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_configureiscCs9|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.pyttix_getimage�scCs|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.
        RtresetoptionsN(R#RR(Rt	newSchemet
newFontSett
newScmPrio((s"/usr/lib64/python2.7/lib-tk/Tix.pyttix_resetoptions�sN(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�scCs$|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	�Zd
�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�}nt|�}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 routinettixSetSilentN(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_roottRuntimeErrorRRgthasattrt	_registerRR(RtimgtypeR)RlR*ReRoRp((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_create�s		cCs2y|jjdd|�Wntk
r-nXdS(NRtdelete(RRRv(Rtimgname((s"/usr/lib64/python2.7/lib-tk/Tix.pytimage_delete�s
N(R;R<R=R#RBRrRtRzR~RuR{R�R�R�(((s"/usr/lib64/python2.7/lib-tk/Tix.pyRds,			
				
tTixSubWidgetcBs&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��stDisplayStylecBsSeZdZid�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(NttixButtonBoxtorientationRe(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�"stComboBoxcBsAeZdZdid�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
tDirSelectBoxcBseZdZid�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��stExFileSelectBoxcBs,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.pytapply_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(NttixFileEntryt
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
�Zd�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.pytanchor_clearpsicCsK|s%|jj|jdd||�S|jj|jdd|d|�SdS(NRtwidths-char(RRRP(RtcolRtchars((s"/usr/lib64/python2.7/lib-tk/Tix.pytcolumn_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.pytdelete_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.pytdragsite_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.pytdropsite_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�scCs|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�sc	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.pyRSscCs|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-theader_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(NttixInputOnly(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	tListNoteBookcBsAeZdZid�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.pyRBxscKsI|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��scCsD|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(NttixPopupMenuReR|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
			tResizeHandlecBs>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(Ntattachwidget(RRRP(RR�((s"/usr/lib64/python2.7/lib-tk/Tix.pyt
attach_widgetscCs |jj|jd|j�dS(Ntdetachwidget(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�stScrolledTextcBseZdZid�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�HstShellcBseZdZdid�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
		tStdButtonBoxcBs&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�scCs/||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	�Zd
�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.pytactive_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(NttixCheckListReR�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, defaulttgetselection(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.pytFileTypeList�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	�Zdd
�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_rowscCsH|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_columnscCs|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.pyRYsc	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(
												
		tScrolledGridcBseZdZdid�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
	
	�tkCommonDialog.py000064400000002612150327205550010032 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
ttk.pyc000064400000172244150327205550006101 0ustar00�
zfc@sYdZdZdZddddddd	d
ddd
dddddddddddddgZddlZddlmZmZmZmZej	dkr�e
neZd�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)de 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	SeparatortSizegriptStyletTreeviewtLabeledScalet
OptionMenut
tclobjs_to_pytsetup_masteri����N(t_flattent_joint
_stringifyt
_splitdictg!@cCsatr]ddl}|jjd�}|rA|jjd|�n|jjd�t|_ndS(Ni����tTILE_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 
'



cCs�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_stringval2scCs=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_roottTktRuntimeError(R%((s"/usr/lib64/python2.7/lib-tk/ttk.pyRYs	cBs�eZdZdZdd�Zdd�Zdd�Zddd�Zdd�Z	d�Z
d�Zd	�Zddd
�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.pyttheme_create�scCs/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�scCs%|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_usesN(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=EsN(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�VscCs|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.pyRRscBs#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�mscCs|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.pyRjscBs8eZdZddd�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��scCsG|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�sN(R�R�R�R0R�(((s"/usr/lib64/python2.7/lib-tk/ttk.pyR
scBszeZdZdd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
dd�Zdd	�Zd
�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�scCs|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

scBs5eZdZdd�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&scBseZdZdd�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	�Zd!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.pytget_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.pytset_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.pytidentify_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�sscCs|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|�|_|jj
d|j�|jr�dnd}|dkr�dnd}|jjd|d	d
�t	|�jd|�}|j
jd|dkr$dnd
�|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.RN(	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.pytadjust_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.
        ttextvariableR�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.(tnametowidgetRt__getitem__(R�R<((s"/usr/lib64/python2.7/lib-tk/ttk.pyR7Csc	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
RR
RRRRtXViewtYViewRRR(((s"/usr/lib64/python2.7/lib-tk/ttk.pyt<module>
sf"	
	%1	*				
		
	�B*"�8*'"�DaTkdnd.pyc000064400000031031150327205550006327 0ustar00�
zfc@swdZddlZd�Zddd��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�scCs8|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.pyRQs					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<"	tkSimpleDialog.pyo000064400000021631150327205550010214 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
|�|_|jdddd�|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(RRRtdestroy(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(RRRR(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__RRRRRR(RR.R0(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs3				
		t_QueryDialogcBs8eZddddd�Zd�Zd�Zd�ZRS(cCsY|sddl}|j}n||_||_||_||_tj|||�dS(Ni����(tTkintert
_default_roottprompttminvaluetmaxvaluetinitialvalueRR(RR
R8R;R9R:RR6((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR�s				cCsd|_tj|�dS(N(RtentryRR(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;Rtinserttselect_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(	ttkMessageBoxt	getresultt
ValueErrortshowwarningterrormessageR9RR:R
(RRIR
((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyR.�s2



	N(R2R3RRRRR.(((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__showRR5R(RtargsRQ((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyRs


	cCs;tj||�}|jdk	r7|jd|j�n|S(NRX(R5RRYRt	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;isEgg weight
(in tons)R9iR:ids	Egg labelNi�(R4R6RRR5RNRSRTRVRWR\R2tTktroottupdate(((s-/usr/lib64/python2.7/lib-tk/tkSimpleDialog.pyt<module>s
�J