beeref/tests/widgets/controls/test_mousewheel.py
2024-04-01 15:21:54 +02:00

966 lines
29 KiB
Python

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() == []