added more known device names and kinds

This commit is contained in:
Daniel Pavel 2012-11-13 09:48:52 +02:00
parent fb8cf26c51
commit 13a11e78f0
5 changed files with 36 additions and 25 deletions

View File

@ -85,26 +85,7 @@ if __name__ == '__main__':
listener = None
notify_missing = True
def status_changed(receiver, device=None, ui_flags=0):
assert receiver is not None
if window:
GObject.idle_add(ui.main_window.update, window, receiver, device)
if icon:
GObject.idle_add(ui.status_icon.update, icon, receiver)
if ui_flags & STATUS.UI_POPUP:
GObject.idle_add(window.popup, icon)
if device is None:
# always notify on receiver updates
ui_flags |= STATUS.UI_NOTIFY
if ui_flags & STATUS.UI_NOTIFY and ui.notify.available:
GObject.idle_add(ui.notify.show, device or receiver)
global listener
if not listener:
GObject.timeout_add(5000, check_for_listener)
listener = None
# initializes the receiver listener
from receiver import ReceiverListener
def check_for_listener(retry=True):
def _check_still_scanning(listener):
@ -134,6 +115,28 @@ if __name__ == '__main__':
pairing.state = pairing.State(listener)
listener.trigger_device_events()
# callback delivering status events from the receiver/devices to the UI
def status_changed(receiver, device=None, ui_flags=0):
assert receiver is not None
if window:
GObject.idle_add(ui.main_window.update, window, receiver, device)
if icon:
GObject.idle_add(ui.status_icon.update, icon, receiver)
if ui_flags & STATUS.UI_POPUP:
GObject.idle_add(window.popup, icon)
if device is None:
# always notify on receiver updates
ui_flags |= STATUS.UI_NOTIFY
if ui_flags & STATUS.UI_NOTIFY and ui.notify.available:
GObject.idle_add(ui.notify.show, device or receiver)
global listener
if not listener:
GObject.timeout_add(5000, check_for_listener)
listener = None
# clears all properties of devices that have been inactive for too long
_DEVICE_TIMEOUT = 3 * 60 # seconds
_DEVICE_STATUS_CHECK = 30 # seconds
from time import time as _timestamp

View File

@ -44,11 +44,12 @@ def _show_about_window(action):
about.set_logo_icon_name(_NAME)
about.set_version(_VERSION)
about.set_license_type(Gtk.License.GPL_2_0)
about.set_copyright('\xC2\xA9 2012 Daniel Pavel')
about.set_authors(('Daniel Pavel http://github.com/pwr',))
# about.add_credit_section('Testing', 'Douglas Wagner')
about.set_website('http://github.com/pwr/Solaar/wiki')
about.set_website_label('Solaar Wiki')
# about.set_comments('Using Python %s\n' % PYTTHON_VERSION.split(' ')[0])
about.set_comments('Shows status of devices connected\nto a Logitech Unifying Receiver.')
about.run()
about.destroy()
about = _action('help-about', 'About ' + _NAME, _show_about_window)
@ -65,7 +66,6 @@ def _pair_device(action, frame):
window = frame.get_toplevel()
pair_dialog = ui.pair_window.create(action, pairing.state)
# window.present()
pair_dialog.set_transient_for(window)
pair_dialog.set_modal(True)

View File

@ -37,14 +37,22 @@ PROPS = type('PROPS', (),
NAMES = {
'M315': ('Wireless Mouse M315', 'mouse'),
'M325': ('Wireless Mouse M325', 'mouse'),
'M505': ('Wireless Mouse M505', 'mouse'),
'M510': ('Wireless Mouse M510', 'mouse'),
'M515': ('Couch Mouse M515', 'mouse'),
'M525': ('Wireless Mouse M525', 'mouse'),
'M570': ('Wireless Trackball M570', 'trackball'),
'M600': ('Touch Mouse M600', 'mouse'),
'M705': ('Marathon Mouse M705', 'mouse'),
'K270': ('Wireless Keyboard K270', 'keyboard'),
'K350': ('Wireless Keyboard K350', 'keyboard'),
'K360': ('Wireless Keyboard K360', 'keyboard'),
'K400': ('Wireless Touch Keyboard K400', 'keyboard'),
'K750': ('Wireless Solar Keyboard K750', 'keyboard'),
'K800': ('Wireless Illuminated Keyboard K800', 'keyboard'),
'T400': ('Zone Touch Mouse T400', 'mouse'),
'T650': ('Wireless Rechargeable Touchpad T650', 'touchpad'),
'Cube': ('Logitech Cube', 'mouse'),
'Anywhere MX': ('Anywhere Mouse MX', 'mouse'),
'Performance MX': ('Performance Mouse MX', 'mouse'),
}

View File

@ -6,8 +6,6 @@ import logging
from struct import unpack as _unpack
from .constants import (STATUS, PROPS)
from ..unifying_receiver.constants import FEATURE
from ..unifying_receiver import api as _api
#
#
@ -29,6 +27,8 @@ def _charge_status(data, hasLux=False):
def request_status(devinfo):
from ..unifying_receiver.constants import FEATURE
from ..unifying_receiver import api as _api
reply = _api.request(devinfo.handle, devinfo.number,
feature=FEATURE.SOLAR_CHARGE, function=b'\x06', params=b'\x78\x01',
features=devinfo.features)

View File

@ -73,7 +73,7 @@ class ThreadedHandle(object):
return str(int(self))
def __repr__(self):
return '<LocalHandle[%s]>' % self.path
return '<ThreadedHandle[%s]>' % self.path
def __bool__(self):
return bool(self._handles)