beeref/tests/widgets/controls/test_mousewheel.py

967 lines
29 KiB
Python
Raw Permalink Normal View History

from unittest.mock import patch, MagicMock
from PyQt6 import QtWidgets, QtCore
from PyQt6.QtCore import Qt
from beeref.config.controls import MouseWheelConfig
from beeref.widgets.controls.mousewheel import (
MouseWheelDelegate,
MouseWheelModifiersEditor,
MouseWheelModel,
MouseWheelProxy,
)
from beeref.utils import ActionList
def test_mousewheel_editor_inits_modifiers_when_not_configured(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
assert len(editor.checkboxes) == 6
for checkbox in editor.checkboxes.values():
assert checkbox.isChecked() is False
def test_mousewheel_editor_inits_modifiers_when_configured(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt', 'Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
assert len(editor.checkboxes) == 6
for key, checkbox in editor.checkboxes.items():
if key in ('Alt', 'Ctrl'):
assert checkbox.isChecked() is True
else:
assert checkbox.isChecked() is False
def test_mousewheel_editor_set_modifiers_no_modifier(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt', 'Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers_no_modifier()
for key, checkbox in editor.checkboxes.items():
if key == 'No Modifier':
assert checkbox.isChecked() is True
else:
assert checkbox.isChecked() is False
def test_mousewheel_editor_on_modifiers_changed_no_modifiers_checked(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt', 'Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.on_modifiers_changed('No Modifier', Qt.CheckState.Checked.value)
for key, checkbox in editor.checkboxes.items():
if key == 'No Modifier':
assert checkbox.isChecked() is True
else:
assert checkbox.isChecked() is False
def test_mousewheel_editor_on_modifiers_changed_when_a_modifier_checked(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['No Modifier'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.on_modifiers_changed('Alt', Qt.CheckState.Checked.value)
for key, checkbox in editor.checkboxes.items():
if key == 'No Modifier':
assert checkbox.isChecked() is False
def test_mousewheel_editor_on_modifiers_changed_everything_unchecked(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.on_modifiers_changed('Alt', Qt.CheckState.Unchecked.value)
for key, checkbox in editor.checkboxes.items():
if key == 'No Modifier':
assert checkbox.isChecked() is True
else:
assert checkbox.isChecked() is False
def test_mousewheel_editor_get_modifiers(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.checkboxes['Alt'].setChecked(True)
editor.get_modifiers() == ['Alt']
def test_mousewheel_editor_get_modifiers_when_no_modifiers(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.ignore_on_changed = True
editor.checkboxes['No Modifier'].setChecked(True)
editor.checkboxes['Alt'].setChecked(True)
editor.get_modifiers() == ['No Modifier']
def test_mousewheel_editor_get_modifiers_when_no_modifiers_cleaned_false(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.ignore_on_changed = True
editor.checkboxes['Shift'].setChecked(True)
editor.checkboxes['Alt'].setChecked(True)
editor.ignore_on_changed = False
assert editor.get_modifiers(cleaned=False) == ['Shift', 'Alt']
def test_mousewheel_editor_set_modifiers(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers(['Alt', 'Shift'])
for key, checkbox in editor.checkboxes.items():
if key in ['Alt', 'Shift']:
assert checkbox.isChecked() is True
else:
assert checkbox.isChecked() is False
def test_mousewheel_editor_get_temp_action(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
tmp = editor.get_temp_action()
assert tmp.get_modifiers() == ['Alt']
def test_mousewheel_editor_reset_inputs(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers(['Ctrl'])
editor.reset_inputs()
assert editor.get_modifiers() == ['Alt']
@patch('beeref.widgets.controls.mousewheel.MouseWheelModifiersEditor.accept')
def test_mousewheel_editor_on_save_no_conflicts(accept_mock, view):
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers(['Shift'])
editor.on_save()
assert editor.get_modifiers() == ['Shift']
assert editor.remove_from_other is None
accept_mock.assert_called_once_with()
@patch('beeref.widgets.controls.mousewheel.MouseWheelModifiersEditor.accept')
def test_mousewheel_editor_on_save_reenter_existing_shortcut(
accept_mock, view):
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.on_save()
assert editor.get_modifiers() == ['Alt']
assert editor.remove_from_other is None
accept_mock.assert_called_once_with()
@patch('PyQt6.QtWidgets.QMessageBox.question',
return_value=QtWidgets.QMessageBox.StandardButton.No)
@patch('beeref.widgets.controls.mousewheel.MouseWheelModifiersEditor.accept')
def test_mousewheel_editor_on_save_conflicts_cancel(
accept_mock, msg_mock, view):
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers(['Ctrl'])
editor.on_save()
assert editor.get_modifiers() == ['Alt']
assert editor.remove_from_other is None
accept_mock.assert_not_called()
@patch('PyQt6.QtWidgets.QMessageBox.question',
return_value=QtWidgets.QMessageBox.StandardButton.Yes)
@patch('beeref.widgets.controls.mousewheel.MouseWheelModifiersEditor.accept')
def test_mousewheel_editor_on_save_conflicts_confirm(
accept_mock, msg_mock, view):
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
editor = MouseWheelModifiersEditor(
view, index=MagicMock(row=MagicMock(return_value=0)))
editor.set_modifiers(['Ctrl'])
editor.on_save()
assert editor.get_modifiers() == ['Ctrl']
assert editor.remove_from_other == a2
accept_mock.assert_called_once_with()
def test_mousewheel_delegate_create_editor(view):
delegate = MouseWheelDelegate()
model = MouseWheelModel()
widget = delegate.createEditor(
view, QtWidgets.QStyleOptionViewItem(), index=model.index(0, 3))
assert isinstance(widget.editor, MouseWheelModifiersEditor)
def test_mousewheel_delegate_setmodeldata(view):
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
delegate = MouseWheelDelegate()
model = MouseWheelModel()
widget = delegate.createEditor(
view, QtWidgets.QStyleOptionViewItem(), index=model.index(0, 2))
widget.editor.set_modifiers(['Ctrl', 'Shift'])
with patch.object(widget.editor, 'result',
return_value=QtWidgets.QDialog.DialogCode.Accepted):
delegate.setModelData(widget, model, index=model.index(0, 2))
assert action.get_modifiers() == ['Shift', 'Ctrl']
def test_mousewheel_model_columncount():
model = MouseWheelModel()
model.columnCount(None) == 3
def test_mousewheel_model_rowcount():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
model = MouseWheelModel()
model.rowCount(None) == 2
def test_mousewheel_model_headerdata():
model = MouseWheelModel()
header = model.headerData(
0,
QtCore.Qt.Orientation.Horizontal,
QtCore.Qt.ItemDataRole.DisplayRole)
assert header == 'Action'
def test_flags_first_column():
model = MouseWheelModel()
flags = model.flags(model.index(0, 0))
assert flags == (QtCore.Qt.ItemFlag.ItemIsEnabled
| QtCore.Qt.ItemFlag.ItemNeverHasChildren)
def test_flags_modifiers_column():
model = MouseWheelModel()
flags = model.flags(model.index(0, 2))
assert flags == (QtCore.Qt.ItemFlag.ItemIsEnabled
| QtCore.Qt.ItemFlag.ItemNeverHasChildren
| QtCore.Qt.ItemFlag.ItemIsEditable)
def test_flags_inverted_column_when_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
flags = model.flags(model.index(0, 4))
assert flags == (QtCore.Qt.ItemFlag.ItemIsEnabled
| QtCore.Qt.ItemFlag.ItemNeverHasChildren
| QtCore.Qt.ItemFlag.ItemIsEditable
| QtCore.Qt.ItemFlag.ItemIsUserCheckable)
def test_flags_inverted_column_when_not_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
flags = model.flags(model.index(0, 4))
assert flags == (QtCore.Qt.ItemFlag.ItemIsEnabled
| QtCore.Qt.ItemFlag.ItemNeverHasChildren)
def test_mousewheel_model_data_gets_text():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=0),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value == 'Foo'
def test_mousewheel_model_data_gets_changed_when_not_changed():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=1),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value is None
def test_mousewheel_model_data_gets_changed_when_changed():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_modifiers(['Shift'])
value = model.data(
index=MagicMock(
column=MagicMock(return_value=1),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value == ''
def test_mousewheel_model_data_gets_modifiers():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Ctrl', 'Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value == 'Ctrl + Alt'
def test_mousewheel_model_data_gets_inverted_when_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Ctrl', 'Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value == 'No'
def test_mousewheel_model_data_gets_inverted_when_not_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Ctrl', 'Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.DisplayRole)
assert value is None
def test_mousewheel_model_data_tooltip_changed_when_not_changed():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Ctrl', 'Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=1),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value is None
def test_mousewheel_model_data_tooltip_changed_when_changed():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_modifiers(['Shift'])
value = model.data(
index=MagicMock(
column=MagicMock(return_value=1),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value == 'Changed from default'
def test_mousewheel_model_data_tooltip_modifiers_changed_from_not_configured():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=[],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_modifiers(['Shift'])
value = model.data(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value == 'Default: Not configured'
def test_mousewheel_model_data_tooltip_modifiers_when_changed():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Ctrl', 'Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_modifiers(['Shift'])
value = model.data(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value == 'Default: Ctrl + Alt'
def test_mousewheel_model_data_tooltip_inverted_when_changed_and_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_inverted(True)
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value == 'Default: No'
def test_mousewheel_model_data_tooltip_inverted_changed_and_not_invertible():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=False)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_modifiers(['Shift'])
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.ToolTipRole)
assert value is None
def test_mousewheel_model_data_checkstaterole_invertible_invertcol_inverted():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
action.set_inverted(True)
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.CheckStateRole)
assert value == Qt.CheckState.Checked
def test_mousewheel_model_data_checkstaterole_invertible_invcol_not_inverted():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.CheckStateRole)
assert value == Qt.CheckState.Unchecked
def test_mousewheel_model_data_checkstaterole_other_column():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
value = model.data(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
role=QtCore.Qt.ItemDataRole.CheckStateRole)
assert value is None
def test_mousewheel_model_setdate_saves_inverted():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
model.setData(
index=MagicMock(
column=MagicMock(return_value=3),
row=MagicMock(return_value=0)),
value=Qt.CheckState.Checked.value,
role=None)
assert action.get_inverted() is True
def test_mousewheel_model_setdata_saves_controls():
action = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([action])):
model = MouseWheelModel()
model.setData(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
value=['Ctrl'],
role=None)
assert action.get_modifiers() == ['Ctrl']
def test_mousewheel_model_setdata_saves_controls_and_removes_from_other():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a1, a2])):
model = MouseWheelModel()
model.setData(
index=MagicMock(
column=MagicMock(return_value=2),
row=MagicMock(return_value=0)),
value=['Ctrl'],
role=None,
remove_from_other=a2)
assert a1.get_modifiers() == ['Ctrl']
assert a2.get_modifiers() == []
def test_mousewheel_proxy_data_unfiltered():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
a3 = MouseWheelConfig(
id='baz1',
group='baz',
text='Baz',
modifiers=['Shift'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a2, a1, a3])):
proxy = MouseWheelProxy()
assert proxy.data(
proxy.index(0, 0), QtCore.Qt.ItemDataRole.DisplayRole) == 'Bar'
assert proxy.data(
proxy.index(1, 0), QtCore.Qt.ItemDataRole.DisplayRole) == 'Foo'
assert proxy.data(
proxy.index(2, 0), QtCore.Qt.ItemDataRole.DisplayRole) == 'Baz'
def test_mousewheel_proxy_data_filtered():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
a3 = MouseWheelConfig(
id='baz1',
group='baz',
text='Baz',
modifiers=['Shift'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a2, a1, a3])):
proxy = MouseWheelProxy()
proxy.setFilterFixedString('b')
assert proxy.data(
proxy.index(0, 0), QtCore.Qt.ItemDataRole.DisplayRole) == 'Bar'
assert proxy.data(
proxy.index(1, 0), QtCore.Qt.ItemDataRole.DisplayRole) == 'Baz'
def test_mousewheel_proxy_setdata_saves_correct_filtered_index():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
a3 = MouseWheelConfig(
id='baz1',
group='baz',
text='Baz',
modifiers=['Shift'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a2, a1, a3])):
proxy = MouseWheelProxy()
proxy.setFilterFixedString('b')
proxy.setData(
index=proxy.index(1, 3),
value={'modifiers': ['Ctrl', 'Alt']},
role=None)
a3.get_modifiers() == ['Ctrl', 'Alt']
def test_mousewheel_proxy_setdata_remove_from_other():
a1 = MouseWheelConfig(
id='foo1',
group='foo',
text='Foo',
modifiers=['Alt'],
invertible=True)
a2 = MouseWheelConfig(
id='bar1',
group='bar',
text='Bar',
modifiers=['Ctrl'],
invertible=True)
with patch('beeref.config.controls.KeyboardSettings.MOUSEWHEEL_ACTIONS',
ActionList([a2, a1])):
proxy = MouseWheelProxy()
proxy.setData(
index=proxy.index(0, 3),
value={'modifiers': ['Ctrl', 'Alt']},
role=None,
remove_from_other=a2)
a1.get_modifiers() == ['Ctrl', 'Alt']
a2.get_modifiers() == []