Revision 843603
Go back to digest for 10th August 2008Features in Educational
Big commit here, both in terms of code and changes.
I had to do this in one commit because it any partial commits are totally broken.
The most visible change is that synonym and antonym modes are now operational. This leaves only conjugation left to do.
In the previous practice, the synonym and antonym modes were written-style; however, in the new practice, they have been reborn as multiple-choice style.
Since synonyms and antonyms are not a closed set, a written style corrector will mark wrong many correct answers since it cannot recognize that a new word is a valid synonym.
Using multiple choice format, we can specify that they pick a synonym from _this_ list, which doesn't have the above problem.
Under the hood, I reorganized the logic fairly significantly; in effect, I moved all the answer logic to PracticeEntryManager and out of the various input classes.
This allowed me to delete various specialized multiple choice widgets and condense all the modes into one function per mode category (written modes, multiple choice modes, flashcard mode, etc), greatly reducing duplicate code size.
While I was rehauling PracticeEntryManager, I did some other code cleanup and reorganization inside of it.
Creating new modes should now be much easier.
This general plan can be followed for anything that fits an existing category:
* Create the solution and question prompt logic in PracticeEntryManager (this is just adding a case to a switch)
* Categorize your mode (again, a case in a switch)
* Decide if your mode needs a special active area in the themes, and add the code in modeindependent.cpp if so (adding a case...)
* Profit!
File Changes
- /trunk/KDE/kdeedu/parley/src/practice/input
- /articlemcinput.cpp
- /articlemcinput.h
- /multiplechoicemcinput.cpp
- /multiplechoicemcinput.h
- /trunk/KDE/kdeedu/parley/src
- /CMakeLists.txt
- /practice/entryfilter.cpp
- /practice/modeindependent.cpp
- /practice/modespecifics.cpp
- /practice/parleypracticemainwindow.cpp
- /practice/parleypracticemainwindow.h
- /practice/practiceentry.cpp
- /practice/practiceentrymanager.cpp
- /practice/practiceentrymanager.h
- /practice/input/mcinput.cpp
- /practice/input/mcinput.h
- /practice/statistics/statistics.cpp