2003-08-08  Jan Alonzo <jmalonzo@spaceants.org>
	* src/lib/MainWindow.py:  Fixed render_feed to check for empty
	  string in item title/description as well. See comment in code.
	  delete_event fixes.

2003-08-07  Jan Alonzo  <jmalonzo@spaceants.org>
	* glade/straw.glade:  Changed OfflineDialog text. Changed
	  PrefsDialog signal handler, delete event instead of destroy.
	* src/lib/PreferencesDialog.py:  Add handler for delete event.
	  Removed destroy event handler. Plus couple of fixes.
	* src/lib/URLFetch.py:  Fixed bug #4642.
	* glade/strings.c:  String changes to straw.glade.
	* src/lib/FeedList.py:  Put feed type checking in a try statement,
	  not on 'if'.

2003-08-03  Jan Alonzo  <jmalonzo@spaceants.org>
	* src/lib/rssparser.py:  Fixed missing guidislink in RSSParser.
	* src/lib/MainWindow.py:  Fixed entity converting. Couple of fixes.

2003-07-30  Jan Alonzo  <jmalonzo@spaceants.org>
	* src/lib/OfflineDialog.py: Fixed misspelled method on_affline_dia...
	* src/lib/URLFetch.py: Modified zero-length response to 'feed is
	  empty' instead of 'connection closed prematurely'.
	* src/lib/PollManager.py: Added error handling for 410.
	* src/lib/rssparser.py: Updated to 2.52 of Mark Pilgrim.
	* src/lib/MainWindow.py: Modified message in exception box and
	  made it bold. Fixed convert_entities(), added an assert,
	  which makes debugging a bit easier, iso-8859-1 is
	  actually iso8859-1 in python encodings. Plus a couple of fixes.
	* src/lib/SummaryParserMP.py: changed all occurences of iso-8859-1 to iso8859-1.  
	
2003-07-28  Jan Alonzo  <jmalonzo@spaceants.org>

	* src/lib/MainWindow.py: Automatically poll after subscribing to a
	  feed. Fixed the bug which after selecting one of the
	  lower feeds, scrolls to the cell but doesn't  select the
	  selected feed.
	* README: Added a note on setting up a preferred browser in GNOME 2.x.

2003-07-24  Juri Pakaste  <juri@iki.fi>

	* src/lib/error.py: make log write to the stream the calling
	function's name and location

	* src/lib/FeedItems.py: oops, signal_deleted_items instead of
	signal_item_deleted. this was causing quite a bit of breakage when
	polling

	* src/lib/URLFetch.py, src/lib/LookupManager.py: 
	convert the host name to ascii before looking it up, if it fails, raise
	an exception

2003-07-23  Juri Pakaste  <juri@iki.fi>

	* src/lib/FeedItems.py: get rid of the debug messages, update unread count when doing catchup

2003-07-22  Juri Pakaste  <juri@iki.fi>

	* src/lib/Feed.py, src/lib/FeedItems.py, src/lib/MainWindow.py, src/lib/__init__.py:
	Separated item handling functionality of Feed into a helper class, FeedItems. Made number_of_unread a property, and created a new one, number_of_items. After this creating sensible memory management will be easier.

2003-07-22  Jan Alonzo  <jmalonzo@spaceants.org>
	* src/lib/MainWindow.py: set a minimum width for the title_column
		  and max_width for the keep column
	* src/lib/URLFetch.py:  removed import httplib_async - multiple import

2003-07-21  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py: aargh, yet again forgot the debugging
	messages there

	* src/lib/ItemStore.py: remove import pygtk; pygtk.require(), they
	were causing trouble on RH

	* src/lib/Main.py: remove the thread_init call

2003-07-20  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py: drop the rss 1.0 elements namespace,
	it was pointing to the same URL as dublin core? it was breaking
	things when it hit dc:source. also added a KeyError exception
	handler to source element parsing.

	* src/lib/URLFetch.py: skip host name lookup if it's an ip address

	* TODO: uh, xslt? no way we want that, what was i thinking

	* src/lib/Config.py: oops, when restoring config options, set the
	sub pane position to be the sub pane size, not the main pane
	position

	* src/lib/MainWindow.py: remove yet another left-over debug message

	* glade/straw.glade:
	define handlers for the size_allocate signals of the panes. remove
	the unnecessary handler definitions.

	* src/lib/MainWindow.py: 
	deal with size_allocate signals for the panes, save sizes and restore
	them upon startup.
	removed the unnecessary signal handlers.
	cleaned up a bit the main window size change signal handler.

	* src/lib/__init__.py: events for the main window pane size changes

	* src/lib/Event.py:
	events for the main window pane size changes

	* src/lib/Config.py: 
	two new configuration variables for the positions of the main window
	panes

2003-07-19  Juri Pakaste  <juri@iki.fi>

	* src/lib/URLFetch.py: check and set self.finished in http_failed too

	* src/lib/ImageCache.py:
	- fix a problem with image updates, wrong number of arguments in
	function invocation was hidden by an overbroad except: block

	* src/lib/ItemStore.py:
	- add some stuff to make DB debugging easier
	- fix a problem with image updates

	* TODO: add a couple of items

	* src/lib/PollManager.py: oops, forgot some debugging output there

	* src/lib/MainWindow.py: 
	the am/pm flag is redundant in the article time display as we use
	a 24 hour clock anyway

	* src/lib/error.py: add a new function logtb which prints traceback

	* src/lib/URLFetch.py: 
	Remember if ProxyConsumer already finished, so don't call http_results
	twice.

	* src/lib/PollManager.py: 
	Don't start a new poller for a feed that's being already polled

	* src/lib/ItemStore.py (Message):
	Threadless ItemStore. gtk timers are now used instead.
	Plus more fixes to the PRISM thing.
	(Repository): Remove the old commented out ItemStore class declaration

2003-07-18  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryItem.py (Repository): oopsie, the last change didn't quite work.

	* src/lib/ItemStore.py, src/lib/MainWindow.py, src/lib/SummaryItem.py, src/lib/SummaryParser.py:
	some preliminary PRISM support

	* src/lib/SummaryParser.py, src/lib/rssfinder.py:
	Jeff Licquia's necho patch

2003-07-17  Jan Alonzo  <jmalonzo@spaceants.org>

	* README: added install how-to for newbies like bug #1707

	* TODO: updated

	* src/lib/MainWindow.py:
	close stream after image has been written. also fixes leaving items causes html-critical messages

2003-07-14  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	no need to print those focus in out messages, it seems to work ok

	* src/lib/StrawURLOpener.py: / version separator in user-agent

	* glade/strings.c, src/lib/ItemStore.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/OfflineDialog.py, src/lib/PollManager.py, src/lib/SubscribeDialog.py, src/lib/__init__.py, Makefile, glade/straw.glade:
	integrate Jan Alonzo's changes:

	 * "convert url label + "Browse" button combinations to gnome href widgets,
	   needs fixes in libglade, i think" --- Done.[1]

	 * display an offline dialog whenever user tries to poll(or tries to add an
	   item) in 'offline mode'.[1]

	 * fixed maybe_poll() not to poll in 'offline mode'.

	 * fixed localtime to display "user-friendly" date and time.[1]

	 * in makefile, include ICONDIR and LOCALEDIR in the directory creation.

	 * make itemstore.py python2.3 friendly.[2]

2003-07-13  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade:
	focus in and out events, channel location label selectable

	* src/lib/URLFetch.py:
	the separator between product name and version in user-agent is /, not space

2003-07-10  Juri Pakaste  <juri@iki.fi>

	* src/lib/DashboardFrontend.py: pass rss url as type rss

2003-07-08  Juri Pakaste  <juri@iki.fi>

	* src/lib/DashboardFrontend.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/__init__.py, src/lib/dashboard.py:
	- Dashboard (http://www.nat.org/dashboard/) support
	- send cluepackets on item and focus changes

	* src/lib/FeedDataRouter.py, src/lib/ParsedSummary.py, src/lib/SummaryParser.py, src/lib/Feed.py:
	- handle dublin core creator in channel
	- plain location accessor in Feed to avoid the stupid access_info

2003-07-06  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade:
	- make the exception label wrapped and aligned to left
	- add a few events to the main window panes

2003-06-16  Juri Pakaste  <juri@iki.fi>

	* src/lib/URLFetch.py, src/lib/httplib_async.py:
	cope with closing connection

2003-06-14  Juri Pakaste  <juri@iki.fi>

	* src/lib/URLFetch.py:
	move time out checking to connectionmanager so it isn't dependent on something arriving down the wire

	* src/lib/Event.py, src/lib/ImageCache.py:
	ha, squish the bug! no more image problems causing stuck cogwheels all over the place

2003-05-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/Main.py:
	does it make more sense to get the first item of a feed when using go to previous feed? i dunno, let's try it

2003-05-08  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade, glade/strings.c, src/lib/Main.py, src/lib/MainWindow.py:
	feed navigation support

2003-05-07  Juri Pakaste  <juri@iki.fi>

	* src/lib/PollManager.py, src/lib/URLFetch.py, src/lib/httplib_async.py:
	automatically change feed location on 301

	* src/lib/FindDialog.py: remove overridden delete handler

	* src/lib/SummaryParser.py:
	oops, the last commit didn't really work, did it

2003-04-28  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py:
	Make sure that description is in a RSS namespace or not in a namespace. Move the namespace check to a separate function, isRSSNamespace. Slightly modified (to live with post-0.18.1 changes) version of a patch by Adam James Fitzpatrick

2003-04-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	don't add "..." to the end of a title read from description until after we have checked for the title's emptiness

2003-04-08  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py:
	one of these days i'll learn to test my changes before committing. now the rdf:about checking might really work.

	* src/lib/SummaryParser.py:
	oops, use has_key for checking if rdf:about has been specified

2003-04-07  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py:
	recognize the rss 1.0 elements namespace, recognize rdf:about attributes for items (deal with them the same way we do with links), deal with dates containing only the date, not the time

2003-04-04  Juri Pakaste  <juri@iki.fi>

	* src/lib/PollManager.py: don't set process status if we got an error

2003-04-01  Juri Pakaste  <juri@iki.fi>

	* src/lib/PollManager.py: oops, remove left-over debug outputs

	* src/lib/Event.py, src/lib/FeedDataRouter.py, src/lib/ImageCache.py, src/lib/ItemStore.py, src/lib/PollManager.py:
	fixes for the in progress indicator in the feed list, had to change the imageupdatedsignal a bit etc

2003-03-29  Juri Pakaste  <juri@iki.fi>

	* src/lib/ImageCache.py, src/lib/ItemStore.py:
	send out image updated events from image cache if the image fetching failed, so feeddatarouter doesn't think we are trying to fetch them forever. need to check for image.failed in itemstore

	* src/lib/Event.py, src/lib/Feed.py, src/lib/FeedDataRouter.py, src/lib/MainWindow.py, src/lib/PollManager.py, src/lib/SubscribeDialog.py, src/lib/__init__.py:
	Indicate in the UI if there's still stuff being fetched from the network for a feed. When a feed is being polled for RSS, images or OPML files, there's now the stock execute icon in the same slot there's the error icon in the feed list.

	To help with this, FeedDataRouter routes all the data from the network to the feed, and updates a status flag accordingly.

	* src/lib/ImageCache.py:
	remove those old signalemitter things from image which aren't used, add a is_waiting method which tells if the image object is still waiting for data

2003-03-21  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryParser.py: ignore image elements

	* src/lib/Feed.py:
	catch exceptions in opml reading, use a real StringIO instead of cStringIO because the latter can't deal with unicode

	* src/lib/URLFetch.py: clean up a bit

2003-03-20  Juri Pakaste  <juri@iki.fi>

	* src/lib/URLFetch.py: make that condition a bit more understandable

	* src/lib/URLFetch.py: oops, missing req.

2003-03-18  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/__init__.py: 0.18.1

2003-03-17  Juri Pakaste  <juri@iki.fi>

	* po/fr.po: updated french translations

	* images/offline.png, images/online.png:
	online/offline images from evolution

2003-03-16  Juri Pakaste  <juri@iki.fi>

	* po/fi.po: translated the new strings into finnish

	* Makefile: more fixes, maybe translate-merge now works

	* Makefile: remove zshism

	* data/default_subscriptions.opml: first version

	* NEWS, TODO, src/lib/__init__.py: 0.18

	* Makefile: translations stuff, default-subscriptions.opml copying

	* po/straw.pot: some new messages

	* src/lib/Config.py, src/lib/ImportSubscriptionsDialog.py, src/lib/Main.py:
	move opml importing to main.py (yeah prolly not the best location, not sure though what would be better), import the contents of default_subscriptions.opml if user didn't have a .straw directory

	* glade/straw.glade, src/lib/Config.py, src/lib/MainWindow.py:
	make main window size remembering really work, i thought this worked already

	* src/lib/Config.py:
	instead of importing gconf at the module level, try importing it in the gconfproxyconfig constructor and handle failure gracefully

	* src/lib/PollManager.py, src/lib/httplib_async.py:
	improved the error reporting a bit more. now it doesn't display the (errno, explanation) tuple with socket.errors, just the explanation

	* glade/straw.glade: offline toggle

	* src/lib/OPMLImport.py:
	what was i smoking when i wrote that function? dictionary keys don't have to be strings

	* src/lib/NetworkConstants.py:
	increase maximum number of connections to 10. dunno really if it makes any difference...

	* src/lib/PollManager.py, src/lib/httplib_async.py:
	- better error reporting: httplib_async won't format an error string, and pollmanager will display a message in the status line in case of failure

2003-03-15  Juri Pakaste  <juri@iki.fi>

	* src/lib/FeedList.py: - sort all if only one row selected

	* src/lib/PollManager.py, src/lib/URLFetch.py, src/lib/__init__.py, src/lib/Config.py, src/lib/Event.py, src/lib/ImageCache.py, src/lib/Main.py, src/lib/MainWindow.py:
	- offline mode
	- urlfetch: cleanups, try to deal with redirects not containing a full uri

	* src/lib/ItemStore.py:
	always specify recover when opening the db - shouldn't break anything, and fix the occasional freezes when starting?

	* src/lib/LookupManager.py:
	fix brain damage, remove two useless imports

	* test/LookupTests.py: lookupmanager unit tests, initial version

2003-03-14  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py, src/lib/SummaryParser.py, src/lib/SummaryParserCommon.py, src/lib/SummaryParserMP.py:
	and move convert_entities back to mainwindow again! maybe i should some time try thinking a bit before doing this stuff. it can't be done at parse time because we decide what to show as the title only at display time (well, i suppose that could be done at parse time, too, but that's another question), if there's no title we show the beginning of the description

	* src/lib/LookupManager.py:
	if we get a cname even though we asked for the a record, try again.

	* src/lib/SummaryParserMP.py:
	call convert_entities on item title, not the channel title

	* src/lib/httplib_async.py, src/lib/Config.py, src/lib/URLFetch.py:
	Support proxies.

	The primary location for reading proxy information is GConf. If the relevant directories aren't found there, use the environment variable http_proxy.

	Also cleaned up URLFetch a bit.

	* src/lib/Event.py, src/lib/__init__.py:
	- insert a node into the event hierarchy between ConfigOptionSignal and all the existing subclasses; now they inherit from LocalConfigOptionSignal, to differentiate from (potential) non-local things ConfigSaver isn't interested in, like stuff kept in GConf

	* src/lib/Main.py: - initialize lookup_manager before config

	* src/lib/LookupManager.py: - lookup's fourth argument is optional

	* src/lib/MainWindow.py, src/lib/SummaryParser.py, src/lib/SummaryParserCommon.py, src/lib/SummaryParserMP.py:
	- move convert_entities to summaryparsercommon, no point in doing it at display time
	- make convert_entities use htmlentitydefs instead of its own dictionary, should now deal with pretty much all the known entities
	- make document encoding reading deal with an empty encoding

2003-03-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/Feed.py, src/lib/PollManager.py:
	Feed can't know when there's been an error, so let's not set the error attribute in there. PollManager knows.

2003-03-01  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/__init__.py:
	initial news about 0.18, set version string to be 0.18 pre 1

	* NEWS: it's 2003, not 2002

	* glade/straw.glade, src/lib/ImportSubscriptionsDialog.py:
	bit more work on opml import, now report errors &c

	* src/lib/__init__.py, glade/straw.glade, glade/strings.c, src/lib/ImportSubscriptionsDialog.py, src/lib/Main.py, src/lib/MainWindow.py:
	import subscriptions from an opml file

	* glade/straw.glade:
	seems the resurrected browse button didn't emit a signal when clicked. fixed that.

	* src/lib/Feed.py, src/lib/PollManager.py, src/lib/SubscriptionsMergeDialog.py:
	blogroll/subscriptions stuff should work again

	* src/lib/httplib_async.py: - self.consumer, not consumer
	- remove the useless hashbang line

2003-02-28  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	call columns_autosize after rendering a feed in itemlist

2003-02-27  Juri Pakaste  <juri@iki.fi>

	* NEWS: 0.17 some more

	* NEWS, TODO, src/lib/__init__.py: 0.17

	* po/fr.po, src/lib/MainWindow.py: french translation by david rousseau

	* glade/straw.glade: headers are now visible in the item list

	* src/lib/FeedList.py, src/lib/PreferencesDialog.py:
	now can also sort a subset of feeds, including a non-contiguous subset

	* src/lib/FeedList.py, src/lib/PreferencesDialog.py:
	multiple feeds can now be selected and moved and deleted in the preferences dialog

2003-02-25  Juri Pakaste  <juri@iki.fi>

	* src/lib/ImageCache.py, src/lib/PollManager.py:
	- send referer headers pointing to the rss file when fetching images

	* src/lib/MainWindow.py:
	one last self._main_window hiding there, must have been blind

	* glade/straw.glade, glade/strings.c, src/lib/PreferencesDialog.py:
	oops, resurrected the browse feed url button that had disappeared somewhere. and removed last traces of blog_url setting

2003-02-24  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade, glade/strings.c, src/lib/Config.py, src/lib/PollManager.py:
	no more fake referer headers, apparently they are out of fashion

2003-02-23  Juri Pakaste  <juri@iki.fi>

	* src/lib/ExportSubscriptionsDialog.py, src/lib/FindDialog.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/PreferencesDialog.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py:
	- store the main window instance in the straw name space, as straw.main_window
	- call window.present in all the dialogs when they are displayed
	- make all the dialogs transient for the main window

2003-02-20  Juri Pakaste  <juri@iki.fi>

	* src/lib/Event.py, src/lib/Feed.py, src/lib/ItemStore.py, src/lib/MainWindow.py, src/lib/QueueDict.py, src/lib/SummaryItem.py, src/lib/__init__.py:
	items can be flagged to be sticky

	* src/lib/Config.py, src/lib/Event.py, src/lib/ExportSubscriptionsDialog.py, src/lib/Feed.py, src/lib/FeedList.py, src/lib/FindDialog.py, src/lib/ImageCache.py, src/lib/ItemStore.py, src/lib/LookupManager.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/NetworkConstants.py, src/lib/OPML.py, src/lib/OPMLExport.py, src/lib/OPMLImport.py, src/lib/ParsedSummary.py, src/lib/PollManager.py, src/lib/PreferencesDialog.py, src/lib/QueueDict.py, src/lib/StrawURLOpener.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py, src/lib/SummaryItem.py, src/lib/SummaryParser.py, src/lib/SummaryParserCommon.py, src/lib/SummaryParserMP.py, src/lib/URLFetch.py, src/lib/__init__.py, src/lib/error.py, src/lib/httplib_async.py, src/lib/rssfinder.py, src/lib/rssparser.py:
	added cvs_ids to every file

	* src/lib/PollManager.py: don't report failure on 304

2003-02-19  Juri Pakaste  <juri@iki.fi>

	* NEWS, TODO: 0.16

	* po/de.po, po/fi.po, po/straw.pot, src/lib/MainWindow.py, src/lib/PollManager.py:
	made strings in pollmanager internationalized, updated Finnish
	translation, added (now a slightly out of date, sorry Martin) German
	translation, added translator credits to the about box

	* src/lib/timeoutsocket.py:
	doesn't seem to work too well with asyncore, let's just remove it - no other place uses async io but subscribe tool, and that'll be fixed

2003-02-18  Juri Pakaste  <juri@iki.fi>

	* src/lib/URLFetch.py: set user-agent

	* src/lib/MainWindow.py:
	about window is now constructed separately each time, so it can be displayed multiple times

2003-02-17  Juri Pakaste  <juri@iki.fi>

	* src/lib/ImageCache.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/PollManager.py:
	oops, image polling was broken, fix that. and display "waiting" and "broken" images if image isn't there yet/we got an exception

	* images/image-broken.png, images/image-waiting.png: images

	* src/lib/MainWindow.py: COLUMN_ERROR_FLAG, not ERROR_FLAG

2003-02-16  Juri Pakaste  <juri@iki.fi>

	* src/lib/SubscribeDialog.py, src/lib/__init__.py:
	we still need strawurlopener, and use asynchronous polling for the images and stuff in subscribedialog

	* src/lib/PollManager.py:
	separate "extra" data fetching, deal also with subscriptions & blogrolls

	* src/lib/Feed.py:
	store separately blogroll/subscriptions location and blogroll/subscriptions data

	* src/lib/URLFetch.py, src/lib/httplib_async.py:
	in case of 301 or 302, httplib_async now calls the consumer's http_redirect method, which in turn causes a new request to be done

2003-02-15  Juri Pakaste  <juri@iki.fi>

	* src/lib/ImageCache.py, src/lib/ItemStore.py:
	- ImageCache: don't emit ImageUpdated if data is given to Image as a constructor argument
	- Emit the signal from ImageCache, not Image objects
	- ItemStore: deal with the new style Image objects

	* src/lib/Event.py, src/lib/Feed.py, src/lib/MainWindow.py, src/lib/PollManager.py, src/lib/__init__.py:
	Better error reporting, display an error symbol in the feed list.
	- New signal, feedpolled, emitted when polling has happened, regardless of whether or not there were new items or errors or something
	- NewItemsSignal is no longer a subclass of ItemsAddedSignal, so MainWindow can catch the latter and ignore the former: FeedPolledSignal does its job
	- Store errors with the feed information
	- Better user messages from Poller

	* src/lib/httplib_async.py:
	override dispatcher's handle_error so errors are reported to the consumer

	* src/lib/Main.py:
	clean up code, remove stuff that isn't needed anymore

2003-02-14  Juri Pakaste  <juri@iki.fi>

	* src/lib/Config.py, src/lib/ExportSubscriptionsDialog.py, src/lib/Feed.py, src/lib/FindDialog.py, src/lib/ItemStore.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/PollManager.py, src/lib/PreferencesDialog.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py:
	- and no multiple instances of the configuration either, so let's access that as straw.config everywhere

	* src/lib/Main.py, src/lib/MainWindow.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py:
	- clean up the code a bit: we won't have multiple instances of Main, so no point in passing it around as an argument. it's now straw.main, assigned in Main's constructor.
	- async stuff in SubscribeDialog

	* src/lib/Main.py, src/lib/MainWindow.py, src/lib/__init__.py:
	all that async jazz

	* src/lib/ItemStore.py: s/sender/signal/ in image_update

	* src/lib/ImageCache.py:
	fetch images asynchronously, return a stub object on retrieve if it has to be fetched. don't signal it's arrival before it's really there

	* src/lib/Feed.py:
	previous_etag is now a property, there's an error attribute, blogroll stuff returns none until changed to work with async

	* src/lib/FeedPoller.py: the old networking thread has to go

	* src/lib/LookupManager.py, src/lib/NetworkConstants.py, src/lib/PollManager.py, src/lib/URLFetch.py, src/lib/httplib_async.py:
	new modules for asynchronous networking

2003-02-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/Main.py: clean up

2003-02-08  Juri Pakaste  <juri@iki.fi>

	* src/lib/FindDialog.py, src/lib/SummaryItem.py:
	move item matching logic to summaryitem, also match against freshmeat fields and creator

2003-01-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/Config.py, src/lib/Event.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/__init__.py:
	save and load main window size

2003-01-08  Juri Pakaste  <juri@iki.fi>

	* Makefile:
	oops, thought i committed this already - set a default prefix of /usr/local if there's no pkg-config, and create applicationsdir too

2003-01-06  Juri Pakaste  <juri@iki.fi>

	* src/lib/Main.py: workaround for broken gettext in python <2.2.2(?)

2003-01-05  Juri Pakaste  <juri@iki.fi>

	* po/fi.po, po/straw.pot, NEWS, src/lib/__init__.py: 0.15

	* src/lib/SummaryParser.py:
	only set an item's license to be the channel's if there were no licenses specified in the item

2003-01-03  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	call columns_autosize after rendering the feed list

	* src/lib/SummaryParser.py, src/lib/SummaryParserCommon.py, src/lib/SummaryParserMP.py:
	move ItemDescriptionHandler to SummaryParserCommon; filter out font tags (not their contents, though)

2003-01-02  Juri Pakaste  <juri@iki.fi>

	* src/lib/SummaryItem.py, src/lib/SummaryParser.py: cc license stuff

	* src/lib/MainWindow.py: display cc license

	* src/lib/ItemStore.py: save freshmeat data, dc creator, license urls

	* src/lib/FeedPoller.py, src/lib/SubscribeDialog.py: error reporting

2002-12-31  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py: - better entity handling

	* src/lib/MainWindow.py: - fix handling of numeric entities

	* src/lib/FeedPoller.py, src/lib/ImageCache.py, src/lib/ItemStore.py, src/lib/MainWindow.py, src/lib/SubscribeDialog.py, src/lib/SummaryParser.py, src/lib/SummaryParserMP.py, src/lib/error.py:
	- error.log() outputs data to sys.stderr
	- clean up error reporting: remove superfluous spew, make the rest use error.log()

	* src/lib/ItemStore.py:
	catch a ValueError from pickle.loads, no idea what's causing it though

	* src/lib/Main.py:
	- previous/next now wrap around the feed list if needed

	* src/lib/Main.py:
	- use lowercased "straw" as the name with gnome.init, should fix problem with sessions

	* src/lib/MainWindow.py:
	- convert/strip entities in item titles for the list view
	- use gettext on listview column name
	- remove the unused date column crud

	* src/lib/Feed.py:
	initialize previous_etag to None instead of "", fixes a problem with web servers which don't support if-none-match

2002-12-22  Juri Pakaste  <juri@iki.fi>

	* Makefile:
	add a missing semicolon, set the mode of installed translation files

2002-12-20  Juri Pakaste  <juri@iki.fi>

	* NEWS: more 0.14

	* TODO: - i18n, new stuff in

	* glade/straw.gladep: capitalize program name

	* NEWS: more 0.14

	* NEWS, src/lib/__init__.py: 0.14

	* glade/straw.glade, glade/strings.c, po/fi.po, po/straw.pot:
	- modify menu items to be capitalized in accordance to the HIG: header capitalization instead of sentence capitalization
	- update translations to reflect that
	- add shortcuts to the finnish translation's menu items

	* po/fi.po, po/straw.pot:
	all the translatable strings in straw.pot now i think, updated the finnish translation

	* glade/straw.gladep, glade/strings.c:
	- export glade strings to strings.c for translation

	* src/lib/PreferencesDialog.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py:
	- i18n attack

	* src/lib/Main.py: - fix gettext domain binding

2002-12-16  Juri Pakaste  <juri@iki.fi>

	* src/lib/FindDialog.py:
	make the input field grab focus on display. if we get None as a result from a search, give MainWindow an empty list

	* glade/straw.glade, src/lib/FindDialog.py:
	the find dialog is now a gtkdialog which pops up at mouse location

2002-12-12  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade, src/lib/MainWindow.py:
	remove the extra frame from around the vbox containing the htmlview,
	source frame and exception view, eliminating the ugly indent

2002-12-08  Juri Pakaste  <juri@iki.fi>

	* Makefile, po/fi.po, po/straw.pot, src/lib/Main.py, src/lib/MainWindow.py, src/lib/__init__.py:
	starting i18n + l10n: call gettext, mark some of the messages translatable. fi.po contains translations in Finnish for those

2002-12-03  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py: - if given None, read_text returns ""

	* src/lib/Feed.py, src/lib/MainWindow.py:
	do the url stripping in mainwindow rather than in feed

	* src/lib/Feed.py: strip url in complete_url

2002-11-23  Juri Pakaste  <juri@iki.fi>

	* src/lib/__init__.py: remove extra slash from straw-ref url

	* NEWS, src/lib/__init__.py: 0.13.2

	* src/lib/PreferencesDialog.py, glade/straw.glade:
	- use focus out events on the spins instead of value_changed

2002-11-22  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	- disable/enable subscriptions dialog in the other possible place too

	* src/lib/Feed.py:
	- catch ioerror when trying to fetch subscriptions/blogroll

	* src/lib/Feed.py, src/lib/FeedPoller.py, src/lib/ImageCache.py, src/lib/StrawURLOpener.py, src/lib/rssfinder.py:
	- use gzip if the server supports it, use the new method everywhere

	* src/lib/SummaryParserMP.py:
	- don't try to strip item.link if it's None

	* src/lib/SummaryParser.py:
	- and we don't need that exception printing here

	* src/lib/SummaryParser.py:
	- oops, description subelement checking wasn't really working

	* src/lib/SummaryParser.py:
	- raise an exception if there are elements in description

	* src/lib/SummaryParser.py:
	recognize RSS 0.9 namespace. fixes a few valid feeds we couldn't deal with before, at least the mail-archive stuff

2002-11-10  Juri Pakaste  <juri@iki.fi>

	* NEWS: 0.13.1

	* src/lib/SummaryParserMP.py:
	- oops, let's not try to call strip on None

	* NEWS, TODO, src/lib/__init__.py: - 0.13

	* glade/straw.glade: - drag_data_received events on main window
	- feed info link label is now in a hbox

	* src/lib/MainWindow.py, src/lib/SummaryParser.py, src/lib/SummaryParserMP.py:
	- move all the field stripping to to summaryparser*

	* src/lib/MainWindow.py:
	add bit of css to item display, now q elements are shown in italic

2002-11-09  Juri Pakaste  <juri@iki.fi>

	* src/lib/Main.py, src/lib/MainWindow.py, src/lib/SubscribeDialog.py, src/lib/SubscriptionsMergeDialog.py:
	- subscribedialog.show now accepts an optional url argument, as does main.show_subscribe_dialog, this will cause it to look for a feed in that url
	- remove the pointer to subscribedialog in subscriptionsmergedialog, use main.show_subscribe_dialog instead
	- accept dragged urls in main window and use subscribedialog on them

	* glade/straw.glade, src/lib/SubscribeDialog.py, src/lib/rssfinder.py:
	- just use a single text field for site/rss location, no more is needed

	* src/lib/ItemStore.py:
	- checkpoint the database once a minute and remove unneeded log files

2002-11-01  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py:
	disable the subscriptions / blogrolls menuitem if neither of them is specified

2002-10-29  Juri Pakaste  <juri@iki.fi>

	* src/lib/ItemStore.py, src/lib/OPML.py, src/lib/OPMLExport.py, src/lib/ParsedSummary.py, src/lib/SummaryItem.py, src/lib/SummaryParser.py, src/lib/SummaryParserMP.py:
	everything is handled internally as unicode, no need to save encoding information for parsedsummary or feed. export as utf-8.

2002-10-25  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/__init__.py: 0.12

	* src/lib/SummaryParserMP.py, src/lib/rssparser.py:
	- upgrade to a (again modified) version of rssparser 2.0.2
	- deal with content:encoded in SummaryParserMP

	* src/lib/ExportSubscriptionsDialog.py, src/lib/OPMLExport.py, src/lib/__init__.py:
	- maybe the opml export now about works

	* src/lib/MainWindow.py: - fix(?) character set problems

	* glade/straw.glade: export dialog

	* src/lib/MainWindow.py:
	- in the item list, store item pointer instead of item ids

	* src/lib/MainWindow.py:
	- in the find results list, store item pointer instead of item and feed ids

	* src/lib/MainWindow.py: - oops, search was broken

	* src/lib/ExportSubscriptionsDialog.py, src/lib/OPMLExport.py:
	- move opml generation and file access into different module
	- use gnome vfs for opml file access

2002-10-24  Juri Pakaste  <juri@iki.fi>

	* src/lib/FeedPoller.py:
	- oops, re-raise the exception thrown by strawurlopener if it wasn't a 304

2002-10-23  Juri Pakaste  <juri@iki.fi>

	* src/lib/Feed.py, src/lib/FeedPoller.py:
	- etag/if-none-match/304 support

	* src/lib/SummaryParser.py:
	- look for images in whatever ended up as being item.description, not just the description element
	- don't insist on the xml declaration being there

2002-10-17  Juri Pakaste  <juri@iki.fi>

	* src/lib/FeedPoller.py:
	- catch all exceptions in the poller, print stack trace and continue

	* src/lib/ExportSubscriptionsDialog.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/OPML.py, src/lib/__init__.py:
	- new version of OPML.py
	- export subscriptions in opml

	* src/lib/MainWindow.py:
	- rename "merge subscriptions" to "subscriptions and blogroll", only make it active on feeds that have one of them

	* Makefile:
	- use =? instead of =, so they should be settable by environment variables?

2002-10-13  Juri Pakaste  <juri@iki.fi>

	* Makefile, NEWS: - new installation dir, install .desktop and icon

	* straw.desktop: initial version

	* src/lib/Main.py, src/lib/MainWindow.py: - show icon in about

	* src/lib/__init__.py: - bump version, subscriptionsmergedialog, opml

	* src/lib/SummaryParser.py:
	- all versions of rss are now handled with a single content handler with better support for namespaces

	* src/lib/SummaryItem.py: - freshmeat stuff

	* src/lib/SubscribeDialog.py:
	- make find_site callable from the outside
	- save the parsedsummary of a found feed and put its items into the feed, plus the channel data

	* src/lib/PreferencesDialog.py: - new button was broken, fix it

	* src/lib/OPML.py, src/lib/OPMLImport.py, src/lib/SubscriptionsMergeDialog.py:
	Initial imports.

	OPML.py is a module for reading and writing OPML format. OPMLImport
	reads the datastructures generated by OPML.py and finds
	blogroll/subscriptions list elements. SubscriptionsMergeDialog is a
	dialog for browsing subscriptions and blogrolls.

	* src/lib/MainWindow.py: - feed list is now accessed directly
	- convert utf-8 entities
	- don't show empty items
	- freshmeat elements are displayed

	* src/lib/Main.py:
	- remove feed list access functions, add subscriptions merge dialog

	* src/lib/FeedPoller.py: - set blogChannel stuff in Feed

	* src/lib/FeedList.py:
	- get_feed_with_id function, part of moving code around a bit (no more feed list access functions in Main)

	* src/lib/Feed.py: - blogChannel stuff

	* glade/pixmaps/straw.png, images/straw.png: - icon

	* glade/straw.glade: - stuff, icon

	* README:
	- made url point to the correct location, documented the installation a bit

2002-09-25  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/QueueDict.py, src/lib/__init__.py:
	- 0.10.2: fix orderedkeydict's two methods to work right

2002-09-24  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/__init__.py: - 0.10.1

	* glade/straw.glade:
	- issue delete_events in finddialog and subscribedialog

2002-09-23  Juri Pakaste  <juri@iki.fi>

	* src/lib/SubscribeDialog.py:
	- handle the delete signal to the window. oh yeah, did that in finddialog too

	* src/lib/Event.py, src/lib/FindDialog.py, src/lib/MainWindow.py, src/lib/__init__.py:
	- interrupt find result rendering with a FindInterruptSignal when text is added to or deleted from the find text entry, and do a new search and render the results of that instead

	* src/lib/ParsedSummary.py, src/lib/SummaryParser.py:
	- rss 2.0: blogchannel stuff
	- rss 1.0: content:encoded

	* src/lib/ItemStore.py: - deal with empty items caused by bugs

	* src/lib/FindDialog.py: - more fixes to is_subset
	- some reformatting

2002-09-20  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade, src/lib/MainWindow.py: - toolbar find button

	* src/lib/FindDialog.py:
	- smarter is_subset: use find instead of length comparison
	- use lowercased input string

	* TODO: - woo, search done(?)

	* glade/straw.glade, src/lib/FindDialog.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/SummaryItem.py:
	- find dialog
	- use a default pubdate, initialized to current time, in items

	* NEWS, src/lib/__init__.py: - version 0.10
	- change in the straw homepage location, again: now it resides on www.nongnu.org

2002-09-19  Juri Pakaste  <juri@iki.fi>

	* src/lib/MainWindow.py: - show number of unread in title bar
	- clean up the code a bit

	* src/lib/SubscribeDialog.py: - remove forgotten debug outputs

	* src/lib/PreferencesDialog.py, src/lib/MainWindow.py, src/lib/FeedList.py:
	- sort for feeds

2002-09-16  Juri Pakaste  <juri@iki.fi>

	* src/lib/Feed.py: - once more, with feeling

	* src/lib/Feed.py: - don't do max() on an empty sequence

	* NEWS: - document version 0.9.4

	* src/lib/Feed.py, src/lib/ItemStore.py, src/lib/QueueDict.py, src/lib/__init__.py:
	- ItemStore: fixed a delete operation being done without transaction
	- Feed, QueueDict: revamped the addition of items, now it should be more sensible
	- bumped version to 0.9.4

2002-09-15  Juri Pakaste  <juri@iki.fi>

	* glade/straw.glade:
	- added shadows to the scrolledwindows containing treeviews
	- increased the size of the treeviews in the main window, also increased the window size

	* src/lib/MainWindow.py:
	- use start of description as title if the title element is empty
	- use minimal scrolling with item_list, dunno when that was switched off

2002-09-12  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/Feed.py, src/lib/__init__.py:
	- fix another problem in add_item with duplicate guids: don't signal the creation of an item which has already been deleted
	- bump version to 0.9.3

2002-09-11  Juri Pakaste  <juri@iki.fi>

	* NEWS, src/lib/__init__.py: - fix straw url

	* LICENSE, Makefile, NEWS, README, TODO, glade/straw.glade, glade/straw.gladep, images/face-happy.png, images/face-sad.png, src/lib/Config.py, src/lib/Event.py, src/lib/Feed.py, src/lib/FeedList.py, src/lib/FeedPoller.py, src/lib/ImageCache.py, src/lib/ItemStore.py, src/lib/Main.py, src/lib/MainWindow.py, src/lib/ParsedSummary.py, src/lib/PreferencesDialog.py, src/lib/QueueDict.py, src/lib/StrawURLOpener.py, src/lib/SubscribeDialog.py, src/lib/SummaryItem.py, src/lib/SummaryParser.py, src/lib/SummaryParserCommon.py, src/lib/SummaryParserMP.py, src/lib/__init__.py, src/lib/rssfinder.py, src/lib/rssparser.py, src/lib/timeoutsocket.py, src/straw:
	- initial imports, corresponding to the (yet unreleased) version 0.9.2

