A set of tools for configuring the Logitech G19 keyboard. Based in: https://github.com/Gnome15/gnome15
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

79 lines
3.0 KiB

# Gnome15 - Suite of tools for the Logitech G series keyboards and headsets
# Copyright (C) 2012 Brett Smith <tanktarta@blueyonder.co.uk>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation, either version 3 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
'''
Classes and utilities for monitoring the current state of the network, allowing
plugins that declare "needs_network" to be enabled or disabled depending on this
state.
This is done using the NetworkManager DBUS interface, although the number of
states available is reduced to connected/disconnected
'''
import dbus
# Logging
import logging
logger = logging.getLogger(__name__)
_system_bus = dbus.SystemBus()
NM_BUS_NAME = 'org.freedesktop.NetworkManager'
NM_OBJECT_PATH = '/org/freedesktop/NetworkManager'
NM_INTERFACE_NAME = 'org.freedesktop.NetworkManager'
NM_STATE_INDEX = { 0: 'Unknown',
10: 'Asleep',
20: 'Disconnected',
30: 'Disconnecting',
40: 'Connecting',
50: 'Connected (Local)',
60: 'Connected (Site)',
70: 'Connected (Global)' }
class NetworkManager():
def __init__(self, screen):
self._screen = self
self.listeners = []
self._state = -1
try:
_manager = _system_bus.get_object(NM_BUS_NAME, NM_OBJECT_PATH)
self._interface = dbus.Interface(_manager, NM_INTERFACE_NAME)
self._set_state(self._interface.state())
self._handle = self._interface.connect_to_signal('StateChanged', self._set_state)
except dbus.DBusException as e:
logger.warning("NetworkManager DBUS interface could not be contacted. All plugins will assume the network is available, and may behave unexpectedly.")
logger.debug("NetworkManager connection attempt below :", exc_info = e)
# Assume connected
self._state = 70
def _set_state(self, state):
if state in NM_STATE_INDEX:
logger.info("New network state is %s", NM_STATE_INDEX[state])
s = state
else:
logger.info("New network state is unknown")
s = 0
if s != self._state and s in [ 0, 20, 60, 70 ]:
self._state = s
for l in self.listeners:
l(self.is_network_available())
def is_network_available(self):
return self._state in [ 60, 70 ]
def is_internet_available(self):
return self._state == 70