mirror of
https://github.com/matrix-org/pantalaimon.git
synced 2025-04-28 03:16:13 -04:00
ui: Rewrite the dbus code using pydbus.
This commit is contained in:
parent
c60e554fc2
commit
1cbe5b8a6d
@ -15,11 +15,8 @@ from prompt_toolkit.completion import Completer, Completion, PathCompleter
|
|||||||
from prompt_toolkit.document import Document
|
from prompt_toolkit.document import Document
|
||||||
from prompt_toolkit import print_formatted_text, HTML
|
from prompt_toolkit import print_formatted_text, HTML
|
||||||
|
|
||||||
import dbus
|
from pydbus import SessionBus
|
||||||
from gi.repository import GLib
|
from gi.repository import GLib
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
|
||||||
|
|
||||||
DBusGMainLoop(set_as_default=True)
|
|
||||||
|
|
||||||
use_asyncio_event_loop()
|
use_asyncio_event_loop()
|
||||||
|
|
||||||
@ -106,10 +103,7 @@ class PanCompleter(Completer):
|
|||||||
yield Completion(compl_word, -len(last_word))
|
yield Completion(compl_word, -len(last_word))
|
||||||
|
|
||||||
def complete_users(self, last_word, pan_user):
|
def complete_users(self, last_word, pan_user):
|
||||||
devices = self.devices.list(
|
devices = self.devices.List(pan_user)
|
||||||
pan_user,
|
|
||||||
dbus_interface="org.pantalaimon1.devices"
|
|
||||||
)
|
|
||||||
users = set(device["user_id"] for device in devices)
|
users = set(device["user_id"] for device in devices)
|
||||||
compl_words = self.filter_words(users, last_word)
|
compl_words = self.filter_words(users, last_word)
|
||||||
|
|
||||||
@ -119,11 +113,7 @@ class PanCompleter(Completer):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
def complete_devices(self, last_word, pan_user, user_id):
|
def complete_devices(self, last_word, pan_user, user_id):
|
||||||
devices = self.devices.list_user_devices(
|
devices = self.devices.ListUserDevices(pan_user, user_id)
|
||||||
pan_user,
|
|
||||||
user_id,
|
|
||||||
dbus_interface="org.pantalaimon1.devices"
|
|
||||||
)
|
|
||||||
device_ids = [device["device_id"] for device in devices]
|
device_ids = [device["device_id"] for device in devices]
|
||||||
compl_words = self.filter_words(device_ids, last_word)
|
compl_words = self.filter_words(device_ids, last_word)
|
||||||
|
|
||||||
@ -142,9 +132,7 @@ class PanCompleter(Completer):
|
|||||||
return compl_words
|
return compl_words
|
||||||
|
|
||||||
def complete_pan_users(self, last_word):
|
def complete_pan_users(self, last_word):
|
||||||
users = self.ctl.list_users(
|
users = self.ctl.ListUsers()
|
||||||
dbus_interface="org.pantalaimon1.control"
|
|
||||||
)
|
|
||||||
compl_words = self.filter_words([i[0] for i in users], last_word)
|
compl_words = self.filter_words([i[0] for i in users], last_word)
|
||||||
|
|
||||||
for compl_word in compl_words:
|
for compl_word in compl_words:
|
||||||
@ -282,27 +270,14 @@ class PanCtl:
|
|||||||
]
|
]
|
||||||
|
|
||||||
def __attrs_post_init__(self):
|
def __attrs_post_init__(self):
|
||||||
self.bus = dbus.SessionBus()
|
self.bus = SessionBus()
|
||||||
self.ctl = self.bus.get_object(
|
self.pan_bus = self.bus.get("org.pantalaimon1")
|
||||||
"org.pantalaimon1",
|
|
||||||
"/org/pantalaimon1/Control",
|
self.ctl = self.pan_bus["org.pantalaimon1.control"]
|
||||||
introspect=True
|
self.devices = self.pan_bus["org.pantalaimon1.devices"]
|
||||||
)
|
|
||||||
self.devices = self.bus.get_object(
|
self.ctl.Info.connect(self.show_info)
|
||||||
"org.pantalaimon1",
|
self.devices.SasReceived.connect(self.show_sas)
|
||||||
"/org/pantalaimon1/Devices",
|
|
||||||
introspect=True
|
|
||||||
)
|
|
||||||
self.bus.add_signal_receiver(
|
|
||||||
self.show_sas,
|
|
||||||
dbus_interface="org.pantalaimon1.devices",
|
|
||||||
signal_name="sas_show"
|
|
||||||
)
|
|
||||||
self.bus.add_signal_receiver(
|
|
||||||
self.show_info,
|
|
||||||
dbus_interface="org.pantalaimon1.control",
|
|
||||||
signal_name="info"
|
|
||||||
)
|
|
||||||
|
|
||||||
def show_info(self, message):
|
def show_info(self, message):
|
||||||
print(message)
|
print(message)
|
||||||
@ -353,51 +328,13 @@ class PanCtl:
|
|||||||
|
|
||||||
def list_users(self):
|
def list_users(self):
|
||||||
"""List the daemons users."""
|
"""List the daemons users."""
|
||||||
users = self.ctl.list_users(
|
users = self.ctl.ListUsers()
|
||||||
dbus_interface="org.pantalaimon1.control"
|
|
||||||
)
|
|
||||||
print("pantalaimon users:")
|
print("pantalaimon users:")
|
||||||
for user, device in users:
|
for user, device in users:
|
||||||
print(" ", user, device)
|
print(" ", user, device)
|
||||||
|
|
||||||
def import_keys(self, args):
|
|
||||||
self.ctl.import_keys(
|
|
||||||
args.pan_user,
|
|
||||||
args.path,
|
|
||||||
args.passphrase,
|
|
||||||
dbus_interface="org.pantalaimon1.control"
|
|
||||||
)
|
|
||||||
|
|
||||||
def export_keys(self, args):
|
|
||||||
self.ctl.export_keys(
|
|
||||||
args.pan_user,
|
|
||||||
args.path,
|
|
||||||
args.passphrase,
|
|
||||||
dbus_interface="org.pantalaimon1.control"
|
|
||||||
)
|
|
||||||
|
|
||||||
def confirm_sas(self, args):
|
|
||||||
self.devices.confirm_sas(
|
|
||||||
args.pan_user,
|
|
||||||
args.user_id,
|
|
||||||
args.device_id,
|
|
||||||
dbus_interface="org.pantalaimon1.devices"
|
|
||||||
)
|
|
||||||
|
|
||||||
def accept_sas(self, args):
|
|
||||||
self.devices.accept_sas(
|
|
||||||
args.pan_user,
|
|
||||||
args.user_id,
|
|
||||||
args.device_id,
|
|
||||||
dbus_interface="org.pantalaimon1.devices"
|
|
||||||
)
|
|
||||||
|
|
||||||
def list_devices(self, args):
|
def list_devices(self, args):
|
||||||
devices = self.devices.list_user_devices(
|
devices = self.devices.ListUserDevices(args.pan_user, args.user_id)
|
||||||
args.pan_user,
|
|
||||||
args.user_id,
|
|
||||||
dbus_interface="org.pantalaimon1.devices"
|
|
||||||
)
|
|
||||||
|
|
||||||
print_formatted_text(
|
print_formatted_text(
|
||||||
HTML(f"Devices for user <b>{args.user_id}</b>:")
|
HTML(f"Devices for user <b>{args.user_id}</b>:")
|
||||||
@ -431,29 +368,37 @@ class PanCtl:
|
|||||||
parser = PanctlParser()
|
parser = PanctlParser()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
parsed_args = parser.parse_args(result.split())
|
args = parser.parse_args(result.split())
|
||||||
except ParseError:
|
except ParseError:
|
||||||
continue
|
continue
|
||||||
|
|
||||||
command = parsed_args.subcommand
|
command = args.subcommand
|
||||||
|
|
||||||
if command == "list-users":
|
if command == "list-users":
|
||||||
self.list_users()
|
self.list_users()
|
||||||
|
|
||||||
elif command == "export-keys":
|
|
||||||
self.export_keys(parsed_args)
|
|
||||||
|
|
||||||
elif command == "import-keys":
|
elif command == "import-keys":
|
||||||
self.import_keys(parsed_args)
|
self.ctl.ImportKeys(args.pan_user, args.path, args.passphrase)
|
||||||
|
|
||||||
elif command == "accept-verification":
|
elif command == "export-keys":
|
||||||
self.accept_sas(parsed_args)
|
self.ctl.ExportKeys(args.pan_user, args.path, args.passphrase)
|
||||||
|
|
||||||
elif command == "list-devices":
|
elif command == "list-devices":
|
||||||
self.list_devices(parsed_args)
|
self.list_devices(args)
|
||||||
|
|
||||||
|
elif command == "accept-verification":
|
||||||
|
self.devices.AcceptKeyVerification(
|
||||||
|
args.pan_user,
|
||||||
|
args.user_id,
|
||||||
|
args.device_id
|
||||||
|
)
|
||||||
|
|
||||||
elif command == "confirm-verification":
|
elif command == "confirm-verification":
|
||||||
self.confirm_sas(parsed_args)
|
self.devices.ConfirmKeyVerification(
|
||||||
|
args.pan_user,
|
||||||
|
args.user_id,
|
||||||
|
args.device_id
|
||||||
|
)
|
||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
@ -462,8 +407,8 @@ def main():
|
|||||||
|
|
||||||
try:
|
try:
|
||||||
panctl = PanCtl()
|
panctl = PanCtl()
|
||||||
except dbus.exceptions.DBusException:
|
except GLib.Error as e:
|
||||||
print("Error, no pantalaimon bus found")
|
print(f"Error, {e}")
|
||||||
sys.exit(-1)
|
sys.exit(-1)
|
||||||
|
|
||||||
fut = loop.run_in_executor(
|
fut = loop.run_in_executor(
|
||||||
|
@ -1,11 +1,8 @@
|
|||||||
import attr
|
import attr
|
||||||
|
|
||||||
import dbus
|
|
||||||
import dbus.exceptions
|
|
||||||
import dbus.service
|
|
||||||
|
|
||||||
from dbus.mainloop.glib import DBusGMainLoop
|
|
||||||
from gi.repository import GLib
|
from gi.repository import GLib
|
||||||
|
from pydbus import SessionBus
|
||||||
|
from pydbus.generic import signal
|
||||||
|
|
||||||
from queue import Empty
|
from queue import Empty
|
||||||
from nio.store import TrustState
|
from nio.store import TrustState
|
||||||
@ -24,19 +21,100 @@ from pantalaimon.thread_messages import (
|
|||||||
)
|
)
|
||||||
from pantalaimon.log import logger
|
from pantalaimon.log import logger
|
||||||
|
|
||||||
DBusGMainLoop(set_as_default=True)
|
|
||||||
|
class Control:
|
||||||
|
"""
|
||||||
|
<node>
|
||||||
|
<interface name='org.pantalaimon1.control'>
|
||||||
|
<method name='ListUsers'>
|
||||||
|
<arg type='a(ss)' name='users' direction='out'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name='ExportKeys'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='s' name='file_path' direction='in'/>
|
||||||
|
<arg type='s' name='passphrase' direction='in'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name='ImportKeys'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='s' name='file_path' direction='in'/>
|
||||||
|
<arg type='s' name='passphrase' direction='in'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<signal name="Info">
|
||||||
|
<arg direction="out" type="s" name="message"/>
|
||||||
|
</signal>
|
||||||
|
</interface>
|
||||||
|
</node>
|
||||||
|
"""
|
||||||
|
|
||||||
|
def __init__(self, queue, user_list=None):
|
||||||
|
self.users = user_list
|
||||||
|
self.queue = queue
|
||||||
|
|
||||||
|
def ListUsers(self):
|
||||||
|
"""Return the list of pan users."""
|
||||||
|
return self.users
|
||||||
|
|
||||||
|
def ExportKeys(self, pan_user, filepath, passphrase):
|
||||||
|
message = ExportKeysMessage(pan_user, filepath, passphrase)
|
||||||
|
self.queue.put(message)
|
||||||
|
return
|
||||||
|
|
||||||
|
def ImportKeys(self, pan_user, filepath, passphrase):
|
||||||
|
message = ImportKeysMessage(pan_user, filepath, passphrase)
|
||||||
|
self.queue.put(message)
|
||||||
|
return
|
||||||
|
|
||||||
|
Info = signal()
|
||||||
|
|
||||||
|
|
||||||
class Devices(dbus.service.Object):
|
class Devices:
|
||||||
def __init__(self, bus_name, queue, device_list):
|
"""
|
||||||
super().__init__(bus_name, "/org/pantalaimon1/Devices")
|
<node>
|
||||||
|
<interface name='org.pantalaimon1.devices'>
|
||||||
|
<method name='List'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='aa{ss}' name='devices' direction='out'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name='ListUserDevices'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='s' name='user_id' direction='in'/>
|
||||||
|
<arg type='aa{ss}' name='devices' direction='out'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name='AcceptKeyVerification'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='s' name='user_id' direction='in'/>
|
||||||
|
<arg type='s' name='device_id' direction='in'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<method name='ConfirmKeyVerification'>
|
||||||
|
<arg type='s' name='pan_user' direction='in'/>
|
||||||
|
<arg type='s' name='user_id' direction='in'/>
|
||||||
|
<arg type='s' name='device_id' direction='in'/>
|
||||||
|
</method>
|
||||||
|
|
||||||
|
<signal name="SasReceived">
|
||||||
|
<arg direction="out" type="s" name="pan_user"/>
|
||||||
|
<arg direction="out" type="s" name="user_id"/>
|
||||||
|
<arg direction="out" type="s" name="device_id"/>
|
||||||
|
<arg direction="out" type="a(ss)" name="emoji"/>
|
||||||
|
</signal>
|
||||||
|
|
||||||
|
</interface>
|
||||||
|
</node>
|
||||||
|
"""
|
||||||
|
|
||||||
|
SasReceived = signal()
|
||||||
|
|
||||||
|
def __init__(self, queue, device_list):
|
||||||
self.device_list = device_list
|
self.device_list = device_list
|
||||||
self.queue = queue
|
self.queue = queue
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def List(self, pan_user):
|
||||||
in_signature="s",
|
|
||||||
out_signature="aa{ss}")
|
|
||||||
def list(self, pan_user):
|
|
||||||
device_store = self.device_list.get(pan_user, None)
|
device_store = self.device_list.get(pan_user, None)
|
||||||
|
|
||||||
if not device_store:
|
if not device_store:
|
||||||
@ -49,10 +127,7 @@ class Devices(dbus.service.Object):
|
|||||||
|
|
||||||
return device_list
|
return device_list
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def ListUserDevices(self, pan_user, user_id):
|
||||||
in_signature="ss",
|
|
||||||
out_signature="aa{ss}")
|
|
||||||
def list_user_devices(self, pan_user, user_id):
|
|
||||||
device_store = self.device_list.get(pan_user, None)
|
device_store = self.device_list.get(pan_user, None)
|
||||||
|
|
||||||
if not device_store:
|
if not device_store:
|
||||||
@ -65,9 +140,7 @@ class Devices(dbus.service.Object):
|
|||||||
|
|
||||||
return device_list.values()
|
return device_list.values()
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def Verify(self, pan_user, user_id, device_id):
|
||||||
in_signature="sss")
|
|
||||||
def verify(self, pan_user, user_id, device_id):
|
|
||||||
message = DeviceVerifyMessage(
|
message = DeviceVerifyMessage(
|
||||||
pan_user,
|
pan_user,
|
||||||
user_id,
|
user_id,
|
||||||
@ -76,9 +149,7 @@ class Devices(dbus.service.Object):
|
|||||||
self.queue.put(message)
|
self.queue.put(message)
|
||||||
return
|
return
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def UnVerify(self, pan_user, user_id, device_id):
|
||||||
in_signature="sss")
|
|
||||||
def unverify(self, pan_user, user_id, device_id):
|
|
||||||
message = DeviceUnverifyMessage(
|
message = DeviceUnverifyMessage(
|
||||||
pan_user,
|
pan_user,
|
||||||
user_id,
|
user_id,
|
||||||
@ -87,9 +158,7 @@ class Devices(dbus.service.Object):
|
|||||||
self.queue.put(message)
|
self.queue.put(message)
|
||||||
return
|
return
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def StartSas(self, pan_user, user_id, device_id):
|
||||||
in_signature="sss")
|
|
||||||
def start_verify(self, pan_user, user_id, device_id):
|
|
||||||
device_store = self.device_list.get(pan_user)
|
device_store = self.device_list.get(pan_user)
|
||||||
|
|
||||||
if not device_store:
|
if not device_store:
|
||||||
@ -100,23 +169,12 @@ class Devices(dbus.service.Object):
|
|||||||
logger.info(f"Verifying device {user_id} {device_id}")
|
logger.info(f"Verifying device {user_id} {device_id}")
|
||||||
return
|
return
|
||||||
|
|
||||||
@dbus.service.signal(
|
def ConfirmKeyVerification(self, pan_user, user_id, device_id):
|
||||||
dbus_interface="org.pantalaimon1.devices",
|
|
||||||
signature="sssa(ss)"
|
|
||||||
)
|
|
||||||
def sas_show(self, pan_user, user_id, device_id, auth_string):
|
|
||||||
pass
|
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
|
||||||
in_signature="sss")
|
|
||||||
def confirm_sas(self, pan_user, user_id, device_id):
|
|
||||||
message = DeviceConfirmSasMessage(pan_user, user_id, device_id)
|
message = DeviceConfirmSasMessage(pan_user, user_id, device_id)
|
||||||
self.queue.put(message)
|
self.queue.put(message)
|
||||||
return
|
return
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.devices",
|
def AcceptKeyVerification(self, pan_user, user_id, device_id):
|
||||||
in_signature="sss")
|
|
||||||
def accept_sas(self, pan_user, user_id, device_id):
|
|
||||||
message = DeviceAcceptSasMessage(pan_user, user_id, device_id)
|
message = DeviceAcceptSasMessage(pan_user, user_id, device_id)
|
||||||
self.queue.put(message)
|
self.queue.put(message)
|
||||||
return
|
return
|
||||||
@ -138,49 +196,6 @@ class Devices(dbus.service.Object):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
class Control(dbus.service.Object):
|
|
||||||
def __init__(self, bus_name, queue, user_list=None):
|
|
||||||
super().__init__(bus_name, "/org/pantalaimon1/Control")
|
|
||||||
self.users = user_list
|
|
||||||
self.queue = queue
|
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.control",
|
|
||||||
out_signature="a(ss)")
|
|
||||||
def list_users(self):
|
|
||||||
return self.users
|
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.control",
|
|
||||||
in_signature="sss")
|
|
||||||
def export_keys(self, pan_user, filepath, passphrase):
|
|
||||||
message = ExportKeysMessage(
|
|
||||||
pan_user,
|
|
||||||
filepath,
|
|
||||||
passphrase
|
|
||||||
)
|
|
||||||
self.queue.put(message)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
@dbus.service.method("org.pantalaimon1.control",
|
|
||||||
in_signature="sss")
|
|
||||||
def import_keys(self, pan_user, filepath, passphrase):
|
|
||||||
message = ImportKeysMessage(
|
|
||||||
pan_user,
|
|
||||||
filepath,
|
|
||||||
passphrase
|
|
||||||
)
|
|
||||||
self.queue.put(message)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
@dbus.service.signal(
|
|
||||||
dbus_interface="org.pantalaimon1.control",
|
|
||||||
signature="s"
|
|
||||||
)
|
|
||||||
def info(self, message):
|
|
||||||
pass
|
|
||||||
|
|
||||||
|
|
||||||
@attr.s
|
@attr.s
|
||||||
class GlibT:
|
class GlibT:
|
||||||
receive_queue = attr.ib()
|
receive_queue = attr.ib()
|
||||||
@ -188,26 +203,25 @@ class GlibT:
|
|||||||
data_dir = attr.ib()
|
data_dir = attr.ib()
|
||||||
|
|
||||||
loop = attr.ib(init=False)
|
loop = attr.ib(init=False)
|
||||||
bus_name = attr.ib(init=False)
|
|
||||||
store = attr.ib(init=False)
|
store = attr.ib(init=False)
|
||||||
users = attr.ib(init=False)
|
users = attr.ib(init=False)
|
||||||
devices = attr.ib(init=False)
|
devices = attr.ib(init=False)
|
||||||
control_bus = attr.ib(init=False)
|
bus = attr.ib(init=False)
|
||||||
device_bus = attr.ib(init=False)
|
control_if = attr.ib(init=False)
|
||||||
|
device_if = attr.ib(init=False)
|
||||||
|
|
||||||
def __attrs_post_init__(self):
|
def __attrs_post_init__(self):
|
||||||
self.loop = None
|
self.loop = None
|
||||||
|
|
||||||
self.bus_name = dbus.service.BusName("org.pantalaimon1",
|
|
||||||
bus=dbus.SessionBus(),
|
|
||||||
do_not_queue=True)
|
|
||||||
|
|
||||||
self.store = PanStore(self.data_dir)
|
self.store = PanStore(self.data_dir)
|
||||||
self.users = self.store.load_all_users()
|
self.users = self.store.load_all_users()
|
||||||
self.devices = self.store.load_all_devices()
|
self.devices = self.store.load_all_devices()
|
||||||
|
|
||||||
self.control_bus = Control(self.bus_name, self.send_queue, self.users)
|
self.control_if = Control(self.send_queue, self.users)
|
||||||
self.device_bus = Devices(self.bus_name, self.send_queue, self.devices)
|
self.device_if = Devices(self.send_queue, self.devices)
|
||||||
|
|
||||||
|
self.bus = SessionBus()
|
||||||
|
self.bus.publish("org.pantalaimon1", self.control_if, self.device_if)
|
||||||
|
|
||||||
def message_callback(self):
|
def message_callback(self):
|
||||||
try:
|
try:
|
||||||
@ -218,10 +232,10 @@ class GlibT:
|
|||||||
logger.debug(f"UI loop received message {message}")
|
logger.debug(f"UI loop received message {message}")
|
||||||
|
|
||||||
if isinstance(message, DevicesMessage):
|
if isinstance(message, DevicesMessage):
|
||||||
self.device_bus.update_devices(message)
|
self.device_if.update_devices(message)
|
||||||
|
|
||||||
elif isinstance(message, DeviceAuthStringMessage):
|
elif isinstance(message, DeviceAuthStringMessage):
|
||||||
self.device_bus.sas_show(
|
self.device_if.SasReceived(
|
||||||
message.pan_user,
|
message.pan_user,
|
||||||
message.user_id,
|
message.user_id,
|
||||||
message.device_id,
|
message.device_id,
|
||||||
@ -229,7 +243,7 @@ class GlibT:
|
|||||||
)
|
)
|
||||||
|
|
||||||
elif isinstance(message, InfoMessage):
|
elif isinstance(message, InfoMessage):
|
||||||
self.control_bus.info(message.string)
|
self.control_if.Info(message.string)
|
||||||
|
|
||||||
self.receive_queue.task_done()
|
self.receive_queue.task_done()
|
||||||
return True
|
return True
|
||||||
|
Loading…
x
Reference in New Issue
Block a user