本文整理汇总了Python中blueman.gui.Notification.Notification.show方法的典型用法代码示例。如果您正苦于以下问题:Python Notification.show方法的具体用法?Python Notification.show怎么用?Python Notification.show使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类blueman.gui.Notification.Notification
的用法示例。
在下文中一共展示了Notification.show方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: _on_authorize_service
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
def _on_authorize_service(self, parameters, invocation):
def on_auth_action(action):
logging.info(action)
if action == "always":
device = Bluez.Device(n._device)
device.set("Trusted", True)
if action == "always" or action == "accept":
invocation.return_value(GLib.Variant('()', ()))
else:
invocation.return_dbus_error('org.bluez.Error.Rejected', 'Rejected')
self.n = None
device, uuid = parameters.unpack()
logging.info("Agent.Authorize")
dev_str = self.get_device_string(device)
service = ServiceUUID(uuid).name
notify_message = (_("Authorization request for:") + "\n%s\n" + _("Service:") + " <b>%s</b>") % (dev_str, service)
actions = [["always", _("Always accept")],
["accept", _("Accept")],
["deny", _("Deny")]]
n = Notification(_("Bluetooth Authentication"), notify_message, 0, actions, on_auth_action,
icon_name="blueman", pos_hint=self.status_icon.geometry)
n.show()
n._device = device
示例2: _on_authorize_service
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
def _on_authorize_service(self, device, uuid, ok, err):
def on_auth_action(action):
logging.info(action)
if action == "always":
device = bluez.Device(n._device)
device.set("Trusted", True)
if action == "always" or action == "accept":
ok()
else:
err(BluezErrorRejected("Rejected"))
self.n = None
logging.info("Agent.Authorize")
dev_str = self.get_device_string(device)
service = ServiceUUID(uuid).name
notify_message = \
(_("Authorization request for:") + "\n%s\n" + _("Service:") + " <b>%s</b>") % (dev_str, service)
actions = [["always", _("Always accept")],
["accept", _("Accept")],
["deny", _("Deny")]]
n = Notification(_("Bluetooth Authentication"), notify_message, 0, actions, on_auth_action, icon_name="blueman")
n.show()
n._device = device
示例3: _on_transfer_completed
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
def _on_transfer_completed(self, _manager, transfer_path, success):
try:
attributes = self._agent.transfers[transfer_path]
except KeyError:
logging.info("This is probably not an incoming transfer we authorized")
return
src = attributes['path']
dest_dir, ignored = self._make_share_path()
filename = os.path.basename(src)
dest = os.path.join(dest_dir, filename)
if os.path.exists(dest):
now = datetime.now()
filename = "%s_%s" % (now.strftime("%Y%m%d%H%M%S"), filename)
logging.info("Destination file exists, renaming to: %s" % filename)
try:
shutil.move(src, dest)
except (OSError, PermissionError):
logging.error("Failed to move files", exc_info=True)
success = False
if success:
self._notification = Notification(_("File received"),
_("File %(0)s from %(1)s successfully received") % {
"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(attributes['name']) + "</b>"},
**self._notify_kwargs)
self._add_open(self._notification, "Open", dest)
self._notification.show()
elif not success:
n = Notification(
_("Transfer failed"),
_("Transfer of file %(0)s failed") % {
"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(attributes['name']) + "</b>"},
**self._notify_kwargs
)
n.show()
if attributes['size'] > 350000:
self._normal_transfers -= 1
else:
self._silent_transfers -= 1
del self._agent.transfers[transfer_path]
示例4: _on_session_removed
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
def _on_session_removed(self, _manager, _session_path):
if self._silent_transfers == 0:
return
if self._normal_transfers == 0:
n = Notification(_("Files received"),
ngettext("Received %d file in the background", "Received %d files in the background",
self._silent_transfers) % self._silent_transfers,
**self._notify_kwargs)
self._add_open(n, "Open Location", self._config["shared-path"])
n.show()
else:
n = Notification(_("Files received"),
ngettext("Received %d more file in the background",
"Received %d more files in the background",
self._silent_transfers) % self._silent_transfers,
**self._notify_kwargs)
self._add_open(n, "Open Location", self._config["shared-path"])
n.show()
示例5: Agent
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
class Agent(obex.Agent):
__agent_path = '/org/bluez/obex/agent/blueman'
def __init__(self, applet):
super(Agent, self).__init__(self.__agent_path, self._handle_method_call)
self._applet = applet
self._config = Config("org.blueman.transfer")
self._allowed_devices = []
self._notification = None
self._pending_transfer = None
self.transfers = {}
def _handle_method_call(self, connection, sender, agent_path, interface_name, method_name, parameters, invocation):
log_msg = "%s %s" % (method_name, agent_path)
if method_name == 'Release':
logging.info(log_msg)
self._on_release()
elif method_name == 'AuthorizePush':
logging.info(log_msg)
self._on_authorize(parameters, invocation)
elif method_name == 'Cancel':
logging.info(log_msg)
self._on_cancel(parameters, invocation)
def register(self):
obex.AgentManager().register_agent(self.__agent_path)
def unregister(self):
obex.AgentManager().unregister_agent(self.__agent_path)
def _on_release(self):
raise Exception(self.__agent_path + " was released unexpectedly")
def _on_authorize(self, parameters, invocation):
def on_action(action):
logging.info("Action %s" % action)
if action == "accept":
self.transfers[self._pending_transfer['transfer_path']] = {
'path': self._pending_transfer['root'] + '/' + os.path.basename(self._pending_transfer['filename']),
'size': self._pending_transfer['size'],
'name': self._pending_transfer['name']
}
param = GLib.Variant('(s)', (self.transfers[self._pending_transfer['transfer_path']]['path'],))
invocation.return_value(param)
self._allowed_devices.append(self._pending_transfer['address'])
GLib.timeout_add(60000, self._allowed_devices.remove, self._pending_transfer['address'])
else:
invocation.return_dbus_error('org.bluez.obex.Error.Rejected', 'Rejected')
transfer_path = parameters.unpack()[0]
transfer = obex.Transfer(transfer_path)
session = obex.Session(transfer.session)
root = session.root
address = session.address
filename = transfer.name
size = transfer.size
try:
adapter = self._applet.Manager.get_adapter()
device = self._applet.Manager.find_device(address, adapter.get_object_path())
name = device["Alias"]
trusted = device["Trusted"]
except Exception as e:
logging.exception(e)
name = address
trusted = False
self._pending_transfer = {'transfer_path': transfer_path, 'address': address, 'root': root,
'filename': filename, 'size': size, 'name': name}
notif_kwargs = {"icon_name": "blueman"}
try:
notif_kwargs["pos_hint"] = self._applet.Plugins.StatusIcon.geometry
except AttributeError:
logging.error("Failed to get StatusIcon")
# This device was neither allowed nor is it trusted -> ask for confirmation
if address not in self._allowed_devices and not (self._config['opp-accept'] and trusted):
self._notification = Notification(_("Incoming file over Bluetooth"),
_("Incoming file %(0)s from %(1)s") % {"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(name) + "</b>"},
30000, [["accept", _("Accept"), "help-about"], ["reject", _("Reject"), "help-about"]], on_action,
**notif_kwargs)
self._notification.show()
# Device is trusted or was already allowed, larger file -> display a notification, but auto-accept
elif size > 350000:
self._notification = Notification(_("Receiving file"),
_("Receiving file %(0)s from %(1)s") % {"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(name) + "</b>"},
**notif_kwargs)
on_action('accept')
self._notification.show()
# Device is trusted or was already allowed. very small file -> auto-accept and transfer silently
else:
#.........这里部分代码省略.........
示例6: BluezAgent
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
class BluezAgent(Agent):
__agent_path = '/org/bluez/agent/blueman'
def __init__(self, status_icon, time_func):
super(BluezAgent, self).__init__(self.__agent_path, self._handle_method_call)
self.status_icon = status_icon
self.dialog = None
self.n = None
self.signal_id = None
self.time_func = time_func
self._db = None
def register_agent(self):
logging.info("Register Agent")
self._register_object()
Bluez.AgentManager().register_agent(self.__agent_path, "KeyboardDisplay", default=True)
def unregister_agent(self):
logging.info("Unregister Agent")
self._unregister_object()
Bluez.AgentManager().unregister_agent(self.__agent_path)
def _handle_method_call(self, connection, sender, agent_path, interface_name, method_name, parameters, invocation):
if method_name == 'Release':
self._on_release()
elif method_name == 'RequestPinCode':
self._on_request_pin_code(parameters, invocation)
elif method_name == 'DisplayPinCode':
self._on_display_pin_code(parameters, invocation)
elif method_name == 'RequestPasskey':
self._on_request_passkey(parameters, invocation)
elif method_name == 'DisplayPasskey':
self._on_display_passkey(parameters, invocation)
elif method_name == 'RequestConfirmation':
self._on_request_confirmation(parameters, invocation)
elif method_name == 'RequestAuthorization':
self._on_request_authorization(parameters, invocation)
elif method_name == 'AuthorizeService':
self._on_authorize_service(parameters, invocation)
elif method_name == 'Cancel':
self._on_cancel()
else:
logging.warning('Unhandled method: %s' % method_name)
def build_passkey_dialog(self, device_alias, dialog_msg, is_numeric):
def on_insert_text(editable, new_text, new_text_length, position):
if not new_text.isdigit():
editable.stop_emission("insert-text")
builder = Gtk.Builder()
builder.add_from_file(UI_PATH + "/applet-passkey.ui")
builder.set_translation_domain("blueman")
bind_textdomain_codeset("blueman", "UTF-8")
dialog = builder.get_object("dialog")
dialog.props.icon_name = "blueman"
dev_name = builder.get_object("device_name")
dev_name.set_markup(device_alias)
msg = builder.get_object("message")
msg.set_text(dialog_msg)
pin_entry = builder.get_object("pin_entry")
show_input = builder.get_object("show_input_check")
if (is_numeric):
pin_entry.set_max_length(6)
pin_entry.set_width_chars(6)
pin_entry.connect("insert-text", on_insert_text)
show_input.hide()
else:
pin_entry.set_max_length(16)
pin_entry.set_width_chars(16)
pin_entry.set_visibility(False)
show_input.connect("toggled", lambda x: pin_entry.set_visibility(x.props.active))
accept_button = builder.get_object("accept")
pin_entry.connect("changed", lambda x: accept_button.set_sensitive(x.get_text() != ''))
return (dialog, pin_entry)
def get_device_string(self, device_path):
device = Bluez.Device(device_path)
return "<b>%s</b> (%s)" % (escape(device["Alias"]), device["Address"])
def _lookup_default_pin(self, device_path):
if not self._db:
self._db = ElementTree.parse(os.path.join(PKGDATA_DIR, 'pin-code-database.xml'))
device = Bluez.Device(device_path)
lookup_dict = {
'name': device['Name'],
'type': bt_class_to_string(device['Class']),
'oui': device['Address'][:9]
}
pin = None
for s in PIN_SEARCHES:
search = s.format(**lookup_dict)
entry = self._db.find(search)
if entry is not None:
pin = entry.get('pin')
#.........这里部分代码省略.........
示例7: Agent
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
class Agent(DbusService):
__agent_path = '/org/bluez/obex/agent/blueman'
def __init__(self, applet):
super().__init__(None, "org.bluez.obex.Agent1", self.__agent_path, Gio.BusType.SESSION)
self.add_method("Release", (), "", self._release)
self.add_method("Cancel", (), "", self._cancel)
self.add_method("AuthorizePush", ("o",), "s", self._authorize_push, is_async=True)
self.register()
self._applet = applet
self._config = Config("org.blueman.transfer")
self._allowed_devices = []
self._notification = None
self._pending_transfer = None
self.transfers = {}
def register_at_manager(self):
obex.AgentManager().register_agent(self.__agent_path)
def unregister_from_manager(self):
obex.AgentManager().unregister_agent(self.__agent_path)
def _release(self):
raise Exception(self.__agent_path + " was released unexpectedly")
def _authorize_push(self, transfer_path, ok, err):
def on_action(action):
logging.info("Action %s" % action)
if action == "accept":
self.transfers[self._pending_transfer['transfer_path']] = {
'path': self._pending_transfer['root'] + '/' + os.path.basename(self._pending_transfer['filename']),
'size': self._pending_transfer['size'],
'name': self._pending_transfer['name']
}
ok(self.transfers[self._pending_transfer['transfer_path']]['path'])
self._allowed_devices.append(self._pending_transfer['address'])
GLib.timeout_add(60000, self._allowed_devices.remove, self._pending_transfer['address'])
else:
err(ObexErrorRejected("Rejected"))
transfer = obex.Transfer(transfer_path)
session = obex.Session(transfer.session)
root = session.root
address = session.address
filename = transfer.name
size = transfer.size
try:
adapter = self._applet.Manager.get_adapter()
device = self._applet.Manager.find_device(address, adapter.get_object_path())
name = device["Alias"]
trusted = device["Trusted"]
except Exception as e:
logging.exception(e)
name = address
trusted = False
self._pending_transfer = {'transfer_path': transfer_path, 'address': address, 'root': root,
'filename': filename, 'size': size, 'name': name}
notif_kwargs = {"icon_name": "blueman"}
try:
notif_kwargs["pos_hint"] = self._applet.Plugins.StatusIcon.geometry
except AttributeError:
logging.error("Failed to get StatusIcon")
# This device was neither allowed nor is it trusted -> ask for confirmation
if address not in self._allowed_devices and not (self._config['opp-accept'] and trusted):
self._notification = Notification(
_("Incoming file over Bluetooth"),
_("Incoming file %(0)s from %(1)s") % {"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(name) + "</b>"},
30000, [["accept", _("Accept"), "help-about"], ["reject", _("Reject"), "help-about"]], on_action,
**notif_kwargs
)
self._notification.show()
# Device is trusted or was already allowed, larger file -> display a notification, but auto-accept
elif size > 350000:
self._notification = Notification(
_("Receiving file"),
_("Receiving file %(0)s from %(1)s") % {"0": "<b>" + escape(filename) + "</b>",
"1": "<b>" + escape(name) + "</b>"},
**notif_kwargs
)
on_action('accept')
self._notification.show()
# Device is trusted or was already allowed. very small file -> auto-accept and transfer silently
else:
self._notification = None
on_action("accept")
def _cancel(self):
self._notification.close()
raise ObexErrorCanceled("Canceled")
示例8: TransferService
# 需要导入模块: from blueman.gui.Notification import Notification [as 别名]
# 或者: from blueman.gui.Notification.Notification import show [as 别名]
class TransferService(AppletPlugin):
__author__ = "cschramm"
__description__ = _("Provides OBEX file transfer capabilities")
__icon__ = "blueman-send-file"
_config = None
_silent_transfers = 0
_normal_transfers = 0
_manager = None
_signals = []
_agent = None
_watch = None
_notification = None
def on_load(self):
def on_reset(*_args):
self._notification = None
self._config.reset('shared-path')
logging.info('Reset share path')
self._config = Config("org.blueman.transfer")
share_path, invalid_share_path = self._make_share_path()
if invalid_share_path:
text = _('Configured directory for incoming files does not exist')
secondary_text = _('Please make sure that directory "<b>%s</b>" exists or '
'configure it with blueman-services. Until then the default "%s" will be used')
self._notification = Notification(text, secondary_text % (self._config["shared-path"], share_path),
icon_name='blueman', timeout=30000,
actions=[['reset', 'Reset to default', 'blueman']], actions_cb=on_reset)
self._notification.show()
self._watch = obex.Manager.watch_name_owner(self._on_dbus_name_appeared, self._on_dbus_name_vanished)
def on_unload(self):
if self._watch:
Gio.bus_unwatch_name(self._watch)
self._unregister_agent()
def _make_share_path(self):
config_path = self._config["shared-path"]
default_path = GLib.get_user_special_dir(GLib.UserDirectory.DIRECTORY_DOWNLOAD)
path = None
error = False
if config_path == '':
path = default_path
elif not os.path.isdir(config_path):
path = default_path
error = True
logging.warning('Invalid shared-path %s' % config_path)
else:
path = config_path
if not path:
path = os.path.expanduser("~")
logging.warning('Failed to get Download dir from XDG')
# We used to always store the full path which caused problems
if config_path == default_path:
logging.info('Reset stored path, identical to default path.')
self._config["shared-path"] = ''
return path, error
def _register_agent(self):
if not self._agent:
self._agent = Agent(self.parent)
self._agent.register_at_manager()
def _unregister_agent(self):
if self._agent:
self._agent.unregister_from_manager()
self._agent.unregister()
self._agent = None
def _on_dbus_name_appeared(self, _connection, name, owner):
logging.info("%s %s" % (name, owner))
self._manager = obex.Manager()
self._signals.append(self._manager.connect("transfer-started", self._on_transfer_started))
self._signals.append(self._manager.connect("transfer-completed", self._on_transfer_completed))
self._signals.append(self._manager.connect('session-removed', self._on_session_removed))
self._register_agent()
def _on_dbus_name_vanished(self, _connection, name):
logging.info("%s not running or was stopped" % name)
for signal in self._signals:
self._manager.disconnect(signal)
self._manager = None
if self._agent:
self._agent.unregister()
self._agent = None
#.........这里部分代码省略.........