Repository: napari/napari

Issue:
Shift click for selecting shapes doesn't work
## 🐛 Bug

Using shift click to select multiple shapes now raises an error:

```python
Traceback (most recent call last):
  File "/Users/yamauc0000/Documents/napari/.venv/lib/python3.7/site-packages/vispy/app/backends/_qt.py", line 447, in mousePressEvent
    modifiers=self._modifiers(ev),
  File "/Users/yamauc0000/Documents/napari/.venv/lib/python3.7/site-packages/vispy/app/base.py", line 181, in _vispy_mouse_press
    ev = self._vispy_canvas.events.mouse_press(**kwargs)
  File "/Users/yamauc0000/Documents/napari/.venv/lib/python3.7/site-packages/vispy/util/event.py", line 455, in __call__
    self._invoke_callback(cb, event)
  File "/Users/yamauc0000/Documents/napari/.venv/lib/python3.7/site-packages/vispy/util/event.py", line 475, in _invoke_callback
    self, cb_event=(cb, event))
  File "/Users/yamauc0000/Documents/napari/.venv/lib/python3.7/site-packages/vispy/util/event.py", line 471, in _invoke_callback
    cb(event)
  File "/Users/yamauc0000/Documents/napari/napari/_qt/qt_viewer.py", line 501, in on_mouse_press
    mouse_press_callbacks(layer, event)
  File "/Users/yamauc0000/Documents/napari/napari/utils/interactions.py", line 57, in mouse_press_callbacks
    next(gen)
  File "/Users/yamauc0000/Documents/napari/napari/layers/shapes/_shapes_mouse_bindings.py", line 31, in select
    layer.selected_data.append(shape_under_cursor)
AttributeError: 'set' object has no attribute 'append'
```

## To Reproduce

Steps to reproduce the behavior:

1. Run the `add_shapes.py` example from master
2. Enter the `select` mode
3. Select a shape
4. Use shift + left mouse button to select a second shape
## Expected behavior

The second shape would have been additionally selected.

## Environment
napari: 0.3.1+15.gebfc56a.dirty
Platform: Darwin-18.7.0-x86_64-i386-64bit
Python: 3.7.7 (default, Mar 10 2020, 15:43:03) [Clang 11.0.0 (clang-1100.0.33.17)]
Qt: 5.14.1
PySide2: 5.14.1
NumPy: 1.18.1
SciPy: 1.4.1
Dask: 2.12.0
VisPy: 0.6.4

GL version: 2.1 INTEL-12.10.17
MAX_TEXTURE_SIZE: 16384

Plugins:
- napari-plugin-engine: 0.1.5
- napari-plugins: 0.1.0
- svg: 0.1.2

## Additional context

I think this is because we changed selected data to a set.



Discussion:
Looks like it should be easy to fix by replacing that append with add?
@kevinyamauchi Would you like me to make a PR for this or are you working on it?
Yeah, it should be an easy fix! I wouldn't have time to do it today, so if you have time, that would be great! Otherwise, I can do it tomorrow.

Resolving patch:
diff --git a/napari/layers/shapes/_shapes_mouse_bindings.py b/napari/layers/shapes/_shapes_mouse_bindings.py
--- a/napari/layers/shapes/_shapes_mouse_bindings.py
+++ b/napari/layers/shapes/_shapes_mouse_bindings.py
@@ -28,7 +28,7 @@ def select(layer, event):
                 shapes = layer.selected_data
                 layer._selected_box = layer.interaction_box(shapes)
             else:
-                layer.selected_data.append(shape_under_cursor)
+                layer.selected_data.add(shape_under_cursor)
                 shapes = layer.selected_data
                 layer._selected_box = layer.interaction_box(shapes)
         elif shape_under_cursor is not None:


Test patch: