-
Notifications
You must be signed in to change notification settings - Fork 4
/
anki-touch.py
72 lines (50 loc) · 1.88 KB
/
anki-touch.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
# -*- 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)