[pypy-svn] r7380 - pypy/trunk/src/pypy/translator/tool/pygame

mgedmin at codespeak.net mgedmin at codespeak.net
Thu Nov 18 15:42:36 CET 2004


Author: mgedmin
Date: Thu Nov 18 15:42:36 2004
New Revision: 7380

Modified:
   pypy/trunk/src/pypy/translator/tool/pygame/drawgraph.py
   pypy/trunk/src/pypy/translator/tool/pygame/graphdisplay.py
Log:
Added find next.



Modified: pypy/trunk/src/pypy/translator/tool/pygame/drawgraph.py
==============================================================================
--- pypy/trunk/src/pypy/translator/tool/pygame/drawgraph.py	(original)
+++ pypy/trunk/src/pypy/translator/tool/pygame/drawgraph.py	Thu Nov 18 15:42:36 2004
@@ -426,9 +426,15 @@
         for cmd in self.draw_commands():
             cmd()
 
-    def search_for_node(self, searchstr):
+    def search_for_node(self, searchstr, start_at=None):
         """Find a node that contains a search string."""
-        for node in self.graphlayout.nodes.itervalues():
+        iter = self.graphlayout.nodes.itervalues()
+        if start_at:
+            # Skip all nodes up to and including 'start_at'
+            for node in iter:
+                if node is start_at:
+                    break
+        for node in iter:
             if searchstr in node.label:
                 return node
         return None

Modified: pypy/trunk/src/pypy/translator/tool/pygame/graphdisplay.py
==============================================================================
--- pypy/trunk/src/pypy/translator/tool/pygame/graphdisplay.py	(original)
+++ pypy/trunk/src/pypy/translator/tool/pygame/graphdisplay.py	Thu Nov 18 15:42:36 2004
@@ -82,6 +82,7 @@
         'backspace' : 'layout_back',
         'f': 'search',
         '/': 'search',
+        'n': 'find_next',
         'left' : ('pan', (-1, 0)),
         'right' : ('pan', (1, 0)),
         'up' : ('pan', (0, -1)),
@@ -110,6 +111,7 @@
         Meta Right      Go forward in history
 
         F or /          Search for text
+        N               Find next occurrence
 
         H               This help message
 
@@ -135,6 +137,8 @@
         self.method_cache = {}
         self.key_cache = {}
         self.status_bar_height = 0
+        self.searchstr = None
+        self.searchpos = None
         self.initialize_keys()
         self.setlayout(layout)
 
@@ -255,13 +259,22 @@
         searchstr = self.input('Find: ')
         if not searchstr:
             return
-        node = self.viewer.search_for_node(searchstr)
+        self.searchstr = searchstr
+        self.searchpos = None
+        self.find_next()
+
+    def find_next(self):
+        if not self.searchstr:
+            return
+        node = self.viewer.search_for_node(self.searchstr,
+                                           start_at=self.searchpos)
         if node:
+            self.searchpos = node
             self.sethighlight(obj=node)
             self.look_at_node(node, keep_highlight=True)
             self.sethighlight(obj=node)
         else:
-            self.setstatusbar('Not found: %s' % searchstr)
+            self.setstatusbar('Not found: %s' % self.searchstr)
 
     def setlayout(self, layout):
         if self.viewer:



More information about the Pypy-commit mailing list