コード例 #1
0
ファイル: test_key_bindings.py プロジェクト: zeroth/napari
def test_reset_scroll_progress(make_test_viewer):
    """Test select all key binding."""
    viewer = make_test_viewer()
    view = viewer.window.qt_viewer
    assert viewer.dims._scroll_progress == 0

    view.canvas.events.key_press(key=keys.Key('Control'))
    viewer.dims._scroll_progress = 10
    assert viewer.dims._scroll_progress == 10

    view.canvas.events.key_release(key=keys.Key('Control'))
    assert viewer.dims._scroll_progress == 0
コード例 #2
0
ファイル: qt.py プロジェクト: joe311/vispy
 def _processKey(self, event):
     # evaluates the keycode of qt, and transform to vispy key.
     key = int(event.key())
     if key in KEYMAP:
         return KEYMAP[key]
     elif key >= 32 and key <= 127:
         return keys.Key(chr(key))
     else:
         return None
コード例 #3
0
 def _processKey(self, key):
     if 97 <= key <= 122:
         key -= 32
     if key in KEYMAP:
         return KEYMAP[key]
     elif key>=32 and key <= 127:
         return keys.Key(chr(key))
     else:
         return None 
コード例 #4
0
 def _process_key(self, key):
     if key in KEYMAP:
         if isinstance(key, int):
             return KEYMAP[key], ''
         else:
             return KEYMAP[key], key
     elif isinstance(key, int):
         return None, ''  # unsupported special char
     else:
         return keys.Key(key.upper()), key
コード例 #5
0
def test_panzoom_on_space(make_napari_viewer):
    viewer = make_napari_viewer()
    view = viewer.window._qt_viewer
    data = np.random.random((2, 6, 30, 40))
    layer = viewer.add_image(data)

    layer.mode = 'transform'
    view.canvas.events.key_press(key=keys.Key('Space'))
    assert layer.mode == 'pan_zoom'
    assert viewer.overlays.interaction_box.show is False
コード例 #6
0
def test_layer_keybindings(qtbot):
    """Test adding keybindings to a layer
    """
    np.random.seed(0)
    viewer = Viewer()
    view = viewer.window.qt_viewer
    qtbot.addWidget(view)

    layer = viewer.add_image(np.random.random((10, 20)))
    layer.selected = True

    mock_press = Mock()
    mock_release = Mock()
    mock_shift_press = Mock()
    mock_shift_release = Mock()

    @layer.bind_key('F')
    def key_callback(l):
        assert layer == l

        # on press
        mock_press.method()

        yield

        # on release
        mock_release.method()

    @layer.bind_key('Shift-F')
    def key_callback(l):
        assert layer == l

        # on press
        mock_shift_press.method()

        yield

        # on release
        mock_shift_release.method()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'))
    mock_press.method.assert_called_once()
    mock_press.reset_mock()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'))
    mock_press.method.assert_not_called()
    mock_release.method.assert_called_once()
    mock_release.reset_mock()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_called_once()
    mock_shift_press.reset_mock()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_called_once()
    mock_shift_release.reset_mock()

    # Close the viewer
    viewer.window.close()
コード例 #7
0
ファイル: test_key_bindings.py プロジェクト: zeroth/napari
def test_viewer_key_bindings(make_test_viewer):
    """Test adding key bindings to the viewer
    """
    np.random.seed(0)
    viewer = make_test_viewer()
    view = viewer.window.qt_viewer

    mock_press = Mock()
    mock_release = Mock()
    mock_shift_press = Mock()
    mock_shift_release = Mock()

    @viewer.bind_key('F')
    def key_callback(v):
        assert viewer == v

        # on press
        mock_press.method()

        yield

        # on release
        mock_release.method()

    @viewer.bind_key('Shift-F')
    def key_shift_callback(v):
        assert viewer == v

        # on press
        mock_shift_press.method()

        yield

        # on release
        mock_shift_release.method()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'))
    mock_press.method.assert_called_once()
    mock_press.reset_mock()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'))
    mock_press.method.assert_not_called()
    mock_release.method.assert_called_once()
    mock_release.reset_mock()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_called_once()
    mock_shift_press.reset_mock()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_called_once()
    mock_shift_release.reset_mock()
コード例 #8
0
def test_layer_key_bindings(make_napari_viewer):
    """Test adding key bindings to a layer"""
    np.random.seed(0)
    viewer = make_napari_viewer()
    view = viewer.window._qt_viewer

    layer = viewer.add_image(np.random.random((10, 20)))
    viewer.layers.selection.add(layer)

    mock_press = Mock()
    mock_release = Mock()
    mock_shift_press = Mock()
    mock_shift_release = Mock()

    @layer.bind_key('F')
    def key_callback(_layer):
        assert layer == _layer
        # on press
        mock_press.method()
        yield
        # on release
        mock_release.method()

    @layer.bind_key('Shift-F')
    def key_shift_callback(_layer):
        assert layer == _layer

        # on press
        mock_shift_press.method()

        yield

        # on release
        mock_shift_release.method()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'))
    mock_press.method.assert_called_once()
    mock_press.reset_mock()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'))
    mock_press.method.assert_not_called()
    mock_release.method.assert_called_once()
    mock_release.reset_mock()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_not_called()

    # Simulate press only
    view.canvas.events.key_press(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_called_once()
    mock_shift_press.reset_mock()
    mock_shift_release.method.assert_not_called()

    # Simulate release only
    view.canvas.events.key_release(key=keys.Key('F'), modifiers=[keys.SHIFT])
    mock_press.method.assert_not_called()
    mock_release.method.assert_not_called()
    mock_shift_press.method.assert_not_called()
    mock_shift_release.method.assert_called_once()
    mock_shift_release.reset_mock()