mirror of
https://github.com/bec-project/bec_widgets.git
synced 2026-03-10 10:47:49 +01:00
45 lines
1.1 KiB
Python
45 lines
1.1 KiB
Python
from bec_lib.serialization import msgpack
|
|
from qtpy.QtCore import QPointF
|
|
|
|
|
|
def register_serializer_extension():
|
|
"""
|
|
Register the serializer extension for the BECConnector.
|
|
"""
|
|
if not module_is_registered("bec_widgets.utils.serialization"):
|
|
msgpack.register_object_hook(encode_qpointf, decode_qpointf)
|
|
|
|
|
|
def module_is_registered(module_name: str) -> bool:
|
|
"""
|
|
Check if the module is registered in the encoder.
|
|
|
|
Args:
|
|
module_name (str): The name of the module to check.
|
|
|
|
Returns:
|
|
bool: True if the module is registered, False otherwise.
|
|
"""
|
|
# pylint: disable=protected-access
|
|
for enc in msgpack._encoder:
|
|
if enc[0].__module__ == module_name:
|
|
return True
|
|
return False
|
|
|
|
|
|
def encode_qpointf(obj):
|
|
"""
|
|
Encode a QPointF object to a list of floats. As this is mostly used for sending
|
|
data to the client, it is not necessary to convert it back to a QPointF object.
|
|
"""
|
|
if isinstance(obj, QPointF):
|
|
return [obj.x(), obj.y()]
|
|
return obj
|
|
|
|
|
|
def decode_qpointf(obj):
|
|
"""
|
|
no-op function since QPointF is encoded as a list of floats.
|
|
"""
|
|
return obj
|