# -*- mode: Python ; coding: utf-8 -*- # # Copyright (C) 2014 tobynet # # License: GNU AGPL, version 3 or later; # http://www.gnu.org/copyleft/agpl.html __Version__ = "0.1.0" """Add-on for Anki 2.x that helps using with the touch interface.""" from PyQt4.QtCore import Qt, QEvent from aqt import mw from aqt.utils import showInfo, tooltip from anki.hooks import wrap pressed_position = None; def show_answer(): u"""Change state to answer""" if mw.reviewer.state == "question": mw.reviewer._showAnswerHack() def answer_card(correct): u"""Answer with correct or incrrect""" tooltip("CORRECT!!" if correct else "miss...", 1000) mw.reviewer._answerCard( mw.reviewer._defaultEase() if correct else 1) def is_correct_area(pressed_pos,released_pos): u"""Pointing position is in a correct area?""" return pressed_pos.x() < released_pos.x() def my_event(event): u"""Hook event to detect touch""" tooltip("Event: " + `event`) if event.type() == QEvent.TouchBegin: show_answer() def my_mouse_press_event(event): u"""Hook mouse event to detect pressed button firstly""" global pressed_position #tooltip("press: {0}".format(event.pos().x())) show_answer() pressed_position = event.pos() def my_mouse_release_event(event): u"""Hook mouse event to detect swipe""" global pressed_position #tooltip("release: {0} ({1})".format(event.pos().x(), event.pos().x() - pressed_position.x())) if mw.reviewer.state == "answer": answer_card( is_correct_area( pressed_pos = pressed_position, released_pos = event.pos())) # Hook some events mw.web.mousePressEvent = wrap(mw.web.mousePressEvent, my_mouse_press_event) mw.web.mouseReleaseEvent = wrap(mw.web.mouseReleaseEvent, my_mouse_release_event) # I can't hook "mw.web.event", why????? #mw.web.event = wrap(mw.web.event, my_event)