More success with multi-threading...
Commented the hell out of new threading code

Started updating the code outside of BlockDataManagerThread to access
BDM intelligently.  It's not always obvious how to do it:  should I
block?  Or queue the request asynchronously and check back later?
Which conditions should I use in which cases?  If someone else was
using this code, what would they expect the default behavior to be?

Lot's left to do, but at least the aynchronous BDM works!  It just
might require some care to make sure we don't accidentally block
the main GUI thread when we intended to kick off processing in the
background...
About finished updating armoryengine with MT code

Also added a watching-only wallet with a tiny amount of BTC to be used
for unit-testing...
Making lots of progress upgrading ArmoryQt.

Lots of work left to do, but at least I have the gist of it down.  Just
need to take what I've learned and apply it to all the dialogs.
Almost done with ArmoryQt updates for multi-mode

Dashboard will have a button and a small description about what mode
you're in, and which mode you can switch to, i.e. offline-->online,
online-->rescan, rescan-->offline
I'm tired of writing commit messages...
First draft of most of ArmoryQt.py, qtdialogs next
Converging on a better BDM-mode system

Now distinguishing full-scan from lite-scan.  And not setting the BDM
state to online/offline until the queue is empty
Did a little bit more testing of async BDM
I will continue to commit every 2 hour...b/c I can
Actually got a GUI... an extremely buggy GUI
Already battling first subtle bug -- sync'ing comm
Added a command-line, offline signing script.
Fixed sys.path issue in the new CLI signing script
GUI actually runs and some things actually work!

Time to really dig in and sort out the thousands of bugs I've probably
introduced since I started this multi-threading adventure.
Dashboard modes and tx ledger works!

Dashboard scrolling actually doesn't work, and that is driving me crazy.
I can't figure out why the scroll bar doesn't show up.
FINALLY solved that *#@%$! QLabel sizing issue

QLabel objects apparently have a maximum size and width by default.
There appears to be no way to resize it intelligently!

Switched to a QTextBrowser... gives me 98% of what I want, though
I'd like to increase the padding a bit, but it disables the scrollbar.
Given how much time I've wasted on this ridiculousness, I will live with
sub-optimal dashboard padding!
SWIG bug seg-fault workaround in address book

There appears to be a SWIG bug that causes seg faults sometimes when
iterating over C++ vector<...> and list<...> containers when using
the "-threads" option when generating swig files:

http://sourceforge.net/tracker/?func=detail&atid=101645&aid=3403085&group_id=1645

I'm not sure why it doesn't trigger all the time in the new code, but
it triggered 100% of the time on the address book when trying to
iterate over a vector<RegisteredTx> object.  I put in a workaround,
so that I no longer have "for regTx in abe.getTxList(): ...", and the
fix does work.  But there is lots of other code that iterates that way,
and I need to do lots of testing to out any other seg-faults...
Multi-threaded bug eradication underway
Notifications work, again.