golden hour
/opt/alt/python37/lib64/python3.7/idlelib
⬆️ Go Up
Upload
File/Folder
Size
Actions
CREDITS.txt
1.82 KB
Del
OK
ChangeLog
55.04 KB
Del
OK
HISTORY.txt
10.07 KB
Del
OK
Icons
-
Del
OK
NEWS.txt
47.65 KB
Del
OK
NEWS2x.txt
26.54 KB
Del
OK
README.txt
9.37 KB
Del
OK
TODO.txt
8.28 KB
Del
OK
__init__.py
396 B
Del
OK
__main__.py
159 B
Del
OK
__pycache__
-
Del
OK
autocomplete.py
8.74 KB
Del
OK
autocomplete_w.py
19.64 KB
Del
OK
autoexpand.py
3.14 KB
Del
OK
browser.py
8.12 KB
Del
OK
calltip.py
6.17 KB
Del
OK
calltip_w.py
6.99 KB
Del
OK
codecontext.py
11.06 KB
Del
OK
colorizer.py
12.69 KB
Del
OK
config-extensions.def
2.21 KB
Del
OK
config-highlight.def
2.8 KB
Del
OK
config-keys.def
10.65 KB
Del
OK
config-main.def
3.09 KB
Del
OK
config.py
37.28 KB
Del
OK
config_key.py
14.13 KB
Del
OK
configdialog.py
102.07 KB
Del
OK
debugger.py
18.66 KB
Del
OK
debugger_r.py
11.86 KB
Del
OK
debugobj.py
3.96 KB
Del
OK
debugobj_r.py
1.06 KB
Del
OK
delegator.py
1.02 KB
Del
OK
dynoption.py
1.97 KB
Del
OK
editor.py
64.08 KB
Del
OK
extend.txt
3.56 KB
Del
OK
filelist.py
3.8 KB
Del
OK
format.py
15.41 KB
Del
OK
grep.py
7.3 KB
Del
OK
help.html
60.76 KB
Del
OK
help.py
11.46 KB
Del
OK
help_about.py
8.77 KB
Del
OK
history.py
3.95 KB
Del
OK
hyperparser.py
12.58 KB
Del
OK
idle.py
454 B
Del
OK
idle.pyw
570 B
Del
OK
idle_test
-
Del
OK
iomenu.py
20.15 KB
Del
OK
macosx.py
9.44 KB
Del
OK
mainmenu.py
3.83 KB
Del
OK
multicall.py
18.21 KB
Del
OK
outwin.py
5.65 KB
Del
OK
parenmatch.py
7.04 KB
Del
OK
pathbrowser.py
3.12 KB
Del
OK
percolator.py
3.06 KB
Del
OK
pyparse.py
19.48 KB
Del
OK
pyshell.py
55.91 KB
Del
OK
query.py
14.55 KB
Del
OK
redirector.py
6.71 KB
Del
OK
replace.py
9.66 KB
Del
OK
rpc.py
20.64 KB
Del
OK
run.py
19.82 KB
Del
OK
runscript.py
8.58 KB
Del
OK
scrolledlist.py
4.36 KB
Del
OK
search.py
5.44 KB
Del
OK
searchbase.py
7.36 KB
Del
OK
searchengine.py
7.3 KB
Del
OK
sidebar.py
13.27 KB
Del
OK
squeezer.py
12.54 KB
Del
OK
stackviewer.py
4.35 KB
Del
OK
statusbar.py
1.41 KB
Del
OK
textview.py
6.65 KB
Del
OK
tooltip.py
6.41 KB
Del
OK
tree.py
15.97 KB
Del
OK
undo.py
10.79 KB
Del
OK
window.py
2.55 KB
Del
OK
zoomheight.py
4.1 KB
Del
OK
zzdummy.py
961 B
Del
OK
Edit: search.py
"""Search dialog for Find, Find Again, and Find Selection functionality. Inherits from SearchDialogBase for GUI and uses searchengine to prepare search pattern. """ from tkinter import TclError from idlelib import searchengine from idlelib.searchbase import SearchDialogBase def _setup(text): """Return the new or existing singleton SearchDialog instance. The singleton dialog saves user entries and preferences across instances. Args: text: Text widget containing the text to be searched. """ root = text._root() engine = searchengine.get(root) if not hasattr(engine, "_searchdialog"): engine._searchdialog = SearchDialog(root, engine) return engine._searchdialog def find(text): """Open the search dialog. Module-level function to access the singleton SearchDialog instance and open the dialog. If text is selected, it is used as the search phrase; otherwise, the previous entry is used. No search is done with this command. """ pat = text.get("sel.first", "sel.last") return _setup(text).open(text, pat) # Open is inherited from SDBase. def find_again(text): """Repeat the search for the last pattern and preferences. Module-level function to access the singleton SearchDialog instance to search again using the user entries and preferences from the last dialog. If there was no prior search, open the search dialog; otherwise, perform the search without showing the dialog. """ return _setup(text).find_again(text) def find_selection(text): """Search for the selected pattern in the text. Module-level function to access the singleton SearchDialog instance to search using the selected text. With a text selection, perform the search without displaying the dialog. Without a selection, use the prior entry as the search phrase and don't display the dialog. If there has been no prior search, open the search dialog. """ return _setup(text).find_selection(text) class SearchDialog(SearchDialogBase): "Dialog for finding a pattern in text." def create_widgets(self): "Create the base search dialog and add a button for Find Next." SearchDialogBase.create_widgets(self) # TODO - why is this here and not in a create_command_buttons? self.make_button("Find Next", self.default_command, isdef=True) def default_command(self, event=None): "Handle the Find Next button as the default command." if not self.engine.getprog(): return self.find_again(self.text) def find_again(self, text): """Repeat the last search. If no search was previously run, open a new search dialog. In this case, no search is done. If a search was previously run, the search dialog won't be shown and the options from the previous search (including the search pattern) will be used to find the next occurrence of the pattern. Next is relative based on direction. Position the window to display the located occurrence in the text. Return True if the search was successful and False otherwise. """ if not self.engine.getpat(): self.open(text) return False if not self.engine.getprog(): return False res = self.engine.search_text(text) if res: line, m = res i, j = m.span() first = "%d.%d" % (line, i) last = "%d.%d" % (line, j) try: selfirst = text.index("sel.first") sellast = text.index("sel.last") if selfirst == first and sellast == last: self.bell() return False except TclError: pass text.tag_remove("sel", "1.0", "end") text.tag_add("sel", first, last) text.mark_set("insert", self.engine.isback() and first or last) text.see("insert") return True else: self.bell() return False def find_selection(self, text): """Search for selected text with previous dialog preferences. Instead of using the same pattern for searching (as Find Again does), this first resets the pattern to the currently selected text. If the selected text isn't changed, then use the prior search phrase. """ pat = text.get("sel.first", "sel.last") if pat: self.engine.setcookedpat(pat) return self.find_again(text) def _search_dialog(parent): # htest # "Display search test box." from tkinter import Toplevel, Text from tkinter.ttk import Frame, Button top = Toplevel(parent) top.title("Test SearchDialog") x, y = map(int, parent.geometry().split('+')[1:]) top.geometry("+%d+%d" % (x, y + 175)) frame = Frame(top) frame.pack() text = Text(frame, inactiveselectbackground='gray') text.pack() text.insert("insert","This is a sample string.\n"*5) def show_find(): text.tag_add('sel', '1.0', 'end') _setup(text).open(text) text.tag_remove('sel', '1.0', 'end') button = Button(frame, text="Search (selection ignored)", command=show_find) button.pack() if __name__ == '__main__': from unittest import main main('idlelib.idle_test.test_search', verbosity=2, exit=False) from idlelib.idle_test.htest import run run(_search_dialog)
Save