X7ROOT File Manager
Current Path:
/opt/alt/python35/lib64/python3.5/idlelib
opt
/
alt
/
python35
/
lib64
/
python3.5
/
idlelib
/
??
..
??
AutoComplete.py
(8.99 KB)
??
AutoCompleteWindow.py
(17.32 KB)
??
AutoExpand.py
(3.32 KB)
??
Bindings.py
(3.04 KB)
??
CREDITS.txt
(1.82 KB)
??
CallTipWindow.py
(5.89 KB)
??
CallTips.py
(5.79 KB)
??
ChangeLog
(55.07 KB)
??
ClassBrowser.py
(6.83 KB)
??
CodeContext.py
(8.16 KB)
??
ColorDelegator.py
(10.35 KB)
??
Debugger.py
(18.32 KB)
??
Delegator.py
(1.02 KB)
??
EditorWindow.py
(64.06 KB)
??
FileList.py
(3.72 KB)
??
FormatParagraph.py
(7.12 KB)
??
GrepDialog.py
(5 KB)
??
HISTORY.txt
(10.07 KB)
??
HyperParser.py
(12.58 KB)
??
IOBinding.py
(20.12 KB)
??
Icons
??
IdleHistory.py
(3.96 KB)
??
MultiCall.py
(18.14 KB)
??
MultiStatusBar.py
(1.32 KB)
??
NEWS.txt
(15.17 KB)
??
NEWS2x.txt
(26.54 KB)
??
ObjectBrowser.py
(3.88 KB)
??
OutputWindow.py
(4.29 KB)
??
ParenMatch.py
(6.56 KB)
??
PathBrowser.py
(3.13 KB)
??
Percolator.py
(3.1 KB)
??
PyParse.py
(19.98 KB)
??
PyShell.py
(57.47 KB)
??
README.txt
(7.71 KB)
??
RemoteDebugger.py
(11.73 KB)
??
RemoteObjectBrowser.py
(964 B)
??
ReplaceDialog.py
(7.31 KB)
??
RstripExtension.py
(1.03 KB)
??
ScriptBinding.py
(7.87 KB)
??
ScrolledList.py
(4.27 KB)
??
SearchDialog.py
(3.05 KB)
??
SearchDialogBase.py
(6.84 KB)
??
SearchEngine.py
(7.31 KB)
??
StackViewer.py
(4.32 KB)
??
TODO.txt
(8.28 KB)
??
ToolTip.py
(3.1 KB)
??
TreeWidget.py
(14.67 KB)
??
UndoDelegator.py
(10.72 KB)
??
WidgetRedirector.py
(6.78 KB)
??
WindowList.py
(2.41 KB)
??
ZoomHeight.py
(1.27 KB)
??
__init__.py
(335 B)
??
__main__.py
(159 B)
??
__pycache__
??
aboutDialog.py
(6.82 KB)
??
config-extensions.def
(2.9 KB)
??
config-highlight.def
(2.46 KB)
??
config-keys.def
(7.59 KB)
??
config-main.def
(2.5 KB)
??
configDialog.py
(63.54 KB)
??
configHandler.py
(31.69 KB)
??
configHelpSourceEdit.py
(6.66 KB)
??
configSectionNameDialog.py
(3.91 KB)
??
dynOptionMenuWidget.py
(1.94 KB)
??
extend.txt
(3.56 KB)
??
help.html
(42.39 KB)
??
help.py
(10.7 KB)
??
help.txt
(17.48 KB)
??
idle.py
(453 B)
??
idle.pyw
(570 B)
??
idle_test
??
idlever.py
(415 B)
??
keybindingDialog.py
(12.13 KB)
??
macosxSupport.py
(8.48 KB)
??
rpc.py
(20.3 KB)
??
run.py
(13.54 KB)
??
tabbedpages.py
(17.99 KB)
??
textView.py
(3.34 KB)
Editing: ReplaceDialog.py
"""Replace dialog for IDLE. Inherits SearchDialogBase for GUI. Uses idlelib.SearchEngine for search capability. Defines various replace related functions like replace, replace all, replace+find. """ from tkinter import * from idlelib import SearchEngine from idlelib.SearchDialogBase import SearchDialogBase import re def replace(text): """Returns a singleton ReplaceDialog instance.The single dialog saves user entries and preferences across instances.""" root = text._root() engine = SearchEngine.get(root) if not hasattr(engine, "_replacedialog"): engine._replacedialog = ReplaceDialog(root, engine) dialog = engine._replacedialog dialog.open(text) class ReplaceDialog(SearchDialogBase): title = "Replace Dialog" icon = "Replace" def __init__(self, root, engine): SearchDialogBase.__init__(self, root, engine) self.replvar = StringVar(root) def open(self, text): """Display the replace dialog""" SearchDialogBase.open(self, text) try: first = text.index("sel.first") except TclError: first = None try: last = text.index("sel.last") except TclError: last = None first = first or text.index("insert") last = last or first self.show_hit(first, last) self.ok = 1 def create_entries(self): """Create label and text entry widgets""" SearchDialogBase.create_entries(self) self.replent = self.make_entry("Replace with:", self.replvar)[0] def create_command_buttons(self): SearchDialogBase.create_command_buttons(self) self.make_button("Find", self.find_it) self.make_button("Replace", self.replace_it) self.make_button("Replace+Find", self.default_command, 1) self.make_button("Replace All", self.replace_all) def find_it(self, event=None): self.do_find(0) def replace_it(self, event=None): if self.do_find(self.ok): self.do_replace() def default_command(self, event=None): "Replace and find next." if self.do_find(self.ok): if self.do_replace(): # Only find next match if replace succeeded. # A bad re can cause it to fail. self.do_find(0) def _replace_expand(self, m, repl): """ Helper function for expanding a regular expression in the replace field, if needed. """ if self.engine.isre(): try: new = m.expand(repl) except re.error: self.engine.report_error(repl, 'Invalid Replace Expression') new = None else: new = repl return new def replace_all(self, event=None): """Replace all instances of patvar with replvar in text""" prog = self.engine.getprog() if not prog: return repl = self.replvar.get() text = self.text res = self.engine.search_text(text, prog) if not res: text.bell() return text.tag_remove("sel", "1.0", "end") text.tag_remove("hit", "1.0", "end") line = res[0] col = res[1].start() if self.engine.iswrap(): line = 1 col = 0 ok = 1 first = last = None # XXX ought to replace circular instead of top-to-bottom when wrapping text.undo_block_start() while 1: res = self.engine.search_forward(text, prog, line, col, 0, ok) if not res: break line, m = res chars = text.get("%d.0" % line, "%d.0" % (line+1)) orig = m.group() new = self._replace_expand(m, repl) if new is None: break i, j = m.span() first = "%d.%d" % (line, i) last = "%d.%d" % (line, j) if new == orig: text.mark_set("insert", last) else: text.mark_set("insert", first) if first != last: text.delete(first, last) if new: text.insert(first, new) col = i + len(new) ok = 0 text.undo_block_stop() if first and last: self.show_hit(first, last) self.close() def do_find(self, ok=0): if not self.engine.getprog(): return False text = self.text res = self.engine.search_text(text, None, ok) if not res: text.bell() return False line, m = res i, j = m.span() first = "%d.%d" % (line, i) last = "%d.%d" % (line, j) self.show_hit(first, last) self.ok = 1 return True def do_replace(self): prog = self.engine.getprog() if not prog: return False text = self.text try: first = pos = text.index("sel.first") last = text.index("sel.last") except TclError: pos = None if not pos: first = last = pos = text.index("insert") line, col = SearchEngine.get_line_col(pos) chars = text.get("%d.0" % line, "%d.0" % (line+1)) m = prog.match(chars, col) if not prog: return False new = self._replace_expand(m, self.replvar.get()) if new is None: return False text.mark_set("insert", first) text.undo_block_start() if m.group(): text.delete(first, last) if new: text.insert(first, new) text.undo_block_stop() self.show_hit(first, text.index("insert")) self.ok = 0 return True def show_hit(self, first, last): """Highlight text from 'first' to 'last'. 'first', 'last' - Text indices""" text = self.text text.mark_set("insert", first) text.tag_remove("sel", "1.0", "end") text.tag_add("sel", first, last) text.tag_remove("hit", "1.0", "end") if first == last: text.tag_add("hit", first) else: text.tag_add("hit", first, last) text.see("insert") text.update_idletasks() def close(self, event=None): SearchDialogBase.close(self, event) self.text.tag_remove("hit", "1.0", "end") def _replace_dialog(parent): # htest # """htest wrapper function""" box = Toplevel(parent) box.title("Test ReplaceDialog") width, height, x, y = list(map(int, re.split('[x+]', parent.geometry()))) box.geometry("+%d+%d"%(x, y + 150)) # mock undo delegator methods def undo_block_start(): pass def undo_block_stop(): pass text = Text(box, inactiveselectbackground='gray') text.undo_block_start = undo_block_start text.undo_block_stop = undo_block_stop text.pack() text.insert("insert","This is a sample sTring\nPlus MORE.") text.focus_set() def show_replace(): text.tag_add(SEL, "1.0", END) replace(text) text.tag_remove(SEL, "1.0", END) button = Button(box, text="Replace", command=show_replace) button.pack() if __name__ == '__main__': import unittest unittest.main('idlelib.idle_test.test_replacedialog', verbosity=2, exit=False) from idlelib.idle_test.htest import run run(_replace_dialog)
Upload File
Create Folder