| Index: third_party/twisted_8_1/twisted/spread/ui/tktree.py
 | 
| diff --git a/third_party/twisted_8_1/twisted/spread/ui/tktree.py b/third_party/twisted_8_1/twisted/spread/ui/tktree.py
 | 
| deleted file mode 100644
 | 
| index 1b34e0e4fbed29b89bd0bc0db9134343e82d5732..0000000000000000000000000000000000000000
 | 
| --- a/third_party/twisted_8_1/twisted/spread/ui/tktree.py
 | 
| +++ /dev/null
 | 
| @@ -1,204 +0,0 @@
 | 
| -# Copyright (c) 2001-2004 Twisted Matrix Laboratories.
 | 
| -# See LICENSE for details.
 | 
| -
 | 
| -"""
 | 
| -What I want it to look like:
 | 
| -
 | 
| -+- One
 | 
| -| \- Two
 | 
| -| |- Three
 | 
| -| |- Four
 | 
| -| +- Five
 | 
| -| | \- Six
 | 
| -| |- Seven
 | 
| -+- Eight
 | 
| -| \- Nine
 | 
| -"""
 | 
| -
 | 
| -import os
 | 
| -from Tkinter import *
 | 
| -
 | 
| -class Node:
 | 
| -    def __init__(self):
 | 
| -        """
 | 
| -        Do whatever you want here.
 | 
| -        """
 | 
| -        self.item=None
 | 
| -    def getName(self):
 | 
| -        """
 | 
| -        Return the name of this node in the tree.
 | 
| -        """
 | 
| -        pass
 | 
| -    def isExpandable(self):
 | 
| -        """
 | 
| -        Return true if this node is expandable.
 | 
| -        """
 | 
| -        return len(self.getSubNodes())>0
 | 
| -    def getSubNodes(self):
 | 
| -        """
 | 
| -        Return the sub nodes of this node.
 | 
| -        """
 | 
| -        return []
 | 
| -    def gotDoubleClick(self):
 | 
| -        """
 | 
| -        Called when we are double clicked.
 | 
| -        """
 | 
| -        pass
 | 
| -    def updateMe(self):
 | 
| -        """
 | 
| -        Call me when something about me changes, so that my representation
 | 
| -        changes.
 | 
| -        """
 | 
| -        if self.item:
 | 
| -            self.item.update()
 | 
| -
 | 
| -class FileNode(Node):
 | 
| -    def __init__(self,name):
 | 
| -        Node.__init__(self)
 | 
| -        self.name=name
 | 
| -    def getName(self):
 | 
| -        return os.path.basename(self.name)
 | 
| -    def isExpandable(self):
 | 
| -        return os.path.isdir(self.name)
 | 
| -    def getSubNodes(self):
 | 
| -        names=map(lambda x,n=self.name:os.path.join(n,x),os.listdir(self.name))
 | 
| -        return map(FileNode,names)
 | 
| -
 | 
| -class TreeItem:
 | 
| -    def __init__(self,widget,parent,node):
 | 
| -        self.widget=widget
 | 
| -        self.node=node
 | 
| -        node.item=self
 | 
| -        if self.node.isExpandable():
 | 
| -            self.expand=0
 | 
| -        else:
 | 
| -            self.expand=None
 | 
| -        self.parent=parent
 | 
| -        if parent:
 | 
| -            self.level=self.parent.level+1
 | 
| -        else:
 | 
| -            self.level=0
 | 
| -        self.first=0 # gets set in Tree.expand()
 | 
| -        self.subitems=[]
 | 
| -    def __del__(self):
 | 
| -        del self.node
 | 
| -        del self.widget
 | 
| -    def __repr__(self):
 | 
| -        return "<Item for Node %s at level %s>"%(self.node.getName(),self.level)
 | 
| -    def render(self):
 | 
| -        """
 | 
| -        Override in a subclass.
 | 
| -        """
 | 
| -        raise NotImplementedError
 | 
| -    def update(self):
 | 
| -        self.widget.update(self)
 | 
| -
 | 
| -class ListboxTreeItem(TreeItem):
 | 
| -    def render(self):
 | 
| -        start=self.level*"|    "
 | 
| -        if self.expand==None and not self.first:
 | 
| -            start=start+"|"
 | 
| -        elif self.expand==0:
 | 
| -            start=start+"L"
 | 
| -        elif self.expand==1:
 | 
| -            start=start+"+"
 | 
| -        else:
 | 
| -            start=start+"\\"
 | 
| -        r=[start+"- "+self.node.getName()]
 | 
| -        if self.expand:
 | 
| -            for i in self.subitems:
 | 
| -                r.extend(i.render())
 | 
| -        return r
 | 
| -
 | 
| -class ListboxTree:
 | 
| -    def __init__(self,parent=None,**options):
 | 
| -        self.box=apply(Listbox,[parent],options)
 | 
| -        self.box.bind("<Double-1>",self.flip)
 | 
| -        self.roots=[]
 | 
| -        self.items=[]
 | 
| -    def pack(self,*args,**kw):
 | 
| -        """
 | 
| -        for packing.
 | 
| -        """
 | 
| -        apply(self.box.pack,args,kw)
 | 
| -    def grid(self,*args,**kw):
 | 
| -        """
 | 
| -        for gridding.
 | 
| -        """
 | 
| -        apply(self.box.grid,args,kw)
 | 
| -    def yview(self,*args,**kw):
 | 
| -        """
 | 
| -        for scrolling.
 | 
| -        """
 | 
| -        apply(self.box.yview,args,kw)
 | 
| -    def addRoot(self,node):
 | 
| -        r=ListboxTreeItem(self,None,node)
 | 
| -        self.roots.append(r)
 | 
| -        self.items.append(r)
 | 
| -        self.box.insert(END,r.render()[0])
 | 
| -        return r
 | 
| -    def curselection(self):
 | 
| -        c=self.box.curselection()
 | 
| -        if not c: return
 | 
| -        return self.items[int(c[0])]
 | 
| -    def flip(self,*foo):
 | 
| -        if not self.box.curselection(): return
 | 
| -        item=self.items[int(self.box.curselection()[0])]
 | 
| -        if item.expand==None: return
 | 
| -        if not item.expand:
 | 
| -            self.expand(item)
 | 
| -        else:
 | 
| -            self.close(item)
 | 
| -        item.node.gotDoubleClick()
 | 
| -    def expand(self,item):
 | 
| -        if item.expand or item.expand==None: return
 | 
| -        item.expand=1
 | 
| -        item.subitems=map(lambda x,i=item,s=self:ListboxTreeItem(s,i,x),item.node.getSubNodes())
 | 
| -        if item.subitems:
 | 
| -            item.subitems[0].first=1
 | 
| -        i=self.items.index(item)
 | 
| -        self.items,after=self.items[:i+1],self.items[i+1:]
 | 
| -        self.items=self.items+item.subitems+after
 | 
| -        c=self.items.index(item)
 | 
| -        self.box.delete(c)
 | 
| -        r=item.render()
 | 
| -        for i in r:
 | 
| -            self.box.insert(c,i)
 | 
| -            c=c+1
 | 
| -    def close(self,item):
 | 
| -        if not item.expand: return
 | 
| -        item.expand=0
 | 
| -        length=len(item.subitems)
 | 
| -        for i in item.subitems:
 | 
| -            self.close(i)
 | 
| -        c=self.items.index(item)
 | 
| -        del self.items[c+1:c+1+length]
 | 
| -        for i in range(length+1):
 | 
| -            self.box.delete(c)
 | 
| -        self.box.insert(c,item.render()[0])
 | 
| -    def remove(self,item):
 | 
| -        if item.expand:
 | 
| -            self.close(item)
 | 
| -        c=self.items.index(item)
 | 
| -        del self.items[c]
 | 
| -        if item.parent:
 | 
| -            item.parent.subitems.remove(item)
 | 
| -        self.box.delete(c)
 | 
| -    def update(self,item):
 | 
| -        if item.expand==None:
 | 
| -            c=self.items.index(item)
 | 
| -            self.box.delete(c)
 | 
| -            self.box.insert(c,item.render()[0])
 | 
| -        elif item.expand:
 | 
| -            self.close(item)
 | 
| -            self.expand(item)
 | 
| -
 | 
| -if __name__=="__main__":
 | 
| -    tk=Tk()
 | 
| -    s=Scrollbar()
 | 
| -    t=ListboxTree(tk,yscrollcommand=s.set)
 | 
| -    t.pack(side=LEFT,fill=BOTH)
 | 
| -    s.config(command=t.yview)
 | 
| -    s.pack(side=RIGHT,fill=Y)
 | 
| -    t.addRoot(FileNode("C:/"))
 | 
| -    #mainloop()
 | 
| 
 |