... every time I want to prepare a meal?
You can export your favorite recipes to HTML and print them out with your favorite browser, if you want to.
However you may find it more easy to use AnyMeal instead of a shelf full of cookbooks, if you want to find the recipes you can do with the ingredients you have.
... with one hundred thousand recipes?
You may think that you don't need so many recipes as you may only be able to use about forty thousand in a lifetime.
Compare it to your phone-book. Of course you'll never need all the phone numbers it contains. But for most entries you cannot rule out that one day you may need that particular one.
The more recipes you have, the less likely you'll fail to find the appropriate recipe for a given occasion.
If you've an old version of automake (f.e. automake-1.4), you'll get an error-message like this, because flex is called without proper parametrisation:
mealMasterCompiler.o(.text+0x521):/home/engjw/Documents/AnyMeal/anymeal/mealMasterCompiler.cpp:97: undefined reference to `mealMasterlex()'
You'll have to call flex manually for now. When you're in the main source-directory of AnyMeal, do:
cd anymeal
flex -PmealMaster -omealMaster.cc mealMaster.ll
cd ..
This should create the lexer without any problem. Call make again, to finish compilation of the program.
I found, that you can downgrade the version-numbers to a certain extend without corrupting the user-interface files. F.e. changing the version-numbers to 3.2 works under Mandrake 10.0:
cd anymeal
for i in *.ui; do sed 1s/3\.3/3.2/ $i > $i.tmp; mv $i.tmp $i; done
cd ..
This is a bit awkward, but you can postpone upgrading your system.
This should only be of concern to you, if you want to modify the .ui-files. Otherwise the built sources will be included in the software-package already.
If you experience this problem, let me know the name of the GNU/Linux-distribution, which you are using. On most common distributions, this shouldn't happen any more! However you can solve the problem without having to contacting me:
Find out the common base-directory of the docbook-scripts. If the package-name of the docbook-scripts f.e. was docbook-xsl-stylesheets-1.64.1-71.noarch.rpm, you'll find the location of the docbook-scripts by executing:
rpm -ql docbook-xsl-stylesheets | grep -w "docbook\.xsl"
This will f.e. give the following listing:
/usr/share/xml/docbook/stylesheet/nwalsh/1.64.1/fo/docbook.xsl
/usr/share/xml/docbook/stylesheet/nwalsh/1.64.1/html/docbook.xsl
/usr/share/xml/docbook/stylesheet/nwalsh/1.64.1/manpages/docbook.xsl
/usr/share/xml/docbook/stylesheet/nwalsh/1.64.1/xhtml/docbook.xsl
In this case the base-directory would be: /usr/share/xml/docbook/stylesheet/nwalsh/1.64.1.
Now you should be able to configure AnyMeal by specifying the base-directory. In this example it would work like this:
./configure --with-docbook-dir=/usr/share/xml/docbook/stylesheet/nwalsh/1.64.1
If you want to setup a MySQL-server yourself, you need to setup the database-files, set the password of the database-administrator and launch the database-server.
Note that the following steps may vary with the distribution of GNU/Linux which you are using. On some distributions you may not have to do anything at all ;)
su # Log in as super-user.
mysql_install_db # Setup database-files.
chown -R mysql.mysql /var/lib/mysql/mysql # Change owner of the files.
/etc/init.d/mysql start # Start mysql-daemon
insserv mysql # Add mysql-daemon to the boot-up scripts.
mysqladmin password mypassword # Sets super-user password of database
exit # Log out from super-user mode.
After this you should be able to use the database with AnyMeal.
You can change the password of the database administrator by doing
su # Log in as super-user.
mysqladmin -p password mynewpassword # Change password.
exit # Terminate super-user session.
Most mealmaster-recipes have been created under DOS (with the old famous Mealmaster-software). You have most probably selected the wrong encoding, when importing the files.
AnyMeal can read Mealmaster files encoded in UTF-8 as well as in ISO-8859-1. You need to specify the proper encoding in the import dialog.
Note, that erroneous recipes are exported in UTF-8. AnyMeal only supports exporting recipes in UTF-8 at the moment.
In case you are not sure about the encoding of your file, you can use the command-line tool file to detect it:
file <filename>
UTF-8 is the recommended encoding on Unix/Linux platforms
AnyMeal is UTF-8-aware software. If you are using MySQL-4.1 or later and if your local character encoding is set to UTF-8, AnyMeal should display the recipes properly.
AnyMeal should be able to display characters of any language supported by KDE/X11/Qt.
Also note, that Qt is able to render AnyMeal in reverse mode:
./anymeal --reverse
Execute the locale-command, to get information about the country-, language- and encoding-settings of your GNU/Linux-system:
locale
See http://xml.apache.org/fop/running.html#memory on how to fix this.
You can f.e. add the option
FOP_OPTS=-Xmx128m
to the file $HOME/.foprc to allow java to use more memory.
At the moment fop's memory consumption forbids compiling cookbooks with more than a couple of hundred recipes even on recent computers.
If you are using bash as command-line-interpreter, you can unzip a bunch of ZIP-archives by doing:
for i in *.zip; do unzip "$i"; done
You can already print out recipes. There are two possibilities.
The first solution is the easy one:
Unfortunately the second solution is not very user-friendly. However this solution will give you cookbook with page references in the table of contents.
There are odd cases, where a message box asking for yes or no always returns back no to the application.
There is a bug in the Qt/KDE integration patches to Qt in SuSE 9.3 which is causing third-party applications to fail to work properly.
Its easy to duplicate and show and is a problem in the patch to redirect Qt QMessageBox static methods to KDE message boxes.
For more information see here or here.
You have to execute anymeal from the command line after setting an environment variable provided by SuSE to fix this.
export QT_NO_KDE_INTEGRATION=1
anymeal
When doing FO-output, you may encounter the following error message:
Fehler: Error applying XSL-script "/usr/opt/kde3/share/apps/anymeal/scripts/docbookToFo.xsl":
XSLT Error: The variable 'id' is not defined.
Source tree node: article.
(file:///usr/share/xml/docbook/stylesheet/nwalsh/current/fo/component.xsl,
line 605, column 28.)
Simply edit the block starting at line 605 of the file component.xsl and replace
<fo:block id="{$id}">
<xsl:call-template name="article.titlepage"/>
</fo:block>
by
<!-- <fo:block id="{$id}">
<xsl:call-template name="article.titlepage"/>
</fo:block> -->
This problem has been observed in connection with kat desktop search. kat causes kded to crash during logout so that the data of kwallet is not saved any more.
AnyMeal's internal XML-format is only to be used as intermediate language. In contrast to a regular file-format there is going to be no support for reading data of an older version of the XML-format!
C++-streams allow writing to arbitrary sinks (files, memory, stdout, ...). Also the number-output of printf is language dependent! C++-streams are not suffering from this problem.
Sure. However it increases the development speed considerably. A user will tolerate an application, which is a bit slower. It is less likely, that a user will be happy to wait for a feature a couple of months more.
Besides: AnyMeal is making use of flex and self-implemented finite-state-machines for fast parsing.
It is also using the advanced XML-libraries of the Apache software-foundation. If you do a comparison, you'll note, that AnyMeal still is faster than most other applications.
I'm sorry if this web-page didn't help you and I hope you didn't get frustrated.
Please file a support-request or bug-report (as appropriate) on the tracker's-page.
I'll try to answer your request as quickly as possible.