GPGTools/GPGServices — pull request #16 by idodeclare (2012-05-19 18:17:05+00:00)
Title: Add progress dialog to GPGServices. Now async files operations. 

Hi, guys. This is a hefty one, but pretty cool I think:

- show a progress dialog for file operations (encryptFiles, decryptFiles, etc.)
- file operations are now asynchronous off the main thread
- file operations are cancelable through the progress dialog
- verification logic moved out of FileVerificationController into
GPGServices so it's cancelable as the other operations are

- remove large file confirmation dialog now that progress dialog exists

- verification now growls if possible instead of opening a results window
- verification results uses new GPGSignature humanReadableDescription
- decryptFiles now also growls signatures if possible instead of opening
a results window

- ensure thread-safety of GPGServices controller objects as called
from file operations workers

- MB is now 1e6 instead of 2^20 in line with Apple's redefinition

---

NOTE: the GPGServices operations are "roughly" cancelable with some
limits. NSInvocationOperation does not actually do anything on cancel,
as I learned, so even though the new GPGServices progress dialog will
indicate that the operation is terminated, an in-progress GPGTask will
actually be spinning away in the background—its results will be thrown
away as soon as it completes.

This is obviously not where we would want this to be, so I plan to
spend time to create a properly-cancelable NSOperation that would
be able to call [GPGTask cancel].

At the same time, I would like if possible for the file operations to
write directly to the file system instead of being marshaled through
memory. This would be a big memory savings for large decrypt/encrypt.

-chris