Skip to content

Commit

Permalink
ui: tidy up scrolling appearance in configuration panel
Browse files Browse the repository at this point in the history
  • Loading branch information
pfps committed Feb 11, 2024
1 parent 0f0de28 commit 854376f
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 3 deletions.
4 changes: 2 additions & 2 deletions lib/solaar/ui/config_panel.py
Original file line number Diff line number Diff line change
Expand Up @@ -740,13 +740,13 @@ def _disable_listbox_highlight_bg(lb):
def create():
global _box
assert _box is None
_box = Gtk.VBox(homogeneous=False, spacing=8)
_box = Gtk.VBox(homogeneous=False, spacing=4)
_box._last_device = None

config_scroll = Gtk.ScrolledWindow()
config_scroll.add(_box)
config_scroll.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.AUTOMATIC)
config_scroll.set_shadow_type(Gtk.ShadowType.IN)
config_scroll.set_shadow_type(Gtk.ShadowType.NONE) # was IN
config_scroll.set_size_request(0, 350) # ask for enough vertical space for about eight settings

return config_scroll
Expand Down
2 changes: 1 addition & 1 deletion lib/solaar/ui/window.py
Original file line number Diff line number Diff line change
Expand Up @@ -134,7 +134,7 @@ def _status_line(label_text):
p._lux = _status_line(_('Lighting'))
p.pack_start(p._lux, False, False, 0)

# p.pack_start(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL), False, False, 0) # spacer
p.pack_start(Gtk.Separator.new(Gtk.Orientation.HORIZONTAL), False, False, 0) # spacer

p._config = _config_panel.create()
p.pack_end(p._config, True, True, 4)
Expand Down
75 changes: 75 additions & 0 deletions tests/test_hidpp20_simple.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
from collections import namedtuple

import logitech_receiver.hidpp20 as hidpp20

response = namedtuple('response', 'response device feature function params')


def feature_request(device, feature, function=0x00, *params, no_reply=False):
global responses
assert len(responses) > 0, f"extra call of feature_request {device}, {feature}, {function}, {params}, {no_reply}"
r = responses[0]
if r.device == device and r.feature == feature and r.function == function and r.params == params:
responses = responses[1:]
return bytes.fromhex(r.response) if r.response is not None else None
raise AssertionError(f"incorrect call of feature_request {device}, {feature}, {function}, {params}, {no_reply}")


def test_set_host_name(mocker): # FIXME
return None
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFFFFFF', None, hidpp20.FEATURE.HOSTS_INFO, 0x00, ())] # FIXME
hidpp20.set_host_name(None, 'THIS IS A LONG HOST NAME')
assert responses == []


def test_get_onboard_mode(mocker):
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFFFFFF', None, hidpp20.FEATURE.ONBOARD_PROFILES, 0x20, ())]
result = hidpp20.get_onboard_mode(None)
assert result == 0x3
assert responses == []


def test_set_onboard_mode(mocker):
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFFFFFF', None, hidpp20.FEATURE.ONBOARD_PROFILES, 0x10, (0x3, ))]
hidpp20.set_onboard_mode(None, 0x3)
assert responses == []


def test_get_polling_rate(mocker):
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFF', None, hidpp20.FEATURE.REPORT_RATE, 0x10, ())]
result = hidpp20.get_polling_rate(None)
assert result == '3ms'
assert responses == []
responses = [
response(None, None, hidpp20.FEATURE.REPORT_RATE, 0x10, ()),
response('04FFFF', None, hidpp20.FEATURE.EXTENDED_ADJUSTABLE_REPORT_RATE, 0x20, ())
]
result = hidpp20.get_polling_rate(None)
assert result == '500us'
assert responses == []


def test_get_remaining_pairing(mocker):
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFF', None, hidpp20.FEATURE.REMAINING_PAIRING, 0x0, ())]
result = hidpp20.get_remaining_pairing(None)
assert result == 0x03
assert responses == []


def test_config_change(mocker):
global responses
mocker.patch('logitech_receiver.hidpp20.feature_request', wraps=feature_request)
responses = [response('03FFFF', None, hidpp20.FEATURE.CONFIG_CHANGE, 0x0, (0x2, ))]
result = hidpp20.config_change(None, 0x2)
assert result == bytes.fromhex('03FFFF')
assert responses == []

0 comments on commit 854376f

Please sign in to comment.