summaryrefslogtreecommitdiffstats
path: root/Tools/idle/GrepDialog.py
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2003-06-14 00:08:37 (GMT)
committerGuido van Rossum <guido@python.org>2003-06-14 00:08:37 (GMT)
commitecb544e95bc02a59d0acc1e28f3ef5624d399210 (patch)
tree589449882db7543c5562347b1120a8d0e57b219f /Tools/idle/GrepDialog.py
parent91012fe9b58b9dff2298aad453804023d557447b (diff)
downloadcpython-ecb544e95bc02a59d0acc1e28f3ef5624d399210.zip
cpython-ecb544e95bc02a59d0acc1e28f3ef5624d399210.tar.gz
cpython-ecb544e95bc02a59d0acc1e28f3ef5624d399210.tar.bz2
Get rid of old IDLE. Lib/idlelib rules!
Diffstat (limited to 'Tools/idle/GrepDialog.py')
-rw-r--r--Tools/idle/GrepDialog.py132
1 files changed, 0 insertions, 132 deletions
diff --git a/Tools/idle/GrepDialog.py b/Tools/idle/GrepDialog.py
deleted file mode 100644
index 84cac0e..0000000
--- a/Tools/idle/GrepDialog.py
+++ /dev/null
@@ -1,132 +0,0 @@
-import os
-import fnmatch
-import sys
-from Tkinter import *
-import SearchEngine
-from SearchDialogBase import SearchDialogBase
-
-def grep(text, io=None, flist=None):
- root = text._root()
- engine = SearchEngine.get(root)
- if not hasattr(engine, "_grepdialog"):
- engine._grepdialog = GrepDialog(root, engine, flist)
- dialog = engine._grepdialog
- dialog.open(io)
-
-class GrepDialog(SearchDialogBase):
-
- title = "Find in Files Dialog"
- icon = "Grep"
- needwrapbutton = 0
-
- def __init__(self, root, engine, flist):
- SearchDialogBase.__init__(self, root, engine)
- self.flist = flist
- self.globvar = StringVar(root)
- self.recvar = BooleanVar(root)
-
- def open(self, io=None):
- SearchDialogBase.open(self, None)
- if io:
- path = io.filename or ""
- else:
- path = ""
- dir, base = os.path.split(path)
- head, tail = os.path.splitext(base)
- if not tail:
- tail = ".py"
- self.globvar.set(os.path.join(dir, "*" + tail))
-
- def create_entries(self):
- SearchDialogBase.create_entries(self)
- self.globent = self.make_entry("In files:", self.globvar)
-
- def create_other_buttons(self):
- f = self.make_frame()
-
- btn = Checkbutton(f, anchor="w",
- variable=self.recvar,
- text="Recurse down subdirectories")
- btn.pack(side="top", fill="both")
- btn.select()
-
- def create_command_buttons(self):
- SearchDialogBase.create_command_buttons(self)
- self.make_button("Search Files", self.default_command, 1)
-
- def default_command(self, event=None):
- prog = self.engine.getprog()
- if not prog:
- return
- path = self.globvar.get()
- if not path:
- self.top.bell()
- return
- from OutputWindow import OutputWindow
- save = sys.stdout
- try:
- sys.stdout = OutputWindow(self.flist)
- self.grep_it(prog, path)
- finally:
- sys.stdout = save
-
- def grep_it(self, prog, path):
- dir, base = os.path.split(path)
- list = self.findfiles(dir, base, self.recvar.get())
- list.sort()
- self.close()
- pat = self.engine.getpat()
- print "Searching %s in %s ..." % (`pat`, path)
- hits = 0
- for fn in list:
- try:
- f = open(fn)
- except IOError, msg:
- print msg
- continue
- lineno = 0
- while 1:
- block = f.readlines(100000)
- if not block:
- break
- for line in block:
- lineno = lineno + 1
- if line[-1:] == '\n':
- line = line[:-1]
- if prog.search(line):
- sys.stdout.write("%s: %s: %s\n" % (fn, lineno, line))
- hits = hits + 1
- if hits:
- if hits == 1:
- s = ""
- else:
- s = "s"
- print "Found", hits, "hit%s." % s
- print "(Hint: right-click to open locations.)"
- else:
- print "No hits."
-
- def findfiles(self, dir, base, rec):
- try:
- names = os.listdir(dir or os.curdir)
- except os.error, msg:
- print msg
- return []
- list = []
- subdirs = []
- for name in names:
- fn = os.path.join(dir, name)
- if os.path.isdir(fn):
- subdirs.append(fn)
- else:
- if fnmatch.fnmatch(name, base):
- list.append(fn)
- if rec:
- for subdir in subdirs:
- list.extend(self.findfiles(subdir, base, rec))
- return list
-
- def close(self, event=None):
- if self.top:
- self.top.grab_release()
- self.top.withdraw()