
TODO FOR FISH APPLET
Final testing. (Remove, add via rpm, check availability; ditto via install script. Check ability to connect to other server and exchange fish.)

AFTER 1.0
BUG: "Asked peers" should disappear after e.g. 30 mins (so we can try again) - 
	avoids problem where a site dies and is not reconnected to
BUG: random seeding ain't threadsafe? (is this a prob?)
BUG: close config dialog via [x], won't reopen (maybe??)
BUG: why "failed to init asynchat channel" so often? is this a problem?
Slightly more sensible url/blogurl guessing?
	- if it ends in XML, consider it a blog URL
	- otherwise, load the page, look for a blog link, use that
	- and if no blog link, just make it a normal URL
Drag and drop fish (png images) to create them?
BUG: make sure that mnemonics alt+i etc point at correct kind of widgets	
Make blog reload timeout configurable.
Understand why wfile fails (maybe change timeouts on either end)
BUG: can't load url over X
BUG: too easy to point at fish
BUG: GDK critical width & height can be 0
ERROR HANDLING!!!! 
	- which errors?
BUG: not getting fish back from peers in passive mode?
	- probably to do with the one below? anyway, fish do come back...
BUG: two passive peers on the same address become indistinguishable
  (worth fixing?)
send message when port changed?
look and feel:
	z-index for fish
	higher fitness == bigger size?
Save peer list as file on exit?? Reuse at start?
	separate display from Ocean
understand how my own threads work :-)
	- put FishTPServer and PM into same thread
	- make PM create FTPS, Ocean doesn't know about it
Windows port???
more ocean prettiness (bubbles, water shadows, ripples)
document FishTP
nice website


ALREADY DONE:
BUG: die on exit...
Remove "logger" from output!
A decent install script 
rpm and deb:
	-edit scripts in blogfish/blogfish-1.0/debian
	- restart bonobo-a-s after UNinstall so blogfish is removed
	- test rpm
Add new fish on drag-and-drop of URL
Reload blog URLs after 30 mins (configurable)
BUG: gtk dying - thread-safety?
BUG: sometimes fish are invisible?
	- only in applet mode. Figure out why.
ensure that branch-simple-peer can stay up for long periods
	and hands fish back fairly
BUG: after removing failed peers, no attempt to recontact peerlist.cgi
	- seems to work???
BUG: need to handle unexpected quits, as they will happen.
	- if I get an unknown message, consider adding the peer to my join list
BUG: re-adding failed peers from command line should try again;
    seems to work...
Simplified non-gui FishTP peer 
config dialog UI:
	tweak settings UI
	connect tweak settings
	tooltips
	UI love for peers dialog
change mouse to pointer (or fish?) when over fish
About box
BUG: removing asked peers from command line should remove them from box
add new fish to 0.2
nicer tooltip
up-down movement for fish
BUG: very long blogs mean very wide popup windows
Simplify "add peer" dialog and peer list
make peer list dialog autoupdate (stop using gtk.Dialog.run as it is ugly...)
make fish less flickery? 
	- "double buffering" in Ocean.redraw()
BUG: make gnome.ui.PixmapEntry actually work
BUG: make peer list store update
glade XML for all dialogs
HIGify config dialog
Gratuitous rename of Aquarium to Ocean
ensure that passive server runs separately from UI/Ocean
ditto for active servers who connect to passive server...
	- ensure FishTPServer threads with JOIN PASV never return
remove "port" from Ocean. Single unique way to find our current port
for all classes, in blogfish_functions. (single way to register port changed
handler?)
single call for getting prefs in blogfish_functions
passive server mode for firewalls
	- done: separate message parsing from FishTPServer/Handler (put in PeerManager)
	- done: create passive FishTPServer
	- done: allow dynamic swap between active and passive FishTP servers
	- done: make connection to passive server when peer added to peers list
		- "JOIN PASV" handled differently from other JOIN; PM makes,
			holds "reverse" connection
		- PM._handle_message accepts PASV as a 'port'
		- message to passive peers is sent via connection held in
		PM

BUG: sending message via socket held in socketmap causes EBADF
Make sure "port changed" message propagates to peers
BUG: passive server should give up faster when can't connect.
clean up FishTP protocol
Make sure getting peer list from URLs works...
BUG: port changing doesn't happen until applet restarted!
BUG: sometimes parts of fish get lost, which isn't good.
bit more detail on website.
fighting, fucking and feeding for fish
connection handling for PeerManager - notice dodgy connections, remove peer
make sure fish go all the way to the left.
Make peer handling separate from Ocean
BUG: can't connect when using real URL or name!! only works with 127.0.0.1
Fish popup dialog should be nicely justified
configure should respect pixmaps dir when setting gconf schema
Fish words should be printed on popup
find standard location to store image files, inc background
default gconf settings...
BUG: segfault when removing an "asked for peer"
BUG: why do fish get stuck at the edge sometimes?
make test "port" setting work
README, LICENSE file
add right click stuff to Gnome applet menu
server page of URLs
make FishTPServer respect port changes.
ensure oceans work as applets - prolly Gnome 2.6 update
"words" for Fish.
ocean should display blog words of wisdom somehow (as faded background? in bubbles)
"add peer" UI
Bug: socketerror connection reset by peer - catch this in tryurl...
	or just catch everything in tryurl, it shouldn't kill the proggy
Bug: sometimes 2 oceans never get shown, just sit and feed each other data?
Bug: socket timeout problems on "quit" (or elsewhere?)
UI to add a peer manually (and or remove a list of peers?)
Bug: can't set config strings to "" by UI (to_string method called on None obj)
UI for gconf settings -  URL to get peers
find some way to make it obvious that blog text is a link (make cursor changing work?)
Gender for fish
Breeding (?based on fitness)
find a nicer background 
Fighting based on fitness, stochastic
*DONE* Add expose_event to drawingarea to reduce flicker;
*DONE* separate drawing into subroutine (or later class).
*DONE* Bug: row flipping won't work with non-alpha transparent images!
	(Workaround - make all images alpha transparent!)
*DONE* Make a config file to store settings
*DONE* Make a settings dialog
*DONE* Make a right-click menu
*DONE* Sort out stoopid Fish arguments
*DONE* Make fish manage their own fricking colors
*DONE* Make a fish listing dialog
*DONE* Make fish be the right colour and be nice pictures....
*DONE* Make fish pixel data not get mangled by sending via http :-)
*DONE* clicking a URL in fish listing should send you to the URL, using the system browser
*DONE* Make code to get list of other oceans from a URL
*DONE* Make Oceans send away fish before quitting
*DONE* quit should work nicer (ie destroy window, send fish away, notify peers)
*DONE* Fish listing dialog should be like a tooltip (no decorations)
*DONE* fish listing dialog should have + and - buttons, maybe "kill" also?
*DONE* die when fitness < 0
*DONE* Bug: fish need to be reversed when moving leftwards!
*DONE* Fish should have downloadable blog entries via RSS
*DONE* Bug: can't seem to get alpha transparency working


