Plan:
* 0.2:
    - GUI: rows management, clipboard, find
    - main icon, About dialog, --version
    - deploying
    - icons everywhere
* 0.3
    - GUI: recent files, save copy, show/hide toolbars
    - Window state saving (both main and flashcards test)
    - Flash cards test:
        - Update the cards used in test, when card contents are changed
        - Activate the test window, when calling already running test for the second time
        - Graceful handling of cases when all cards were removed or the currently displayed card removed.
        - Add "show Answers" checkbox
        - Polish GUI
    - XML-based dictionary format (fmd)
    - Import and export from/to CSV files.
    - Find dialog: Polish GUI, add "Add regexp..." button
    - Command line arguments: Accept a dictionary filename to load, show help (-h, --help)
    - Add examples and highlight the keywords in the test window (automatically and those marked with %).
    - Replace the "Delete cards" hotkey Ctrl+D with Del. (Often has been pressed by mistake.)
* 0.4
    - Learning algorithm
    - Undo
    - dictionary size
    - differentiation of copy/paste cards and text
    - edit current card
    - remove current card
* 0.5
    - Add Variants test (Multiple choice)
* 0.6
    - Settings

Features:
* Settings path:
    - by default use the standard QSettings INI mode.
    - make possibility to choose another path for storing settings.
* Semantic relations between words: synonym, antonym, enemy, "derived from", "see also", and user's own ones.
    - one- or two-sided relations
* In case of row order change, try to update the current test data, don't just restart it. The history must remain, the user doesn't want to see the same words again.
* Sorting questions and answers in the table. Clicking on the column titles.
* Implement all features for the main window:
    - Automatic saving of setting and geometry
    - Recent files
    - Undo/Redo
* Deploying
    - Windows: binary 32bit, zip, self-extracting archive
    - Linux: binary 32/64 bit, deb, ebuild
* Display the dictionary size in the status panel
* Flash cards test:
    - remove the current card
    - go editing the current card
    - reformat interface
* Implement the settings dialog
* Additional tests:
    - The Variants test (multiple choice)
    - Fill-in-the-blank
* Test features:
    - difficulty
    - statistics
    - what questions are already known
    - time restriction


Bugs:
* *.pro: in Windows, the binary resides in release/release/
* Main window: Confusion of Copy/Paste between cards and card contents.
* MS Windows: arguments --help and --version doesn't print any text.

Optimizations:

Fixed bugs:
* TDictionary:
    Signal TDictionary::RowOrderChanged() is emitted before SetModified().
    Use case: Start a test, remove rows, the test is restarted, but the dictionary name doesn't have '*' yet. It gets '*' only after pressing "Next".
* TDictionary:
    Inserting empty rows makes restarting the test.
* TMainWindow, TDictTableView, TDictTableModel:
    TDictTableModel::setData() inserts rows with enabled changes to the view.
* Flashcards test:
    Start FC test, modify the current dictionary ( FC test window will show *dic-name ), save the dictionary
    Actual: In FC test window, "*dic-name" doesn't update to "dic-name"
    Expected: Updates to "dic-name"

