Fix AudioLengthTask for the case where we don't have the decoder,
by instead of doing get_state, waiting for an ASYNC_DONE or ERROR
message. Properly raise a gst.GError in that case.
* morituri/common/task.py:
Add some debug.
* morituri/test/test_image_image.py:
After this fix, we now catch the TYPE_NOT_FOUND because of an
empty stream instead of the later gst.QueryError.
* morituri/test/test_common_encode.py:
Let us know what it is if not a gst.QueryError.
Add documentation.
Use a _task counter instead of duplicating tasks to
__tasks; this allows us to add tasks after starting.
Catch Exceptions during next() so that we don't get
stuck in a main loop that doesn't exit.
Raise it later when we're done.
Add an exception ivar for tasks to set an exception on while
running. Make SyncRunner raise it during done()
* morituri/program/cdparanoia.py:
Set an exception if the ripped file doesn't match the expected size
(for example when disc is full)
* morituri/common/taskgtk.py:
Split off GtkProgressRunner in separate module to not import gtk
everywhere.
* examples/ARcalibrate.py:
* examples/ARcue.py:
* examples/gtkchecksum.py:
* examples/trm.py:
Adapt.
Allow a SyncRunner to be constructed with verbose too.
Separate a 'running' verbose mode from that.
Fixes unwanted test output.
* morituri/test/test_image_image.py:
Run without verbosity.
Add a 'described' method so listeners can get proper notification
of description changes, and update their description in between
progress changes.
Add a MultiCombinedTask that reports on progress over all tasks
combined.
* examples/trm.py:
Add a playlist option to the example. Still needs to store results
to pickles, preferably after each completed task.
* morituri/common/checksum.py:
Add audioconvert to make sure we can trm ogg files.
* morituri/common/crc.py:
* morituri/common/task.py:
* morituri/image/image.py:
Add a 'schedule' call to the TaskRunner class, so that we can
abstract things like gobject.timeout_add and reactor.callLater
Pass the runner to the task in Task.start() so a task can call
schedule.
* morituri/common/task.py:
* morituri/image/image.py (added):
Add an object for handling an Image based on a .cue file.
Create a Task for CRC'ing the whole Image.
Make the example use this new task instead.
* examples/gtkcrc.py:
* morituri/common/task.py:
Make a real Task interface and use it.
Make runners reusable for multiple tasks.
gtkcrc.py seems to be blocking updates however.
* morituri/common/task.py:
Use an adapter to assemble CD frames.
Take into account special rules for first and last track.
Mention some bugs.
Remember to drag the lake from the task.