pax_global_header 0000666 0000000 0000000 00000000064 12303443724 0014514 g ustar 00root root 0000000 0000000 52 comment=a634e11bd98c32443e1ea99a9af3eb776c6dba38
gourmet-0.17.0/ 0000775 0000000 0000000 00000000000 12303443724 0013263 5 ustar 00root root 0000000 0000000 gourmet-0.17.0/.gitignore 0000664 0000000 0000000 00000000210 12303443724 0015244 0 ustar 00root root 0000000 0000000 *.pyc
*.pyo
*.gourmet-plugin
*.desktop
*~
*#*
.project
.pydevproject
.settings/
debian
dist/
build
build-stamp
configure-stamp
MANIFEST
gourmet-0.17.0/.project 0000664 0000000 0000000 00000000545 12303443724 0014736 0 ustar 00root root 0000000 0000000
grm
org.python.pydev.PyDevBuilder
org.python.pydev.pythonNature
gourmet-0.17.0/CHANGES 0000664 0000000 0000000 00000066322 12303443724 0014267 0 ustar 00root root 0000000 0000000 ==== Version 0.13.0 changes since 0.12.2 ====
* Addition of hash fields to help with identification of duplicate
recipes.
* Addition of last_modified field to recipe database.
* Addition of link field to database - now recipes imported from the
web will automatically have a link pointing back to the original page.
==== Version 0.12.2 changes since 0.12.1 ====
* Fix Mealmaster importing bug
* Fix bug (?) which could cause ingredient search to fail in strange
cases (where a DB had ingredients with key=None)
==== Version 0.12.1 changes since 0.12.0-pre1 ====
* Fix buggy trash behavior.
* Store version in database for ease of upgrades.
* Implement fix for broken databases from pre-0.11.4 installs
* Fix-up paragraphing in printing.
==== Version 0.12.0-pre1 changes since 0.11.5 ====
* Fix sort order
* Don't drop default entries for Category/Cuisine once user has entered one.
* Change version number to reflect intend to create a stable version
once we're sure this version doesn't have any show-stoppers.
==== Version 0.11.5 changes since 0.11.4 ====
* Add more PDF Export modes for printing index cards, multiple
columns, etc. Also add nice print page-layout widget.
* Tweak spacing in recipe card to avoid ugly disappearance of "Edit" buttons
* Recognize units in all kinds of capitalized or uncapitalized forms.
* Fix up bug in time-scanning code that led to making a link like
3 minutes instead of 3 minutes
* Add i18n for Swedish.
* Apply patch to fix text-flow in recipe card (Shane Hathaway)
* Apply localization patch to simplify translations. (Jens Persson)
==== Version 0.11.4 changes since 0.11.3 ====
* Make deleting an ingredient ungrey "Save" button
* Fix various bits of badness with Undo
* Fix gravity of cursor for text markup in instructions and notes.
* Fix allrecipes.com import
* Allow recognition of times written as 01:30 for 1 1/2 hours
* Improve testing suites (and therefore improve thoroughness of
bug-checking before release)
* Fixed generic web import.
* PDF Import
* Printing support for windows
* Fix ugly window placement issues on windows and some other places.
* Improve recipezaar import.
==== Version 0.11.3 changes since 0.11.2 ====
* i18n fixes from Simon Darlington
* Fix bug that reversed ingredient order when adding ingredients to a group.
* Allow fraction-use to be turned off, and make it default to off for
German (other locales can default it to off via defaults_foo.py)
* Fix bug that caused unicode error on upgrade from metakit.
* Fix some other bugginess in handling old upgrades.
* Rearrange main index window to work better on small screens.
* Update to DTD thanks to Gianpaolo Racca.
==== Version 0.11.2 changes since 0.11.1 ====
* Add new icons from Yula Zubritsky
* Add nifty timer.
* Parse times written out as words.
==== Version 0.11.1 changes since 0.11.0 ====
* Fix bug that broke changing the shopping category of an ingredient
from within the ingredient editing view.
* Fix traceback when filling ingredient-editor from a unitless
ingredient.
* Fix problem with recipe-links not working when they contained
unicode (such as the unicode for 1/2, 1/4, etc.)
* Make page-chooser in edit-view highlight the first page when we open
a new recipe card. Otherwise, the function of the widget is unclear.
==== Version 0.11.0 changes since 0.10.1 ====
* Fix ingredient editing so that changes are no longer automatically
committed to the DB. Now the ingredient tab of the recipe edit window
works like everything else, with a standard "save" model.
* While we're at it, we prevent crashes from happening.
* Make Undo work more consistently throughout recipe card.
* Make database upgrade happen at runtime rather than install-time --
this allows us to play nicely with RPM and DEB packages.
==== Version 0.10.2 changes since 0.10.1 ====
* Fix bug causing export from recipe card not to multiply ingredients
properly.
* Fix various problems with ingredient editing (display of updates,
undo/redo)
* Fix dialog responses so hitting return and escape works more consistently.
* Fix bug in addition of ingredients in shopping list.
==== Version 0.10.1 changes since 0.10.0 ====
* Fix bug causing recipe cards to be destroyed when closed.
* Fix bug causing "None" to show up in shopping list when there is no
unit.
* Fix popup menus throughout.
==== Version 0.10.0 changes cince 0.9.0.3 ====
* Switch database backend to SQLite. The backend is still abstract, so
if in the future someone wants to switch back to metakit or to
something else, it should be simple.
* Add new automated backup script into setup.py. This is less than
ideal, but there's no real way to import smoothly from the old system
to the new.
* Make editing of recipe card a separate dialog from viewing recipe
card. This allows the recipe card itself to lose the toolbar and look
much cleaner.
* Make text in recipe card reflow properly when resizing.
* Improve import speed drastically by not inserting auto-generated
keys into key table.
* Only add keys to ingkey table (used for automatic key-guessing) when
the user has modified something. This means we actually learn from the
user rather than generating our own random noise.
* Add support for typing "or" in a search instead of using the or bar (|).
* Import sorting of USDA DB searches (in the nutritional info druid)
to bring you better results faster.
* Many, many more bugfixes along the way.
==== Version 0.9.0.3 changes since 0.9.0.1 ====
* Fix email export
* Improve recipe card interface.
==== Version 0.9.0.2 changes since 0.9.0.1 ====
* Support python2.3
==== Version 0.9.0.1 changes since 0.9.0 ====
* Fixed shopping list handling of ranges.
* Fixed up MANIFEST to include all necessary files in our release.
==== Version 0.9.0 Changes since 0.8.x ====
* Implemented nutritional information database.
* Fixed a number of bugs causing crashing with the pageable-list view / metakit
* Cleaned up SQL code to an almost usable (but not quite usable) state.
* Generic HTML import as fallback when we have no filter for a given page
* Generic text import.
==== Version 0.8.6.5 Changes since 0.8.6.4 ====
* Fixed bug in recipe card editing that caused changes made in card
view not to save properly.
* Fix epicurious import.
* Fix trash / deletion.
* Fix Forward button (desensitize when there are no more pages).
* Properly register newly added ingredients in display tab of recipe card.
==== Version 0.8.6.4 Changes since 0.8.6.3 ====
* Improved encoding dialog.
* Fixed handling of webpages with screwy encoding.
==== Version 0.8.6.3 Changes since 0.8.6.2 ====
* Added fast add-ingredient box
* Fixed some broken stuff
* Changed code underlying pageable model so it is much more stable
(got rid of nasty error messages and many of the segfaults)
* Updated key editor to work with updates to backend/pageable model.
==== Version 0.8.6.2 Changes since 0.8.6.1 ====
* Display recipe in pages (first 25, next 25, so on) to speed up
Gourmet. This makes just about everything "feel" faster -- startup,
search, etc.
* Continue optimization of database.
* Properly handle multiple categories.
==== Version 0.8.6.1 Changes since 0.8.6.0 ====
* Database normalized; hopefully this will mean performance improvements
* Oodles of magic added to aid normalization of DB
* Key lookup improved / interface on recipe card should be less sluggish.
* ComboBoxEntry's changed so that one TAB moves focus out of them -- this
should improve e.g. recipe entry though it does break consistency with
other GTK apps.
==== Version 0.8.6.0 Changes since 0.8.5.x ====
* Changed database format for greater efficiency/speed.
* Times (cook/prep) are now stored internally as numbers of seconds,
which means sorting just works
* Ratings are now done one a star-system, which means sorting just
works.
* since ratings are done on a star system, we've introduced a dialog
to let the user select how they'd like to translate textual ratings
into stars
==== Version 0.8.5.12 Changes since 0.8.5.11 ====
* Added quick ingredient editor interface.
* Improved encoding dialog.
* Fixed handling of webpages with screwy encoding.
* Added foodnetwork.com import (preliminary).
======= end
==== Version 0.8.5.11 Changes since 0.8.5.10 ====
* Fixed menus in shopping list so they work without GNOME libraries.
* Fixed unit conversion (typo that resulted in e.g. "23 TBS flour"
showing up.
* Behave better when locales are behaving badly.
==== Version 0.8.5.10 Changes since 0.8.5.9 ====
* Improved/Fixed lag when adding ingredients with the ingredient
editor
==== Version 0.8.5.9 Changes since 0.8.5.8 ====
* Fixed nasty segfault when deleting unedited recipe
* Fixed problem with markup showing up in some dialogs.
==== Version 0.8.5.8 Changes since 0.8.5.7 ====
* Fixed bug in deletion of new recipe and improved interface for
deleting recipes that are already open
* Made search interface in select-recipe-as-ingredient dialog and
recipe-wastebasket dialog consistent with new main search interface
* Removed default serving size of 4 from new recipes.
* Fixed mnemonic-activation of preptime and cooktime entries in recipe
card view.
* Added shortcuts for deletion and printing.
* Added extra Control-O shortcut to open recipes, since it's pretty
intuitive for a user to hit Control-O
* Fixed search-as-you-type in ingredient view of recipe card so that
it properly finds group names as well as ingredients
* Got rid of some of the many gtk error messages spouted from time to
time.
* Fixed bug that made recipe trash disappear forever if you closed it
by closing the window
==== Version 0.8.5.7 Changes since 0.8.5.6 ====
* Improved automatic mnemonic conflict-resolution.
* Fixed hang in import from recipezaar website.
* Accept URLs without HTTP:// in webpage import.
* Cleaned up error messages for problems with webpage import.
==== Version 0.8.5.6 Changes since 0.8.5.5 ====
* Fixed bug in MM import that was causing instructions to be read as
ingredients
* Changed look/feel of search interface on index page
* Split out HTML import stuff into separate "plugin" files and set up
plugin interface for local user plugins.
* Added programmatic assignment of mnemonics to reduce mnemonic
conflicts w/o increasing translator burden :)
* Set minimum width of image column to 0 so that it doesn't take up
lots of space when there are no images
* Fixed bug in converter that caused conversion errors/inconsistency
with mass-to-volume conversions.
* Fixed unit conversion in shopping so that we don't display things
like 21 tbs. butter (even if all butter units we're combining were
originally in tbs.)
==== Version 0.8.5.5 Changes since 0.8.5.4 ====
* Changed search interface to make clearer.
==== Version 0.8.5.4 Changes since 0.8.5.3 ====
* Fixed some recently introduced bugs that broke
export
* Made updating search-by button automatically update search in
search-as-you-type mode.
* Fixed i18n bug that broke numbers.
==== Version 0.8.5.3 Changes since 0.8.5.2 ====
* Fixed bug in MealMaster import
* Import instructions from krecipes!
* Improved handling of recipe references.
==== Version 0.8.5.2 Changes since 0.8.5.1 ====
* Fixed RTF Export
* Added support for exporting images in RTF export
* Added recognition and production of unicode fraction characters
==== Version 0.8.5.1 Changes since 0.8.5.0 ====
* Fixed compatability issue with pygtk 2.4
* Fixed problem in mastercook import for some
malformed ingredient-lists.
* Correctly included zip_importer in MANIFEST
==== Version 0.8.5.0 Changes since 0.8.4.4 ====
* New web-page-importing architecture with support for three
basic html templates as well as support for importing already
supported formats directly from URLs.
* Added support for rezkonv import (German mealmaster clone)
* Fixed line-wrapping code in mealmaster/rezkonv import
* Improved UI of shopping list -- added explicit buttons for
moving items between shopping and pantry list.
* Added support for importing gzipped, zipped, and tarred files
from "Import file" or from "Import Webpage"
* Fixed defaults focus on dialogs (e.g. dialogs with Entry's put
default focus on the Entry now).
* Made mealmaster import do a better job when handling malformed
ingredient lists
* Added FAQ-style help from menus
* Fixed bug in Gourmet XML import
==== Version 0.8.4.4 Changes since 0.8.4.3 ====
* Made new recipes appear immediately again in index view.
* Fixed undo for combobox entries is recipe card view.
* Made changes in recipe index instantly reflected in reccard.
* Fixed alignment of widgets in recipe card "Details" view.
==== Version 0.8.4.3 Changes since 0.8.4.2 ====
* Fixed typo in gglobals in tarball
* Fixed bug that broke multiplication in shopping list.
==== Version 0.8.4.2 Changes since 0.8.4.1 ====
* Fixed bug that prevented adding nested recipes to
shopping lists.
* Fixed export bug that failed on unusual servings values.
==== Version 0.8.4.1 Changes since 0.8.4.0 ====
* Fixed bug that broke on fresh install.
* Removed extraneous "print" statements left from testing.
==== Version 0.8.4.0 Changes since 0.8.3.5 ====
* Fixed export from recipe card to properly handle multiplying
ingredients and following user preferences for changing unit.
* Consolidated preferences dialogs in one dialog with multiple tabs.
* Allow user to save choices about optional ingredients (and to forget
saved settings).
* Added preference to allow user to always include (or always ignore)
ingredients.
* Change order on exports so ingredients precede instructions.
* Properly handle ranges of ingredients throughout Gourmet!
* Moved "Preferences" to "Edit" menu where they are in most applications.
* Fixed window-position-saving so we don't remember size of maximized
position as if they were the window-size coordinates.
==== Version 0.8.3.5 Changes since 0.8.3.4 ====
* Fixed typo in rtfexporter.
* Fixed linewrapping of splash screen for i18n'd versions of gourmet w/
longer lines.
* Changed to building RPMs with specfiles based on those provided by
Michael Peters (who is packaging gourmet for fedora)
* Included new Dutch defaults translations.
==== Version 0.8.3.4 Changes from 0.8.3.3
* Made mealmaster import slightly more flexible in recognition of groups.
* Fixed bug in mastercook import of recipes with optional ingredients.
* Fixed bug that broke on opening a recipe card.
* Improved handling of international numbers
* Fix mealmaster export to resist i18n of standardized field names.
* Fixed mealmaster import to properly recognize numbers with ,s as
decimal points (as in German, Spanish, etc.)
==== Version 0.8.3.3 Changes from 0.8.3.2
* Fixed bug that broke renaming of ingredient groups.
* Fixed windows directory nonsense
* Use psyco if available to speed things up.
* Twiddled with sqlite to no end (still needs fix).
==== Version 0.8.3.2 Changes from 0.8.3.1
* Fixed bug that failed on fresh install.
==== Version 0.8.3.1 Changes from 0.8.3
* Fixed nasty nasty bug in DB database for users coming from <0.8.3.
* Fixed bug preventing images from saving.
* Fixed bug preventing ingredient groups from working properly.
==== Version 0.8.3 Changes from 0.8.2
* Added windows printing support using wx
* Fixed bug in which cooking time wasn't exported in Gourmet format
* Fixed bug which made gourmet not recognize it's own .grmt extension
* Fixed a bug preventing HTML E-mail from working.
==== Version 0.8.2.1 Changes from 0.8.2
* Fixed bug preventing saving of shopping list.
* Fixed bug preventing proper saving of ingredient orders.
==== Version 0.8.2 Changes from 0.8.1.2
* Added krecipe import
* Added image import/export
* Changed Gourmet XML file format to be vastly simplified and to support images.
* Fixed bug that made filetype choices disappear on multiple exports
==== Version 0.8.1.2 Changes from 0.8.1.1
* Fixed alignment of "Add to shopping list" button (patch from Mikey Cooper)
* Applied patch from calvin@users.sourceforge.net to make mealmaster import more flexible.
* Fixed "print" on Windows to show dialog explaining we don't have printing on Windows.
* Fixed encoding-detecting code on imports: we query the user when two encodings might work.
* Fixed bug that made filetype options disappear from menu on multiple imports/exports.
==== Version 0.8.1.1 Changes from 0.8.1
* Fix handling of "^T" characters in mealmaster/mastercook import.
* Fix misaligned icon.
* Get rid of "save" calls in metakit, opting for autosave on a timer instead.
==== Version 0.8.1 Changes from 0.8.0 ===
* Fixed Windows Application Directory
* Fixed import of "servings" in Mealmaster import
* Fixed line-unwrapping code in Mealmaster import
* Fixed typo prevening mealmaster export from working in 0.8.0
* Fixed a number of problems where &s screwed up
pango -- including layout and printing.
* Fixed search in recipe Wastebasket view.
==== Version 0.8.0 Changes from 0.7.1 ===
Miscellaneous
* Undo introduced across the board.
* Recipe's thrown in trash rather than deleted by default (allowing for
undoing and rescue of trashed recipes).
* Always ask for print command when gnomeprint isn't functional (don't assume
lpr, but do give it as the default).
Recipe Card
* New tabbed interface for recipe card
* Support for formatting text in instructions and notes
* Support for pasting ingredients
* Ask if you want to convert when you change a unit in the ingredient list view.
* Added new "Cooking Time" attribute.
Backends
* Experimental support for sqlite and mysql backends
* Automatic committing of DB (user no longer has to "save DB" to save
changes).
Import/Export
* Improved mealmaster(tm) export
* Substantially improved speed of mealmaster(tm) import
* Multiple imports allowed at a time by selecting multiple imports
(and elegantly displayed in new dialog).
* Added support for multiple columns of ingredients in mealmaster.
==== Version 0.7.1 Changes from 0.7.0 ====
* RPM spec file fixed so dependencies should be properly worked out now.
* Debian files included in source tarball.
* Unit Converter improvements with help from Richard Ferguson (more UI improvements soon to come!)
* Printing is now properly reported as non-existent across the board on Windows
* Non-GNOME printing is now improved -- if LPR doesn't exist, user is prompted for another print command.
* Fixed bug in recipe-card making it believe it is modified when a recipe has no servings information.
* Fixed bug in shopping list that prevented category info entered in "Add Item To Shopping List" dialog not
get saved.
* Moved around some files: printing has now been split into lprprinter, winprinter and gnomeprinter;
defaults_en_US has been eliminated (defaults_en is now the norm).
==== Version 0.7.0 Changes from 0.6.7 ====
* Gourmet now builds on Windows! Fixed various path-related problems
to make this work cleanly.
* Fixed bug in saveas dialog for shopping lists.
* Fixed bug that meant recipes called as in ingredients broke when they
included optional ingredients.
* Added unit magic to change to the most readable unit when changing
number of servings etc.
* Added preference dialog to Recipe Card view to allow selective removal
of UI elements the user doesn't want.
==== Version 0.6.7 Changes from 0.6.6 ====
* Added script to properly handle file encodings on Mealmaster import.
* Fixed check for import/exports when quitting
* Added work around for strange pygtk 2.5 bug that was slowing down
mealmaster imports.
==== Version 0.6.6 Changes from 0.6.5 ====
* Added support for printing multiple recipes and interface in main index view
for printing selected recipes.
* Added e-mail support for e-mailing recipe from card or from index view.
==== Version 0.6.4 Changes from 0.6.3 ====
* Improvements in Mealmaster(tm) import
* Improvements in threading code.
==== Version 0.6.3 Changes from 0.6.2 ====
* Made dialog's wrap text rather than getting longer.
* Made message dialogs have pretty icons, using gtk.MessageDialog
* Made menus only include one "Import" and "Export" option rather than having submenus.
* Added filetype selection to fileSelector dialogs
* Added gnomeprint interface to printing for printing shopping lists.
* Added gnomeprint interface for printing recipes (which allows you to print your
multiplications/divisions of recipes)
* Fixed threading code. Now imports and exports are pause-able and cancellable on quit.
* You can now type to select the searchBy menu.
* Changed searchbar in index view to allow proper tabbing between widgets.
* Added preview to image selection dialog.
==== Version 0.6.2 Changes from 0.6.1 ====
* Fixed up setup.py to not require gconf stuff (which
we weren't using anyway)
* Setup gettext before and took a first crack at Spanish translations
* Fixed a few minor bugs, including one in Converter interface and
one in quit confirmation.
* Added debian package.
==== Version 0.6.1 Changes from 0.6.0 ====
* Made sure HTML validates (fixed a number of small HTML bugs)
* Added
tag to specify correct encoding on HTML, following advice from
Fábio Mendes
* Fixed dialog_extras.py to properly give an "Okay" button
when creating a file or folder and an "Open" button when
selecting (before we always gave the "Open" button.
* We now make sure we create our .gourmet directory if it doesn't exist.
* We now include recipe.dtd in the distribution.
==== Version 0.6.0 Changes from 0.5.0 ====
* Added RTF Export
* Added mnemonics for entries as per GNOME HIG
* Added KeyEditor to allow editing ingredient keys en masse
* Fixed key guessing routine so it is less likely to put
together a wildly inaccurate guess
* Fixed Add-to-shopping-list dialog to use new ComboBoxEntry
widgets and to share code with Ingredient Editor.
* Added UnitConverter interface for user's convenience.
* Fixed flow of widgets (tabbing)
==== Version 0.5.3 Changes from 0.5.1 ====
* Added Key Manager interface to facilitate fixing keys en masse
and pave road for possibly adding a nutritional information
database.
* Simplified main App interface by removing import/export buttons
(these still
==== Version 0.5.2 Changes from 0.5.1 ====
* Added support for re-ordering shopping lists.
* Added a button to recipe cards for importing text ingredient lists.
==GourmetRecipeManager.py==
revision 1.68
date: 2004/09/12 23:59:00; author: tom; state: Exp; lines: +18 -6
Fixed ABOUT information & added new logo.
----------------------------
revision 1.67
date: 2004/09/12 20:36:37; author: tom; state: Exp; lines: +5 -1
Added new menu-items to list of items to be dimmed when no recipes are
selected.
----------------------------
==reccard.py==
revision 1.10
date: 2004/09/12 20:36:03; author: tom; state: Exp; lines: +24 -9
Added support for importing ingredients from plain text files.
==rmetakit.py==
revision 1.17
date: 2004/09/13 00:11:53; author: tom; state: Exp; lines: +26 -7
Added support for storing the order of shopping list ingredients and
categories.
==shopping.py==
revision 1.12
date: 2004/09/11 16:44:04; author: tom; state: Exp; lines: +69 -8
Created the mechanism for sorting our shopping list. Defaults to an
alphabetical sort, but will allow users to save custom orders.
==shopgui.py==
revision 1.5
date: 2004/09/12 23:59:42; author: tom; state: Exp; lines: +48 -4
Added code to commit order of shopping categories to
memory. (Currently, you can reorganize categories but not individual
items).
----------------------------
revision 1.4
date: 2004/09/11 16:44:57; author: tom; state: Exp; lines: +3 -12
Simplified list display, thanks to improved interface with shopping.py
==== Version 0.5.1 Changes from 0.5 ====
==setup.py==
Got rid of hard-coding of /usr/share/ and setup a MANIFEST file. Made
necessary changes in globals.py to make this work
==GourmetRecipeManager.py==
revision 1.66
date: 2004/08/20 01:16:44; author: tom; state: Exp; lines: +3 -4
Got rid of old hard-coded default XML file.
date: 2004/08/19 23:42:50; author: tom; state: Exp; lines: +45 -22
Some changes in threading code as well as superficial changes to
debugging code, etc.
==reccard.py==
revision 1.9
date: 2004/08/12 15:25:36; author: tom; state: Exp; lines: +1 -1
If an empty shopping category is entered, we don't set it to "None",
we simply ignore.
----------------------------
revision 1.8
date: 2004/08/12 15:24:12; author: tom; state: Exp; lines: +81 -37
Added functions to be called before and after modifying the tree to
avoid bizarre segfaults (pre_modify_tree and post_modify_tree).
==recindex.py==
revision 1.2
date: 2004/08/20 00:01:27; author: tom; state: Exp; lines: +39 -7
Added support for toggle-able use of regular expressions.
==rmetakit.py==
revision 1.16
date: 2004/08/20 00:04:43; author: tom; state: Exp; lines: +71 -22
Cleaned up system for generating new recipe IDs to avoid potential
confusion & problems when recipes are being added from multiple
points. Also made some changes to currently hard-coded location of
database file and default categories.
==rxml_to_metakit.py==
revision 1.8
date: 2004/08/20 00:07:47; author: tom; state: Exp; lines: +29 -15
Made sure we used proper escaping in more spots for writing XML. Also
created nicer code for dealing with recipe references as ingredients.
==shopping.py==
date: 2004/08/12 15:26:56; author: tom; state: Exp; lines: +16 -158
Moved defaults to another file. Added patch provided by Brett Smith
to fix a but when a shopping category is None.
==== Version 0.4 Changes ====
Set up "spatial" feel for application. More than one recipe card are now allowed. Editing
works nicely in the ingredient TreeView now.
GourmetRecipeManager.py
----------------------------
revision 1.51
date: 2004/06/14 13:15:08; author: tom; state: Exp; lines: +10 -2
Added support for multiple dnd types, making ingredient list accept
drags from Mozilla Firefox or from TreeView widgets (e.g. gedit).
----------------------------
revision 1.50
date: 2004/06/14 04:54:44; author: tom; state: Exp; lines: +291 -164
* View menus that update depending on what recipe cards are open.
* Behaving properly if users cancel dialogs
* Capitalize names of classes
* Create Revert-changes button for RecCard view
* Add Shopping Category to ingredient list view
* Set up editing in ingredient list view to auto-complete keys and shopping categories
* Set up popup menu for ingredient list view shopping category
* Fix bug that made you lose your image when applying other changes.
* Got rid of code for toggle buttons that toggled views. I've replaced
this with the new expander widgets.
----------------------------
revision 1.49
date: 2004/06/12 07:16:59; author: tom; state: Exp; lines: +176 -121
Redesigned code to create truly object oriented user interface. Glade
files have no been separated for ease of maintenance and to make it
easier to create multiple recipe card windows.
----------------------------
revision 1.48
date: 2004/06/12 04:14:02; author: tom; state: Exp; lines: +26 -5
laid basic groundwork for referring to recipe within ingredient list.
----------------------------
rmetakit.py
revision 1.13
date: 2004/06/14 04:58:24; author: tom; state: Exp; lines: +23 -18
* Neatened up code in various places.
* Fixed but in ingredient parser that made it break when ingredients didn't have amounts.
----------------------------
revision 1.3
date: 2004/06/14 05:01:07; author: tom; state: Exp; lines: +31 -15
* Added padding to labels
* Made FileSelector dialog return None on cancel
* Made cancelling return None in most/all places, fixing some
buggy dialogs that wouldn't die.
----------------------------
gourmet-0.17.0/CODING 0000664 0000000 0000000 00000005272 12303443724 0014157 0 ustar 00root root 0000000 0000000 Getting Started
===============
Make sure you have all the dependencies as listed in README.md installed.
Before you start coding, you should first build localized *.mo and
*.gourmet-plugin files within a build/ subdirectory of the source tree by
running
python setup.py build_i18n -m
Afterwards, you can just launch bin/gourmet from the source directory to test
the program and see how changes to the source code affect it.
Style
=====
The style used in Gourmet can be rather varied. However, new code
should adhere to style guidelines old code should be updated to meet
them. Generally, we try to follow the python style guidelines set out
by Mr. Guido Van Russom, as formalized by
[PEP 8](http://www.python.org/dev/peps/pep-0008/).
The following conventions are not strictly followed in Gourmet, but
I'd like to follow them from here on out for greater consistency.
* Class names are capitalized, using CamelCase.
* method names begin with verbs and use underscores for multiple words
* attributes should be lower cased and use camel caps for multiple words.
Development tools
=================
If you want to work from within an IDE, you might want to use [Eclipse](http://www.eclipse.org) with some useful plugins, which you install by entering their download locations into Eclipse's Help > Install new Software... dialog:
* EGit and GitHub Mylyn Connector
* are for working with Git repositories, and GitHub issues integration into Eclipse, see http://eclipse.github.com; download locations: http://download.eclipse.org/egit/updates and http://download.eclipse.org/egit/github/updates
* PyDev
* is for Python development; its download location is http://pydev.org/updates
* EclipseNSIS
* if you want to produce a windows installer package; download location: http://eclipsensis.sourceforge.net/update
With EGit installed, go to File > Import... > Git > Git repository and enter the URI found in the "Getting the Source" section. The rest of the importing process should be fairly intuitive.
As a supplement or an alternative to Eclipse and the plugins listed above,
we can recommend [GitHub for Windows](http://windows.github.com/) as the
Windows Git client; it features both command-line tools (and a dedicated prompt
called Git Shell) and a nifty GUI.
Getting the Source
==================
Gourmet's source code is hosted at [GitHub](https://github.com/thinkle/gourmet).
You can clone it by opening a command prompt and typing
```
git clone https://github.com/thinkle/gourmet.git
```
If you don't have any previous experience with Git, you might want to take a
look at the [official Git tutorial](http://www.kernel.org/pub/software/scm/git/docs/gittutorial.html),
or the [GitHub Help pages](http://help.github.com/).
gourmet-0.17.0/ChangeLog 0000664 0000000 0000000 00000474227 12303443724 0015055 0 ustar 00root root 0000000 0000000 2014-02-26 Bernhard Reiter
* Fix a number of regressions in html_exporter.py.
* Update ChangeLog.
2014-02-25 Bernhard Reiter
* Remove redundant newlines from error message.
* Update *.po[t] files and add/fix some German and Austrian strings.
* Update ChangeLog.
* Fix a translation bug in de_DE.po.
* Remove *.mo files that ware accidentally added to git.
2014-02-24 Bernhard Reiter
* Update gourmet.desktop.in.
* Shorten years listing in copyright notice.
* Add Flattr donations button to About dialog.
2014-02-23 Bernhard Reiter
* Fix loading of FAQ from recipe card and shopping UI.
* Fix web browser invocation from About dialog under Windows.
* Remove obsolete exception clause.
* Under Windows, use Adobe Reader to print reportlab created PDF.
2014-02-22 Bernhard Reiter
* Simplify loading of LICENSE file into About dialog.
* Add donations text and buttons to the About dialog.
* Update ChangeLog.
2014-02-20 Bernhard Reiter
* Add 2014 to copyright years.
2014-02-18 Bernhard Reiter
* Some gourmet/backends/db.py cleanup.
* When connecting to a MySQL database, force UTF-8 charset.
2014-02-09 Bernhard Reiter
* Replace deprecated PoolListener by @event.listens_for decorator.
2014-02-08 Bernhard Reiter
* Remove \r escape sequence from sl.po.
* Change Yield unit accelerator in batch editor, update po files.
* Fix a translation bug in nl.po.
* Fix bug in Dutch translation.
2014-01-23 Bernhard Reiter
* UTF-8-decode ingkey in shopping_key_editor_plugin.
2014-01-21 Bernhard Reiter
* Fix a regression introduced by the last commit.
2014-01-20 Bernhard Reiter
* When de-activating Browse Recipes plugin, remove its tab.
2014-01-12 Bernhard Reiter
* Fix a typo.
2014-01-11 Lyra
* FIX: Create a shopping list even if one entry hasn't an amount
2014-01-06 Bernhard Reiter
* Some cleanup.
* Clean up gourmet/exporters/exporter.py a bit.
* Update MANIFEST.in.
* Remove tools/ directory.
* Remove an obsolete reportlab version check and related code.
2014-01-05 Thomas M. Hinkle
* Hackishly remove indents needed after if statement to workaround build error.
* Allow null units to be looked up. Otherwise, we can never get conversions for things like "3 eggs."
* Remove GourmetWindows.pyw
2014-01-05 Bernhard Reiter
* Revert "Fix stupid mistake."
2014-01-04 Bernhard Reiter
* Check if active_plugin is really there.
2014-01-03 Bernhard Reiter
* Add myself as maintainer in setup.py.
* Add 2012, 2013 to copyright years.
* Add comment to setup.py.
* Remove obsolete README.windows.md.
* Fix stupid mistake.
* Fix a typo in INSTALL.md.
* Update TODO, rename to TODO.md.
* Update CODING.
* Add more Windows building instructions to INSTALL.md.
* Disable the PDFPrintPlugin under Windows as poppler doesn't work there.
* Use Python logging instead of printing a traceback.
* Migrate from py2exe to cx_Freeze.
* Set data_dir correctly if Gourmet is frozen.
* Update IPython requirement in INSTALL.md.
* Update ChangelLog.
2014-01-02 Bernhard Reiter
* Remove NSIS related files.
2014-01-01 Bernhard Reiter
* Replace PIL by Pillow requirement.
* Move *.gourmet-plugin.in files to gourmet/plugins/.
* Remove an obsolete line.
* Replace pywin32 requirement by a ctypes function call.
* Small whitespace fix.
* Remove missing signal handlers.
* Bump version to 0.17.0.
* Fix a translation bug in po/de.po.
2013-12-15 Bernhard Reiter
* Add reportlab packages to setup.py so py2exe includes them.
2013-11-19 Bernhard Reiter
* De-dupe AboutDotComWebParser class.
* Move duplicate code into a common base class member.
* Remove some redundant code.
* Remove obsolete KeyManagerOldSchool class.
* Remove duplicate code from gourmet/recipeManager.py.
* Remove duplicate file gourmet/convertGui.py.
2013-11-15 Bernhard Reiter
* Fix wildcard imports.
2013-11-13 Bernhard Reiter
* Fix another PIL import.
2013-11-02 Joe Sapp
* Remove "Application" from desktop entry
2013-01-11 Bernhard Reiter
* s/options/args/ to make bin/gourmet launch.
2013-01-11 Jeff Raber
* Replace deprecated optparse with argparse, per issue 683 [1]
2013-10-12 Bernhard Reiter
* Fix a typo that broke the nutritional information plugin DB upgrade.
2013-10-11 Bernhard Reiter
* Remove some more metakit remnants.
* Update po[t] files.
* Remove legacy_db (i.e. metakit) stuff.
2013-10-10 Bernhard Reiter
* Clean up recindex.py.
* Clean up GourmetRecipeManager.py.
* Clean up reccard.py
2013-09-30 Bernhard Reiter
* In PDF export, print title only once (as heading).
2013-09-20 Bernhard Reiter
* Only set_current_folder if get_user_special_dir(USER_DIRECTORY_PICTURES) isn't None.
2013-09-09 Bernhard Reiter
* Update *.po[t] files.
* Fix batch editing of categories.
* Translate attributes in batch editor's confirmation message box.
* In Batch Editor, replace "Servings" by "Yield" and "Yield Unit" rows.
* Small fix to ui/catalog/README.
* Remove some obsolete code checking for old gtk versions.
* Remove some spurious imports from recindex.py.
2013-09-06 Bernhard Reiter
* s/ui/ui_string/ fix in a couple of files.
2013-09-01 Bernhard Reiter
* Remove some spurious Image (i.e. PIL) imports.
2013-08-30 Bernhard Reiter
* Update Changelog.
2013-08-29 Bernhard Reiter
* Update version to 0.16.1 in gourmet/version.py.
* Update MANIFEST.in.
* Update translation files.
2013-08-28 Bernhard Reiter
* Little schema.org parser improvement.
* Properly raise an exception in print_plugin.py.
* Fix a translation bug in po/de_AT.po.
* Update allrecipes.com test recipe URL.
In (commented out and still dysfunctional part of) testImporters.py.
2013-08-27 Bernhard Reiter
* Drop Python version 2.6 in INSTALL.md.
* Add PYTHON_ARGCOMPLETE_OK string to bin/gourmet.
* Remove some obsolete imports from gourmet/importers/html_importer.py.
* Fix testImporters.py.
* Merge pull request #724 from sappjw/master
Replace more 'Image' imports with Pillow-compatible blocks
* Fix allrecipes.com importer, by extending our newly created schema_org_parser.
Also add a test gourmet/test/test_allrecipes_com_plugin.py which is capable of
testing the importer offline, using gourmet/test/recipe_files/allrecipes_com.html.
(Trying to integrate such an offline test into the existing, commented-out
allrecipes.com test in gourmet/test/testImporters.py proved a nightmare as
the importer code is tightly interwoven with the web page download and interactive
importer functions.)
Fixes #261
* Make ica.se importer aware of a recipe's yields property.
* Scrap more schema.org/Recipe fields.
* Remove obsolete gtk import from gourmet/importers/generic_recipe_parser.py.
* Have ica_se tests check for presence of category field.
* Factor schema.org parsing out of ica_se_plugin.py into a newly created schema_org_parser.py.
* Have gourmet/test/test_ica_se_plugin.py also test for cooktime parsing.
* Small fix for more a expressive test result.
* Small fix, mainly for future BeautifulSoup4 compliance.
* Move foodnetwork and ica.se importer tests to gourmet/test/.
2013-08-27 Joe Sapp
* Replace more 'Image' imports with Pillow-compatible blocks
2013-08-25 Bernhard Reiter
* Fix testImporters.py.
Among other things, use a temporary in-memory SQLite database for testing.
2013-08-24 Bernhard Reiter
* Truncate Source field in PDF export.
Fixes #721
2013-08-10 Bernhard Reiter
* One more string exception to fix.
2013-08-09 Bernhard Reiter
* s/thinkle.github.com/thinkle.github.io/
2013-08-06 Bernhard Reiter
* Merge pull request #723 from gyp/master
importing gettext in exportManager as it has localized strings
2013-08-06 Peter Gyongyosi
* importing gettext in exportManager as it has localized strings
This fixes https://bugs.launchpad.net/gourmet/+bug/1157969
2013-08-04 Bernhard Reiter
* Add INSTALL.md.
2013-07-30 Bernhard Reiter
* Add db upgrade logic for the fix introduced with the previous commit.
Fixes #711.
* Merge pull request #722 from rleibman/master
Fixing issue with mysql, VARCHAR requires a length
2013-07-30 Roberto Leibman
* Fixing issue with mysql, VARCHAR requires a length, I figure 255 is probably good enough
2013-06-01 Bernhard Reiter
* Remove obsolete tools/upgrade_pre_script.py.
* Remove hardwired sys.path.append('/usr/share/gourmet') lines.
2013-05-27 Bernhard Reiter
* Additional fix for plugins/python_shell/ipython_view.py.
* Fix interactive shell plugin to work with current IPython versions.
Achieved by updating plugins/python_shell/ipython_view.py
(which was taken from the Accerciser project)
to the commit before Accerciser's Python3 migration [1],
reverting their previous PyGI migration [2].
[1] https://git.gnome.org/browse/accerciser/commit/?id=b9bb2f48eebbf9f21ca633b6ecd6a58d6befe04a
[2] https://git.gnome.org/browse/accerciser/commit/?id=48b8c06d598f84943ab7a0af1259408b7409484d
* Prepare plugins/python_shell/ipython_view.py for update.
2013-05-17 Bernhard Reiter
* Remove a bunch of unused imports.
* Fix setup.py so it works on non-Windows platforms again.
* Remove obsolete checks for PyGTK version < 2.8.
* Remove obsolete gtk_extras/ThumbnailGenerator.py.
* Remove obsolete gtk_extras/chooserNotebook.py.
* Remove obsolete gtk_extras/fauxDruid.py.
* Remove obsolete gtk_extras/FauxActionGroups.py.
2013-05-07 jens persson
* Buglet found with tests and som whitespace triming in foodnetwork plugin
* Add tests for foodnetwork plugin
* Fix buglet discovered due to tests
* Add tests for ica.se plugin
2013-04-20 Bernhard Reiter
* Merge pull request #715 from MrShark/master
An importer for ica.se (Swedish storechain)
2013-04-11 jens persson
* First shot on an importer for ica.se
2013-04-06 Bernhard Reiter
* Revert "Add back gnomeprinter.py." (Accidental commit, meant to be in a new branch.)
This reverts commit acad0d848f7c0567bf553dae27d7e6bbd3fe67a4.
* Add FAQ item about Gourmet's data storage location.
* Add back gnomeprinter.py.
* Remove obsolete PIL import.
* Add 'Francouzská' and 'Indická' (French and Indian) to defaults_sk.py
* Add "French" and "Asian/Indian" to Cuisine defaults.
Fixes #713.
2013-03-25 Bernhard Reiter
* Add Development Tools section (taken from the Wiki).
* Move Windows version warning to README.windows.md.
2013-03-23 Bernhard Reiter
* Fix a bug in defaults_ru.py
2013-03-12 Bernhard Reiter
* Merge setup_win.py into setup.py.
Also add some extra functionality to include required Gtk+ Theme files.
* Add __init__.py to web_plugin to turn it into a module.
Otherwise, there's an error with py2exe.
2013-03-10 Bernhard Reiter
* Add (Eclipse's) .settings/ dir to .gitignore
* Fix a bug in get_pluralized_form.
2013-03-09 Bernhard Reiter
* Remove some obsolete imports from gourmet/importers/html_importer.py.
* Remove obsolete Queue import from gourmet/importers/imageBrowser.py.
This was causing problems with py2exe.
* Add *.pyo files to .gitignore.
2013-03-06 Bernhard Reiter
* Fix a bug that caused gourmet to fail when LC_ALL=C
2013-03-06 Bernhard Reiter
* Remove -dev suffix from version in gourmet/version.py.
* Update MANIFEST.in.
Running "python setup.py sdist" will now exactly reproduce
the current git state.
* Add .project to .gitignore.
* Remove gourmet/.gitignore as omission of *.pyc files is recursively
covered by our root .gitignore
* Remove bin/gourmet-importer and bin/gourmet-importer-profile.
Both are apparently unused, unmaintained and severely outdated.
* Remove translation scripts from po/ as they're obsoleted
by distutils-extra (see CODING file).
* Replace 'import Image' by 'try: from PIL import Image
except ImportError: import Image'.
Rationale: http://lists.debian.org/debian-python/2013/02/msg00017.html
* Update Gourmet and Python version in windows/gourmet-installer.nsi.
* Update *.po files to match current source.
* Update *.po files from Launchpad Translations.
* Add author_email field to setup.py.
* Update MANIFEST.in.
* Remove windows/Gourmet.pyw from po/POTFILES.in.
2013-03-04 Bernhard Reiter
* Remove obsolete files.
* Update LICENSE (new FSF address).
* Remove windows/Gourmet.pyw as it's obsoleted by bin/gourmet.
* Fix some py2exe parameters.
2013-03-03 Bernhard Reiter
* Fix directory locations in setup_win.py.
* Fix import path in setup_win.py
2013-02-27 Bernhard Reiter
* Backup when upgrading the DB to v0.16.
* Remove obsolete comment.
* Remove obsolete file gourmet/PngImagePluginUpToDate.py.
* Simplify a conditional expression.
* Avoid a KeyError when pressing Enter on an empty search entry.
* Remove gourmet/importers/mealmaster_importer.py from po/POTFILES.in.
2013-02-20 Bernhard Reiter
* Remove gourmet/importers/mealmaster_importer.py as it's obsolete.
That file lives now in gourmet/plugins/import_export/mealmaster_plugin/.
* Remove shebangs from non-executable files.
* Change wording of README.md a bit.
* Merge pull request #694 from MrShark/master
Make working in a virtualenv easier
2013-02-14 jens persson
* Update documentation
* changed /usr/bin/python to /usr/bin/env python to alow usage in virtualenvs
* Remove hardcoded install path
2013-02-06 Bernhard Reiter
Fix #288.
2013-02-05 Bernhard Reiter
* Remove some clauses that checked for SQLALchemy < 0.6 as we're relying on >= 0.7 anyway now.
* Add Integer primary key columns (named 'id') to all remaining tables.
2013-02-04 Bernhard Reiter
Remove pickle_key and pickle_val options from dbDic.
2013-02-03 Thomas Mills Hinkle
* gourmet/convert.py (integerp): Restore NUMBER_END_NO_RANGE_REGEXP
(integerp): Quick fix to NumberEnry
* gourmet/backends/db.py (regexp): Fix sqlite custom function
error -- regexp searching now works. This closes #691. This bug
was caused by a change in SQLAlchemy behavior 0.6->0.7.
2013-02-02 Thomas Mills Hinkle
* gourmet/plugins/import_export/mealmaster_plugin/mealmaster_importer.py (mmf_constants.__init__): servings->yields
* gourmet/plugins/import_export/krecipe_plugin/krecipe_importer.py (KrecHandler): servingsyields->
* gourmet/importers/importer.py (Importer.commit_rec): Update servings->yields.
* gourmet/backends/db.py (RecData.add_rec): Update servings/yields
code.
* gourmet/exporters/exportManager.py
(ExportManager.offer_multiple_export): Fix bug #234, #691.
2013-02-01 Bernhard Reiter
Unpickle Booleans and Strings that have erroneously remained pickled in the
database during previous Metakit -> SQLite -> SQLAlchemy database migrations.
Fixes #678.
2013-01-30 Bernhard Reiter
* Rename gourmet/sound_gnome.py to gourmet/sound_gst.py.
* Restructure directory layout once again.
Move images, icons, sound, and style directories to data/;
this is in preparation of a possible future move to DistutilExtra's
auto setup (see #679).
* Install FAQ and LICENSE to share/doc/gourmet/.
* Prepend chromium-browser to list of *.html document launchers.
* Prepend libreoffice to list of *.rtf document launchers.
* When exporting, point Save as dialog to user's Documents directory by default.
2013-01-29 Thomas Mills Hinkle
* gourmet/plugins/nutritional_information/nutrition.py
(NutritionData.get_matches): Make sure get_matches returns a list
as expected, not None.
(NutritionData.get_nutinfo_for_item): Handle empty units correctly.
(NutritionData.get_conversion_for_amt): Handle empty units correctly.
* gourmet/plugins/import_export/mealmaster_plugin/mealmaster_exporter.py (mealmaster_exporter.__init__): Fix boneheaded typo.
(mealmaster_exporter.write_attr): Update servings-->yields
(mealmaster_exporter.write_attr): Reduce padding to conform to MMF standard
(mealmaster_exporter.write_categories): Reduce padding to conform to MMF standard
(mealmaster_exporter.write_ing): Allow for empty units (fix boneheaded error)
* gourmet/plugins/import_export/html_plugin/html_exporter.py
(html_exporter.write_text): Fix NAME_TO_ATTR lookup issue w/
plugins.
* gourmet/plugins/field_editor/fieldEditor.py
(FieldEditor.fieldChangedCB): Fix possible issue with NAME_TO_ATTR
lookups and plugins searching for attributes that don't exist
there.
* gourmet/plugins/import_export/mealmaster_plugin/mealmaster_importer.py
(mmf_constants.__init__): Respect new Gourmet norms regarding
standard ingredient abbreviations (remove periods, mostly)
* gourmet/plugins/import_export/mealmaster_plugin/mealmaster_exporter.py
(mealmaster_exporter.__init__): Make sure category comes first as
per mealmaster specs.
(mealmaster_exporter.__init__): Remove redundant/stupid code
(mealmaster_exporter.write_ing): Fix ingredient code and make more
robust against future changes in defaults.
2013-01-25 Bernhard Reiter
* Mention BeautifulSoup in the Extra Requirements section of README.md.
* Merge pull request #689 from jraber/unbundleBeautifulSoup
Removed bundled (old) versions of BeautifulSoup.py
* Change back perms for bin/gourmet to 755.
2013-01-17 Jeff Raber
Removed bundled (old) versions of BeautifulSoup.py
BeautifulSoup.py seems to be available in the common linux distros. Otherwise, it can
be installed with 'pip install BeautifulSoup'
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=895228
2013-01-15 Bernhard Reiter
Add slogan to README.md ;-)
2013-01-12 Thomas Mills Hinkle
* gourmet/importers/importManager.py: gettext fix
2013-01-12 Bernhard Reiter
* Add new Integer primary keys to the shopcats, shopcatsorder, and pantry tables.
Those tables had Text columns as primary keys, which, when used with MySQL,
requires an extra parameter specifying the length of the substring that MySQL
is supposed to use for the key. Thus, we're adding columns named id of type
Integer and make them the new primary keys instead.
Fixes #681.
* Move *.gourmet-plugin files to plugins/, install to share/gourmet/plugins.
This is required for python-distutils-extra to be able
to translate and install *.gourmet-plugin files properly.
2013-01-09 Bernhard Reiter
* Change data/recipe.dtd perms from 755 to 644.
* .gitignore: Remove obsolete lines, add .pydevproject. .cvsignore: Delete.
2013-01-07 Bernhard Reiter
* Enable building of *.mo and *.gourmet-plugin files during development.
Furthermore, update CODING with instructions, and remove
bin/gourmet_in_place as it's now obsolete.
* Modify file locations in built settings.py, not the one in the source tree.
2013-01-06 Thomas Mills Hinkle
* gourmet/GourmetRecipeManager.py (RecGui.setup_main_window): Make sure search entry has focus.
* gourmet/plugins/listsaver/shoppingSaverPlugin.py: gettext fix
* gourmet/plugins/key_editor/recipeEditorPlugin.py: gettext fix
* gourmet/plugins/import_export/pdf_plugin/print_plugin.py: Fix gettext
2013-01-06 Bernhard Reiter
* Remove obsolete cruft from windows/ directory.
* Update website, download link and Tom's email address in NSIS script.
* In the HTML output, don't translate class names.
Otherwise, this would require CSS selectors to be also localized and would
not work across languages. That's obviously not how it should be done.
* Remove modules_check and other cruft from setup.py
This hasn't been used or updated for a while, and as it isn't really
supported by distutils, it has been more a source of redundancy (read
confusion and maintenance burden) in conjunction with dependencies
listed in our README.
* Rename README to README.md, and use Markdown to style it.
* Remove bin/__init__.py as it's obsolete now.
* Minor line layout fix.
* Replace our custom tools/gourmet_distutils.py by a python-distutils-extra dependency.
* Update po/POTFILES.in and po/gourmet.pot.
2013-01-05 Bernhard Reiter
* Replace some wildcard imports.
* Remove some cruft from gourmet/__init__.py.
2013-01-02 Bernhard Reiter
* Update requirements in the README file.
* Update setup.cfg to at least somewhat reflect current RPM based distributions.
* Remove rpm/gourmet.fedora.spec and rpm_build.sh.
This stuff was severely outdated, duplicates information from setup.py and
setup.cfg (if we're really going to keep providing RPMs which hasn't been done
during the past releases), and is maintained better at Fedora anyway.
* Change more URLS from Sourceforge to GitHub.
2013-01-01 Bernhard Reiter
* Change old SourceForge URLs to new GitHub ones where applicable.
* Move practically all program information to version.py and import it from there into setup.py and setup_win.py.
* Fix some install locations.
* Add back toolbar, with an option in the preferences dialog to hide it.
* Don't fall back to version = 0.11.0 in setup.py.
* Simplify some code.
2012-12-31 Bernhard Reiter
Remove BUG_URL link from gglobals.py as its both outdated and not used anywhere.
2012-12-30 Bernhard Reiter
* Don't use Gtk.InfoBar yet as it requires pyGtk >= 2.22. We'll keep this in a branch for now.
* Remove obsolete line from gglobals.py
* Move info.py contents back into version.py as we got rid of the critical circular dependency with OptionParser.py.
* Remove checks for gtk.CellRendererCombo as it has been part of GTK since v2.6.
* Determine location of installed files properly.
* Another stylesheet path fix in html_exporter.py.
2012-12-28 Bernhard Reiter
* Add *.html pattern to html_exporter_plugin.py's saveas_filters.
* Fix default.css location in HTML exporter plugin.
* Remove custom file type widget from FileSelectorDialog.
* Remove FileChooserSaveAs.py as it has long been obsoleted by gtk_extras/dialog_extras.py.
2012-12-25 Bernhard Reiter
* Let tools.gourmet_distutils.py take care of translation and installation of gourmet.desktop.
* Install png and svg icons to locations that enable desktop environments to pick proper file.
See http://standards.freedesktop.org/icon-theme-spec/icon-theme-spec-latest.html#directory_layout
2012-12-19 Bernhard Reiter
Remove obsolete GourmetFauxThreads.py and GourmetThreads.py.
2012-12-17 Bernhard Reiter
* Fix db.py to allow (dev) version suffices like 0.16.0-dev.
* Add patch to include schema.org metadata for HTML exporter by SF user freedo.
See https://sourceforge.net/tracker/?func=detail&aid=3519632&group_id=108118&atid=649654
and http://www.schema.org/Recipe, respectively.
* Add plurals handling fix by A. Katz.
"Just a quick patch to fix a bug in default.py.
The function for converting a plural to a singular unit had two issues.
a) WORD_TO_SING_PLUR_PAIR keys are lowercase but the word being handed to the function could be in any case
b) if the word is not in WORD_TO_SING_PLUR_PAIR it does nothing, this patch tries lang.guess_singulars before
giving up."
See https://sourceforge.net/tracker/?func=detail&aid=3420657&group_id=108118&atid=649654
2012-11-27 Bernhard Reiter
Remove obsolete line from setup.py
2012-11-26 Bernhard Reiter
* Fix gourmet/backends/db.py so it works with SQLAlchemy >= 0.7.
* Remove po/*/LC_MESSAGES/gourmet.mo files as they are generated at build time from po/*.po files.
2012-11-22 Bernhard Reiter
Remove obsolete file (now in gourmet/plugins/import_export/mastercook_import_plugin/)
2012-05-25 Thomas Hinkle
* Fixed conflict
* ++gettext
2012-04-27 Tom
* gourmet/plugins/unit_display_prefs/__init__.py: import gettext
* gourmet/plugins/python_shell/__init__.py: import gettext
* gourmet/plugins/nutritional_information/nutrition.py (NutritionData.get_nutinfo): remove verbosity
* gourmet/plugins/nutritional_information/nutPrefsPlugin.py: import gettext
* gourmet/plugins/nutritional_information/main_plugin.py: import gettext
* gourmet/plugins/field_editor/__init__.py: import gettext
* gourmet/plugins/email_plugin/emailer_plugin.py: import gettext
* gourmet/plugins/duplicate_finder/recipeMergerPlugin.py: import gettext
* gourmet/plugin_gui.py: import gettext
* gourmet/info.py: import gettext
* gourmet/plugin_loader.py (Pluggable.get_plugin_by_module): Add
convenience function for grabbing plugin instances.
2012-04-22 Bernhard Reiter
Bump version number to 0.16.0-dev
2012-03-06 Bernhard Reiter
* Remove gettext_setup.py as its logic has been split in settings.py and gglobals.py (and info.py)
* Remove some obsolete logic from setup.py.
* Move localized stuff from version.py to newly created info.py to avoid circular dependencies.
* Move logic that searches for the data files path from gglobals.py to newly created settings.py.
* Wrap the path finding stuff in bin/_preamble.py in a function
* Add __init__.py to the bin/ directory so we can import it as a module.
* Rename --data-directory cmdline option to --gourmet-base.
* Fix occurrences of HELP_FILE constant.
2012-02-27 Bernhard Reiter
* Remove --image-directory and --ui-directory cmd line options, as those are now subdirectories of --data-directory.
* Replace custom inquiry if existing file should be overwritten by GTK one.
2012-02-26 Bernhard Reiter
* Replace create_manifest.py by MANIFEST.in
* Remove some more duplicates
2012-02-20 Bernhard Reiter
Minor setup.py fix
2012-02-16 Bernhard Reiter
Remove tools/gourmet_distutils as it's unused (there's still tools/gourmet_distutils.py)
2012-02-12 Bernhard Reiter
* Move website URL from GRM.py to version.py
* Replace old splash screen by new one
* Change directory layout once more. Looks good now, but still a lot of code fixes ahead.
2012-02-11 Bernhard Reiter
* Un-hardwire intltool's path under windows in setup.py
* Fix FAQ and LICENSE locations in code
* Update setup.cfg, mostly to use .bz2 compression
* Restructure data/ directory
* Add images/gourmet.svg, and remove a couple of outdated images.
* Rename glade/ directory to ui/
* Restructure directory layout to comply more to
http://as.ynchrono.us/2007/12/filesystem-structure-of-python-project_21.html
2012-02-10 Thomas Hinkle
* Fixed density of sugar (I think I'd used the density from a chemistry,
rather than a cooking, site, which didn't account for the air between
the sugar crystals when you measure it)
* Don't fail if elib.intl isn't present -- print a warning instead.
* Glade-->UI
2012-02-09 Bernhard Reiter
Rename i18n/ directory to po/ so intltool-update --maintain will work
2012-02-08 Bernhard Reiter
* Images cleanup
* Remove a stray .po file
* Rename gladed command line option to uid
* Rename some more methods from glade to ui (or builder)
* s/gladebase/uibase/g
* Use updated i18n/de.po from Launchpad
2012-02-07 Bernhard Reiter
* Replace custom hack in setup_gettext.py by elib.intl module
* Add Lauchpad header to i18n/de.po
2012-02-06 Bernhard Reiter
Update i18n/gourmet.pot translation template
2012-02-05 Bernhard Reiter
* New German translations by nobody (at) t4b.me
* i18n string unification fixes by nobody (at) t4b.me
* Another i18n fix
2012-02-01 Bernhard Reiter
* Yet another (somewhat prominent) i18n fix.
* Internationalize src/lib/plugins/import_export/archive_plugin/zip_importer_plugin.py
* s/ = /=/ in the *.gourmet-plugin.in files, which previously impeded
localization, as intltool-merge can't deal with whitespaces on the wrong places.
2012-01-31 Bernhard Reiter
* Fix i18n/POTFILES.in to properly include .gourmet-plugin.in files
* Add Russian localization files i18n/ru.po and src/lib/defaults/defaults_ru.py
by Alexander Prokoudine, from our Sourceforge patch tracker: see
https://sourceforge.net/tracker/?func=detail&aid=2858486&group_id=108118&atid=649654
and https://sourceforge.net/tracker/?func=detail&aid=2858485&group_id=108118&atid=649654
* Fix sort of a typo
* Replace occurrences of .props.someproperty by {g|s}et_property('someproperty') to fix bug #3480177
* Replace occurrences of .props.someproperty by {g|s}et_property('someproperty') to fix bug #3480177
* Another fix to make i18n work.
2012-01-30 Bernhard Reiter
Small i18n related fix.
2012-01-29 Bernhard Reiter
* Add domain=gourmet attribute to the interface tag in the .ui files
* Update i18n/POTFILES.in to reflect .glade -> .ui file conversion
* Add [type: gettext/glade] prefix to .ui files in i18n/POTFILES.in
so that they're actually searched for strings by intltool.
* Add locale.bindtextdomain('gourmet',DIR) so that the strings from
our .ui (and glade) files are actually translated -- which they previously weren't.
2012-01-21 Bernhard Reiter
* Add i18n/generate_mo.sh as i18n/generate_mo.py doesn't seem to work for me.
* In src/lib/version.py, import gettext_setup so trings get translated.
* Make ImageSelectorDialog open the user's Pictures directory when launching it.
2012-01-19 Bernhard Reiter
* Remove obsolete cmd line options documentation from gourmet.1
* Move LICENSE displaying logic from version.py to GourmetRecipeManager.py
as it requires some imports; and add LICENSE to setup.py
2012-01-17 Bernhard Reiter
Add LICENSE to MANIFEST as it's needed by the About dialog.
2012-01-12 Bernhard Reiter
Comment out an obsolete windows workaround.
2012-01-11 Bernhard Reiter
Remove a stray file that had sneaked into MANIFEST and i18n/POTFILES.in
2012-01-10 Bernhard Reiter
* Regenerate i18n/gourmet.pot and i18n/*.po files by running i18n/grab_strings.sh
* Update i18n/POTFILES.in based on MANIFEST contents
* Update MANIFEST
* Update POTFILES, translation template (gourmet.pot), and merge into individual *.po files
* Fix Nutritional Information plugin
2012-01-07 Bernhard Reiter
Remove make_star_button and make_star_image functions as they aren't needed anymore.
2012-01-06 Bernhard Reiter
* Replace gnome.sound_* stuff with gstreamer (gst) stuff.
This should conclude our removal of (python-)gnome dependencies.
We now need pygtk >= 2.16 and (py)gst instead (which is much less heavy-weight than gnome).
* Remove gnome stuff from the pdf_exporter.py test code.
* Replace gnome-open by the cross-desktop xdg-open command.
* Remove gnomeprint import from gglobals.py
* Remove obsolete 'printer' command line option.
* Remove call to gnome.url_show as we can assume gtk.show_uri to exist in PyGTK >= 2.16
2011-12-30 Bernhard Reiter
Replace gnome.ui.About dialog by gtk.AboutDialog
2011-12-27 Bernhard Reiter
Use an InfoBar to display deletion warning message
2011-12-19 Bernhard Reiter
Add alignment objects to recCardDisplay.ui as that information got lost during gtk.Builder migration.
2011-12-17 Bernhard Reiter
Add NutritionLabel widget back to nut_recipe_card_display.ui which got lost in the migration to gtk.Builder
2011-12-16 Bernhard Reiter
* Fix a signal handler related bug due to gtk.Builder migration
* Remove import gtk.glade statements everywhere.
* Remove custom_handlers stuff as it's obsolete now after migrating to gtk.Builder.
* Migrate even the faux stuff to gtk.Builder
* Remove references to *.glade files in setup.py and create_manifest.py; recreate MANIFEST.
* Migrate the Nutritional Information plugin to gtk.Builder. This requires still some polishing.
* Change NumberEntry's default_to_fractions argument default value to False
(as that's what it's set to practically everywhere, and it will make migration to gtk.Builder easier).
* Forgot to add keyeditor.ui and remove keyeditor.glade
* Migrate recipeMerger.py to gtk.Builder
* Migrate keyEditor.py to gtk.Builder
* Remove app.glade (in favor of app.gui)
* Migrate chooserNotebook.py to gtk.Builder (though currently unused)
* Remove recipeMerger.py from src/lib as it's now in a plugin subdirectory
* Replace remaining glade.XML occurrences in GRM.py by gtk.Builder equivalents.
* Migration to gtk.Builder: Add app.ui and change remaining occurrences of app.glade to app.ui
* Replace checks for app.glade by checks for app.ui
* Remove an unnecessary import from src/lib/reccard.py
* Migrate batchEditor from glade to gtk.Builder
* Remove glade/keyeditor.glade as that files is already in src/lib/plugins/key_editor/
* Remove glade/*.glade and glade/*.gladep files for which conversion to *.ui is complete.
* Migrate recipe card to gtk.Builder
2011-12-15 Bernhard Reiter
* Fix reccard.py after migration to gtk.Builder; plus two fixes to ratingWidget.py
* Add a README to glade/catalog
* More recCardDisplay to gtk.Builder fixes
* Properly migrate recCardDisplay to gtk.Builder
* Create gourmetwidgets catalog for glade, adapt widgets code.
2011-12-13 Bernhard Reiter
Start migrating recCardDisplay to gtk.Builder
2011-07-01 Tom
* src/lib/convert.py (NUMBER_FINDER_REGEXP): Avoid seeing things
with a terminal . or , as numbers, thus avoiding seeing numbered
lists as ingredients.
2011-06-28 Tom
* src/lib/reccard.py (IngredientController.commit_ingredients.commit_iter):
Fix attr lookup error in corner cases.
2011-03-20 Tom
* src/lib/version.py (version): Version --> 0.15.9
* src/lib/shopgui.py (ShopGui.show): Make sure window shows up
when something's added.
* src/lib/backends/db.py (RecData.initialize_connection): Remove
threadlocal strategy. This may be a mistake, but it seems to clear
up the commit errors numerous people were experiencing.
* src/lib/shopgui.py (ShopGui.__init__): Make sure popup menu gets
set-up for changing categories in shopping list.
* src/lib/reccard.py (shop_for_recipe_cb): Fix shopping list, and improve error messages.
* src/lib/GourmetRecipeManager.py (StuffThatShouldBePlugins.shop_recs): fix shopping list.
* src/lib/shopping.py: Fix refactoring error.
* src/lib/shopgui.py (ShopGui.getOptionalIngDic): Fix refactoring
error that broke "add-to-shopping list" behavior
2011-03-08 Tom
* src/lib/version.py (version): Version --> 0.15.8
2011-03-07 Tom
* src/lib/backends/db.py (RecData._force_unicode): Don't unicode-ify images!
2011-02-02 Tom
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_importer.py:
Adapt mealmaster plugin to handle 'Windows Gourmet' file (who
knows what this program was, but we appreciate their name!). The
adaptations shouldn't do any harm to mealmaster, and may help with
imports of some of the many broken mealmaster files that exist on
the internet.
2011-01-05 Tom
* create_manifest.py:
(write_lst_to_file): Include *.ui files!
* README: Remove obsolete material about Gnomeprint.
* src/lib/plugin.py (RecEditorModule.grab_focus): Add method for
editor modules to setup focus for editing.
* src/lib/reccard.py (RecEditor.present): Add code to allow each
module to grab focus programatically to set up editing.
(DescriptionEditorModule.grab_focus): Make DescriptionEditorModule
grab focus for the "title" box right away, so that when you open
the editor window you can start typing.
* src/lib/backends/db.py (RecData.get_unique_values): Fix bug in
DB code that caused a SQL error.
2010-12-16 Tom
* src/lib/version.py (version): Version->0.15.7
* src/lib/backends/db.py (RecData.get_unique_values): Patch from
Steve Langasek for Ubuntu bug #534088
(RecData.get_unique_values): Fix handling of null criteria.
2010-12-10 Tom
* src/lib/plugins/web_plugin/gourmetweb/templates/shop.html: Add forms to add/remove from pantry.
* src/lib/plugins/web_plugin/gourmetweb/recview/views.py (MyShoppingList.get_shopper): Use database for shopping list so we can store e.g. pantry data.
(multiply_rec): Use 'yields' when possible; otherwise use multiply
(shop_to_pantry): Add callback to move items to pantry
(shop_to_list): Add callback to remove items from pantry
* src/lib/plugins/web_plugin/gourmetweb/urls.py: Add shopping list
callbacks (move to/from pantry)
2010-12-09 Tom
* src/lib/plugins/key_editor/keyEditor.py (KeyEditor.isearchCB):
Set cursor to busy while searching.
* src/lib/recindex.py (RecIndex.search): Fix busy cursor while searching.
* src/lib/backends/db.py (RecData.get_ingkeys_with_count): Fix bug
that broke IngredientEditor view entirely.
* src/lib/plugins/key_editor/keyEditor.py (KeyStore.reset_views):
Don't undo search when resetting view after applying an edit.
* src/lib/backends/db.py (RecData.do_modify): Force unicode (Fixes #3120915)
2010-11-28 Thomas Mills Hinkle
* src/lib/backends/db.py (RecData.update_version_info): Patch from Jeff Raber to remove sqlite3 reference
(RecData.get_unique_values): Patch from buergi to get working with MySQL
2010-11-16 Thomas Mills Hinkle
* src/lib/reccard.py (DescriptionEditorModule.update_from_database):
Fix signal used for spinbutton for yield and any other
spinbuttons. (patch from Saulius Lukauskas)
* src/lib/plugins/import_export/mastercook_import_plugin/mastercook_plaintext_importer.py:
Patch from Saulius Lukauskas fixing column-matching/dash-matching
conflict that broke ingredient import.
2010-10-20 Thomas Hinkle
* src/lib/plugins/web_plugin/gourmetweb/templates/rec.html: Start
adding some style to web-based recipe view.
* src/lib/backends/db.py (RecData.add_column_to_table): Workaround
sqlalchemy 0.6.0 incompatability
* src/lib/plugins/nutritional_information/nutrition.py (NutritionData.get_nutinfo_for_ing):
Take into account amounts on recipes called as ingredients.
2010-08-01 Thomas Mills Hinkle
* src/lib/plugins/web_plugin/gourmetweb/templates/rec.html: Add
AJAX magic to do multiplication ajax-style when javascript is
available.
2010-07-30 Thomas Mills Hinkle
* src/lib/shopping.py: Refactor code -- move some code from
shopgui classes to front-end neutral ShoppingList class that can
be base class for HTML front-end.
* src/lib/shopgui.py: Refactor code to allow web-front-end
* src/lib/plugins/web_plugin/: Start a django-based web-front-end
to Gourmet
2010-07-21 Thomas M. Hinkle
* src/lib/version.py (version): Version->0.15.6
2010-07-20 Thomas M. Hinkle
* src/lib/plugins/import_export/web_import_plugin/generic_web_importer_plugin.py (GenericWebImporter.mimetypes):
Fixed bug in mimetypes, by adding expected application/xhtml+xml
type.
* src/lib/backends/db.py (RecData.get_criteria): Fix another
sqlalchemy-API-change-caused bug.
2010-07-13 Thomas M. Hinkle
* src/lib/backends/db.py (RecData.save): Try to work around
sqlalchemy bug that seems to through error on some (extra?)
commits.
2010-07-10 Thomas M. Hinkle
* src/lib/version.py (version): Version-->0.15.5
* src/lib/recindex.py (RecIndex.tree_keypress_cb): Handle Page-Up,
Page-Down, Home and End properly for our multiple page interface.
2010-07-09 Thomas M. Hinkle
* src/lib/backends/db.py (RecipeManager.parse_ingredient): Fix
typo/logic-error that prevented some units from being recognized.
* src/lib/* Get rid of raise + string calls, as python 2.6
prohibits them (patch from #2979619)
* src/lib/recindex.py (RecIndex.make_search_dic): Look anywhere in
text, not just at beginning. (fixes bug #3021913)
* src/lib/reccard.py (DescriptionEditorModule.save): Remove old
debug statements. Note to self: leaving in print statements is
dangerous, as it can raise unicode errors and create bugs where
all was well, as in bug #3018283
* glade/recCardIngredientsEditor.glade: Update ingredient editor tooltip.
2010-06-07 Thomas Mills Hinkle
* src/lib/backends/db.py (map_type_to_sqlalchemy): Use LargeBinary type if available (sqlalchemy 0.6+)
(RecData.get_unique_values): Fix boolean-related sqlalchemy 0.6+ bug.
* src/lib/importers/interactive_importer.py (InteractiveImporter.label_selection):
Fix error (we needed iter, we got mark) (patch from Jeff Spaleta)
(InteractiveImporter.set_text): Fix logic error (remove extra
newlines before parsing when it still matters).(patch from Jeff
Spaleta)
* src/lib/plugins/import_export/web_import_plugin/generic_web_importer_plugin.py (GenericWebImporter.test_url):
Check that content_type is iterable (modified version of patch
from Jeff Spaleta).
2010-05-19 Thomas M. Hinkle
* src/lib/db.py: Change name of ingredient_parser to
parse_ingredient (following naming conventions used everyone else
by pretty much everyone alive). Make this change throughout other
source files.
* src/lib/importers/generic_recipe_parser.py (RecipeParser): Fix
unicode/regexp issue with ing_matcher
2010-03-25 Thomas M. Hinkle
* src/lib/backends/db.py (RecData.update_version_info): Make sure
recipe_id doesn't already exist as a column before altering old
databases -- apparently we were wrong about when this change was
made.
2010-03-05 Thomas M. Hinkle
* src/lib/gglobals.py (FLOAT_REC_ATTRS): Add list of recipe
attributes that are floats (as opposed to ints, text, etc)
* src/lib/reccard.py (DescriptionEditorModule.save): Make sure
floating attributes (e.g. yields) get grabbed as values and not as
text.
* glade/recCardDescriptionEditor.glade: Make yields amount entry
accept decimals.
* src/lib/defaults/defaults_en.py (UNITS): ++drops
* src/lib/defaults/defaults_en_GB.py (UNITS): ++drops
* src/lib/reccard.py (IngredientTreeUI.ingtree_keypress_cb): Make
delete-key in ingredient editor view only work in treeview (same
as change made for main view on 2/9/2010).
2010-03-03 Thomas M. Hinkle
* src/lib/GourmetRecipeManager.py (GourmetApplication.get_attribute_model):
Don't bother caching the attribute models. It results in
inconsistency for the user and it's not that expensive to just
regenerate the lists each time we need them.
* defaults_en.py defaults_en_GB.py ++T. and t. as abbreviations
for Tablespoon and teaspoon
2010-02-09 Thomas M. Hinkle
* src/lib/GourmetRecipeManager.py (RecGui): Make
delete-key-deletes-recipe behavior a callback on keypresses only
in treeview. This prevents users using the delete key in the
search box from accidentally deleting recipes. Also, let backspace
delete recipes as well for convenience.
* src/lib/backends/db.py (RecData.get_criteria): Make sure search
strings are proper unicode objects. Fixes bug #2948135.
2010-01-16 Thomas M. Hinkle
* src/lib/version.py Version->0.15.4
* src/lib/plugins/import_export/web_import_plugin/webpage_importer.py (WebParser.postparse):
Strip extra newlines.
(MenuAndAdStrippingWebParser.cut_menus): Add more common website
nav class ID's (footer, header, sitemap).
(MenuAndAdStrippingWebParser.cut_menus): Don't ignore the whole
body tag, no matter what (fixes epicurious import)
* src/lib/importers/interactive_importer.py (InteractiveImporter.set_text):
Strip extra newlines.
2010-01-15 Thomas M. Hinkle
* src/lib/gtk_extras/thumbnail.py (check_for_thumbnail): Catch
non-ASCII characters in URLs.
2010-01-06 Thomas M. Hinkle
* src/lib/importers/interactive_importer.py (InteractiveImporter):
Replace text-tags in buffers with ComboBox widget that allows user
to change tag of marked-up region. Also, separated out giant list
of buttons into categories and made more suitable for wider and
shorter screens.
2010-01-02 Thomas M. Hinkle
* src/lib/plugins/key_editor/recipeEditorPlugin.py (IngredientKeyEditor.setup_tree):
Wrap text in treeview when it is too long; automatically reflow as
window is resized.
2009-12-29 Thomas M Hinkle
* src/lib/plugins/import_export/web_import_plugin/generic_web_importer_plugin.py (GenericWebImporter.test_file):
Add support for xhtml. Be fallback option whenever we match a file
pattern.
* src/lib/plugins/import_export/plaintext_plugin/plaintext_importer_plugin.py (PlainTextImporterPlugin.test_file):
Don't match *all* files as fallback options -- have a list of
"antipatterns" to exclude.
2009-12-18 Thomas M. Hinkle
* src/lib/gtk_extras/dialog_extras.py (SimpleFaqDialog.NESTED_MATCHER):
Fix bug in REGEXP in number-header parsing.
* src/lib/plugins/nutritional_information/databaseGrabber.py (DatabaseGrabber.parse_abbrevfile):
Remove old code.
* FAQ: Update FAQ (which was pretty seriously out-of-date).
2009-12-17 Thomas M. Hinkle
* src/lib/backends/db.py (RecData.validate_recdic): Ensure recipe
info is unicode.
* src/lib/check_encodings.py: Be less verbose.
* Version -> 0.15.3
* src/lib/plugins/nutritional_information/parser_data.py (NUTRITION_FIELDS): Update fields for SR21.
* src/lib/plugins/nutritional_information/nutritionGrabberGui.py (check_for_db):
Update DBs from SR20 (check if there are choline entries to see if
the DB is old).
* src/lib/plugins/nutritional_information/databaseGrabber.py (DatabaseGrabber.parse_abbrevfile):
Update fields when adding doesn't work.
* src/lib/plugins/nutritional_information/data_plugin.py (NutritionDataPlugin.update_version): Add new field (choline)
* src/lib/backends/db.py (RecData.update_version_info): Fix update
from versions < 0.11.x
* i18n/gourmet.pot: Update.
* i18n/POTFILES.in: Update to reflect current MANIFEST
* src/lib/plugins/nutritional_information/parser_data.py (NUTRITION_FIELDS):
Reorder fields and add choline for SR21 (they changed more than I
had first thought!)
2009-12-14 Thomas M. Hinkle
* src/lib/backends/db.py (RecData.update_version_info): Fix update
from versions < 0.11.x
2009-12-11 Thomas M. Hinkle
* src/lib/plugins/nutritional_information/nutrition.py (foo.SimpleInterface.print_info):
Be less verbose.
* src/lib/importers/importer.py (Importer.commit_rec): Make sure
we provide unicode strings to db.
* src/lib/reccard.py (IngredientEditorModule.quick_add): Make sure
we provide unicode strings to DB.
(DescriptionEditorModule.save): Make sure we provide unicode strings.
2009-12-02 Thomas M. Hinkle
* src/lib/check_encodings.py (GetFile.__init__): Divide lines
using built-in splitlines() function -- this fixes problems with
line breaks on e.g. mac text files.
* src/lib/importers/importManager.py (ImportManager.finish_web_import):
Print information about importer being used.
2009-12-01 Thomas M. Hinkle
* src/lib/GourmetRecipeManager.py (RecGui.setup_main_window): Add
right-click menu back to main interface (we use the contents of
the action menu for the right-click).
* src/lib/reccard.py (RecCardDisplay.update_yields_multiplier):
Fix updating of yield_unit on yield_change.
2009-11-29 Thomas M Hinkle
* src/lib/prefsGui.py (PreferencesGui): Make PreferencesGui
pluggable.
* src/lib/plugins/nutritional_information/__init__.py: ++
preferences plugin
* src/lib/plugins/nutritional_information/export_plugin.py (NutritionBaseExporterPlugin):
Add preference that allows user to turn off nutritional export
altogether or to turn it off when information is only partial.
* src/lib/plugin.py (BaseExporterPlugin.add_field): Add parameter
write_empty_field (which defaults to False) to determine whether
we add custom fields with no content.
(DatabasePlugin.remove): Change "deactivate" call to "remove",
which was what was intended (deactivate is called when the
pluggable is destroyed; remove is called when the plugin is
deactivated).
(PrefsPlugin): Add base class for adding tabs to preferences
dialog.
* src/lib/plugin_loader.py (MasterLoader.register_pluggable): Fix
typo.
* glade/preferenceDialog.glade: Remove hardcoded email
preferences (if we want them back, they belong in the email
plugin).
2009-11-22 Thomas M. Hinkle
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py (CustomUnitOption):
Add custom widget for setting margins that allows adjusting of
units (cm/inch/points).
(PdfPrefGetter.get_args_from_opts): Save page layout preferences
correctly.
* src/lib/gtk_extras/optionTable.py (OptionTable.createOptionWidgets):
Add CustomOption option for callers who want to provide their own
widget for setting an option.
* src/lib/plugins/nutritional_information/export_plugin.py (NutritionBaseExporterPlugin.get_nutritional_info_as_text_blob):
Escape items in case they have &s or other characters that screw
up XML.
2009-11-21 Thomas M. Hinkle
* src/lib/plugins/import_export/pdf_plugin/print_plugin.py (PDFRecipePrinter.begin_print):
Try to raise an error if there's a problem with the PDF.
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py (PdfPrefTable):
Use prefs to save pdf settings automatically.
* src/lib/gtk_extras/optionTable.py (OptionTable.createOptionWidgets):
Fix bug where having a default value of 0 made any other value
unsettable.
* src/lib/reccard.py (RecCardDisplay.print_cb): Move repetitive
code to printmanager.
* src/lib/exporters/printer.py (PrintManager.print_recipes): Move
basic printing code to PrintManager.
* src/lib/GourmetRecipeManager.py (ImporterExporter.print_recs):
Move repetitive print code to print manager so we can do things
like handle exceptions elegantly there.
2009-11-20 Thomas M. Hinkle
* src/lib/plugins/nutritional_information/export_plugin.py (NutritionBaseExporterPlugin.get_nutritional_info_as_text_blob):
Fix typo that broke printing.
* src/lib/GourmetRecipeManager.py (GourmetApplication.setup_recipes):
Clarify code around autosave.
* src/lib/plugins/nutritional_information/reccard_plugin.py (NutritionDisplayModule.enter_page):
Fix keyError bug on initialization.
* src/lib/plugins/nutritional_information/nutritionLabel.py (NutritionLabel.setup_yield_label):
Use singular form for "amount per ___" yield unit.
* src/lib/plugins/nutritional_information/export_plugin.py (NutritionBaseExporterPlugin.get_nutritional_info_as_text_blob):
Use singular form for "amount per ____" yield unit.
* src/lib/shopgui.py (ShopGui.setup_main): Don't show window
initially.
* src/lib/reccard.py (RecCardDisplay.update_yields_multiplier):
Use singular forms when settings yields to 1.
2009-11-19 Thomas M. Hinkle
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py (write_ingref):
Only write links that will work -- we do this by tracking which
recipes are going into our document and checking links against
that list of recipes.
* src/lib/plugins/import_export/pdf.gourmet-plugin.in: Change name
and description to reflect this plugin's new status as the primary
printing provider.
* src/lib/exporters/printer.py: Add simple message telling user
which plugin to install to get printing if there is no printing.
* src/lib/exporters/exporter.py (ExporterMultirec.append_referenced_recipes):
Add method to automatically append referenced recipes to the list
of recipes to be exported.
* src/lib/plugin_loader.py (MasterLoader.deactivate_plugin_set):
Fix typo that broke deactivation of plugins.
2009-11-17 Thomas M. Hinkle
* src/lib/GourmetRecipeManager.py (ImporterExporter.print_recs):
Use new printing API to print.
* src/lib/plugin.py (PrinterPlugin): Add new plugin for printing.
* src/lib/reccard.py (RecCardDisplay.print_cb): Use new printing
API to print.
* src/lib/shopgui.py (ShopGui.doSave): No longer use "lprprinter"
to do text save.
(ShopGui.printList): Use new printing API to print.
* src/lib/exporters/printer.py: Rewrite printer.py to use a plugin
architecture. If no plugins are available, no printing. The
expected plugin will be the PDF plugin using Reportlab.
* plugins/import_export/pdf_plugin/print_plugin.py: Create plugin
for new printing plugin architecture.
2009-11-06 Thomas M Hinkle
* src/lib/plugins/import_export/website_import_plugins/__init__.py (plugins):
++new AllRecipes plugin
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py (PdfPrefTable):
Add preference widget that can be embedded in print preview
dialog (in preparation for new printing back-end using
poppler+reportlab)
* src/lib/backends/db.py (RecData.update_version_info): Make sure
we do updates for 0.14.7 ++ for people updatings from versions
before 0.14
2009-11-01 Thomas M. Hinkle
* lib/GourmetRecipeManager.py Make sure all actions w/o icons are
marked as important (fixes Gourmet in horizontal-toolbar mode)
* lib/plugin.py ditto (fix Gourmet in horizontal-toolbar mode)
* lib/reccard.py ditto (fix Gourmet in horizontal-toolbar mode)
* lib/shopgui.py ditto (fix Gourmet in horizontal-toolbar mode)
* lib/gtk_extras/__init__.py (fix_action_group_importance): New
convenience method to make sure all actions in an ActionGroup that
don't have icons are marked important
2009-10-31 Thomas M Hinkle
* src/lib/plugins/key_editor/recipeEditorPlugin.py (IngredientKeyEditor.update_from_ingredient_editor_cb.process_row):
Handle groups correctly.
* README: Fix sql dependencies.
2009-08-26 Thomas Hinkle
* data/ABBREV.txt
* data/WEIGHT.txt
* data/FOOD_DES.txt update nutritional database version to SR21
2009-08-22 Thomas M Hinkle
* glade/recCardDisplay.glade: Fix add-to-shopping-list button (use stock id)
2009-08-18 Thomas M Hinkle
* src/lib/shopgui.py (ShopGui.__init__): Fix bug that screwed up
positions of panes in shopping list view.
2009-08-15 Thomas M Hinkle
* src/lib/version.py (version): Push version to 0.15.0 (will be
stable release -- dependencies, alas, have changed enough that
0.13.x has become unstable on up-to-date systems.
* create_manifest.py: Add style/ directory to manifest.
* src/test_gui.py (BasicTests.tearDown): Make sure processes
really die.
* src/lib/threadManager.py (ThreadManagerGui.__init__): Add title
to default dialog.
* src/lib/reccard.py (TextFieldEditor.setup_main_interface): Add
a11y names for all entries to help make dogtail-based testing
easier.
* src/lib/importers/interactive_importer.py: Fix default tags to
include tags for all text fields.
* src/lib/importers/importManager.py (ImportManager.offer_web_import):
Remove "." from dialog title (Enter website address)
* src/lib/importers/generic_recipe_parser.py (RecipeParser):
Include notes in list of fields automatically parsed.
(RecipeParser.ing_matcher): Fix typo in regexp that made any line
starting with the letter "a" look like in ingredient (require a
space between number or article and word)
* src/lib/gglobals.py (REC_ATTRS): Fix typo that put extra colon in yield unit field.
2009-08-06 Thomas M Hinkle
* src/lib/plugins/import_export/web_import_plugin/webpage_importer.py (WebParser.IGNORE):
Ignore style tag.
* src/lib/plugins/import_export/web_import_plugin/generic_web_importer_plugin.py (GenericWebImporter.get_importer):
Fix typo (get_web_importer -> self.get_web_importer
2009-08-03 Thomas M Hinkle
* src/lib/plugins/key_editor/keyEditor.py (KeyEditor.__init__):
Fix case of 'key' (error caused extra search to be run on
launching keyEditor.py)
(KeyStore.limit): Only limit if text has changed.
(KeyStore.get_recs): Fix recipe fetching (old DB change --
id->recipe_id in ingredients table)
2009-07-28 Thomas M Hinkle
* src/lib/reccard.py (RecCardDisplay.multiplication_change_cb):
Implement multiplication again.
2009-07-15 Thomas M Hinkle
* src/lib/ImageExtras.py (get_pixbuf_from_jpg): Create one unique
tempfile per session, rather than hardcoding name
gourmet_tempfile, which breaks Gourmet in multiuser
environments (bug #271712)
* windows/gtkrc: Remove custom theme to try to work around bug
with vertical notebooks (see bug #2768204)
* src/lib/plugin_loader.py (MasterLoader.load_plugin_directories):
Fix hardcoded / in glob path. Fix from Julianne Sharer.
2009-07-14 Thomas M Hinkle
* src/lib/importers/interactive_importer.py (InteractiveImporter.commit_changes):
Fix syntax error in last commit (parens).
* src/lib/defaults/defaults_de.py: Unicodify strings (u'')
* src/lib/convert.py (float_to_metric): Use integer format
code (%i) instead of string format-code which allows decimals to
slip through formatting algorithm when they shouldn't (and
non-localized decimals at that)
(float_string): Allow people with commas as decimal separators to
correctly parse recipes from period-separated locales where
unambiguous (e.g. 23.00 and not 23.000).
2009-06-27 Thomas Hinkle
* src/lib/importers/interactive_importer.py (InteractiveImporter.commit_changes.mark_sorter):
Handle markup in title of recipe in imageBrowser dialog window.
2009-06-18 Thomas Hinkle
* src/lib/* Get rid of old debugging print statements throughout library.
* src/lib/importers/interactive_importer.py (InteractiveImporter.setup_window):
Set parent to threadManagerGui dialog.
* src/lib/version.py: version->0.14.10
* src/lib/threadManager.py (ThreadManagerGui.__init__): Make
thread manager dialog transient for main Gourmet window if not
told who its transient for.
2009-06-17 Thomas Hinkle
* src/lib/plugins/import_export/gxml_plugin/gxml_exporter_plugin.py (GourmetExportChecker.check_attrs):
Fix tests (read files as utf-8)
* src/lib/plugins/nutritional_information/reccard_plugin.py: servings->yields
* src/lib/plugins/nutritional_information/nutritionLabel.py: servings->yields
* src/lib/plugins/nutritional_information/export_plugin.py (NutritionBaseExporterPlugin.get_nutritional_info_as_text_blob): servings->yields
* src/lib/GourmetRecipeManager.py (StuffThatShouldBePlugins.batch_edit_recs):
Remove obsolete FieldEditor (moved to plugin).
2009-06-17 Thomas M Hinkle
* src/lib/keymanager.py (KeyManager.__init__): Initialize categories again.
2009-06-16 Thomas Hinkle
* src/lib/plugins/nutritional_information/nutritionDruid.py (NutritionInfoDruid.apply_custom):
Fix custom information for fat.
2009-06-07 Thomas M Hinkle
* src/lib/recipeManager.py (DatabaseShopper.init_orgdic): Use new
initailize method of dbDic
(DatabaseShopper.init_pantry): Use new initialize method of dbDic
* src/lib/plugin_loader.py (MasterLoader.default_active_plugin_sets):
Fix typo in list of plugins (missing comma).
* src/lib/backends/db.py (dbDic.initialize): Add fast method for
initializing a dbDic from defaults (faster than adding rows one at
a time)
* src/lib/keyEditor: Get rid of cruft (moved to plugin long ago)
* src/lib/keymanager.py (KeyManager.__init__): Speed up
initialization of keydic. Don't initialize each word in keydic
from defaults (this should be part of the key editor plugin -- in
our default mode, our users don't really care about keys (they
always get the defaults) so we don't need to worry about setting
up the DB for search (which is costly and makes first load seem
unduly slow).
* src/lib/version.py (version): Version->0.14.9
2009-06-04 Thomas M Hinkle
* src/lib/plugin_loader.py (MasterLoader.default_active_plugin_sets):
Add spellcheck to plugins that default to on.
* src/lib/gtk_extras/TextBufferMarkup.py (PangoBuffer.get_text):
Ignore tags that we didn't put there (such as those from
gtkspell).
* src/lib/plugins/spellcheck*: Add spellcheck plugin (adds
automatic spell checking to all TextViews in recipe card editor.
* src/lib/convert.py (NUM_AND_FRACTION_REGEXP): Fix typo for
langauges without fraction support (ubuntu bug #352678)
* test_deb.sh: Wipe out packages installed by python2.6 as well.
* src/lib/reccard.py (RecCard.__init__): ++ get app if not handed
GRM instance.
* src/lib/plugin.py (RecEditorPlugin): ++documentation
* src/lib/gtk_extras/dialog_extras.py (MessageDialog.setup_dialog):
++title on dialog (helps out with testing w/ dogtail + just makes
sense).
2009-06-04 Thomas Hinkle
* src/lib/importers/interactive_importer.py: Add support for old
style "servings" tags to support legacy importer/markup scripts.
* src/lib/importers/importer.py (Importer.commit_rec): Make sure
yields is floated.
2009-05-30 Thomas Hinkle
* src/lib/reccard.py (RecSelector.ok): If recipe has a yields
value, ask user how much they would like to add (this allows user
to specify e.g. "3 cups" or "2 crusts", which is easier than
changing the amount of recipes, which is what shows up in the
ingredient list.
(YieldSelector): Dialog for selecting amount of recipe based on
yields value.
(getYieldSelection): Convenience function for grabbing amount of
recipe based on yields value (or not).
2009-05-30 Thomas M Hinkle
* src/lib/test_plugin_loader.py: Add simple plugin_loader test
file.
* src/lib/gtk_extras/dialog_extras.py (ProgressDialog.setup_buttons):
Bypass strange bug in pygtk with python2.6 which effectively
changes ToggleButton API
* Release 0.14.8
2009-05-29 Thomas M Hinkle
* gourmet.desktop.in (_Comment): Update description of app.
* setup.py (maybe_intltool): Apply patch from Rupert Swarbrick
which avoids running intltool-merge
when not necessary.
2009-05-28 Thomas M Hinkle
* MANIFEST: Don't include test_* files in MANIFEST.
2009-05-26 Thomas M Hinkle
* src/lib/plugins/browse_recipes/browser.py (RecipeBrowserView.build_base_model):
Don't include yields in browser.
2009-05-25 Thomas M Hinkle
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_importer_plugin.py (test_dir):
Look for sample recs in src/tests/recipe_files...
* src/lib/exporters/test_exportManager.py (TestExports.testSingleExport):
Improve error message when plugin's check_export method throws an
error.
2009-05-24 Thomas M Hinkle
* src/lib/importers/xml_importer.py (Converter.do_run): Make sure
we get added_recs from recHandler class.
* src/lib/importers/importer.py (Importer.__init__): Get
keymanager using new singleton access method.
* src/lib/importers/importManager.py (ImportManager.import_filenames):
make import_filenames return a list of importer instances that we
used.
2009-05-24 Thomas Hinkle
* src/lib/exporters/exportManager.py (ExportManager.get_extra_prefs):
Add method for handling of extra prefs (through UI or
automagically).
(do_multiple_export): Use get_extra_prefs / extra_prefs parameter
(ExportManager.do_single_export): Use get_extra_prefs /
extra_prefs parameter
2009-05-24 Thomas M Hinkle
* src/lib/plugins/import_export/gxml_plugin/gxml_exporter_plugin.py (GourmetExportChecker):
Add class for testing exports for validity.
(GourmetExporterPlugin.check_export): Run export checker.
* src/lib/exporters/test_exportManager.py (TestExports.testSingleExport):
Run plugin's check_export script if it has one (allows plugins to
implement their own test).
* src/lib/reccard.py (IngredientController.get_extra_ingredient_attributes):
Don't throw error if item is blank/None
2009-05-23 Thomas M Hinkle
* src/tests/recipe_files/mealmaster.mmf: Add custom yield (6 puffs
for Almond puff)
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_importer.py (mmf_importer.handle_line):
Add support for yields units other than servingts.
2009-05-19 Thomas Hinkle
* src/lib/exporters/exporter.py (exporter.__init__._grab_attr_):
Fix handling of yield/yield unit output.
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter_plugin.py (PdfExporterPlugin.get_default_prefs):
Use DEFAULT_PDF_ARGS for default PDF prefs.
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py: Update default PDF args.
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_exporter_plugin.py (MealmasterExporterPlugin.get_multiple_exporter):
Remove obsolete args (conv/prog)
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_exporter.py (mealmaster_exporter.__init__):
Get mealmaster_importer from plugin, not from obsolete location
inside Gourmet's main libraries.
* src/lib/plugins/import_export/html_plugin/html_exporter.py (website_exporter): Update servings->yields
* (Head): Rename test suites (*_tests.py -> test_*). I had
preferred the alphabetization of *_tests.py, but a number of
unittest tools are written to work only the other way.
2009-05-17 Thomas Hinkle
* src/lib/plugins/nutritional_information/nutrition.py (NutritionData.get_nutinfo_for_ing):
Catch very unusual corner case where i.rangeamount and i.amount
don't add cleanly (this means something's wrong with the inputs --
but the least we can do is display a nicer error message).
* src/lib/backends/db_tests.py (TestMoreDataStuff.test_modify_rec):
Add test to make sure modify_rec is working.
(TestMoreDataStuff.test_modify_ing): Add test to make sure
modify_ing is working (this would have caught the regression in my
last commit).
* src/lib/backends/db.py (RecData.add_ings): Move fix previously
put in validate_ingdic here (putting it in validate_ingdic has bad
side effects -- oops)
(validate_ingdic): Remove code put here earlier today (it caused
modify_ing, etc. to delete data)
* src/lib/importers/importer_tests.py: Add new test suites for
base import class (including test against regression of today's
new bugfix)
* src/test_gourmet.py: Add new tests suites.
* src/lib/importers/interactive_importer_tests.py: basic test
suite for interactive importer (created to track down bug with
"disappearing" ingredient units).
* src/lib/importers/importer.py (RatingConverter.get_conversions):
Fix converter (bad import call)
* src/lib/backends/db.py (RecData.validate_ingdic): Make sure
ingdic includes keys for all columns. This avoids a very nasty bug
when executing an insert statement with more than one
row (basically, we'd drop random columns if the rows didn't all
have the same columns).
2009-05-16 Thomas Hinkle
* src/test_gourmet.py: Add unit testing script (currently tests DB
and convert backends.)
* src/lib/backends/db_tests.py: Convert db tests to use unittest
module.
* src/lib/convert_tests.py: Add testing file for our convert module.
2009-05-15 Thomas Hinkle
* src/tests/recipe_files/athenos.mx2: Add test mastercook file for importing.
src/lib/plugins/import_export/gxml_plugin/gxml2_importer.py (RecHandler.endElement):
Add code for parsing yields field into yields and yields_unit.
* src/lib/plugins/import_export/gxml_plugin/gxml2_exporter.py (recipe_table_to_xml.__init__):
Change servings to yields.
* src/lib/backends/db_tests.py (test_unicode): Extend tests of
unicode support.
2009-05-10 Thomas Hinkle
* src/lib/importers/xml_importer.py (Converter.__init__): Get rid
of self.name assignment (Thread throws an error otherwise)
* src/lib/backends/db.py (RecData._force_unicode): Force unicode
for modify methods as well (fixes traceback on import with
non-unicode text that was getting fed straight to sqlite.
2009-05-07 Thomas Hinkle
* src/lib/exporters/exporter.py (exporter_mult._grab_attr_): Add yields/yield_unit
(exporter.__init__._grab_attr_): Add support for yields/yield_unit
2009-05-05 Thomas Hinkle
* src/lib/threadManager.py (SuspendableThread.__init__): Don't set name attribute on Thread (pass it to Thread.__init__() call (setting name throws an error in python 2.6)
* src/lib/plugins/import_export/web_import_plugin/webpage_importer.py (WebParser.__init__):
No longer set name attribute (this breaks the python 2.6
implementation of Thread)
* src/lib/importers/interactive_importer.py: Add yield_unit to
buttons.
2009-05-01 Thomas Hinkle
* src/lib/recipeIdentifier.py (get_ingredient_hash): md5 ->
hashlib (remove deprecated md5 lib)
* src/lib/gtk_extras/thumbnail.py (check_for_thumbnail): md5 ->
hashlib (remove deprecated md5 lib)
* src/lib/backends/db.py : Fix unicode type errors from sqlalchemy.
* src/lib/*: Change servings->yields
2009-03-27 Thomas Hinkle
* src/lib/exporters/exportManager.py (ExportManager.offer_multiple_export):
Include any recipes linked to in your recipes in your export.
* src/lib/backends/db.py (RecData.include_linked_recipes): Add
convenience method to append linked recipes (from
recipe-as-ingredient) to a list of recipes.
2009-03-26 Thomas Hinkle
* src/lib/gtk_extras/dialog_extras.py (saveas_file): If we can't
guess our file type based on the extension, use whatever is
selected in the filetype combo box as fallback.
* src/lib/exporters/exportManager.py (ExportManager.offer_multiple_export):
Show error message if we don't get an export type.
* src/lib/backends/db.py (RecData.get_amount_and_unit): Don't
require conv argument to be passed (switching to singleton design
pattern...)
2009-03-26 Artis Rozentāls
* src/lib/plugins/nutritional_information/nutrition.py (NutritionData.set_key_from_ndbno):
Fix association editing.
2009-03-24 Thomas Hinkle
* src/lib/plugins/import_export/html_plugin/html_exporter_plugin.py (HtmlExporterPlugin.get_multiple_exporter):
Eliminate obsolete arguments (progress_func is no longer needed
with our new signal interface and converters are now gotten using
a singleton design pattern.
2009-03-14 Thomas Hinkle
* src/lib/plugin_gui.py (PluginChooser.do_change_plugin): Display
error to user when loading a plugin fails. Give suggestions as to
how to install dependencies in case of import error.
* src/lib/plugin_loader.py (MasterLoader): Remove key_editor from
default plugin set. This is a lot of functionality to put on
people who don't want it -- removing it greatly simplifies Gourmet
for those not interested.
(MasterLoader.__init__): Add class variable 'errors' to keep track
of errors raised in instantiating plugins, etc. This allows
plugin_gui to display these errors to users. Use this variable
when instantiating PluginSets to keep track of error messages our
users may want.
2009-03-07 Thomas Hinkle
* src/lib/shopgui.py (ShopGui): Prevent ShopGui window from
getting destroyed on delete-event (when user closes window from WM
control).
2009-03-01 Thomas Hinkle
* src/lib/shopgui.py (ShopGui.item_added): Make sure added items
don't end up in the pantry.
2009-02-28 Thomas Hinkle
* src/lib/plugins/listsaver: Added plugin (this was in the tarball
released earlier, but had accidentally not been added to CVS).
2009-02-22 Thomas Mills Hinkle
* src/lib/plugins/key_editor/recipeEditorPlugin.py (IngredientKeyEditor.update_from_ingredient_editor_cb):
Fix typo that caused weirdness in ingredient key editor
view (where key of last ingredient in list got propogated to
ingredients as they were added).
(IngredientKeyEditor.update_from_ingredient_editor_cb): Actually
guess the key using keyManager rather than just cutting off key
after the semicolon.
* src/lib/reccard.py (IngredientEditor): Remove old
IngredientEditor class (This has all been simplified or moved to
plugins).
* src/lib/keymanager.py (KeyManager.look_for_key): Change math on
key lookup slightly so that multi-word keys such as "chocolate
chips" get penalized when matching on single-word
items ("chocolate"), just as we would punish "chocolate" for being
only one word in "chocolate chips".
* src/lib/plugins/key_editor/keyEditor.py (KeyEditor.__init__):
Create our own keymodel (old use of rg.rd.inginfo is obsolete).
2009-02-21 Thomas Mills Hinkle
* src/lib/version.py - Version-> 0.14.7. Released 0.14.7
tarball+deb to SF
2009-02-21 Thomas Mills Hinkle
* src/lib/plugins/nutritional_information/main_plugin.py (NutritionMainPlugin.activate):
Fix add_icon call.
* src/lib/plugins/nutritional_information/__init__.py (plugins): Add shopping list plugin
* src/lib/shopgui.py (ui): Add placeholder to file menu for
plugins to add things above "close".
(ShopGui.__init__): Add ShoppingListPlugin
* src/lib/reccard.py (IngredientEditorModule.add_ingredient_from_line):
Fix ingredient-adding for lines with no amount.
* src/lib/plugin.py (ShoppingListPlugin.__init__): Fix
ShoppingListPlugin API (no menu_bars params necessary, just a ui
string)
* src/lib/gglobals.py (add_icon): Fix add_icon to work as
advertised.
2009-02-19 Thomas Hinkle
* src/lib/GourmetRecipeManager.py (GourmetApplication.setup_prefs):
Use singleton method to get prefs
(GourmetApplication.setup_shopping): No arguments necessary now to
get ShopGUI
2009-02-18 Thomas Mills Hinkle
* src/lib/plugin.py (ShoppingListPlugin): Add ShoppingListPlugin
class.
* src/lib/shopgui.py: Complete overhaul of the shopping UI -- we
now use a UIManager based GUI in place of the glade-based one from
previous Gourmet versions. This allows us to be easily pluggable,
among other things. In addition to converting the interface, a
"Change Category" button has been added to the toolbar so that it
does not require right-clicking to discover (those right-clicking
still works).
2009-02-16 Thomas Hinkle
* src/lib/plugins/python_shell/ipython_view.py: Import IPython
outright -- if there's an ImportError, let the plugin fail to
instantiate (this makes sense, since the plugin won't work without
IPython)
* src/lib/exporters/exporter.py (exporter.__init__.handle_markup):
Handle case where handle_markup is handed None
* Release 0.14.6 tarball and .deb to SF.net
* src/lib/check_encodings.py (EncodingDialog): Fix type on encodings.
(EncodingDialog.diff_texts): Make sure we base our diffs on the
encoding with the most lines. Otherwise, utf-16 screws us up in
most cases so the diff-view no longer works properly.
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter.py (PdfExporter.__init__):
Sshhh.
* src/lib/gtk_extras/dialog_extras.py (MessageDialog): Allow
passing modal=False to make this a non-modal dialog.
* src/lib/GourmetRecipeManager.py (RecGui.offer_url): Make dialog
non-modal -- the modal dialog was freezing up Gourmet after user
clicked "Jump to" button.
2009-02-15 Thomas Mills Hinkle
* src/lib/plugins/nutritional_information/databaseGrabber.py (DatabaseGrabber.parse_abbrevfile):
Use new do_add_fast and commit_fast_adds method to drastically
speed-up initial population of nutritional DB
(DatabaseGrabber.parse_weightfile): Use new do_add_fast and
commit_fast_adds method to drastically speed-up initial population
of nutritional DB.
* src/lib/backends/db.py (RecData.do_add_fast): Add method that
uses sqlite (bypassing sqlalchemy) to add to the DB. This
substantially speeds up adding things to the DB. The method
returns nothing (unlike do_add, which returns a reference to the
added object) and we need to call commit_fast_adds in order to
commit the additions to the DB.
(RecData.commit_fast_adds): A method to commit anything added
using do_add_fast
2009-02-13 Thomas Mills Hinkle
* src/lib/plugins/shopping_associations/shopping_key_editor_plugin.py (KeyEditorPlugin):
Add text box that allows editing shopping category for multiple
selected ingredient keys at a time.
* src/lib/plugins/nutritional_information/data_plugin.py (NutritionDataPlugin.create_tables):
Use Text() type from sqlalchemy instead of deprecated
String(length=None)
* src/lib/plugins/key_editor/recipeEditorPlugin.py (IngredientKeyEditor.setup_main_interface):
Make TreeView allow multiple selections so we can do actions on
multiple keys at once.
(IngredientKeyEditor.setup_main_interface): Setup any extra
widgets provided by plugins.
* src/lib/plugins/key_editor/keyEditorPluggable.py (KeyEditorPlugin):
Update API to allow plugins to provide a widget for changing value
for all selected rows.
* src/lib/backends/db.py (RecData.alter_table): Use embedded
select in insert statement rather than pythonic for-loop to loop
through data -- this is enormously faster.
* src/lib/reccard.py (RecEditor.ui): Remove KeyEditor (moved to plugin)
(UndoableTreeStuff.record_positions): Fix mess with attribute name changes.
* src/lib/GourmetRecipeManager.py (GourmetApplication.show_about):
Remove colons from strings marked for translation.
2009-02-08 Thomas Mills Hinkle
* src/lib/plugins/key_editor/keyEditor.py (KeyEditor.tree_edited):
rd.update -> rd.update_by_criteria (correct method name)
* src/lib/defaults/defaults.py: Fix SF bug #1947796 where calling
Gourmet with an unsupported locale broke Gourmet and made it fail
to start.
2009-02-07 Thomas Mills Hinkle
* glade/recCardIngredientsEditor.glade: Simplify ingredient
interface -- remove detailed expander widget. We now simply have
an "Add" textbox and a list of ingredients. All of the complexity
of ingredient keys is hidden in this view now, leaving our basic
interface simpler and cleaner.
* src/lib/plugin.py (RecEditorPlugin): Create RecEditorPlugin
class.
(RecEditorModule.__gsignals__): Add signals 'saved' and
'toggle-edited' to RecEditorModule for communicating state-changes
of individual modules.
(IngredientControllerPlugin): ++IngredientControllerPlugin.
* src/lib/reccard.py (RecEditor.add_plugin): Rework
plugin-interface as part of making ingkey-editor plugin a recipe
card editor module.
(DescriptionEditorModule.save): Use new signal interface to
indicate saved.
(IngredientController): Make controller pluggable so that plugins
can add info to ingredients if they like.
(IngredientTreeUI.setup_columns): Remove ingredient key and
shopping category from standard treeview -- these are now only
visible with plugins.
* src/lib/version.py (version): Version->0.14.6
2009-02-03 Thomas Hinkle
* src/lib/defaults/defaults_en_GB.py: Replace missing
comma (syntax error)
* src/lib/version.py: Version->0.14.5 for release
* src/lib/reccard.py: Change icon to new recipe card/editor icons.
2009-02-01 Thomas Mills Hinkle
* src/lib/plugins/key_editor/keyeditor.glade: Remove "Edit
nutritional info" button.
* src/lib/plugins/key_editor/keyEditor.py (KeyEditor): Remove
references to nutritional info. Update to work with current DB
front-end.
* src/lib/gtk_extras/treeview_extras.py (selectionSaver.add_selection):
Fix mysterious bug that occurred when we tried to use sqlalchemy
0.5 rowobjects as dictionary keys.
(selectionSaver.restore_selections): Fix mysterious bug that
occurred when we tried to use sqlalchemy 0.5 rowobjects as
dictionary keys.
* src/lib/backends/db.py (RecData.get_ingkeys_with_count):
Implement the functionality needed for a keyEditor interface.
* src/lib/gglobals.py: ++ png icons for reccard and reccard_edit.
2009-01-31 Thomas Mills Hinkle
* src/lib/plugins/unit_display_prefs: New plugin that allows user
to specify which kinds of units to display, resulting in
displaying e.g. all metric units without the need to tinker with
the underlying data.
* src/lib/defaults/defaults_en_GB.py (CONVERTER_TABLE): Add units for
non-American cups (Japanese cup, metric cup, imperial cup,
imperial pint).
* src/lib/defaults/defaults_en.py (CONVERTER_TABLE): same change as defaults_en.py
* src/lib/defaults/defaults.py (unit_rounding_guide): Add
parameter unit_rounding_guide (which can be overridden in the
defaults_XX files). This allows us to hone what kinds of decimal
values we show for different units.
* src/lib/backends/db.py (RecData.get_amount_and_unit): Make
get_amount_and_unit take arguments favor_current_unit and
preferred_unit_group to allow further control over how it handles
conversion. Also make pluggable, enabling our new
unit_display_prefs plugin to do its work.
* src/lib/shopping.py (Shopper._ing_compare): Disable special
ingorder comparisons, falling back to alphabetical. In the future,
it would be worth looking into what was implemented and why it was
failing -- I've simply disabled the functionality since it wasn't
working properly anyway.
* src/lib/reccard.py (RecCardDisplay.toggle_readable_units_cb):
Fix reference to obsolete method resetIngList (replaced by
display_ingredients)
* src/lib/plugin_loader.py (Pluggable.run_pre_hook): Changed API
around pre_hook -- pre-hooks can now modify the args fed to the
function they're hooking around by returning args,kwargs as the
return value. If they don't return a tuple and a dictionary, then
we fail with a warning (this means the old API will fail with a
warning until I update old plugins that use this).
(pluggable_method._): Changed pre-hook API (see above)
* src/lib/convert.py (float_to_metric): Changes to float-to-metric
to allow rounding based on an approx value rather than always
assuming we want 2 decimal points.
(float_to_frac): Return a simple integer if we're within approx of
an integer.
(Converter.adjust_unit): Accept a parameter
preferred_unit_groups. If we have this parameter, we look for
conversions within our preferred groups and convert if possible. A
group could be, e.g. metric mass, metric volume, imperial volume,
etc., as defined in UNIT_GROUPS in defaults.
(Converter.readability_score): Adjust scoring algorithm: being a
weird decimal is less bad than being out of the defined range (I
was getting values like 2034 mL instead of 2 L because it
preferred the integer (2034) to the decimal even though the
integer was outside the preferred range for mL).
2009-01-28 Thomas Mills Hinkle
* src/lib/reccard.py: Add shop-recipe to menus. Add key commands
for most menu items.
* glade/shopList.glade: Remove nutritional info button/icon (this
should become a plugin anyway)
* test_deb.sh (LATEST_DEB): Remove python version specificity.
* Released 0.14.4 to SF as .deb and .tar.gz
* src/lib/gtk_extras/treeview_extras.py (selectionSaver.restore_selections):
Change variable names from iter->itr (to avoid unintended
consequences). Unsuccessfully trying to get at mysterious
traceback in restore_selections and add_selection (somehow builtin
dictionary method get() is not working).
* images/reccard.ico: Added reccard icon
* images/Nutrition.png: Moved to the plugin
* src/lib/plugins/nutritional_information/images/Nutrition.png: Moved from images/
2009-01-27 Thomas Mills Hinkle
* create_manifest.py: Add png's to plugin files to include; add images/*.ico to included files.
* gourmet.desktop.in (Categories): Category->Utility
* setup.py: Apply debian patch; include png etc.
* src/lib/plugins/nutritional_information/main_plugin.py (NutritionMainPlugin.activate):
Add nutritional icon.
* src/lib/plugins/import_export/website_import_plugins/foodnetwork_plugin.py (test_url):
Be less verbose.
* src/lib/plugins/import_export/website_import_plugins/about_dot_com_plugin.py (test_url):
Be less verbose.
* src/lib/gtk_extras/treeview_extras.py: Remove python version
dependency
* src/lib/version.py (version): Version->0.14.4
(copyright): ++2009
* src/lib/threadManager.py (ThreadManagerGui): Fix resizing
ugliness on table (it's still ugly, but less so)
* src/lib/reccard.py (RecCardDisplay.setup_main_window): Add icon
(RecEditor.setup_main_interface): Add icon
* src/lib/gglobals.py (add_icon): Rework code for adding icons to
make it easy for plugins to add stock icons using the convenience
function add_icon
* src/lib/gdebug.py: Remove python version dependency.
* src/lib/GourmetRecipeManager.py (RecGui.setup_main_window): Add icon to window.
2009-01-19 Thomas Mills Hinkle
* src/lib/timeScanner.py (make_time_links): Remove line that
escaped text automatically (caller can handle escaping)
2009-01-18 Thomas Mills Hinkle
* src/lib/gtk_extras/TextBufferMarkup.py (PangoBuffer.set_text):
Give a better error message when we have problems with unescaped
text.
* src/lib/gtk_extras/LinkedTextView.py (set_text): Remove line
that unescapes incoming text (this was an attempt to fix another
bug in the wrong place, but it causes problems when the clients
are behaving properly...)
(set_text): Remove line that unescapes incoming text (see above
comment about dumb fixes creating more problems than they solve).
* src/lib/plugins/python_shell/ipython_view.py: Eitan Isaacson's
IPython console widget, with a few modifications.
* src/lib/plugins/python_shell/__init__.py (ConsolePlugin): Plugin
to allow access to a python shell from within Gourmet. This is
incredibly handy for testing/development. It also allows a
super-geeky user to modify their DB on the fly etc.
* src/lib/plugins/field_editor/__init__.py (FieldEditorPlugin.show_field_editor):
Grab GourmetApplication singleton rather than relying on pluggable
being the GourmetApp, which it isn't always.
* src/lib/plugins/browse_recipes/browser.py (RecipeBrowserView):
to selection-multiple mode
(RecipeBrowserView.get_selected_recipes): Add handy method to grab
selected recs.
(RecipeBrowserView.reset_model): Add handy method to reset model
in response to DB updates.
* src/lib/plugins/browse_recipes/__init__.py (BrowserPlugin): Set
up hooks so that actions-on-recipes work (add-to-shopping list,
delete, etc)
* src/lib/backends/db.py (RecData.fetch_count): Fix fetch_count to
actually work as described. Previously, it ignored criteria.
(RecData.fetch_len): Fix fetch_len to actually use criteria.
* src/lib/plugin_loader.py (Pluggable.run_post_hook): Post hooks
should be allowed to modify the return value -- now they're
required to do so (otherwise they change the return value of the
method to None, of course.
* src/lib/GourmetRecipeManager.py (RecGui.get_selected_recs_from_rec_tree):
Add this method here as a pluggable_method so that plugins can
implement recipe browsers/search of their own and have it work
with actions that require selected recipes.
(RecGui.update_recipe): Make pluggable
(RecGui.redo_search): Make pluggable
(RecGui.delete_open_card_carefully): Use
get_selected_recs_from_rec_tree for deletion (this allows plugins
to simply modify get_selected_recs_from_rec_tree and have deletion
of selected recipes work right)
(RecGui.rec_tree_delete_recs): Add call to show user a message
telling them they've deleted recipes and offering undo.
(RecGui.setup_delete_messagebox): Method to set up a message to
user offering undo after delete.
2009-01-16 Thomas Mills Hinkle
* src/lib/plugins/field_editor.gourmet-plugin.in: Added field
editor plugin (provides material previously in valueEditor
module).
* src/lib/GourmetRecipeManager.py (showValueEditor): Removed value
editor -- this is now a plugin (field-editor).
* src/lib/ValueEditor.py - removed file (moved to field_editor plugin)
2009-01-13 Thomas Hinkle
* src/lib/plugins/browse_recipes/images/cooktime_empty_clock.png:
Adjust pixel height so preptime and cooktime clock-pie-wedges can
be drawn with same size and position
* src/lib/batchEditor.py (BatchEditor.setup_glade): Use new
gglobals-based custom handler system.
* src/lib/GourmetRecipeManager.py (StuffThatShouldBePlugins.batch_edit_recs):
Fix batch edit callback (self.update_rec_iter ->
self.rmodel.update_recipe
2009-01-13 Thomas Mills Hinkle
* src/lib/backends/db.py (RecData.fetch_count): Correctly alias
select "COUNT AS COUNT" using sqlalchemy's "label" keyword,
avoiding ugly hack that fails in 0.5 anyway.
* src/lib/exporters/exportManager.py (ExportManager.do_single_export):
Fix API for exporting single recipes (this fixes recipe export
from recipe card view).
2009-01-12 Thomas Mills Hinkle
* src/lib/backends/db.py (make_order_by): Sort nulls last
(RecData.search_recipes): Special case sorting of 'rating' (the
default feels backwards)
2009-01-11 Thomas Hinkle
* src/lib/plugins/browse_recipes/browser.py (RecipeBrowser.append_button):
Use i18n'd text rather than attribute names themselves for
breadcrumbs buttons.
(RecipeBrowserView.get_pixbuf): Use generic icons differentiated
by attribute (source, category, etc)
(RecipeBrowserView.build_base_model): Don't browse by link attribute.
(RecipeBrowserView.get_base_icon): Use base icons from icon_helpers.py
* src/lib/plugins/browse_recipes/icon_helpers.py (get_pixbuf_from_image):
Add the rest of the icons.
2009-01-11 Thomas Mills Hinkle
* src/lib/importers/imageBrowser.py (ImageBrowserDialog.setup_dialog):
Fix giant-dialog-window problem caused when Progressbar gets
super-long text (e.g. if an image name is gigantic). Fixes Ubuntu
bug #289861
* src/lib/backends/db.py (make_simple_select_arg): Update in_()
call to comply with SQLAlchemy 0.5 API change.
2009-01-10 Thomas Mills Hinkle
* src/lib/backends/db.py (RecData._setup_object_for_table): All
tables need an explicit primary key declared now -- sqlalchemy no
longer supports implicit oid/rowid in 0.5
(RecData.setup_info_table): Add sqlite rowid column to table
explicitly.
* src/lib/plugin.py (MainPlugin): Add base methods to MainPlugin
to make it easy to add a tab to main interface (add_tab)
* src/lib/GourmetRecipeManager.py (RecGui.setup_main_window): Add
notebook to which plugins can add tabs.
2009-01-07 Thomas Mills Hinkle
* src/lib/plugins/nutritional_information/parser_data.py (ABBREVS):
Remove RED as abbreviation (and add more specification
abbreviations like RED NA, RED FAT, RED CAL). (bug # 2492442)
* src/lib/plugins/browse_recipes/* Implement basic recipe browsing
interface as alternative to search (a new plugin).
2009-01-03 Thomas Hinkle
* src/lib/plugins/duplicate_finder/recipeMerger.glade: Add
auto-merge button to glade file. Rename some buttons for
convenient handling from recipeMerger dialog.
* src/lib/importers/plaintext_importer.py (TextImporter.pre_run):
Change attribute total to total_lines to avoid confusing ourbase
class into thinking that we know how many recipes have based on
how many lines we have (this fixes a bug where users would see
something like "Imported 56 of 5000 recipes" for a 5000 lines text
file with 56 recipes in it).
* src/lib/importers/importManager.py (ImportManager.__init__): Add
support for ImportManager plugins (which are separate from our
standard ImporterPlugins). This allows our RecipeMerger plugin to
add a post-import hook.
* src/lib/plugin.py (ImportManagerPlugin): Add base class for
plugings that modify the ImportManager itself (not new import
plugins which are already covered by the ImporterPlugin)
* src/lib/plugins/duplicate_finder/recipeMergerPlugin.py (RecipeMergerImportManagerPlugin):
Separate out plugin that adds a check for duplicates after new
imports
* src/lib/plugins/duplicate_finder/recipeMerger.py (RecipeMergerDialog.merge_next_recipe):
Add label to interface showing how many recipes have been merged
so far (giving user a sense of progress).
(RecipeMergerDialog): Add last_modified time to list of attributes
shown to user so they can see which recipe is older/newer.
(RecipeMergerDialog.offer_auto_merge): Add option to automatically
merge, always selecting for newer or older recipes.
* src/lib/GourmetRecipeManager.py (GourmetApplication.setup_recipes):
Remove misleading catchall database connection error message
* src/lib/check_encodings.py (getEncoding): Fix typo that broke
encoding dialog by always returning ascii
2008-12-28 Thomas Mills Hinkle
* README: Cut down README to keep it from going out of date so
fast; update README to describe plugin system; add reportlab as a
requirement.
2008-12-22 Thomas Hinkle
* src/lib/plugins/import_export/mealmaster_plugin/mealmaster_exporter_plugin.py (MealmasterExporterPlugin):
Mealmaster file are text/plain, not text/html
* src/lib/plugins/import_export/gxml_plugin/gxml_exporter_plugin.py (GourmetExporterPlugin.get_multiple_exporter):
Remove obsolete references to progress_func
* src/lib/plugins/import_export/gxml_plugin/gxml2_exporter.py (__init__):
Remove obsolete references to progress_func
* src/lib/plugins/import_export/pdf_plugin/pdf_exporter_plugin.py (PdfExporterPlugin.get_default_prefs):
Add method to bypass prefs dialog when necessary.
* src/lib/gtk_extras/dialog_extras.py (get_type_for_filters):
Separate function to grab the type of a file based on the filters
used to save it. Split this out of the functions that get the
actual file.
* src/lib/exporters/exportManager.py (ExportManager): Split off
separate do_multiple_export and do_single_export methods to allow
outside functions/plugins to use exporters without having the user
select the file name/type through the UI.
* src/lib/backends/db.py (RecData.backup_db): Warn user when doing
a DB update with little/no feedback on progress.
* src/lib/plugin.py (ExporterPlugin): Add get_default_prefs method
as alternative to run_extra_prefs_dialog (to enable full
automation, for example, of libraries that like to ask users for
prefs)
* src/lib/plugins/email_plugin/*: Pluginify email
functionality. We now just support PDF and plain text (the HTML
was a failed attempt to write HTML email anyway)
* TESTS: Add some more tests we should do before stable releases.
2008-12-21 Thomas Hinkle
* src/lib/plugins/import_export/plaintext.gourmet-plugin.in (_Comment):
++export.
* src/lib/plugins/import_export/plaintext_plugin/__init__.py: Add
plaintext_exporter to plaintext_plugin.
* src/lib/backends/db.py (RecData.backup_db): Let user know when
we're doing a potentially slow DB upgrade (note that this is
implemented directly in GTK so the DB code now depends on GTK at
least in the upgrade spot; if we ever properly abstract the DB for
another front-end we'll need to rework this.
* src/lib/plugin.py (BaseExporterPlugin.add_field.do_write): Don't
pass mark-up to exporters that expect plain text.
2008-12-19 Thomas Hinkle
* src/tests/testImporters.py (ImportTestCase.testArchive): Add
test of archive plugin
* src/lib/plugins/import_export/archive_plugin/zip_importer_plugin.py (ArchiveImporterPlugin.test_file):
Fix file pattern matching using fnmatch.
* glade/preferenceDialog.glade: Hide label for removing items you
don't use from recipe card interface, since this interface isn't
currently functional anyway.
* src/lib/exporters/exporter.py (exporter): Create new
ALLOW_PLUGINS_TO_WRITE_NEW_FIELDS attribute (defaults to True).
* src/lib/plugins/import_export/gxml_plugin/gxml2_exporter.py (rec_to_xml):
Don't allow plugins to create new fields since supposedly we could
be creating valid XML and plugins would create a moving target.
* src/lib/plugin.py (BaseExporterPlugin.add_field.do_write):
Respect new exporter attribute ALLOW_PLUGINS_TO_WRITE_NEW_FIELDS
which allows exporters to prevent their write_attr/write_text
methods from being called with new plugin-invented fields
* src/lib/importers/importManager.py (ImportManager.get_filters):
Remove repeat filetypes in file dialog filter dropdown + add "All
importable files" filter as default file filter.
* src/lib/check_encodings.py (EncodingDialog.create_options): Make
encodings in encoding choosing dialog follow order given in source
code for encodings/all_encodings (presumably the order of common
to uncommon).
(getEncoding): If user cancels dialog, give them the first
encoding on the list rather than throwing an error.
2008-12-19 Thomas Mills Hinkle