From 12b36de5b5c63afb5f430a021ae821a1b9f7c0e7 Mon Sep 17 00:00:00 2001 From: Florian Bruhin Date: Wed, 30 Apr 2014 18:01:03 +0200 Subject: [PATCH] Start implementing prev/next --- qutebrowser/browser/hints.py | 21 +++++++++++++++++++++ qutebrowser/utils/webelem.py | 2 ++ 2 files changed, 23 insertions(+) diff --git a/qutebrowser/browser/hints.py b/qutebrowser/browser/hints.py index 6f9cd782d..37319bdf0 100644 --- a/qutebrowser/browser/hints.py +++ b/qutebrowser/browser/hints.py @@ -278,6 +278,27 @@ class HintManager(QObject): link = self._baseurl.resolved(link) return link + def click_prevnext(self, frame, prev=False): + """Click a "previous"/"next" element on the page.""" + # First check for + self.target='normal' + elems = frame.findAllElements(webelem.SELECTORS['prevnext_rel']) + rel_values = ['prev', 'previous'] if prev else ['next'] + for e in elems: + if e.attribute('rel') in rel_values: + self.click(e) + return + # Then check for regular links + elems = frame.findAllElements(webelem.SELECTORS['prevnext']) + option = 'prev-regexes' if prev else 'next-regexes' + for regex in config.get('hints', option): + for e in elems: + if regex.match(e.toPlainText()): + self.click(e) + return + message.error("No prev/forward links found!") + + def start(self, frame, baseurl, mode='all', target='normal'): """Start hinting. diff --git a/qutebrowser/utils/webelem.py b/qutebrowser/utils/webelem.py index 3aba6564b..63faf8d5a 100644 --- a/qutebrowser/utils/webelem.py +++ b/qutebrowser/utils/webelem.py @@ -36,6 +36,8 @@ SELECTORS = { 'input[type=tel], input[type=number], ' 'input[type=password], input[type=search], textarea'), 'url': '[src], [href]', + 'prevnext_rel': 'link [role=link]', + 'prevnext': 'a button [role=button]', } SELECTORS['editable_focused'] = ', '.join(