The beta-version will be the result of extensive testing and necessary feature extensions.
Static structure of AnyMeal
Collaboration for importing Mealmaster recipes
ChainedCompiler object. The resulting SQL script (for inserting the recipe into the database) is passed to the Database object for execution.The Mealmaster parser is implemented using flex to achieve high-speed. flex is a state-of-the-art finite-state-machine lexer.
The entity relation diagram explains gives a clue of how the database is (or rather will be) organized:
Entity relation diagram for database tables
While the data flow may be a bit complicated at first sight, the corresponding application is easy to implement, because most of the required functionality already is provided by the libraries used in this project:
Dataflow showing conversion steps for recipes
"Datenbanken und XML. Konzepte, Anwendungen, Systeme" 2002 (Xpert.press)
von Wassilios Kazakos, Andreas Schmidt, Peter Tomczyk.
http://www.datenbanken-und-xml.de/
F.e. for displaying the recipes are converted first to docbook and then to HTML using an XSL-script and finally displayed with a web-browser-plugin.
It is possible to invoke each compilation-step from the command-line. The following command would convert the first recipe in the database to HTML and display it with lynx:
( echo "<?xml version='1.0'?><query><selection><single>1</single></selection></query>" | \
anymeal -q | anymeal --xsu -d kochbuch -u mysqlUser -p mysqlPassword |
anymeal -r | anymeal -b | anymeal -t ) 2> /dev/null | lynx -stdin
The database contains version information. Beginning from version 1.0 there will be a concept how the database gets upgraded, if a new version of the software requires this.
Use QDockWindow instead of QMainWindow or QWindow
Error: rice% -> ingredient "rice and water" gets counted several times!
User-manual and context-help.
Preserve intendation of recipes. Maybe use fixed-with font and LinearLayout for lines beginning with ':' in Mealmaster file.
Problem with yytext_ptr: Automake doesn't pass options to flex under Mandrake.
Fix sorting of ingredient-amounts in recipe-editor.
Improve user-friendlieness of keyboard-control.
Add throw-clauses wherever possible
Filter input of search-dialog and wizards thoroughly (f.e. no '\'' in database-name, filtering of amount-input).
language-attribute to recipe and make units and all other text in docbook-script language dependent. Add a sample-recipe for each language.
Improve graphics
ID of recipe changes after editing. The dialogs and the selection have to be updated!
Fulltext search
Make input-data of search-dialog and name of last database visited persistent.
Introduce forward-/backward-button for navigating through huge amounts of recipes.