PATH:
usr
/
lib64
/
python2.7
/
idlelib
from idlelib.WidgetRedirector import WidgetRedirector from idlelib.Delegator import Delegator class Percolator: def __init__(self, text): # XXX would be nice to inherit from Delegator self.text = text self.redir = WidgetRedirector(text) self.top = self.bottom = Delegator(text) self.bottom.insert = self.redir.register("insert", self.insert) self.bottom.delete = self.redir.register("delete", self.delete) self.filters = [] def close(self): while self.top is not self.bottom: self.removefilter(self.top) self.top = None self.bottom.setdelegate(None); self.bottom = None self.redir.close(); self.redir = None self.text = None def insert(self, index, chars, tags=None): # Could go away if inheriting from Delegator self.top.insert(index, chars, tags) def delete(self, index1, index2=None): # Could go away if inheriting from Delegator self.top.delete(index1, index2) def insertfilter(self, filter): # Perhaps rename to pushfilter()? assert isinstance(filter, Delegator) assert filter.delegate is None filter.setdelegate(self.top) self.top = filter def removefilter(self, filter): # XXX Perhaps should only support popfilter()? assert isinstance(filter, Delegator) assert filter.delegate is not None f = self.top if f is filter: self.top = filter.delegate filter.setdelegate(None) else: while f.delegate is not filter: assert f is not self.bottom f.resetcache() f = f.delegate f.setdelegate(filter.delegate) filter.setdelegate(None) def main(): class Tracer(Delegator): def __init__(self, name): self.name = name Delegator.__init__(self, None) def insert(self, *args): print self.name, ": insert", args self.delegate.insert(*args) def delete(self, *args): print self.name, ": delete", args self.delegate.delete(*args) root = Tk() root.wm_protocol("WM_DELETE_WINDOW", root.quit) text = Text() text.pack() text.focus_set() p = Percolator(text) t1 = Tracer("t1") t2 = Tracer("t2") p.insertfilter(t1) p.insertfilter(t2) root.mainloop() p.removefilter(t2) root.mainloop() p.insertfilter(t2) p.removefilter(t1) root.mainloop() if __name__ == "__main__": from Tkinter import * main()
[+]
..
[-] PyParse.pyo
[edit]
[-] ReplaceDialog.pyo
[edit]
[-] HyperParser.pyo
[edit]
[-] CodeContext.pyo
[edit]
[-] MultiCall.py
[edit]
[-] WidgetRedirector.py
[edit]
[-] FormatParagraph.pyo
[edit]
[-] UndoDelegator.pyo
[edit]
[-] RstripExtension.pyo
[edit]
[-] AutoComplete.pyo
[edit]
[-] tabbedpages.py
[edit]
[-] StackViewer.py
[edit]
[-] ToolTip.py
[edit]
[-] CodeContext.pyc
[edit]
[-] configDialog.pyo
[edit]
[-] OutputWindow.pyc
[edit]
[-] __init__.pyo
[edit]
[-] configHandler.pyo
[edit]
[-] Bindings.pyc
[edit]
[-] configSectionNameDialog.pyc
[edit]
[-] dynOptionMenuWidget.pyo
[edit]
[-] ColorDelegator.pyc
[edit]
[-] StackViewer.pyo
[edit]
[-] PyParse.pyc
[edit]
[-] PathBrowser.pyo
[edit]
[-] configSectionNameDialog.py
[edit]
[-] IdleHistory.pyo
[edit]
[-] idlever.pyo
[edit]
[-] ParenMatch.pyo
[edit]
[-] ScriptBinding.pyc
[edit]
[-] EditorWindow.pyc
[edit]
[-] config-keys.def
[edit]
[-] ClassBrowser.pyc
[edit]
[-] configDialog.pyc
[edit]
[-] dynOptionMenuWidget.py
[edit]
[-] idlever.py
[edit]
[-] SearchDialogBase.py
[edit]
[-] CallTips.pyo
[edit]
[-] HyperParser.pyc
[edit]
[-] AutoCompleteWindow.pyc
[edit]
[-] ObjectBrowser.py
[edit]
[-] WindowList.pyc
[edit]
[-] textView.pyo
[edit]
[-] ReplaceDialog.py
[edit]
[-] FileList.py
[edit]
[-] RemoteObjectBrowser.py
[edit]
[-] MultiStatusBar.pyc
[edit]
[-] SearchDialogBase.pyo
[edit]
[-] configHandler.pyc
[edit]
[-] IOBinding.pyo
[edit]
[-] IOBinding.pyc
[edit]
[-] FileList.pyo
[edit]
[-] EditorWindow.pyo
[edit]
[-] ParenMatch.pyc
[edit]
[-] AutoExpand.pyc
[edit]
[+]
Icons
[-] SearchDialogBase.pyc
[edit]
[-] IdleHistory.pyc
[edit]
[-] FormatParagraph.pyc
[edit]
[-] rpc.py
[edit]
[-] PyShell.pyc
[edit]
[-] MultiCall.pyc
[edit]
[-] ScrolledList.pyc
[edit]
[-] SearchEngine.py
[edit]
[-] ClassBrowser.pyo
[edit]
[-] TreeWidget.pyc
[edit]
[-] PathBrowser.pyc
[edit]
[-] ScrolledList.pyo
[edit]
[-] README.txt
[edit]
[-] idle.py
[edit]
[-] configHandler.py
[edit]
[-] configDialog.py
[edit]
[-] __init__.pyc
[edit]
[-] Percolator.pyc
[edit]
[-] ObjectBrowser.pyc
[edit]
[-] RemoteObjectBrowser.pyc
[edit]
[-] MultiCall.pyo
[edit]
[-] ClassBrowser.py
[edit]
[-] run.py
[edit]
[-] OutputWindow.py
[edit]
[-] aboutDialog.pyo
[edit]
[-] SearchDialog.py
[edit]
[-] AutoExpand.py
[edit]
[-] Debugger.py
[edit]
[-] FormatParagraph.py
[edit]
[-] SearchEngine.pyo
[edit]
[-] Percolator.pyo
[edit]
[-] ColorDelegator.py
[edit]
[-] IdleHistory.py
[edit]
[-] configSectionNameDialog.pyo
[edit]
[-] idlever.pyc
[edit]
[-] macosxSupport.pyc
[edit]
[-] RemoteDebugger.pyc
[edit]
[-] EditorWindow.py
[edit]
[-] Bindings.py
[edit]
[-] textView.py
[edit]
[-] idle.pyc
[edit]
[-] TreeWidget.pyo
[edit]
[-] PathBrowser.py
[edit]
[-] CREDITS.txt
[edit]
[-] GrepDialog.pyc
[edit]
[-] Delegator.pyo
[edit]
[-] SearchEngine.pyc
[edit]
[-] ZoomHeight.py
[edit]
[-] Bindings.pyo
[edit]
[-] TODO.txt
[edit]
[-] Delegator.py
[edit]
[-] idle.pyw
[edit]
[-] AutoExpand.pyo
[edit]
[-] ScriptBinding.py
[edit]
[-] ObjectBrowser.pyo
[edit]
[-] aboutDialog.py
[edit]
[-] Delegator.pyc
[edit]
[-] CodeContext.py
[edit]
[-] MultiStatusBar.pyo
[edit]
[-] GrepDialog.pyo
[edit]
[-] config-main.def
[edit]
[-] RstripExtension.py
[edit]
[-] AutoCompleteWindow.pyo
[edit]
[-] UndoDelegator.pyc
[edit]
[-] NEWS.txt
[edit]
[-] ChangeLog
[edit]
[-] SearchDialog.pyc
[edit]
[-] StackViewer.pyc
[edit]
[-] RstripExtension.pyc
[edit]
[-] extend.txt
[edit]
[-] SearchDialog.pyo
[edit]
[-] RemoteDebugger.pyo
[edit]
[-] TreeWidget.py
[edit]
[-] rpc.pyo
[edit]
[-] OutputWindow.pyo
[edit]
[-] ToolTip.pyo
[edit]
[-] keybindingDialog.pyo
[edit]
[-] aboutDialog.pyc
[edit]
[-] CallTipWindow.py
[edit]
[-] ZoomHeight.pyo
[edit]
[-] ScriptBinding.pyo
[edit]
[-] GrepDialog.py
[edit]
[-] help.txt
[edit]
[-] UndoDelegator.py
[edit]
[-] PyParse.py
[edit]
[-] Debugger.pyc
[edit]
[-] CallTips.py
[edit]
[-] MultiStatusBar.py
[edit]
[-] config-extensions.def
[edit]
[-] WidgetRedirector.pyc
[edit]
[-] Debugger.pyo
[edit]
[-] ParenMatch.py
[edit]
[-] config-highlight.def
[edit]
[-] ToolTip.pyc
[edit]
[-] WidgetRedirector.pyo
[edit]
[-] WindowList.py
[edit]
[-] __init__.py
[edit]
[-] AutoCompleteWindow.py
[edit]
[-] ZoomHeight.pyc
[edit]
[-] CallTipWindow.pyc
[edit]
[-] macosxSupport.py
[edit]
[-] ScrolledList.py
[edit]
[-] IOBinding.py
[edit]
[-] tabbedpages.pyo
[edit]
[-] HISTORY.txt
[edit]
[-] WindowList.pyo
[edit]
[-] CallTipWindow.pyo
[edit]
[-] dynOptionMenuWidget.pyc
[edit]
[-] ColorDelegator.pyo
[edit]
[-] ReplaceDialog.pyc
[edit]
[-] keybindingDialog.py
[edit]
[-] tabbedpages.pyc
[edit]
[-] CallTips.pyc
[edit]
[-] rpc.pyc
[edit]
[-] textView.pyc
[edit]
[-] configHelpSourceEdit.pyo
[edit]
[-] idle.pyo
[edit]
[-] Percolator.py
[edit]
[-] configHelpSourceEdit.py
[edit]
[-] PyShell.pyo
[edit]
[-] RemoteDebugger.py
[edit]
[-] FileList.pyc
[edit]
[-] configHelpSourceEdit.pyc
[edit]
[-] PyShell.py
[edit]
[-] run.pyc
[edit]
[-] keybindingDialog.pyc
[edit]
[-] RemoteObjectBrowser.pyo
[edit]
[-] AutoComplete.py
[edit]
[-] macosxSupport.pyo
[edit]
[-] HyperParser.py
[edit]
[-] AutoComplete.pyc
[edit]
[-] run.pyo
[edit]