def find_next(self, event):
        grid = self.notebook.GetPage(self.notebook.GetSelection()).grid
        if self.searchtext != "":
            row = grid.GetGridCursorRow()
            col = grid.GetGridCursorCol()
            self.SetStatusText('Search mode: text; looking for %s' % self.searchtext)
            if col+1 < grid.table.GetNumberCols():
                grid.search(self.searchtext, row, col+1)
            else:
                grid.search(self.searchtext, row+1, 0)
        elif self.searchexpression != "":
            self.SetStatusText('Search mode: expression; looking for %s' % repr(self.searchexpression)[2:-1])
            grid.searchexpression(searchexp=self.searchexpression)
        else:
            self.SetStatusText("No search yet: please enter search-text or -expression")
Implements PBKDF2 as defined in RFC 2898, section 5.2
dataset/ETHPy150Open ipython/ipython-py3k/IPython/deathrow/igrid.py/IGridFrame.find_next--crossover with--dataset/ETHPy150Open AppScale/appscale/AppServer/lib/django-1.4/django/utils/crypto.py/pbkdf2