2014-07-15  Florent Rougon  <f.rougon@free.fr>

	Release 0.11.0

2014-07-15  Florent Rougon  <f.rougon@free.fr>

	Remove unused lines from MANIFEST.in that cause warnings

	* MANIFEST.in: remove "prune flo_check_homework/images/unused" and
	"global-exclude .gitattributes" because they cause warnings upon
	installation that may frighten users and only provide a safety net
	against hypothetical bugs that don't exist in the current version.

2014-07-15  Florent Rougon  <f.rougon@free.fr>

	Documentation update

	* INSTALL.txt: better explain the pip-based installation method. In
	particular, indicate in which situations it is safe or unsafe to use.

	* README.i18n: document that PyQt version 4.10.4 or later should be
	sufficient to regenerate the .ts files.

2014-07-12  Florent Rougon  <f.rougon@free.fr>

	New algorithm to determine the duration of the super magic token

	* flo_check_homework/main.py: when the super magic word entered by the
	user contains a decimal point, the duration of the super magic token is
	determined using a new method. This should make it practically
	impossible for unauthorized personnel to tamper with the token duration
	as the super magic word is being entered.

	* flo_check_homework/main.py: use the decimal module to ensure that the
	digits seen by the program are the same as those entered by the user.

2014-05-20  Florent Rougon  <f.rougon@free.fr>

	Declare .gitattributes and .gitignore with 'export-ignore'

	* .gitattributes: declare these two files in .gitattributes with the
	'export-ignore' attribute, for the benefit of 'git archive'.

2014-04-12  Florent Rougon  <f.rougon@free.fr>

	Release 0.10.0

	* flo-check-homework.fr.ts: update French translation

	* flo_check_homework/__init__.py: bump version number

2014-04-12  Florent Rougon  <f.rougon@free.fr>

	Preserve integrity of the QSettings in HomeWorkCheckApp

	* flo_check_homework/main.py: as things are currently, in order to avoid
	uselessly sync()ing the QSettings whenever running in transparent mode,
	it must be used in a read-only manner in HomeWorkCheckApp, or
	explicitely sync()ed. Do this sync()ing when initializing
	"ForceInteractive", and move the initialization of
	"AllowExitBeforeChild" to the MainWindow class, since it is only used in
	interactive mode.

2014-04-12  Florent Rougon  <f.rougon@free.fr>

	New AllowExitBeforeChild config file parameter

	* flo_check_homework/main.py: new "childRunning" attribute of the
	HomeWorkCheckApp object, indicating whether the desired program is
	running.

	* flo_check_homework/main.py: new "AllowExitBeforeChild" config file
	parameter that prevents, if set to 1, from exiting as long as the
	desired program is running.

	* flo_check_homework/main.py: make sure the two kinds of formulas don't
	enable the MainWindow.launchDesiredProgramAct QAction if the desired
	program is already running.

	* README.rst: document AllowExitBeforeChild.

2014-04-11  Florent Rougon  <f.rougon@free.fr>

	Better button labels

	* flo_check_homework/main.py (MainWindow.removeSuperMagicToken): use
	Remove/Cancel button labels instead of Yes/No in the confirmation
	dialog.

2014-04-11  Florent Rougon  <f.rougon@free.fr>

	[i18n] Enable the translations built in Qt

	* flo_check_homework/main.py: this enables for instance the translation
	of Yes/No standard buttons.

2014-04-10  Florent Rougon  <f.rougon@free.fr>

	Grant a super magic token after successful work

2014-04-10  Florent Rougon  <f.rougon@free.fr>

	Code refactoring

	* flo_check_homework/main.py (MainWindow.superMagicFormula): move part
	of this method to a new method: grantSuperMagicToken().

	* flo_check_homework/main.py: reorder the magic-related methods of
	MainWindow for better clarity.

2014-04-03  Florent Rougon  <f.rougon@free.fr>

	Miscellaneous small improvements

	* README.rst: add a concrete example to clarify command line usage, most
	notably.

	* flo_check_homework/main.py: minor bugfix when processing an OSError
	exception: the "filename" attribute may be None.

	* MANIFEST.in: make sure the flo_check_homework/images/unused directory
	is not included in release tarballs.

	* flo-check-homework.fr.ts: update the French translation.

2014-04-02  Florent Rougon  <f.rougon@free.fr>

	More icons in the toolbar and some dialogs

	* flo_check_homework/main.py: assign an icon to the following features:
	launch the desired program, remove the super magic token, test.

	* flo_check_homework/main.py: add a button for the "remove super magic
	token" feature to the magic toolbar.

	* flo_check_homework/main.py: use a custom, suggestive icon for the
	dialog boxes indicating that the pupil should work a bit more.

2014-04-01  Florent Rougon  <f.rougon@free.fr>

	Customizable size for toolbar icons

	* flo_check_homework/main.py: the size of toolbar icons can now be
	customized with the ToolbarIconSize parameter of the config file.

	* flo_check_homework/main.py: the default size is 64, which is much
	bigger than the previous implicit (from Qt theme or defaults) size.

2014-04-01  Florent Rougon  <f.rougon@free.fr>

	New "super magic word" feature

	* This feature is documented in reasonable detail in a specific section
	of README.rst, added in this commit. It uses a new image file,
	magic-wand-by-jhnri4+flo_58480760, that is derived from
	magic-wand-by-jhnri4_58480760. Users running flo-check-homework from the
	Git repository should update their images directory tree from a release
	tarball (with version >= 0.10.0).

	* flo_check_homework/main.py:
	    - new menu items to enter the super magic word and to remove the
	      super magic token obtained after a valid super magic word has been
	      uttered (the super magic word command is also available in the
	      toolbar);
	    - new 'ForceInteractive' config file parameter, defaulting to 0;
	    - when flo-check-homework starts, it checks whether the user owns a
	      valid super magic token; if this is the case, and unless the new
	      --interactive (-i) option has been given or ForceInteractive is
	      set to 1 in the config file, flo-check-homework will simply
	      execvp(2) the desired program after releasing the lock that has
	      been acquired in order to safely read the ProgramLauncher
	      parameter from the QSettings.
	    - if there is a valid super magic token at program startup and
	      either the --interactive (-i) option has been given or
	      ForceInteractive is non-zero in the config file, then the GUI
	      starts as usual but the user has super powers such as being able
	      to run the desired program without filling the questionnaire, or
	      to quit immediately (isn't it stunning?);
	    - new Magic menu to hold the three (up to now) magic-related
	      features.

	* flo_check_homework/README.lockfile: new file documenting the rationale
	for the lock file approach used in main.py. The contents is identical to
	a lengthy comment that was in main.py until this commit, making it more
	difficult than necessary to have a global view of the function hosting
	the comment.

	* MANIFEST.in: add flo_check_homework/README.lockfile.

2014-03-27  Florent Rougon  <f.rougon@free.fr>

	Code reorganization to prepare for the "super magic word" feature

	* flo_check_homework/main.py: move code related to the desired program
	(initialization, starting, checking the exit status) from the MainWindow
	class to the HomeWorkCheckApp class. This will be useful to the next
	commit, but requires other things to move, most notably the
	initialization of the QSettings, which is needed to read the
	ProgramLauncher setting, but should be done after the lock file has been
	acquired in order to avoid concurent access to the QSettings. This is
	why HomeWorkCheckApp now has an endInit() method that should only be
	called after the lock file has been acquired (and also after command
	line parsing because of the need to know the name of the desired
	program).

	* flo_check_homework/main.py: move command line parsing from a
	module-level function to HomeWorkCheckApp.processCommandLine().

	* flo_check_homework/main.py: move the calls to
	app.setOrganizationName(), app.setOrganizationDomain(),
	app.setApplicationName() and the application icon setup from
	module-level to HomeWorkCheckApp.__init__().

2014-03-26  Florent Rougon  <f.rougon@free.fr>

	Document the previous changes

	* README.rst: document the changes in the two previous commits.

	* flo-check-homework-decorate-games: remove useless trailing commas.

2014-03-27  Florent Rougon  <f.rougon@free.fr>

	flo-check-homework-decorate-games: new --no-exec-check option

	* flo-check-homework-decorate-games: new option (--no-exec-check or -X)
	to skip the executable check in generated wrapper scripts. This can be
	useful in setups where the user running the wrapper script normally
	doesn't have the permissions to execute the desired program, but gains
	them through the optional program launcher (cf. previous commit).

2014-03-26  Florent Rougon  <f.rougon@free.fr>

	Support running the desired program with a launcher

	* flo_check_homework/main.py: support a new setting called
	ProgramLauncher in the configuration file which, if non-empty, specifies
	a launcher program. For instance, if ProgramLauncher=/path/to/foo, then
	instead of running 'desired-prog arg1 ... argn', flo-check-homework will
	run '/path/to/foo desired-prog arg1 ... argn'. If ProgramLauncher is
	empty, then no launcher is used, as was the case before this commit.

2014-03-25  Florent Rougon  <f.rougon@free.fr>

	Add a few games to flo-check-homework-decorate-games.xml

2014-01-19  Florent Rougon  <f.rougon@free.fr>

	Move a misplaced comment in .gitattributes

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Release 0.9.12.post1

	* MANIFEST.in: don't ship any .gitattributes file in the source
	distribution.

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Release 0.9.12

	* flo_check_homework/__init__.py: update the version number.

	* README.rst: fix typos and update the version number.

	* README.i18n: mention the requirement of a recent or patched pylupdate4
	for generating or updating the .ts files.

	* setup.py: minor improvement.

	* flo-check-homework.fr.ts: update translation.

	* Update copyright years in the recently-modified Python files.

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Introduce end-of-line normalization for text files in the repository

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Improve game "decoration"

	* flo-check-homework-decorate-games: read the input in a new XML-based
	format instead of the old format with TAB separators.

	* flo-check-homework-decorate-games: use argparse for options
	processing.

	* flo-check-homework-decorate-games: make the locales used in launcher
	scripts for running flo-check-homework and for starting the games
	configurable through options --fch-locale and --prog-locale, which
	respectively default to fr_FR.UTF-8 and en_US.UTF-8.

	* flo-check-homework-decorate-games: new options --real-dir and
	--wrapper-dir, which respectively default to /usr/games and
	/usr/local/games.

	* fch-convert-old-data-file-to-xml: new script to ease transition from
	the old "datafile" format with TAB separators to the new XML-based
	format.

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Formatting fixes

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Fortify the magic word

	* flo_check_homework/main.py (MainWindow.magicFormula): in order to make
	"replay attacks" against the magic formula harder, implement the
	following measures:
	  - the magic word is now a function of 3 variables instead of 2 (use
	    the source, Luke!);
	  - after 3 failed attempts, the magic wand stops working;
	  - ditto after the first successful attempt, since it is not needed
	    anymore.

2014-01-13  Florent Rougon  <f.rougon@free.fr>

	Improve version metadata

	* flo_check_homework/__init__.py: new VersionInfo class providing
	something similar to what is returned by sys.version_info.

	* flo_check_homework/__init__.py: new module-level variables
	'version_info' and '__version__'. flo_check_homework.version_info is a
	VersionInfo instance and flo_check_homework.__version__ a string
	representation of this object, giving the expected version "number" (a
	string such as "0.9.11b1").

	* flo_check_homework/main.py: use the new __version__ attribute.

	* setup.py: use the new __version__ attribute and change the download
	url to reflect the new directory layout for release tarballs (one
	directory per version, with eventual sub-releases such as 0.9.11b1 being
	grouped with the corresponding release [0.9.11]).

2013-08-30  Florent Rougon  <f.rougon@free.fr>

	Minor changes to Makefile and README.rst

	* Makefile: use variables for lrelease-qt4 and pylupdate4 to allow easy
	overriding of the program names.

	* README.rst: new section about the Git repository.

2013-08-29  Florent Rougon  <f.rougon@free.fr>

	Reference the .bz2 instead of .gz file for "download_url" in setup.py

	Release 0.9.11

2013-08-29  Florent Rougon  <f.rougon@free.fr>

	Working i18n with French translation

	* The default language (under the "C" locale) is English. If the locale
	is properly set up, it is used to determine the interface language.

	* Currently, the only available translation is in French. There is also
	French-specific code (that depends on French grammar) in
	exercise_generator.py that is only available when running
	flo-check-homework under a French locale.

2013-08-25  Florent Rougon  <f.rougon@free.fr>

	Rewrite all translatable strings in English

	* This is the first part of proper i18n.

2013-08-22  Florent Rougon  <f.rougon@free.fr>

	* Release 0.9.10.

	* setup.cfg: remove the "prefix=/usr/local" setting that breaks
	installations with pip in a virtualenv (at least).

	* setup.cfg: don't build zip source distributions anymore (to save
	space...).

	* setup.py: simplify as much as possible, which implies that the
	source distribution now ships README.rst instead of README.xhtml.

2013-06-23  Florent Rougon  <f.rougon@free.fr>

	* Release 0.9.9.

	* flo_check_homework/conjugations/fr_FR.py: fix a spelling error
	in a conjugation of "venir".

2013-04-01  Florent Rougon  <f.rougon@free.fr>

	* Release 0.9.8.

	* flo_check_homework/main.py: fix wrong value of score_threshold
	due to a mistake in the previous change.

2013-03-25  Florent Rougon  <f.rougon@free.fr>

	* Release 0.9.7.

	* flo_check_homework/main.py: adjust score_threshold to use the
	same value that triggers the transition between images from
	20-not_good_enough to 30-happy in order to avoid confusion
	(getting an image from 20-not_good_enough while still being able
	to run the desired program is certainly confusing).
	* flo_check_homework/main.py: use float("-inf") as the lowest
	threshold in reward_images, although it should not change anything
	for now, as the score cannot be negative with the current defaults
	set in the various question generators.

2013-03-14  Florent Rougon  <f.rougon@free.fr>

	* Initial release (0.9.6).

