Add to the listmodel the columns needed for multiselection operations

v2: Use a array to store the selected values
    Don't store the metadata, with the selected uids is enough

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Add a column in the listiew with a checkbox to select items

This checkbox is only available in the Journal,
when the listview is used in the ObjectChooser the checkbox
is not created.

v2: Update by changes in the model.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Add the EditToolbar with select_all and select_none buttons

Implement the changes to show the edit toolbar and the operations
'select all' and 'unselect all' only.
This version use the method find_ids in datastore, doing the operation
of select_all really fast.
Use a array in the model with the list of all the uids in the query, then is
not needed transverse the model to do the selection.

v2: Now the listmodel and the listview were cleaned as suggested
    then this patch was simplified.
    Fixed TRANS comment.
    Replaced __redraw hack by the use of queue_draw.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Reorganize copy menu code to prepare adding the batch operation buttons

Now use a array of uids to know what copy instead of
the object metadata, to make it compatible with the array of selected
objects. The mount point is taken from the journal activity.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Use the menu as defined in Copy menu in the detail view toolbar

A new class CopyMenuBuilder is created to avoid duplicate code.
CopyMenuBuilder can monitor mount/unmount of devices.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Add a button to delete all the selectected objects

A confirmation is asked before start the operation,
a can be canceled while is running.
A object BatchOperator was added in palettes.py,
and will be used to the copy batch operations too.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Add the copy batch button

v2: The CopyMenuBuilder was implemented in another patch
    then this is simpler.
    Now the batch copy ignore objects without a file.
    The menu in the case of the batch operation, does not include
    a Clipboard option, because do not have much value copy
    multiple objects to the clipboard.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Preserve selection when the listmodel is updated

As the listmodel can be re created, due to events in the journal,
or changes done by the user (title edition, favorite selection),
the state of the selection should be preserved.

Signed-of-by: Gonzalo Odiard <gonzalo@laptop.org>
Handle untitled objects in batch operations.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Update the menu in batchCopyButton when the mount point changes

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Check if already mounted

External devices appear multiple times
when unplugging and plugging the device.

Signed-off-by: Martin Abente Lahaye <tch@sugarlabs.org>
Do not add the webservices menu to the batchCopyButton

Select many objects in the Jurnal and send to a webservice
can be a source of spam and be a reason to close a account.

Signed-off-by: Gonzalo Odiard <gonzalo@laptop.org>
Merge pull request #66 from godiard/journal_multiselection-try5

Add support for multiselection in the Journal