PHP 8.2.30
Preview: search.py Size: 3.09 KB
//opt/alt/python36/lib64/python3.6/idlelib/search.py

from tkinter import TclError

from idlelib import searchengine
from idlelib.searchbase import SearchDialogBase

def _setup(text):
    "Create or find the singleton SearchDialog instance."
    root = text._root()
    engine = searchengine.get(root)
    if not hasattr(engine, "_searchdialog"):
        engine._searchdialog = SearchDialog(root, engine)
    return engine._searchdialog

def find(text):
    "Handle the editor edit menu item and corresponding event."
    pat = text.get("sel.first", "sel.last")
    return _setup(text).open(text, pat)  # Open is inherited from SDBase.

def find_again(text):
    "Handle the editor edit menu item and corresponding event."
    return _setup(text).find_again(text)

def find_selection(text):
    "Handle the editor edit menu item and corresponding event."
    return _setup(text).find_selection(text)


class SearchDialog(SearchDialogBase):

    def create_widgets(self):
        SearchDialogBase.create_widgets(self)
        self.make_button("Find Next", self.default_command, 1)

    def default_command(self, event=None):
        if not self.engine.getprog():
            return
        self.find_again(self.text)

    def find_again(self, text):
        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):
        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 Button

    box = Toplevel(parent)
    box.title("Test SearchDialog")
    x, y = map(int, parent.geometry().split('+')[1:])
    box.geometry("+%d+%d" % (x, y + 175))
    text = Text(box, 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(box, 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)

Directory Contents

Dirs: 3 × Files: 74

Name Size Perms Modified Actions
Icons DIR
- drwxr-xr-x 2024-05-23 07:06:19
Edit Download
idle_test DIR
- drwxr-xr-x 2024-05-23 07:06:19
Edit Download
- drwxr-xr-x 2024-05-23 07:06:19
Edit Download
9.11 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
19.36 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.14 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
8.09 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
5.92 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
6.94 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
55.04 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
10.24 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
11.01 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
2.21 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
2.62 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
10.52 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
3.05 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
37.97 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
98.69 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
13.09 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.82 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
18.65 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
11.86 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.96 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.06 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.02 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.97 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
65.70 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.56 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
3.80 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
6.58 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
53.82 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
11.06 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
8.77 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.95 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
10.07 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
12.58 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
454 B lrw-r--r-- 2024-04-17 17:19:35
Edit Download
570 B lrw-r--r-- 2021-09-04 03:49:41
Edit Download
20.25 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
9.43 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.62 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
18.21 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
38.91 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
26.54 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
5.67 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.00 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.04 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.12 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.06 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
19.65 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
56.38 KB lrwxr-xr-x 2024-04-17 17:19:35
Edit Download
12.14 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
9.37 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
6.71 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.33 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
20.64 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
868 B lrw-r--r-- 2024-04-17 17:19:35
Edit Download
16.87 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.66 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
4.35 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
3.09 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.28 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
7.30 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
13.00 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
4.35 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.41 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
5.98 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
8.28 KB lrw-r--r-- 2021-09-04 03:49:41
Edit Download
6.33 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
14.74 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
10.79 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
2.53 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
1.31 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
961 B lrw-r--r-- 2024-04-17 17:19:35
Edit Download
14.84 KB lrw-r--r-- 2024-04-17 17:19:35
Edit Download
396 B lrw-r--r-- 2024-04-17 17:19:35
Edit Download
159 B lrw-r--r-- 2024-04-17 17:19:35
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).