~kevang/mnemosyne-proj/grade-shortcuts-improvements

« back to all changes in this revision

Viewing changes to mnemosyne/mnemosyne/libmnemosyne/card_types/three_sided.py

  • Committer: pbienst
  • Date: 2008-08-04 16:13:00 UTC
  • Revision ID: svn-v3-trunk0:e5e6b78b-db40-0410-9517-b98c64f8d2c1:trunk:497
Progress dump.

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
##############################################################################
2
2
#
3
 
# Three sided card type <Peter.Bienstman@UGent.be>
 
3
# three_sided.py <Peter.Bienstman@UGent.be>
4
4
#
5
5
##############################################################################
6
6
 
7
7
import gettext
8
8
_ = gettext.gettext
9
9
 
10
 
from mnemosyne.libmnemosyne.card import *
11
 
from mnemosyne.libmnemosyne.card_type import *
12
 
from mnemosyne.libmnemosyne.fact import *
13
 
from mnemosyne.libmnemosyne.config import config
 
10
from mnemosyne.libmnemosyne.card_type import CardType
 
11
from mnemosyne.libmnemosyne.fact_view import FactView
14
12
 
15
13
 
16
14
 
18
16
#
19
17
# ThreeSided
20
18
#
21
 
#  f: foreign word
22
 
#  p: pronunciation
23
 
#  t: translation
24
 
#
25
19
##############################################################################
26
20
 
27
21
class ThreeSided(CardType):
32
26
    #
33
27
    ##########################################################################
34
28
 
35
 
    recognition = 0
36
 
    production = 1
37
 
 
38
29
    def __init__(self):
39
30
 
40
 
        CardType.__init__(self, id=2,
41
 
                          name=_("Foreign word with pronunciation"),
42
 
                          can_be_unregistered=False)
43
 
 
44
 
 
45
 
 
46
 
    ##########################################################################
47
 
    #
48
 
    # generate_q
49
 
    #
50
 
    ##########################################################################
51
 
 
52
 
    def generate_q(self, fact, fact_view):
53
 
 
54
 
        if fact_view == ThreeSided.recognition:
55
 
            return fact['f']
56
 
        elif fact_view == ThreeSided.production:
57
 
            return fact['t'] 
58
 
        else:
59
 
            print 'Invalid fact view.'
60
 
            raise NameError()
61
 
 
62
 
 
63
 
        
64
 
    ##########################################################################
65
 
    #
66
 
    # generate_a
67
 
    #
68
 
    ##########################################################################
69
 
 
70
 
    def generate_a(self, fact, fact_view):
71
 
 
72
 
        if fact_view == ThreeSided.recognition:
73
 
            return fact['p'] + '\n' + fact['t']
74
 
        elif fact_view == ThreeSided.production:
75
 
            return fact['f'] + '\n' + fact['p']
76
 
        else:
77
 
            print 'Invalid fact view.'
78
 
            raise NameError()
79
 
 
80
 
        
81
 
 
82
 
    ##########################################################################
83
 
    #
84
 
    # new_cards
85
 
    #
86
 
    ##########################################################################
87
 
 
88
 
    def new_cards(self, data):
89
 
 
90
 
        # Extract and remove data.
91
 
 
92
 
        grade       = data['grade']
93
 
        cat_names   = data['cat_names']
94
 
        recognition = data['recognition']
95
 
        production  = data['production']
96
 
        
97
 
        del data['recognition']
98
 
        del data['production']
99
 
        del data['grade']
100
 
 
101
 
        # Create fact.
102
 
 
103
 
        # TODO: add fact_views as a category name
104
 
 
105
 
        fact = Fact(data)
106
 
        fact.save()
107
 
 
108
 
        if recognition:
109
 
            
110
 
            Card(grade, card_type=self, fact=fact,
111
 
                 fact_view=ThreeSided.recognition, cat_names=cat_names).save()
112
 
 
113
 
        if production:
114
 
            Card(grade, card_type=self, fact=fact,
115
 
                 fact_view=ThreeSided.production, cat_names=cat_names).save()
116
 
            
117
 
        self.widget.clear()
118
 
 
119
 
 
120
 
 
121
 
    ##########################################################################
122
 
    #
123
 
    # update_cards
124
 
    #
125
 
    ##########################################################################
126
 
 
127
 
    def update_cards(self, data):
128
 
 
129
 
        pass
 
31
        self.name = _("Foreign word with pronunciation"),
 
32
        self.id   = 3
 
33
 
 
34
        # Name the keys.
 
35
 
 
36
        self.fact_key_names['f'] = _("Foreign word")
 
37
        self.fact_key_names['p'] = _("Pronunciation")
 
38
        self.fact_key_names['t'] = _("Translation")        
 
39
        
 
40
        # Recognition.
 
41
 
 
42
        v = FactView(_("Recognition"))
 
43
 
 
44
        v.q_fields.append(("f", True))
 
45
 
 
46
        v.a_fields.append(("p", False))         
 
47
        v.a_fields.append(("t", False))       
 
48
 
 
49
        self.fact_views.append(v)
 
50
     
 
51
        # Back to front.
 
52
 
 
53
        v = FactView(_("Production"))
 
54
 
 
55
        v.q_fields.append(("t", True))
 
56
 
 
57
        v.a_fields.append(("f", False))        
 
58
        v.a_fields.append(("p", False))
 
59
 
 
60
        self.fact_views.append(v)