ยปCore Development>Code coverage>Lib/idlelib/SearchDialogBase.py

Python code coverage for Lib/idlelib/SearchDialogBase.py

#countcontent
1n/afrom tkinter import *
2n/a
3n/aclass SearchDialogBase:
4n/a
5n/a title = "Search Dialog"
6n/a icon = "Search"
7n/a needwrapbutton = 1
8n/a
9n/a def __init__(self, root, engine):
10n/a self.root = root
11n/a self.engine = engine
12n/a self.top = None
13n/a
14n/a def open(self, text, searchphrase=None):
15n/a self.text = text
16n/a if not self.top:
17n/a self.create_widgets()
18n/a else:
19n/a self.top.deiconify()
20n/a self.top.tkraise()
21n/a if searchphrase:
22n/a self.ent.delete(0,"end")
23n/a self.ent.insert("end",searchphrase)
24n/a self.ent.focus_set()
25n/a self.ent.selection_range(0, "end")
26n/a self.ent.icursor(0)
27n/a self.top.grab_set()
28n/a
29n/a def close(self, event=None):
30n/a if self.top:
31n/a self.top.grab_release()
32n/a self.top.withdraw()
33n/a
34n/a def create_widgets(self):
35n/a top = Toplevel(self.root)
36n/a top.bind("<Return>", self.default_command)
37n/a top.bind("<Escape>", self.close)
38n/a top.protocol("WM_DELETE_WINDOW", self.close)
39n/a top.wm_title(self.title)
40n/a top.wm_iconname(self.icon)
41n/a self.top = top
42n/a
43n/a self.row = 0
44n/a self.top.grid_columnconfigure(0, pad=2, weight=0)
45n/a self.top.grid_columnconfigure(1, pad=2, minsize=100, weight=100)
46n/a
47n/a self.create_entries()
48n/a self.create_option_buttons()
49n/a self.create_other_buttons()
50n/a return self.create_command_buttons()
51n/a
52n/a def make_entry(self, label, var):
53n/a l = Label(self.top, text=label)
54n/a l.grid(row=self.row, column=0, sticky="nw")
55n/a e = Entry(self.top, textvariable=var, exportselection=0)
56n/a e.grid(row=self.row, column=1, sticky="nwe")
57n/a self.row = self.row + 1
58n/a return e
59n/a
60n/a def make_frame(self,labeltext=None):
61n/a if labeltext:
62n/a l = Label(self.top, text=labeltext)
63n/a l.grid(row=self.row, column=0, sticky="nw")
64n/a f = Frame(self.top)
65n/a f.grid(row=self.row, column=1, columnspan=1, sticky="nwe")
66n/a self.row = self.row + 1
67n/a return f
68n/a
69n/a def make_button(self, label, command, isdef=0):
70n/a b = Button(self.buttonframe,
71n/a text=label, command=command,
72n/a default=isdef and "active" or "normal")
73n/a cols,rows=self.buttonframe.grid_size()
74n/a b.grid(pady=1,row=rows,column=0,sticky="ew")
75n/a self.buttonframe.grid(rowspan=rows+1)
76n/a return b
77n/a
78n/a def create_entries(self):
79n/a self.ent = self.make_entry("Find:", self.engine.patvar)
80n/a
81n/a def create_option_buttons(self):
82n/a f = self.make_frame("Options")
83n/a
84n/a btn = Checkbutton(f, anchor="w",
85n/a variable=self.engine.revar,
86n/a text="Regular expression")
87n/a btn.pack(side="left", fill="both")
88n/a if self.engine.isre():
89n/a btn.select()
90n/a
91n/a btn = Checkbutton(f, anchor="w",
92n/a variable=self.engine.casevar,
93n/a text="Match case")
94n/a btn.pack(side="left", fill="both")
95n/a if self.engine.iscase():
96n/a btn.select()
97n/a
98n/a btn = Checkbutton(f, anchor="w",
99n/a variable=self.engine.wordvar,
100n/a text="Whole word")
101n/a btn.pack(side="left", fill="both")
102n/a if self.engine.isword():
103n/a btn.select()
104n/a
105n/a if self.needwrapbutton:
106n/a btn = Checkbutton(f, anchor="w",
107n/a variable=self.engine.wrapvar,
108n/a text="Wrap around")
109n/a btn.pack(side="left", fill="both")
110n/a if self.engine.iswrap():
111n/a btn.select()
112n/a
113n/a def create_other_buttons(self):
114n/a f = self.make_frame("Direction")
115n/a
116n/a #lbl = Label(f, text="Direction: ")
117n/a #lbl.pack(side="left")
118n/a
119n/a btn = Radiobutton(f, anchor="w",
120n/a variable=self.engine.backvar, value=1,
121n/a text="Up")
122n/a btn.pack(side="left", fill="both")
123n/a if self.engine.isback():
124n/a btn.select()
125n/a
126n/a btn = Radiobutton(f, anchor="w",
127n/a variable=self.engine.backvar, value=0,
128n/a text="Down")
129n/a btn.pack(side="left", fill="both")
130n/a if not self.engine.isback():
131n/a btn.select()
132n/a
133n/a def create_command_buttons(self):
134n/a #
135n/a # place button frame on the right
136n/a f = self.buttonframe = Frame(self.top)
137n/a f.grid(row=0,column=2,padx=2,pady=2,ipadx=2,ipady=2)
138n/a
139n/a b = self.make_button("close", self.close)
140n/a b.lower()